国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA+ARM 多路千兆以太網(wǎng)通信接口設(shè)計(jì)

2022-07-28 09:06蘇和平
現(xiàn)代電子技術(shù) 2022年15期
關(guān)鍵詞:發(fā)送數(shù)據(jù)寄存器風(fēng)暴

李 楊,蘇和平,張 丹,許 喬

(湖北大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,湖北 武漢 430062)

0 引 言

隨著人工智能、大數(shù)據(jù)和物聯(lián)網(wǎng)等新興技術(shù)的發(fā)展,原始數(shù)據(jù)井噴式地涌現(xiàn)出來(lái),這也對(duì)接口提出了更高的要求,高速、可靠的傳輸接口往往是整個(gè)項(xiàng)目的技術(shù)關(guān)鍵。

近年來(lái),國(guó)內(nèi)對(duì)于以太網(wǎng)接口的研究取得了顯著進(jìn)步。文獻(xiàn)[3-4]采用Zynq-7000 芯片,利用ARM+FPGA 架構(gòu)在芯片內(nèi)搭建了千兆以太網(wǎng)模塊,傳輸速度分別為640 Mb/s 和870 Mb/s。文獻(xiàn)[5]采用國(guó)產(chǎn)FPGA 芯片,自行研發(fā)了SGMII core 與MAC core,實(shí)現(xiàn)了千兆以太網(wǎng)口的設(shè)計(jì)。文獻(xiàn)[6]采用DSP+FPGA 架構(gòu)形式,搭建了多路串口、以太網(wǎng)通信系統(tǒng),實(shí)現(xiàn)40 路RS 422/RS 485 通信功能。文獻(xiàn)[7]采用ARM 和FPGA 芯片,利用FSMC 實(shí)現(xiàn)兩個(gè)芯片通信,采集多路光柵數(shù)據(jù)。文獻(xiàn)[8]采用FPGA設(shè)計(jì)實(shí)現(xiàn)了一種UDP 網(wǎng)絡(luò)IP 核,兼容GMII、RGMII 以及SGMII 接口,且移植性較強(qiáng)。

但是上述設(shè)計(jì)存在價(jià)格昂貴、不能勝任多路以太網(wǎng)傳輸任務(wù)、不支持風(fēng)暴抑制等不足。而網(wǎng)絡(luò)風(fēng)暴抑制的功能一般在軟件層面,這會(huì)消耗大量資源算力。為此本文采用ARM+FPGA 架構(gòu),通過(guò)FSMC 總線進(jìn)行芯片間通信,充分發(fā)揮ARM 在控制方面及FPGA 善于擴(kuò)展和并行處理的優(yōu)點(diǎn),實(shí)現(xiàn)一種多通道、擴(kuò)展性強(qiáng)、成本低廉且支持風(fēng)暴抑制的千兆以太網(wǎng)接口模塊。

1 整體結(jié)構(gòu)

基于FPGA+ARM 的多路千兆以太網(wǎng)通信系統(tǒng)的整體結(jié)構(gòu)如圖1 所示。外部數(shù)據(jù)通過(guò)千兆網(wǎng)口進(jìn)入FPGA進(jìn)行解包,然后通過(guò)FSMC 總線傳遞給ARM 進(jìn)行處理;下行數(shù)據(jù)由ARM 發(fā)出,通過(guò)FSMC 總線進(jìn)入FPGA中進(jìn)行打包,根據(jù)命令從相應(yīng)通道的千兆以太網(wǎng)口向外發(fā)送。

圖1 系統(tǒng)整體結(jié)構(gòu)圖

FPGA 與ARM 之間通過(guò)FSMC 總線連接,如圖2 所示。FSMC 總線包含6 位地址總線、16 位數(shù)據(jù)總線以及控制總線。

圖2 ARM 與FPGA 連接圖

2 FPGA 設(shè)計(jì)

FPGA 芯 片 選 用Altera 公 司 的EP4CE10F17C8 芯片,其擁有10 320 個(gè)邏輯單元,可以滿足本系統(tǒng)功能要求。ARM 處理器選用ST 公司的STM32F407IG,具有Cortex-M4 處理器內(nèi)核,1 MB FLASH 且具有FSMC。

FPGA 用Verilog 語(yǔ)言開(kāi)發(fā),F(xiàn)PGA 結(jié)構(gòu)框圖如圖3 所示,由時(shí)序轉(zhuǎn)換模塊、打包解包模塊和MAC 控制模塊三部分組成,其中可以接多個(gè)MAC 接收模塊。

圖3 FPGA 結(jié)構(gòu)框圖

2.1 時(shí)序轉(zhuǎn)換模塊

