• 正文
    • 一、設(shè)計(jì)概述
    • 二、設(shè)計(jì)框架
    • 三、數(shù)據(jù)流框圖描述
    • 四、DDIO模塊簡(jiǎn)單描述
    • 五、ram64模塊時(shí)序描述
    • 六、image模塊時(shí)序描述
    • 七、TWO_buffer模塊時(shí)序描述
    • 八、SDRAM控制模塊描述
    • 總結(jié)
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于FPGA的千兆以太網(wǎng)設(shè)計(jì)

2024/05/04
3591
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大俠好,歡迎來(lái)到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。

今天給大俠帶來(lái)基于FPGA的千兆以太網(wǎng)設(shè)計(jì),話不多說(shuō),上貨。

一、設(shè)計(jì)概述

由于設(shè)計(jì)比較復(fù)雜,本篇帶來(lái)設(shè)計(jì)流程以及設(shè)計(jì)思路,僅供各位大俠參考。

本篇通過(guò)管理數(shù)據(jù)輸入輸出MDIO配置PHY寄存器,使其工作在千兆通信模式下。FPGA通過(guò)ddio_out的IP核將數(shù)據(jù)單沿轉(zhuǎn)雙沿通過(guò)TX發(fā)送到PHY-A,PHY—B把收到的數(shù)據(jù)RX通過(guò)ddio_in的IP核雙沿轉(zhuǎn)單沿給FPGA采集,實(shí)現(xiàn)FPGA與PHY的交互通信。通過(guò)FPGA的SDRAM控制模塊對(duì)SDRAM進(jìn)行讀寫和刷新的操作,從而進(jìn)行數(shù)據(jù)的存儲(chǔ)與讀取的操作。

根據(jù)UDP/IP協(xié)議將數(shù)據(jù)打包,并且通過(guò)IP源地址以及目的地址等來(lái)計(jì)算IP頭部checksum和UDP頭部checksum,在PC機(jī)上通過(guò)上位機(jī)軟件Wireshark獲取FPGA發(fā)送的1024byte的數(shù)據(jù)包,并且上位機(jī)顯示通過(guò)UDP協(xié)議接收數(shù)據(jù),數(shù)據(jù)位打包時(shí)加上CRC32冗余校驗(yàn)碼,在FPGA的接收端可以加上CRC32解碼操作,用來(lái)驗(yàn)證數(shù)據(jù)在傳輸過(guò)程中是否出錯(cuò)。

二、設(shè)計(jì)框架

整體模塊比較復(fù)雜,自頂向下設(shè)計(jì)流程,分模塊較多,需要注意各個(gè)端口信號(hào),最好可以做成端口信號(hào)表,以免自己搞混淆。

注:復(fù)位省略,_t后綴表示數(shù)據(jù)或標(biāo)志信號(hào)經(jīng)過(guò)一級(jí)寄存器打拍操作。輸入時(shí)鐘25M,PLL倍頻輸出sclk125M,tx_data是偏移90度125M時(shí)鐘。

三、數(shù)據(jù)流框圖描述

四、DDIO模塊簡(jiǎn)單描述

DDIO模塊描述:

1、DDIO為調(diào)用的FPGA內(nèi)部IP核;

2、ddioin是將雙沿?cái)?shù)轉(zhuǎn)為單沿?cái)?shù)據(jù),ddioout是將單沿?cái)?shù)據(jù)轉(zhuǎn)化雙沿?cái)?shù)據(jù)。

ddioin時(shí)序圖

五、ram64模塊時(shí)序描述

ram64模塊描述:

ram64是深度為64位寬為8的LCs分布式RAM。

作用:

同頻異相的同步化操作。

write時(shí)序圖:

RAM64的Read控制模塊描述:

rx_clk時(shí)鐘域下的start_en和CRC_en轉(zhuǎn)化到sclk時(shí)鐘域下,都要先進(jìn)行打三拍操作之后在被引用。(數(shù)據(jù)跨時(shí)鐘域處理可以用雙口RAM或FIFO,一般的標(biāo)志信號(hào)有打拍法就可以)

1、?在start_ttt為高時(shí),產(chǎn)生一個(gè)rd_flag信號(hào),rd_flag信號(hào)在rd_cnt == batch_data – 1 時(shí)拉低,rd_flag信號(hào)為高時(shí),rd_cnt開始計(jì)數(shù)自加1,在rd_cnt == batch_data – 1并且rd_flag=1時(shí)清零。

