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