基于SoPC的網(wǎng)絡(luò)模塊設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:在Altera公司提供的QuartusⅡ軟件中開發(fā)網(wǎng)絡(luò)模塊控制器并在SoPC Builder中將其作為一個(gè)獨(dú)立的IP核集成到SoPC中,通過軟件驅(qū)動(dòng)控制器實(shí)現(xiàn)網(wǎng)絡(luò)模塊收發(fā)等操作,發(fā)揮其設(shè)計(jì)靈活、集成度高、收發(fā)速度快等優(yōu)點(diǎn),為SoPC設(shè)計(jì)中網(wǎng)絡(luò)功能提供了新的方案。
關(guān)鍵詞:SoPC;NIOSⅡ;網(wǎng)絡(luò)模塊
網(wǎng)絡(luò)模塊是網(wǎng)絡(luò)設(shè)備中必不可少的部分,隨著近年來物聯(lián)網(wǎng)技術(shù)的高速發(fā)展,對(duì)互聯(lián)設(shè)備的網(wǎng)絡(luò)模塊提出的更高要求。本文提出了基于NIOSⅡ的SoPC系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的網(wǎng)絡(luò)模塊。
美國Altera公司于2000年提出了SoPC(Systemon a Programmable Chip,可編程片上系統(tǒng))技術(shù),并同時(shí)推出了相應(yīng)的開發(fā)軟件QuartusⅡ及硬件平臺(tái)FPGA (Field-Programmable Gate Array)。SOPC具備嵌入式處理器內(nèi)核,具有豐富的IP核資源可供選擇,擁有足夠的片上可編程邏輯資源,提供處理器調(diào)試接口和FPGA編程接口,具有單芯片、低功耗、小封裝等的優(yōu)點(diǎn)。NIOSⅡ是Altera公司發(fā)布的軟核處理器,其最大特點(diǎn)是可配置性較好,即用戶可根據(jù)自已的標(biāo)準(zhǔn)定制處理器,按照需求選擇合適的外設(shè)、存儲(chǔ)器和接口。此外還可以輕松集成自己專有的功能,使設(shè)計(jì)具有獨(dú)特的競爭優(yōu)勢。NiosⅡ軟核處理器的原理框圖如圖1所示,其中對(duì)用戶可見的單元電路包括存儲(chǔ)器文件、算術(shù)邏輯單元(ALU)、與用戶自定義指令邏輯的接口、異??刂破?、中斷控制器、指令總線、數(shù)據(jù)總線、指令及數(shù)據(jù)緩存、緊密耦合存儲(chǔ)器接口電路及JTAG調(diào)試模塊等。本設(shè)計(jì)通過Altera公司的FPGA芯片和NIOSⅡ嵌入式系統(tǒng)實(shí)現(xiàn)SoPC。
1 系統(tǒng)總體方案設(shè)計(jì)
Altera公司的SoPC Builder為建立SoPC設(shè)計(jì)提供了標(biāo)準(zhǔn)化的圖形環(huán)境,SoPC Builder包含在QuartusⅡ軟件中。SoPC Builder幫助設(shè)計(jì)者自動(dòng)完成系統(tǒng)集成的工作,ScPC提供了直觀的圖形用戶界面(GUI),幫助設(shè)計(jì)者添加和配置系統(tǒng)所需的外設(shè)(包括存儲(chǔ)器、定制外設(shè)和IP模塊),根據(jù)設(shè)計(jì)者的要求將這些外設(shè)與處理器連接在一起,并自動(dòng)完成外設(shè)和存儲(chǔ)器的地址映射、中斷控制和總線控制等工作。完成系統(tǒng)配置之后,SoPC Builder根據(jù)要求生成VHDL或Verilog HDL的系統(tǒng)級(jí)設(shè)計(jì)代碼,并自動(dòng)生成部分外設(shè)的硬件抽象層(HAL)代碼和底層硬件驅(qū)動(dòng)代碼,為軟件開發(fā)做好準(zhǔn)備。圖2所示為SoPC Builder為本次設(shè)計(jì)生成的系統(tǒng)模塊的應(yīng)用實(shí)例。
2 網(wǎng)絡(luò)模塊設(shè)計(jì)與實(shí)現(xiàn)
SoPC系統(tǒng)設(shè)計(jì)流程如圖3所示。設(shè)計(jì)者根據(jù)任務(wù)要求決定系統(tǒng)需求,用SoPC Builder建立自已的SoPC系統(tǒng)。在硬件方面,建立一個(gè)頂層設(shè)計(jì)文件,將生成的SoPC系統(tǒng)例化,并設(shè)置引腳分配、時(shí)序要求及其它設(shè)計(jì)約束,然后編譯硬件設(shè)計(jì)并將FPGA設(shè)計(jì)下載到目標(biāo)板中。在軟件方面,用Nios IIIDE開發(fā)應(yīng)用軟什,在其中使用Nios II指令仿真器運(yùn)行并調(diào)試軟件。之后將可執(zhí)行軟件下載到目標(biāo)板上的NiosⅡ系統(tǒng)中,在目標(biāo)板上運(yùn)行調(diào)試軟件,并對(duì)設(shè)計(jì)的不足進(jìn)行收進(jìn)。
2.1 硬件模塊設(shè)計(jì)
系統(tǒng)選用Altera公司Cyclone II系列的EP2C35F672C6,構(gòu)建一個(gè)基于NIOS II的SoPC系統(tǒng)。本設(shè)計(jì)中,NIOS II CPU負(fù)責(zé)網(wǎng)絡(luò)模塊的控制、數(shù)據(jù)的傳輸以及I/O接口等功能,故選用高端NIOS II/f內(nèi)核以滿足所要求的功能,其約占1400—1800個(gè)邏輯單元,3個(gè)M4K RAM塊,可以用來增加指令緩存。NIOS II/f的最好性能可達(dá)到101 MIPS將NIOS II處理器的復(fù)位地址設(shè)置為cfi_flash,其為非易失存儲(chǔ)器Flash。將NIOS II處理器的異常地址設(shè)置為sdram_0,其為掉電易失的存儲(chǔ)器SDRAM在“JTAG Debug Module”標(biāo)簽下選擇Level 1,此時(shí)占用邏輯資源最少,為300—400邏輯單元,2個(gè)M4K RAM塊。
網(wǎng)絡(luò)模塊選用DAVICOM半導(dǎo)體公司的DM9000A DM9000A集成了帶有通用處理器接口的MAC和PHY,支持100Base-T應(yīng)用,帶有auto-MDIX,支持10Mb/s和100Mb/s的全雙工操作DM9000A既可支持8位處理器,也可支持16位處理器接口。DM9000A完全兼容IEEE 802.3u規(guī)范,支持IP/ TCP/UDP求和檢驗(yàn),支持半雙工模式背壓數(shù)據(jù)流控。
DM9000A內(nèi)部功能框罔如圖4所示,左邊帶有AUTO—MDIX的收發(fā)器提供RJ45的接口,中間為MAC,右邊則為處理器接口。處理器可通過這個(gè)接口實(shí)現(xiàn)對(duì)DM9000A的控制,具體引腳包括:
◇nRD讀命令;
◇nWR寫命令;
◇nCS/nAEN片選;
◇SD0~SD7數(shù)據(jù)總線(低8位);
◇SD8~SD15數(shù)據(jù)總線(高8位),在16位模式下才有用;
◇CMD命令類型。低電平時(shí),讀寫INDEX口;高電平時(shí),讀寫DATA口;
◇INT中斷請(qǐng)求。
SoPC的標(biāo)準(zhǔn)組件庫中并不包含網(wǎng)絡(luò)控制器DM9000A,在這里需要添加自定義組件。
在SoPC Builder中,用Create new component添加自定義組件。需要向其添加HDL設(shè)計(jì)文件DM9000A_IF.v,用來設(shè)計(jì)一個(gè)從Avalon總線到DM90 00A的一個(gè)邏輯接口,其代碼所下:
接下來設(shè)置輸入/輸出信號(hào),使DM9000A控制器的輸入/輸出信號(hào)與Avalon總線信號(hào)匹配。
在QuartusⅡ中為系統(tǒng)創(chuàng)建一個(gè)如圖5所示NIOSⅡCPU頂層文件,實(shí)現(xiàn)對(duì)NIOSⅡ系統(tǒng)例化。
DM9000A為本設(shè)計(jì)的核心,其模塊如圖6所示。其中:
◇iCMD用來區(qū)分是INDEX端口還是DATA端口,與處理器的地址線相連;
◇iCS_N片選信號(hào);
◇iDATA寫數(shù)據(jù);
◇iRD_N讀信號(hào);
◇iRST_N復(fù)位信號(hào);
◇iWR_N寫信號(hào);
◇oTADA讀數(shù)據(jù);
◇oINT中斷請(qǐng)求信號(hào);
◇其余信號(hào)均與Avalon總線相連。
將編譯后的文件下載到FPGA中,完成硬件部分的設(shè)計(jì)。
2.2 軟件模塊設(shè)計(jì)
系統(tǒng)網(wǎng)絡(luò)模塊的控制是通過在集成開發(fā)環(huán)境NiosⅡIDE中用C語言編程實(shí)現(xiàn)的。
為實(shí)現(xiàn)網(wǎng)絡(luò)模塊的通信功能,需存放MAC地址、IP地址以及目標(biāo)MAC地址、IP地址,其數(shù)據(jù)結(jié)構(gòu)均用無符號(hào)字符型數(shù)組實(shí)現(xiàn),MAC地址為6個(gè)字節(jié),IP地址為4個(gè)字節(jié),如下:
網(wǎng)絡(luò)通信,最重要的就是協(xié)議的一致。本設(shè)計(jì)將各個(gè)協(xié)議字段存儲(chǔ)在一維無符號(hào)字符型數(shù)組中,根據(jù)各個(gè)協(xié)議需求的不同而開辟不同的空間,如下:
接收到的數(shù)據(jù)報(bào)存儲(chǔ)在無符號(hào)字符型數(shù)組中,其中數(shù)組長度,即可接收的數(shù)據(jù)報(bào)長度MAX_PACKET_SIZE由頭文件確定為1522,如下:
unsigned char rcv [MAX_PACKET_SIZE];
//接收到的報(bào)文
網(wǎng)絡(luò)模塊控制流程如圖7所示。系統(tǒng)首先對(duì)網(wǎng)絡(luò)控制器DM9000A進(jìn)行初始化,包括ARP、內(nèi)存、定時(shí)器等的初始化。初始化完成之后,通過特定接口設(shè)置網(wǎng)卡的IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)等信息。接下來,網(wǎng)絡(luò)模塊開啟中斷,以便接收網(wǎng)絡(luò)控制器的中斷信號(hào)。當(dāng)接收到發(fā)送端或接收端的中斷信號(hào)后,分別進(jìn)入到各自的處理進(jìn)程中進(jìn)行處理。若沒有中斷,系統(tǒng)則進(jìn)入等待狀態(tài)。
3 系統(tǒng)測試
由前面的工作,完成了網(wǎng)絡(luò)模塊軟、硬件部分的設(shè)計(jì)。將設(shè)計(jì)下載到FPGA平臺(tái)中,運(yùn)行該系統(tǒng)。
使用網(wǎng)線將FPGA的RJ45接口與路由器相連接。網(wǎng)絡(luò)模塊自動(dòng)獲取IP地址為192.168.0.101,子剛掩碼為255.255.255.0,默認(rèn)網(wǎng)關(guān)為192.168.0.1計(jì)算機(jī)也與同一個(gè)路由器相連,其獲取的IP地址為192.168.0.100。這樣計(jì)算機(jī)與FPGA中網(wǎng)絡(luò)模塊處于同一網(wǎng)段,互相之間可以通信。使用Ping命令,由計(jì)算機(jī)向網(wǎng)絡(luò)模塊的IP地址192.168.0.101發(fā)送500個(gè)包,無丟包現(xiàn)象,在這500個(gè)數(shù)據(jù)包中,返回速度在2~5ms之間。通過在NiosⅡIDE中編程實(shí)現(xiàn)網(wǎng)絡(luò)模塊Ping計(jì)算機(jī),同樣發(fā)送500個(gè)包沒有丟包現(xiàn)象。
將另一個(gè)同樣的FPGA連接到路由器上,獲取到IP地址192.168.0.102。在NiosⅡIDE中編程,IP地址為192.168.0.101的FPGA通過網(wǎng)絡(luò)模塊向IP地址為192.168.0.102的FPGA發(fā)送UDP格式的控制報(bào)文,可以順利控制后者面板上LED燈的亮滅,延遲不超過1秒。
本設(shè)計(jì)完成了基于SoPC的網(wǎng)絡(luò)摸塊的軟硬件設(shè)計(jì)與調(diào)試,驗(yàn)證了網(wǎng)絡(luò)饃塊的工作狀況,并在此基礎(chǔ)上實(shí)現(xiàn)了基于網(wǎng)絡(luò)的控制命令的傳送,使SoPC設(shè)計(jì)能與PC機(jī)或其他各種電子設(shè)備進(jìn)行數(shù)據(jù)交換。隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,基于網(wǎng)絡(luò)的系統(tǒng)必將具有廣闊的應(yīng)用前景。