時(shí)序轉(zhuǎn)換模塊將FSMC 復(fù)雜時(shí)序轉(zhuǎn)換為較簡(jiǎn)單時(shí)序,同時(shí)將一路FSMC 轉(zhuǎn)換多路內(nèi)部總線,其中包括傳遞數(shù)據(jù)的總線和各個(gè)模塊的控制總線。其中轉(zhuǎn)換出來(lái)的控制總線使能各個(gè)模塊功能,訪問(wèn)各個(gè)模塊的寄存器。

2.2 打包模塊和解包模塊

打包解包模塊約定了ARM 與FPGA 通信的協(xié)議,如表1 所示。在要發(fā)送的數(shù)據(jù)前添加要發(fā)通道號(hào)以及待發(fā)送數(shù)據(jù)的字節(jié)長(zhǎng)度,以便于打包模塊知道數(shù)據(jù)應(yīng)當(dāng)發(fā)送到哪個(gè)MAC 和解包模塊,以及數(shù)據(jù)包來(lái)自哪個(gè)MAC,同時(shí)將一路內(nèi)部數(shù)據(jù)總線又分為多路數(shù)據(jù)總線,與多個(gè)MAC 相連。

表1 ARM 與FPGA 通信協(xié)議

發(fā)送功能:當(dāng)檢測(cè)到發(fā)送開(kāi)始寄存器操作后,將發(fā)送數(shù)據(jù)寄存器的數(shù)據(jù)寫(xiě)入前級(jí)FIFO 緩存,直到檢測(cè)到發(fā)送完成寄存器操作,停止向前級(jí)FIFO 緩存,接著開(kāi)始檢查保存包是否正確并產(chǎn)生接收完成信號(hào),若當(dāng)前包不正確,讀出當(dāng)前包同時(shí)丟棄,正確則保留。根據(jù)表1 協(xié)議判斷當(dāng)前包要發(fā)送到的MAC,待其可以接收數(shù)據(jù)時(shí)向其發(fā)送。

接收功能:4 個(gè)通道的數(shù)據(jù)首先進(jìn)入4 個(gè)通道FIFO中,隨后通道掃描器會(huì)依次循環(huán)掃描這4 個(gè)通道FIFO,若該通道使能且有數(shù)據(jù),就將該通道數(shù)據(jù)緩存到前級(jí)FIFO 并產(chǎn)生接收完成信號(hào),等待ARM 讀取數(shù)據(jù),待ARM 讀取完繼續(xù)循環(huán)之前操作。

2.3 MAC 模塊

MAC 控制模塊實(shí)現(xiàn)以太網(wǎng)的數(shù)據(jù)鏈路層協(xié)議,同時(shí)定義了與打解包模塊的通信協(xié)議,如表2 所示。這個(gè)協(xié)議是在表1 通信協(xié)議的基礎(chǔ)上,在包頭添加包頭標(biāo)志SOP,包中部添加中部標(biāo)志MID,在包尾添加包尾標(biāo)志EOP,以便于以數(shù)據(jù)包的形式進(jìn)行傳輸和處理。設(shè)計(jì)功能:速率為1 000 Mb/s,幀間隔可配,支持自動(dòng)填充,支持CRC 校驗(yàn),支持廣播/組播風(fēng)暴抑制,支持MAC 地址白名單。

表2 MAC 控制模塊與打解包模塊通信協(xié)議

MAC 發(fā)送的邏輯:首先有MAC 數(shù)據(jù)幀待MAC 模塊發(fā)出,等待設(shè)定的幀間隔時(shí)間結(jié)束,接著發(fā)送前導(dǎo)碼和幀定界符,然后發(fā)送待發(fā)送MAC 數(shù)據(jù)幀,若長(zhǎng)度小于60 B 則用零填充至60 B,最后發(fā)送循環(huán)校驗(yàn)序列。

廣播/組播風(fēng)暴抑制邏輯如圖4 所示。根據(jù)設(shè)定時(shí)間以及設(shè)定的廣播包閾值,如果在設(shè)定的時(shí)間內(nèi)接收的廣播包數(shù)量超過(guò)閾值,進(jìn)行廣播包抑制。同理,組播風(fēng)暴抑制邏輯和廣播風(fēng)暴抑制邏輯相同。

圖4 廣播/組播風(fēng)暴抑制邏輯流程圖

