作者:李 楊,蘇和平,張 丹,許喬
摘要:針對(duì)現(xiàn)有的千兆以太網(wǎng)通信接口設(shè)計(jì)中存在的價(jià)格昂貴、不能勝任多路以太網(wǎng)傳輸?shù)葐?wèn)題,提出并實(shí)現(xiàn)一種基于 FPGA+ARM 的多路千兆以太網(wǎng)通信接口模塊。該設(shè)計(jì)分為 ARM 和 FPGA 兩個(gè)部分,通過(guò) STM32 微處理器帶有的靈活靜態(tài)存儲(chǔ)控制器(FSMC)接口進(jìn)行數(shù)據(jù)交換。ARM 部分通過(guò)發(fā)送函數(shù)、接收函數(shù)實(shí)現(xiàn)對(duì)以太網(wǎng)接口控制以及對(duì)數(shù)據(jù)的處理;FPGA 部分采用自頂向下的設(shè)計(jì)方法,通過(guò)時(shí)序轉(zhuǎn)換模塊、打包解包模塊以及 MAC 控制模塊實(shí)現(xiàn)以太網(wǎng)接口功能,并且定義了兩個(gè)自定義協(xié)議,分別用于 ARM 與 FPGA 通信以及 FPGA 內(nèi)部打解包模塊與 MAC 控制模塊的通信。搭建了硬件測(cè)試驗(yàn)證平臺(tái)對(duì)設(shè)計(jì)進(jìn)行了全面驗(yàn)證。硬件測(cè)試驗(yàn)證結(jié)果表明該設(shè)計(jì)能夠正確實(shí)現(xiàn)以上功能。該方案成本低廉、擴(kuò)展性強(qiáng)、支持多通道傳輸且支持網(wǎng)絡(luò)風(fēng)暴抑制,適用于對(duì)成本要求較高且需多通道以太網(wǎng)傳輸?shù)膱?chǎng)景。
引 言
隨著人工智能、大數(shù)據(jù)和物聯(lián)網(wǎng)等新興技術(shù)的發(fā)展,原始數(shù)據(jù)井噴式地涌現(xiàn)出來(lái),這也對(duì)接口提出了更高的要求[1?2],高速、可靠的傳輸接口往往是整個(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)暴抑制[9?11]的功能一般在軟件層面,這會(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 總線[12]傳遞給 ARM 進(jìn)行處理;下行數(shù)據(jù)由 ARM 發(fā)出,通過(guò) FSMC 總線進(jìn)入 FPGA中進(jìn)行打包,根據(jù)命令從相應(yīng)通道的千兆以太網(wǎng)口向外發(fā)送。
FPGA 與 ARM 之間通過(guò) FSMC 總線連接,如圖 2 所示。FSMC 總線包含 6 位地址總線、16 位數(shù)據(jù)總線以及控制總線。
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接收模塊。
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相連。
發(fā)送功能:當(dāng)檢測(cè)到發(fā)送開(kāi)始寄存器操作后,將發(fā)送數(shù)據(jù)寄存器的數(shù)據(jù)寫入前級(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 地址白名單。
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)暴抑制邏輯相同。
MAC 接收的邏輯流程圖如圖 5 所示。接收使能MAC 模塊開(kāi)始接收,若 rxdv 信號(hào)有效且接收到前導(dǎo)碼和幀定界符,則進(jìn)行下一步的目的 MAC 地址接收。接下來(lái)進(jìn)行廣播/組播/單播的類型判斷,廣播或組播的處理類似,會(huì)判斷是否已經(jīng)發(fā)生廣播/組播風(fēng)暴,發(fā)生則不再接收數(shù)據(jù),沒(méi)有就繼續(xù);單播的話不需要考慮抑制,所以這步跳過(guò)。接下來(lái)接收源 MAC 地址,僅單播需要判斷是否源 MAC 地址在 MAC 地址白名單中,不在白名單則停止操作,在就接收數(shù)據(jù),直到 rxdv 變?yōu)榈碗娖健W詈笈袛嘟邮帐欠皴e(cuò)誤,包括長(zhǎng)度和 CRC校驗(yàn)。
2.4 ARM 系統(tǒng)軟件設(shè)計(jì)
ARM 端程序是運(yùn)行在 μCOSⅢ操作系統(tǒng)[13]之上的,ARM 程序使用 C 語(yǔ)言編寫,ARM 程序分為兩個(gè)模塊,即發(fā)送程序和接收程序。
當(dāng)任務(wù)調(diào)用發(fā)送函數(shù),向發(fā)送開(kāi)始寄存器寫操作,接著向發(fā)送數(shù)據(jù)寄存器發(fā)送通道號(hào)以及數(shù)據(jù)長(zhǎng)度,然后向發(fā)送數(shù)據(jù)寄存器發(fā)送待發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)完成后,向發(fā)送完成寄存器寫操作。
當(dāng)有 ARM 檢測(cè)到接收中斷時(shí),ARM 查詢中斷狀態(tài)寄存器,確定是接收中斷,同時(shí)清除該中斷標(biāo)志,然后進(jìn)行讀取操作。同時(shí)接收過(guò)程也支持輪詢寄存器,方法與中斷接收類似,不再贅述。
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ù)。
測(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幀類型為 0x1234,設(shè)計(jì)系統(tǒng)的 MAC地址為00:00:00:11:22:33,以廣播的形式發(fā)包進(jìn)行測(cè)試。
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è)
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)暴的比例。
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ù)。
根據(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)容類似,由于篇幅原因就不附上,同時(shí)核對(duì)各包實(shí)際數(shù)據(jù)部分也與對(duì)應(yīng)發(fā)送包相同。
經(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)用。
審核編輯:郭婷
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603419 -
ARM
+關(guān)注
關(guān)注
134文章
9097瀏覽量
367580 -
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5425瀏覽量
171729
原文標(biāo)題:論文速覽 | 基于FPGA+ARM多路千兆以太網(wǎng)通信接口設(shè)計(jì)
文章出處:【微信號(hào):現(xiàn)代電子技術(shù),微信公眾號(hào):現(xiàn)代電子技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論