0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

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

現(xiàn)代電子技術 ? 來源:現(xiàn)代電子技術 ? 作者:李 楊,蘇和平,張 ? 2022-11-02 16:55 ? 次閱讀

作者:李 楊,蘇和平,張 丹,許喬

摘要:針對現(xiàn)有的千兆以太網(wǎng)通信接口設計中存在的價格昂貴、不能勝任多路以太網(wǎng)傳輸?shù)葐栴},提出并實現(xiàn)一種基于 FPGA+ARM 的多路千兆以太網(wǎng)通信接口模塊。該設計分為 ARM 和 FPGA 兩個部分,通過 STM32 微處理器帶有的靈活靜態(tài)存儲控制器(FSMC)接口進行數(shù)據(jù)交換。ARM 部分通過發(fā)送函數(shù)、接收函數(shù)實現(xiàn)對以太網(wǎng)接口控制以及對數(shù)據(jù)的處理;FPGA 部分采用自頂向下的設計方法,通過時序轉(zhuǎn)換模塊、打包解包模塊以及 MAC 控制模塊實現(xiàn)以太網(wǎng)接口功能,并且定義了兩個自定義協(xié)議,分別用于 ARM 與 FPGA 通信以及 FPGA 內(nèi)部打解包模塊與 MAC 控制模塊的通信。搭建了硬件測試驗證平臺對設計進行了全面驗證。硬件測試驗證結(jié)果表明該設計能夠正確實現(xiàn)以上功能。該方案成本低廉、擴展性強、支持多通道傳輸且支持網(wǎng)絡風暴抑制,適用于對成本要求較高且需多通道以太網(wǎng)傳輸?shù)膱鼍啊?/p>

引 言

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

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

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

1 整體結(jié)構

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

7391f3fe-5a82-11ed-a3b6-dac502259ad0.png

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

73b11b9e-5a82-11ed-a3b6-dac502259ad0.png

2 FPGA 設計

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

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

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

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

73cabc3e-5a82-11ed-a3b6-dac502259ad0.png

2.2 打包模塊和解包模塊

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

73dd8116-5a82-11ed-a3b6-dac502259ad0.png

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

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

2.3 MAC模塊

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

73f63792-5a82-11ed-a3b6-dac502259ad0.png

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

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

740b619e-5a82-11ed-a3b6-dac502259ad0.png

MAC 接收的邏輯流程圖如圖 5 所示。接收使能MAC 模塊開始接收,若 rxdv 信號有效且接收到前導碼和幀定界符,則進行下一步的目的 MAC 地址接收。接下來進行廣播/組播/單播的類型判斷,廣播或組播的處理類似,會判斷是否已經(jīng)發(fā)生廣播/組播風暴,發(fā)生則不再接收數(shù)據(jù),沒有就繼續(xù);單播的話不需要考慮抑制,所以這步跳過。接下來接收源 MAC 地址,僅單播需要判斷是否源 MAC 地址在 MAC 地址白名單中,不在白名單則停止操作,在就接收數(shù)據(jù),直到 rxdv 變?yōu)榈碗娖健W詈笈袛嘟邮帐欠皴e誤,包括長度和 CRC校驗。

2.4 ARM 系統(tǒng)軟件設計

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

7420f59a-5a82-11ed-a3b6-dac502259ad0.png

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

當有 ARM 檢測到接收中斷時,ARM 查詢中斷狀態(tài)寄存器,確定是接收中斷,同時清除該中斷標志,然后進行讀取操作。同時接收過程也支持輪詢寄存器,方法與中斷接收類似,不再贅述。

3 驗 證

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

3.1 單通道驗證

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

7444c650-5a82-11ed-a3b6-dac502259ad0.png

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

3.1.1 發(fā)送功能驗證

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

745c1652-5a82-11ed-a3b6-dac502259ad0.png

3.1.2 接收功能驗證

1)正常接收驗證

測試工具:科來數(shù)據(jù)包生成器、科來數(shù)據(jù)包播放器、串口調(diào)試助手。向設計接口發(fā)送不在白名單中的單播包,驗證接口的接收功能以及地址白名單功能。具體測

747c0dcc-5a82-11ed-a3b6-dac502259ad0.png

2) 廣播包/組播包風暴抑制

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

74932278-5a82-11ed-a3b6-dac502259ad0.png

3.2 多通道驗證

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

74a18566-5a82-11ed-a3b6-dac502259ad0.png

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

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

74b7ffa8-5a82-11ed-a3b6-dac502259ad0.png

4 結(jié) 語

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

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1620

    文章

    21510

    瀏覽量

    598875
  • ARM
    ARM
    +關注

    關注

    134

    文章

    8966

    瀏覽量

    365007
  • 以太網(wǎng)

    關注

    40

    文章

    5287

    瀏覽量

    169635

原文標題:論文速覽 | 基于FPGA+ARM多路千兆以太網(wǎng)通信接口設計

