基于FPGA的嵌入式串行千兆以太網(wǎng)設(shè)計(jì)
3 嵌入式系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件部分需實(shí)現(xiàn)TCP/IP網(wǎng)絡(luò)協(xié)議,TCP/IP協(xié)議模型包括應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和網(wǎng)絡(luò)接口層。網(wǎng)絡(luò)接口層分為PHY層和MAC層兩部分。其中,PHY層由外部PHY芯片88E1111實(shí)現(xiàn),MAC層由Xilinx公司的Hard Ethernet MAC IP核實(shí)現(xiàn),并作為整個(gè)Power-PC系統(tǒng)硬件的一部分在FPGA的內(nèi)部實(shí)現(xiàn)。
網(wǎng)絡(luò)層和傳輸層主要采用LwIP協(xié)議模塊編寫相應(yīng)的軟件代碼。LwIP同時(shí)支持服務(wù)器模式和客戶端模式,提供RAW和Socket兩種API。它的特點(diǎn)是在保持TCP/IP協(xié)議主要功能的情況下,減少對(duì)RAW的使用,使得LwIP在各類高檔嵌入式系統(tǒng)開發(fā)中得到廣泛的應(yīng)用。本設(shè)計(jì)選擇Xili nx公司的精簡(jiǎn)嵌入式操作系統(tǒng)Xilkernel,用于更好地管理系統(tǒng)資源。Xilkernel能與EDK形成的硬件系統(tǒng)緊密結(jié)合,是一種可定制的簡(jiǎn)單高效系統(tǒng)。Xilkernel系統(tǒng)的配置可以在開發(fā)環(huán)境SDK中進(jìn)行手動(dòng)設(shè)置。本設(shè)計(jì)中運(yùn)用LwIP協(xié)議模塊編寫運(yùn)行在Xilkernel操作系統(tǒng)上的應(yīng)用軟件,實(shí)現(xiàn)了Web Server(網(wǎng)頁(yè)服務(wù))、FTP(FileTransfer Protocl)、Telnet遠(yuǎn)程登錄服務(wù)、iperf應(yīng)用等功能。下面以網(wǎng)頁(yè)服務(wù)程序、iperf服務(wù)器和客戶端程序?yàn)槔龑?duì)軟件設(shè)計(jì)流程進(jìn)行說明。
具體流程描述如下:
①在Xilkernel系統(tǒng)的靜態(tài)啟動(dòng)線程main_thread()中,初始化網(wǎng)絡(luò)協(xié)議和文件系統(tǒng)。
②調(diào)用線程生成函數(shù)sys_thread_new()生成并啟動(dòng)線程1。
③在線程1中設(shè)置電路板硬件的MAC地址、網(wǎng)關(guān)、IP地址和子網(wǎng)掩碼等參數(shù),并初始化網(wǎng)絡(luò)接口。具體設(shè)置方式如下:MAC地址為00;0a:35;00;01;02;IP4地址為192.168.1.10;IP4地址掩碼為255.255.255.0;IP4地址網(wǎng)關(guān)為192.168.1.1。
④初始化一個(gè)Socket,將它與IP地址和端口號(hào)綁定,然后開始監(jiān)聽網(wǎng)絡(luò),一旦監(jiān)聽到網(wǎng)絡(luò)請(qǐng)求,再由函數(shù)sys_thread_new()生成一個(gè)線程2去響應(yīng),用于緩存接收到的數(shù)據(jù)包。然后,通過函數(shù)launch_app_threads()判斷監(jiān)聽到的網(wǎng)絡(luò)請(qǐng)求屬于哪種類型,并由函數(shù)sys_thread_ new()生成相應(yīng)的線程3去處理。
如果是網(wǎng)絡(luò)服務(wù)請(qǐng)求,則將網(wǎng)頁(yè)文件輸出到PC機(jī)上,并接收PC機(jī)傳輸?shù)目刂茢?shù)據(jù)信息,其程序流程如圖5所示。如果是iperf應(yīng)用請(qǐng)求,則發(fā)送或接收相應(yīng)的數(shù)據(jù)完成對(duì)請(qǐng)求的響應(yīng)。本文引用地址:http://m.butianyuan.cn/article/153698.htm
網(wǎng)頁(yè)服務(wù)程序運(yùn)行前需在FPGA外部的DDR中建立文件系統(tǒng),將用于控制的相關(guān)網(wǎng)頁(yè)文件保存在該文件系統(tǒng)中。系統(tǒng)在運(yùn)行時(shí),訪問預(yù)設(shè)的IP地址,會(huì)將相關(guān)網(wǎng)頁(yè)文件傳輸?shù)竭h(yuǎn)端控制電腦上,并通過網(wǎng)頁(yè)中的超鏈接命令腳本將預(yù)設(shè)的控制信息傳送給PowerPC處理器,用以控制電路板上的LED燈亮滅,或者讀取電路板上撥碼開關(guān)的狀態(tài)值并在服務(wù)器首頁(yè)上顯示。
本設(shè)計(jì)中采用iperf網(wǎng)絡(luò)測(cè)試軟件對(duì)其性能進(jìn)行測(cè)試。采用9 000字節(jié)巨幀可以實(shí)現(xiàn)高達(dá)490 Mbps的傳輸速率。
結(jié)語(yǔ)
本文成功使用Virtex-5 FX70t芯片實(shí)現(xiàn)串行千兆以太網(wǎng)系統(tǒng),并通過網(wǎng)頁(yè)服務(wù)程序?qū)ζ涔δ芗右则?yàn)證。本系統(tǒng)在硬件電路設(shè)計(jì)階段具有I/O端口數(shù)目少、便于PCB布線,以及信號(hào)完整性容易保證等優(yōu)點(diǎn)。通過iperf網(wǎng)絡(luò)測(cè)試軟件對(duì)其傳輸速率進(jìn)行測(cè)試,其結(jié)果達(dá)到高速數(shù)據(jù)傳輸?shù)囊蟆?/p>
fpga相關(guān)文章:fpga是什么
評(píng)論