MAC 接收的邏輯流程圖如圖5 所示。接收使能MAC 模塊開(kāi)始接收,若rxdv 信號(hào)有效且接收到前導(dǎo)碼和幀定界符,則進(jìn)行下一步的目的MAC 地址接收。接下來(lái)進(jìn)行廣播/組播/單播的類(lèi)型判斷,廣播或組播的處理類(lèi)似,會(huì)判斷是否已經(jīng)發(fā)生廣播/組播風(fēng)暴,發(fā)生則不再接收數(shù)據(jù),沒(méi)有就繼續(xù);單播的話不需要考慮抑制,所以這步跳過(guò)。接下來(lái)接收源MAC 地址,僅單播需要判斷是否源MAC 地址在MAC 地址白名單中,不在白名單則停止操作,在就接收數(shù)據(jù),直到rxdv 變?yōu)榈碗娖?。最后判斷接收是否錯(cuò)誤,包括長(zhǎng)度和CRC 校驗(yàn)。

圖5 MAC 接收流程圖

2.4 ARM 系統(tǒng)軟件設(shè)計(jì)

ARM 端程序是運(yùn)行在μCOSⅢ操作系統(tǒng)之上的,ARM 程序使用C 語(yǔ)言編寫(xiě),ARM 程序分為兩個(gè)模塊,即發(fā)送程序和接收程序。

當(dāng)任務(wù)調(diào)用發(fā)送函數(shù),向發(fā)送開(kāi)始寄存器寫(xiě)操作,接著向發(fā)送數(shù)據(jù)寄存器發(fā)送通道號(hào)以及數(shù)據(jù)長(zhǎng)度,然后向發(fā)送數(shù)據(jù)寄存器發(fā)送待發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)完成后,向發(fā)送完成寄存器寫(xiě)操作。

當(dāng)有ARM 檢測(cè)到接收中斷時(shí),ARM 查詢中斷狀態(tài)寄存器,確定是接收中斷,同時(shí)清除該中斷標(biāo)志,然后進(jìn)行讀取操作。同時(shí)接收過(guò)程也支持輪詢寄存器,方法與中斷接收類(lèi)似,不再贅述。

3 驗(yàn) 證

測(cè)試內(nèi)容包括單通道和多通道功能驗(yàn)證。單通道驗(yàn)證通過(guò)如圖6 所示的測(cè)試環(huán)境驗(yàn)證,多通道的驗(yàn)證通過(guò)ModelSim 仿真驗(yàn)證。

3.1 單通道驗(yàn)證

單通道測(cè)試環(huán)境如圖6 所示。待測(cè)試設(shè)計(jì)模塊外接一個(gè)RTL8211EG-VB 芯片的擴(kuò)展板,然后通過(guò)網(wǎng)線與電腦相連。用Wireshark 軟件抓取ARM 發(fā)來(lái)的數(shù)據(jù)幀,驗(yàn)證本系統(tǒng)的發(fā)送功能;采用科來(lái)數(shù)據(jù)包生成器生成驗(yàn)證接收功能所需的各種數(shù)據(jù)幀,使用科來(lái)數(shù)據(jù)包播放器從電腦端向本接口發(fā)送數(shù)據(jù)幀,并用串口助手查看本接口接收到的包數(shù)。

圖6 單通道測(cè)試環(huán)境

測(cè)試項(xiàng)目分為兩部分:發(fā)送功能測(cè)試和接收功能測(cè)試。發(fā)送功能測(cè)試需要驗(yàn)證發(fā)送內(nèi)容是否正確,需要填充的數(shù)據(jù)幀是否填充。接收功能測(cè)試需要驗(yàn)證正確接收、MAC 地址白名單功能以及廣播/組播風(fēng)暴抑制功能。

3.1.1 發(fā)送功能驗(yàn)證

測(cè)試工具為Wireshark。測(cè)試內(nèi)容:ARM 端生成一些待發(fā)送數(shù)據(jù),統(tǒng)計(jì)電腦接收數(shù)據(jù)包個(gè)數(shù),以及檢查要填充的數(shù)據(jù)包是否填充。測(cè)試結(jié)果見(jiàn)表3。其中,圖7是2 000 次發(fā)送測(cè)試的Wireshark 抓包圖。為了不影響抓取,固定MAC 幀類(lèi)型為0x1234,設(shè)計(jì)系統(tǒng)的MAC 地址為00:00:00:11:22:33,以廣播的形式發(fā)包進(jìn)行測(cè)試。

表3 發(fā)送功能測(cè)試結(jié)果

圖7 2 000 次發(fā)送測(cè)試結(jié)果

3.1.2 接收功能驗(yàn)證

1)正常接收驗(yàn)證

測(cè)試工具:科來(lái)數(shù)據(jù)包生成器、科來(lái)數(shù)據(jù)包播放器、串口調(diào)試助手。向設(shè)計(jì)接口發(fā)送不在白名單中的單播包,驗(yàn)證接口的接收功能以及地址白名單功能。具體測(cè)試結(jié)果見(jiàn)表4。

表4 接收功能測(cè)試結(jié)果