2、 Rd_en在CRC_en_ttt==1時(shí)拉高,否則為低。Rd_addr在rd_en=1時(shí)自加,在rd_cnt == batch_data – 1并且rd_flag=1時(shí)清零。

六、image模塊時(shí)序描述

image模塊描述:

por_img_pixel_cnt:像素點(diǎn)計(jì)數(shù)器;

por_img_pixel_max:像素點(diǎn)最大值;

por_img_udp_cnt:udp包計(jì)數(shù)器;

por_img_udp_max:UDP包最大值;

por_img_row_max:圖片行最大值;

por_img_row_cnt:圖片行計(jì)數(shù)器。

頭包時(shí)序:??

在mac_cnt=50時(shí),取出image_w_h;

等于51時(shí),取出image_w_l;

等于52、53、54時(shí),分別取出image_h_h、image_h_l、image_type。

數(shù)據(jù)包時(shí)序:

Image_row_end_flag信號(hào)在por_img_pixel_cnt == por_img_pixel_mux&& por_img_udp_cnt == por_img_udp_mux&&colour_cnt == 2時(shí)拉高一個(gè)時(shí)鐘周期。

Image_end_flag信號(hào)在por_img_row_cnt == por_img_row_mux&&por_img_pixel_cnt == por_img_pixel_mux&& por_img_udp_cnt == por_img_udp_mux&&colour_cnt == 2時(shí),拉高一個(gè)時(shí)鐘周期。

七、TWO_buffer模塊時(shí)序描述

TWO_buffer模塊描述:two_buffer:乒乓操作。

作用:使得SDRAM每次都能讀到一行完整的圖片數(shù)據(jù)。

1、?解決包間隔時(shí)間問(wèn)題;

2、?分時(shí)、交替存儲(chǔ)和讀取,起到緩沖作用;

3、sel_w在image_row_end==1時(shí)進(jìn)行反轉(zhuǎn);sel_r在sdram_read_ack ==1時(shí)進(jìn)行反轉(zhuǎn)。

八、SDRAM控制模塊描述

SDRAM控制模塊描述:

1、512Kbit*32bit*4bank(64Mbit);

2、模式寄存器設(shè)置:0032,潛伏期3,突發(fā)長(zhǎng)度4;

3、自刷新時(shí)間間隔:15us。

Sdram狀態(tài)EBD描述:

Arbit_state:

Write_state:

讀寫模塊狀態(tài)機(jī)基本相似,自刷新模塊狀態(tài)機(jī)直接用線性序列機(jī)就可實(shí)現(xiàn)。這里不做重復(fù)概述。

九、RAM_2k模塊描述

RAM_2k模塊描述:

1、位寬24位,深度2K;

2、作用:緩存從SDRAM讀出的圖片的一行數(shù)據(jù);

3、等待數(shù)據(jù)頭包的發(fā)送和包間隔,并且進(jìn)行圖像一橫數(shù)據(jù)的分包成幀發(fā)送。

十、frame(成幀)模塊的描述

frame(成幀)模塊的描述:

根據(jù)千兆以太網(wǎng)協(xié)議(附錄)進(jìn)行幀包的配置,以太網(wǎng)(IEEE 802.3)幀格式:

1、前導(dǎo)碼:7字節(jié)0x55,一串1、0間隔,用于信號(hào)同步?有的說(shuō)是AA;

2、幀起始定界符:1字節(jié)0xD5(10101011),表示一幀開始?有的說(shuō)是AB;

3、DA(目的MAC):6字節(jié)?如果設(shè)置為全1 為廣播包;

4、SA(源MAC):6字節(jié);

5、類型/長(zhǎng)度:2字節(jié),0~1500保留為長(zhǎng)度域值,1536~65535保留為類型域值(0x0600~0xFFFF);

6、數(shù)據(jù):46~1500字節(jié);

7、幀校驗(yàn)序列(FCS):4字節(jié),使用CRC計(jì)算從目的MAC到數(shù)據(jù)域這部分內(nèi)容而得到的校驗(yàn)和。

注釋:

1、head_flag在image_end=1時(shí)拉高,在head_cnt=cnt_len時(shí)拉低。

2、cnt_flag在head_flag=1||data_flag=1時(shí)拉高,在cnt=cnt_len+pkt_gap時(shí)拉低