文章出處:【微信號:現(xiàn)代電子技術,微信公眾號:現(xiàn)代電子技術】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于Xilinx FPGA千兆以太網(wǎng)控制器的開發(fā)

    千兆以太網(wǎng)利用了原以太網(wǎng)標準所規(guī)定的全部技術規(guī)范,其中包括CSMA/CD協(xié)議、以太網(wǎng)幀、全雙工、流量控制以及IEEE 802.3標準中所定義的管理對象。##
    發(fā)表于 01-23 11:13 ?3w次閱讀
    基于Xilinx <b class='flag-5'>FPGA</b>的<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>控制器的開發(fā)

    以太網(wǎng)通信S7是什么意思?

    以太網(wǎng)通信
    YS YYDS
    發(fā)布于 :2023年06月25日 00:07:18

    PC與FPGA以太網(wǎng)通信

    我現(xiàn)在在做FPGA和PC之間的以太網(wǎng)通信,PC和FPGA用交叉線直連,板子上的以太網(wǎng)phy芯片是88e1111,以太網(wǎng)
    發(fā)表于 07-05 21:37

    FPGA+DSP;FPGA+ARM硬件設計

    本人剛?cè)腴TFPGA,不知道如何實現(xiàn)FPGA+DSP,FPGA+ARM接口設計,網(wǎng)上查詢有的說FPGA+DSP可以通過EMIF,IP核實現(xiàn),
    發(fā)表于 08-27 11:30

    STM32能否實現(xiàn)千兆以太網(wǎng)通信?

    最近想用STM32做一個千兆以太網(wǎng)通信接口ARM小白,請求大神指點:1、能否實現(xiàn)?2、需要使用哪個系列的
    發(fā)表于 06-05 21:25

    簡談基于FPGA千兆以太網(wǎng)設計

    習。 咱們就以千兆以太網(wǎng)舉例,千兆以太網(wǎng),只是說以太網(wǎng)的速率為千兆,也就是1G。除了
    發(fā)表于 06-01 18:39

    基于FPGA的十端口千兆以太網(wǎng)接口的設計與實現(xiàn)

    當前的路由器或交換機產(chǎn)品都提供多端口千兆以太網(wǎng)接口。采用高性能FPGA 設計十端口千兆以太網(wǎng)
    發(fā)表于 08-29 09:30 ?51次下載

    TM1300芯片的以太網(wǎng)通信接口的設計和實現(xiàn)

    設計通過TM1300的PCI接口驅(qū)動以太網(wǎng)芯片,實現(xiàn)了一種以太網(wǎng)通信接口。該方案將擅長多媒體信號處理的TM1300和十分普及的以太網(wǎng)結(jié)合起來
    發(fā)表于 05-05 19:44 ?1058次閱讀
    TM1300芯片的<b class='flag-5'>以太網(wǎng)通信</b><b class='flag-5'>接口</b>的設計和實現(xiàn)

    LPC23xx的自適應以太網(wǎng)通信接口設計

    LPC23xx的自適應以太網(wǎng)通信接口設計 以太網(wǎng)接口是嵌入式系統(tǒng)進行以太網(wǎng)通信的硬件基礎。隨著微電子技術的進步,許多嵌入式控制芯片集成了
    發(fā)表于 01-12 10:42 ?1930次閱讀
    LPC23xx的自適應<b class='flag-5'>以太網(wǎng)通信</b><b class='flag-5'>接口</b>設計

    基于ARM多路串行和以太網(wǎng)通信技術的研究與應用

    本文主要是對于多路串行和以太網(wǎng)通信技術的介紹,以及基于ARM多路串行和以太網(wǎng)通信技術的研究與應用
    發(fā)表于 10-17 17:41 ?76次下載
    基于<b class='flag-5'>ARM</b>的<b class='flag-5'>多路</b>串行和<b class='flag-5'>以太網(wǎng)通信</b>技術的研究與應用

    S7-200SMART開放以太網(wǎng)通信

    此文重點介紹V2.2最新升級的功能開放以太網(wǎng)通信功能,用過GET/PUT通信的肯定覺得非常方便,唯一的遺憾就是只支持S7協(xié)議,無法實現(xiàn)和其它品牌產(chǎn)品進行以太網(wǎng)通信,開放的以太網(wǎng)通信就是
    的頭像 發(fā)表于 06-27 09:58 ?1.9w次閱讀

    基于FPGA的UDP千兆以太網(wǎng)通信

    本文介紹一個FPGA開源項目:UDP千兆以太網(wǎng)通信。利用SFP接口,可以通過使用SFP轉(zhuǎn)RJ45模塊或者直接使用光纖進行
    的頭像 發(fā)表于 08-31 11:26 ?3930次閱讀
    基于<b class='flag-5'>FPGA</b>的UDP<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)</b>光<b class='flag-5'>通信</b>

    以太網(wǎng)通信和串口通信區(qū)別

    以太網(wǎng)通信和串口通信區(qū)別? 以太網(wǎng)通信和串口通信都是網(wǎng)絡通信中常見的方式,在實際應用中,兩者的使用場景各有不同。
    的頭像 發(fā)表于 09-02 14:44 ?5368次閱讀

    基于FPGA的UDP RGMII千兆以太網(wǎng)通信方案

    本文介紹一個FPGA開源項目:UDP RGMII千兆以太網(wǎng)通信。該項目在我之前的工作中主要是用于FPGA和電腦端之間進行圖像數(shù)據(jù)傳輸。本文簡要介紹一下該項目的
    的頭像 發(fā)表于 09-04 16:49 ?1346次閱讀
    基于<b class='flag-5'>FPGA</b>的UDP RGMII<b class='flag-5'>千兆</b><b class='flag-5'>以太網(wǎng)通信</b>方案

    如何使用AT32F407以太網(wǎng)通信接口實現(xiàn)在應用中編程(IAP)

    如何使用AT32F407以太網(wǎng)通信接口實現(xiàn)在應用中編程(IAP)
    的頭像 發(fā)表于 11-07 17:20 ?1333次閱讀
    如何使用AT32F407<b class='flag-5'>以太網(wǎng)通信</b><b class='flag-5'>接口</b>實現(xiàn)在應用中編程(IAP)