2) 廣播包/組播包風(fēng)暴抑制

測(cè)試工具:科來(lái)數(shù)據(jù)包生成器、科來(lái)數(shù)據(jù)包播放器、串口調(diào)試助手。測(cè)試中固定風(fēng)暴抑制區(qū)間間隔為65 ms。設(shè)置不同的廣播包接收的抑制閾值,構(gòu)造廣播包與單播包各不同的組合,將其循環(huán)向設(shè)計(jì)接口發(fā)送。測(cè)試結(jié)果見(jiàn)表5,其中理論接收包數(shù)等于發(fā)包總數(shù)乘以一次循環(huán)中不會(huì)發(fā)生風(fēng)暴的比例。

表5 風(fēng)暴抑制結(jié)果測(cè)試

3.2 多通道驗(yàn)證

仿真環(huán)境如圖8 所示,例化3 個(gè)MAC 模塊,將這3 個(gè)模塊的MAC 發(fā)送端口和接收端口相連構(gòu)成回環(huán)。激勵(lì)文件模擬FSMC 時(shí)序,通過(guò)FSMC 接口分別向通道0,1,2各發(fā)送一包數(shù)據(jù)。這三包的構(gòu)成一致都是從0 開(kāi)始遞增,且結(jié)尾為固定值1,他們的長(zhǎng)度分別是50 B,46 B,60 B。圖9 是這三包數(shù)據(jù)中的第一包數(shù)據(jù)。

圖8 多通道仿真環(huán)境

圖9 向通道0 發(fā)送的數(shù)據(jù)包時(shí)序

根據(jù)表1 所示的協(xié)議,經(jīng)過(guò)回環(huán)得到的數(shù)據(jù)包頭部是該數(shù)據(jù)包的長(zhǎng)度與通道號(hào)。要驗(yàn)證多通道功能的正確性,需保證接收的數(shù)據(jù)包頭部的長(zhǎng)度和通道號(hào)正確且后面數(shù)據(jù)部分正確。仿真測(cè)試中將包頭的[15:14]位表示通道,[10:0]位表示數(shù)據(jù)部分長(zhǎng)度,單位為字節(jié)。如圖10 所示,按照協(xié)議解析,表示通道0,長(zhǎng)度為50 B。其余兩包內(nèi)容類(lèi)似,由于篇幅原因就不附上,同時(shí)核對(duì)各包實(shí)際數(shù)據(jù)部分也與對(duì)應(yīng)發(fā)送包相同。

圖10 接收第1 包數(shù)據(jù)時(shí)序

經(jīng)過(guò)以上一系列測(cè)試,數(shù)據(jù)發(fā)送和接收功能正常,傳輸時(shí)不丟包,且能穩(wěn)定可靠工作,滿足設(shè)計(jì)要求。

4 結(jié) 語(yǔ)

本文針對(duì)多路以太網(wǎng)通信需求,基于ARM 和FPGA特點(diǎn),綜合兩者的優(yōu)勢(shì)提出一種基于ARM+FPGA 的多路千兆以太網(wǎng)通信系統(tǒng)。實(shí)現(xiàn)了MAC 幀發(fā)送和接收、廣播/組播風(fēng)暴抑制、幀間隔配置、MAC 白名單和錯(cuò)誤檢測(cè)。從驗(yàn)證結(jié)果來(lái)看,系統(tǒng)運(yùn)行穩(wěn)定可靠,滿足設(shè)計(jì)需求。本設(shè)計(jì)只針對(duì)千兆以太網(wǎng)進(jìn)行設(shè)計(jì),在實(shí)際應(yīng)用中可以做成10M/100M/1 000M 自協(xié)商,以適應(yīng)市場(chǎng)需求。本文設(shè)計(jì)的以太網(wǎng)接口相比其他設(shè)計(jì),具有多通道和硬件風(fēng)暴抑制的功能,適合多通道的以太網(wǎng)傳輸。由于日益緊張的國(guó)際形勢(shì),使得國(guó)內(nèi)對(duì)于芯片國(guó)產(chǎn)化的觀念日趨強(qiáng)烈,下一步將考慮實(shí)現(xiàn)此接口在國(guó)產(chǎn)化芯片上的移植應(yīng)用。

猜你喜歡
發(fā)送數(shù)據(jù)寄存器風(fēng)暴
移動(dòng)自組網(wǎng)中MAC層協(xié)議研究
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
《風(fēng)暴中奔跑的樹(shù)》
分簇結(jié)構(gòu)向量寄存器分配策略研究*
使用IPSec安全傳輸數(shù)據(jù)
玩轉(zhuǎn)腦風(fēng)暴
可怕的大風(fēng)暴
2015A/W暗黑風(fēng)暴來(lái)襲!