3、sd_req在head_flag=1&&head_cnt=cnt_len||por_img_udp_cnt=por_img_udp_max&& data_flag=1&&data_cnt=cnt_len時(shí)拉高,在sd_ack=1時(shí)拉低。

4、ram_wr_en在sd_req=1時(shí)拉高,在image_row_end=1時(shí)拉低。

5、data_flag在cnt_end_flag=1 時(shí)拉高,在data_cnt=cnt_len時(shí)拉低。

6、colour_flag在data_cnt=60時(shí)拉高,在data_cnt=cnt_len時(shí)拉低。

7、ram_rd_addr在por_img_udp_cnt=por_img_udp_max && data_cnt=cnt_len清零。

十一、check_sum模塊描述

check_sum模塊描述:

check_sum是將成幀數(shù)據(jù)進(jìn)行指定算法計(jì)算后的結(jié)果,用于數(shù)據(jù)校驗(yàn)。上位機(jī)會(huì)對(duì)接收到的數(shù)據(jù)做check_sum計(jì)算并且與成幀模塊的check_sum計(jì)算結(jié)果進(jìn)行比較,做出正確或錯(cuò)誤提示。(wireshark數(shù)據(jù)包監(jiān)控軟件)

Chueck_sum部分波形圖:

注釋:

1、實(shí)現(xiàn)方法:將從frame模塊輸入到check_sum的數(shù)據(jù)進(jìn)行check_sum計(jì)算,同時(shí)將輸入data_in先存入一個(gè)深度為2k的RAM中,在所有chenck_sum算完之后,在建數(shù)據(jù)一個(gè)一個(gè)讀出,在協(xié)議的相應(yīng)位置加入check_sum值。

十二、crc模塊描述

crc模塊描述:

1、crc:循環(huán)冗余校驗(yàn)碼,8位輸入,32位輸出。

算子方程式:

2、將輸入數(shù)據(jù)進(jìn)行crc運(yùn)算,在crc校驗(yàn)運(yùn)算完的同時(shí),將32位校驗(yàn)碼補(bǔ)在數(shù)據(jù)流的后四位。

總結(jié)

上位機(jī)軟件:

1、receive_image上位機(jī)與從機(jī)通信軟件;

2、wireshark數(shù)據(jù)包監(jiān)控軟件。

總結(jié):

1、先進(jìn)行DDIO的回環(huán)測(cè)試;

2、模塊化設(shè)計(jì)編程實(shí)現(xiàn),測(cè)試通過(guò)之后在進(jìn)行top裝配測(cè)試;

3、時(shí)序未出現(xiàn)違規(guī)時(shí),查看slack是否大于0.3ns,注意時(shí)序約束;

4、注意assign語(yǔ)句的使用,盡量用時(shí)序進(jìn)行操作,避免不必要的時(shí)序違例;

5、注意標(biāo)志信號(hào)的使用,盡量避免運(yùn)算式在判斷條件里出現(xiàn)且進(jìn)行多重判斷邏輯嵌套;

6、?了解上位機(jī)與從機(jī)之間通信的基本原理;

7、?熟悉wireshark數(shù)據(jù)包監(jiān)控軟件的使用。

本篇大概分享了設(shè)計(jì)框架及思路,給各位大俠做設(shè)計(jì)學(xué)習(xí)參考,若想要詳細(xì)學(xué)習(xí),可閱讀以下推文,系統(tǒng)性學(xué)習(xí)。

FPGA就業(yè)班,05.04開班,新增課程內(nèi)容不加價(jià),高薪就業(yè),線上線下同步!

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
XC6SLX25-2FGG484I 1 AMD Xilinx Field Programmable Gate Array, 1879 CLBs, 667MHz, 24051-Cell, CMOS, PBGA484, 23 X 23 MM, 1 MM PITCH, LEAD FREE, FBGA-484

ECAD模型

下載ECAD模型
$90.44 查看
10M08DAU324C8G 1 Intel Corporation Field Programmable Gate Array, 8000-Cell, CMOS, PBGA324, 15 X 15 MM, 0.80 MM PITCH, ROHS COMPLIANT, UBGA-324
$68.31 查看
XC7S25-1CSGA225C 1 AMD Xilinx Field Programmable Gate Array, PBGA225, BGA-225

ECAD模型

下載ECAD模型
$34.96 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

任何技術(shù)的學(xué)習(xí)就好比一個(gè)江湖,對(duì)于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。