千兆以太網(wǎng)工程模塊劃分總結(jié)與分析
很多朋友在工程模塊劃分的時候總會遇到很多問題,比如不知道如何下手、模塊劃分不合理等;我開始也是這樣的,在學習了明德?lián)P的幾項工程以后,按照老師分享的思路,也對模塊劃分有了一定的小經(jīng)驗,今天通過案例的方式與大家分享。
一、模塊劃分要點總結(jié)
1、列出項目的功能要求(客戶提出的產(chǎn)品功能要求)
2、畫出硬件的系統(tǒng)結(jié)構(gòu)框圖(添加外設(shè))
3、框圖中每個外圍接口都對應有一個接口轉(zhuǎn)換模塊
接口轉(zhuǎn)換模塊的作用是將外圍器件的接口時序轉(zhuǎn)為通用的接口時序,或者將通用接口時序轉(zhuǎn)換為外圍器件接口時序,這樣使得FPGA內(nèi)部其他模塊不用再關(guān)心外圍接口的時序了。
MDY規(guī)范通用接口時序:
l data以及對應的vld,傳輸單個數(shù)據(jù)格式
l MDY的包文格式,din,vld,SOP,EOP,MTY,ERR
l wren,waddr,wdata;rden,raddr,rdata,rdata_vld
4、考慮是否涉及指令系統(tǒng)(操作碼+數(shù)據(jù)格式)
上位機,例如PC,ARM,DSP或者其他的器件,只涉及到一個接口,但是卻有很多指令或者命令功能要發(fā)送,因此就需要一個指令系統(tǒng)。
指令系統(tǒng)一定會涉及到命令、地址和數(shù)據(jù)。這種情況,肯定會有一個“寄存器解析模塊”,根據(jù)命令、地址和數(shù)據(jù),改變相應的寄存器的值。
5、考慮外圍器件是否涉及寄存器配置
項目中有某些外設(shè),上電工作前需要進行配置才能按要求工作。因此需要對外設(shè)內(nèi)部寄存器進行讀寫,這一流程是通過FPGA來進行配置。
遇到這個情況,使用MDY推薦的模塊寄存器配置結(jié)構(gòu):
寄存器配置表模塊+寄存器讀寫配置模塊+外設(shè)配置接口時序轉(zhuǎn)換模塊
6、根據(jù)實際情況,增加、補充或者拆分,優(yōu)化對應模塊,隨時調(diào)整
原則:根據(jù)接口信號,看模塊間是否方便對接。接口就決定了模塊功能。所以在這一層的調(diào)整,一定要清楚接口的定義。
7、考慮是否涉及多路進一路出,要用FIFO
調(diào)度FIFO要考慮自身帶寬能否滿足多路一起突發(fā)發(fā)送時的數(shù)據(jù)量情況。如果帶寬不滿足,就要要輸出給上游模塊RDY信號。此時RDY信號有效取決于自己設(shè)置FIFO的Almost Full信號。如果帶寬滿足則不必設(shè)RDY信號。
8、考慮是否涉及到速率匹配問題,要加上RDY信號或者FIFO
首先考慮與外圍器件通信的接口上是否需要rdy信號(FPGA內(nèi)部運行頻率往往與設(shè)接口速率不一致),然后考慮FPGA內(nèi)部模塊間數(shù)據(jù)帶寬是否不一致,有等一等的情況。
二、千兆以太網(wǎng)工程案例分析
根據(jù)前面總結(jié)的要點,通過實際項目案例來分析一下FPGA內(nèi)部功能模塊是怎樣劃分的。這里我們選取已經(jīng)做過的千兆以太網(wǎng)工程,接下來按照上面總結(jié)的模塊劃分步驟,一步步完成模塊初步劃分!
1.列出項目的功能要求
本項目功能要求:FPGA內(nèi)部產(chǎn)生要發(fā)送的包文數(shù)據(jù),通過UDP協(xié)議,發(fā)送給PC;PC發(fā)送UDP格式包文數(shù)據(jù),F(xiàn)PGA需要解析UDP協(xié)議,提取出用戶數(shù)據(jù);ARP協(xié)議實現(xiàn)定期發(fā)送ARP協(xié)議,獲取對方電腦的物理地址。
功能分析:
a) FPGA內(nèi)部產(chǎn)生發(fā)送的包文數(shù)據(jù);
b) 要通過UDP協(xié)議發(fā)送,就需要添加MAC協(xié)議頭部,IP協(xié)議頭部,UDP協(xié)議頭部;
c) FPGA接收到PC發(fā)來的UDP報文,要一層層解析協(xié)議頭部信息,先解析出MAC頭,然后是IP頭,UDP頭,最后才能獲取用戶數(shù)據(jù);
d) FPGA定期發(fā)送ARP協(xié)議請求報文;
e) FPGA接收到PC發(fā)來的ARP協(xié)議應答報文,要解析出源MAC地址;并在發(fā)送包文數(shù)據(jù)中,將獲取的MAC地址作為目的MAC地址進行打包發(fā)送。
2.畫出硬件系統(tǒng)結(jié)構(gòu)框圖
根據(jù)步驟1總結(jié)出的功能要求,找到除FPGA外需要哪些外圍器件。分析得出:
FPGA與PC通信是以千兆以太網(wǎng)的形式,需要將FPGA輸出的信號調(diào)制成千兆以太網(wǎng)信號,本項目選取了外部PHY芯片RTL8211來實現(xiàn)此通信調(diào)制功能。同理PC端發(fā)送的數(shù)據(jù)通過千兆以太網(wǎng)網(wǎng)線傳輸,需要經(jīng)過PHY解調(diào)后輸出給FPGA;
為了設(shè)計方便,F(xiàn)PGA發(fā)送的報文數(shù)據(jù)中,完成FCS校驗的計算交給了MAC IP核來完成;同理,接收端接收到PC發(fā)來的報文數(shù)據(jù)也由MAC IP核完成FCS校驗;
前期為了驗證設(shè)計,考慮添加按鍵作為觸發(fā)MAC IP核初始化的啟動條件。
外圍器件總共需要三個:
a) 按鍵
b) 2PHY(RTL8211)
c) 3PC
畫出系統(tǒng)框圖如下所示:
3.框圖中每個外圍接口都對應有一個接口轉(zhuǎn)換模塊
a) 按鍵對應的接口轉(zhuǎn)換模塊是按鍵消抖檢測模塊;
b) PHY對應的接口轉(zhuǎn)換模塊是MAC IP核模塊。
添加后框圖如下所示:
本項目不涉及指令系統(tǒng)
5.考慮外圍器件是否涉及寄存器配置
本項目中MAC IP核涉及寄存器配置。使用MDY推薦模板:寄存器配置表模塊+寄存器讀寫配置模塊+外設(shè)配置接口時序轉(zhuǎn)換模塊;
由于MAC IP配置接口使用的是Avalon協(xié)議(與MDY接口協(xié)議不同之處在于waitrequest信號),所以外設(shè)配置接口時序轉(zhuǎn)換模塊對外接口也應該是Avalon,對內(nèi)則是MDY規(guī)范接口。
完善后如下所示:
到第6步,根據(jù)數(shù)據(jù)流向,需要對模塊間的接口進行詳細分析了,補充模塊或者將功能相同的模塊合并化簡。
從發(fā)送側(cè)數(shù)據(jù)流向思考:
a) FPGA內(nèi)部產(chǎn)生要發(fā)送的數(shù)據(jù),因此需要一個數(shù)據(jù)產(chǎn)生模塊;
b) 產(chǎn)生的發(fā)送數(shù)據(jù)需要先添加UDP頭部,所以需要一個添加UDP協(xié)議頭部模塊;
c) 然后添加IP頭部,需要一個添加IP協(xié)議頭部模塊;
d) 最后添加MAC頭部,就完成了完整的發(fā)送UDP協(xié)議報文,因此需要一個添加MAC協(xié)議頭部模塊;
e) 同時需要定期發(fā)送ARP協(xié)議請求報文,需要一個ARP請求報文模塊;
f) 由于ARP報文需要定時產(chǎn)生,所以需要一個計時模塊。
從接收側(cè)數(shù)據(jù)流向思考:
FPGA接收到PHY解調(diào)出的PC發(fā)送來的UDP報文或者ARP應答報文,經(jīng)過MAC IP核驗證FCS后,解析出正確或者錯誤的UDP、ARP報文:
a) 經(jīng)過MAC IP核輸出的報文需要進行MAC頭部檢查,正確則輸出UDP、ARP報文,錯誤則做丟包處理。所以需要一個MAC頭部解析模塊;
b) 經(jīng)過MAC頭部解析模塊處理后輸出的是正確的IP報文,此時需要進行IP頭部檢查,正確則輸出報文,錯誤則做丟包處理。所以需要一個IP頭部解析模塊;
c) 經(jīng)過MAC頭部解析模塊處理后輸出的是正確的ARP應答報文,此時需要進行ARP報文解析,獲取發(fā)送端MAC地址。所以需要一個ARP應答解析模塊;
d) 同1、2兩步原理,輸出UDP報文需要進行UDP頭部檢查,所以需要一個UDP頭部解析模塊。
經(jīng)過UDP頭部解析模塊解析出來的報文數(shù)據(jù)即是PC端發(fā)來的正確用戶數(shù)據(jù),輸出即可。
補充后如下圖所示:
接下來將功能互斥、數(shù)據(jù)流向相關(guān),接口一致的模塊做合并化簡處理,如下圖所示:
本項目數(shù)據(jù)流方面涉及多路進一路出的問題。
在進行模塊優(yōu)化時,注意到產(chǎn)生的用戶數(shù)據(jù)和定時ARP請求報文不能同時輸出給MAC IP核,需要一個發(fā)送調(diào)度模塊來完成多路輸入一路輸出的調(diào)度,是發(fā)送打包模塊送來的UDP報文還是發(fā)送ARP請求報文。
8.考慮是否涉及到速率匹配問題,要加上RDY信號或者FIFO
首先考慮與外圍器件通信的接口上是否需要rdy信號。
外圍PHY芯片與FPGA通信是經(jīng)過MAC IP核來處理,時序MAC IP核已經(jīng)做好了,所以不需要設(shè)rdy信號。
再考慮FPGA內(nèi)部模塊間運行速率不匹配的情況,根據(jù)數(shù)據(jù)流方向來考慮:
發(fā)送側(cè):
a) 發(fā)送報文打包模塊需要時間(計算各個協(xié)議頭部校驗和,長度等信息),所以需要在數(shù)據(jù)產(chǎn)生模塊和數(shù)據(jù)打包模塊間設(shè)FIFO并設(shè)rdy信號。
b) 數(shù)據(jù)打包模塊和ARP請求報文發(fā)送模塊同時發(fā)送給報文調(diào)度模塊,發(fā)送包文調(diào)度模塊不能同時響應,需要FIFO來緩存,考慮到突發(fā)情況FIFO會溢出,所以需要與數(shù)據(jù)打包模塊和ARP請求報文定時發(fā)送模塊間設(shè)FIFO并設(shè)RDY信號。
接收側(cè):
接收側(cè)模塊間速率匹配,不需要設(shè)FIFO和RDY信號。
最終得到的模塊圖如下所示:
到此,根據(jù)模塊劃分步驟一步步做下來,千兆網(wǎng)工程的模塊劃分雛形初步已經(jīng)完成。具體實踐中需要根據(jù)FPGA內(nèi)部信號的調(diào)整,隨時拆分或獨立來增減功能模塊。
今天分享的案例是千兆以太網(wǎng)工程。該工程是明德?lián)P的網(wǎng)絡班、就業(yè)班的其中一個項目,涉及到MAC協(xié)議、ARP協(xié)議、IP協(xié)議和UDP協(xié)議的實現(xiàn),協(xié)議較多,劃分的模塊也較多。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1660文章
22412瀏覽量
636421 -
千兆以太網(wǎng)
+關(guān)注
關(guān)注
0文章
80瀏覽量
14278
發(fā)布評論請先 登錄
探索TS3L500AE:千兆以太網(wǎng)開關(guān)的卓越之選
TNETE2201B 1.25 - 千兆以太網(wǎng)收發(fā)器:性能與應用解析
深度剖析TLK1211RCP千兆以太網(wǎng)收發(fā)器:設(shè)計應用指南
深入剖析TLK1221千兆以太網(wǎng)收發(fā)器:特性、功能與設(shè)計要點
SM91604L LAN變壓器:助力千兆以太網(wǎng)設(shè)計
LAN8814 4端口千兆以太網(wǎng)收發(fā)器數(shù)據(jù)手冊總結(jié)
LAN9370汽車級以太網(wǎng)交換機芯片技術(shù)解析
LAN8804四端口千兆以太網(wǎng)收發(fā)器技術(shù)解析
千兆以太網(wǎng)防護:3 步搞定電涌威脅
以太網(wǎng)模塊被忽視的角落 #電磁兼容EMC #電子工程師 #電子元器件 #磁珠 #濾波電容 #以太網(wǎng)
WiFi和以太網(wǎng)哪個更快
AD9574以太網(wǎng) 千兆以太網(wǎng)時鐘發(fā)生器技術(shù)手冊
串口轉(zhuǎn)以太網(wǎng)芯片選型指南:2025十大以太網(wǎng)模塊品牌盤點與應用方案解析
廣成科技CAN轉(zhuǎn)以太網(wǎng)模塊的作用和應用
千兆以太網(wǎng)工程模塊劃分總結(jié)與分析
評論