基于SoPC的網(wǎng)絡(luò)模塊設(shè)計(jì)與實(shí)現(xiàn)
DM9000A為本設(shè)計(jì)的核心,其模塊如圖6所示。其中:本文引用地址:http://www.ex-cimer.com/article/154540.htm
網(wǎng)絡(luò)通信,最重要的就是協(xié)議的一致。本設(shè)計(jì)將各個(gè)協(xié)議字段存儲(chǔ)在一維無(wú)符號(hào)字符型數(shù)組中,根據(jù)各個(gè)協(xié)議需求的不同而開(kāi)辟不同的空間,如下:
接收到的數(shù)據(jù)報(bào)存儲(chǔ)在無(wú)符號(hào)字符型數(shù)組中,其中數(shù)組長(zhǎng)度,即可接收的數(shù)據(jù)報(bào)長(zhǎng)度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í)器等的初始化。初始化完成之后,通過(guò)特定接口設(shè)置網(wǎng)卡的IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)等信息。接下來(lái),網(wǎng)絡(luò)模塊開(kāi)啟中斷,以便接收網(wǎng)絡(luò)控制器的中斷信號(hào)。當(dāng)接收到發(fā)送端或接收端的中斷信號(hào)后,分別進(jìn)入到各自的處理進(jìn)程中進(jìn)行處理。若沒(méi)有中斷,系統(tǒng)則進(jìn)入等待狀態(tài)。
3 系統(tǒng)測(cè)試
由前面的工作,完成了網(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è)包,無(wú)丟包現(xiàn)象,在這500個(gè)數(shù)據(jù)包中,返回速度在2~5ms之間。通過(guò)在NiosⅡIDE中編程實(shí)現(xiàn)網(wǎng)絡(luò)模塊Ping計(jì)算機(jī),同樣發(fā)送500個(gè)包沒(méi)有丟包現(xiàn)象。
將另一個(gè)同樣的FPGA連接到路由器上,獲取到IP地址192.168.0.102。在NiosⅡIDE中編程,IP地址為192.168.0.101的FPGA通過(guò)網(wǎng)絡(luò)模塊向IP地址為192.168.0.102的FPGA發(fā)送UDP格式的控制報(bào)文,可以順利控制后者面板上LED燈的亮滅,延遲不超過(guò)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)用前景。
評(píng)論