国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
    • 一、設計概述
    • 二、設計框架
    • 三、數據流框圖描述
    • 四、DDIO模塊簡單描述
    • 五、ram64模塊時序描述
    • 六、image模塊時序描述
    • 七、TWO_buffer模塊時序描述
    • 八、SDRAM控制模塊描述
    • 總結
  • 推薦器件
  • 相關推薦
申請入駐 產業(yè)圖譜

基于FPGA的千兆以太網設計

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

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

今天給大俠帶來基于FPGA的千兆以太網設計,話不多說,上貨。

一、設計概述

由于設計比較復雜,本篇帶來設計流程以及設計思路,僅供各位大俠參考。

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

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

二、設計框架

整體模塊比較復雜,自頂向下設計流程,分模塊較多,需要注意各個端口信號,最好可以做成端口信號表,以免自己搞混淆。

注:復位省略,_t后綴表示數據或標志信號經過一級寄存器打拍操作。輸入時鐘25M,PLL倍頻輸出sclk125M,tx_data是偏移90度125M時鐘。

三、數據流框圖描述

四、DDIO模塊簡單描述

DDIO模塊描述:

1、DDIO為調用的FPGA內部IP核;

2、ddioin是將雙沿數轉為單沿數據,ddioout是將單沿數據轉化雙沿數據。

ddioin時序圖

五、ram64模塊時序描述

ram64模塊描述:

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

作用:

同頻異相的同步化操作。

write時序圖:

RAM64的Read控制模塊描述:

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

1、?在start_ttt為高時,產生一個rd_flag信號,rd_flag信號在rd_cnt == batch_data – 1 時拉低,rd_flag信號為高時,rd_cnt開始計數自加1,在rd_cnt == batch_data – 1并且rd_flag=1時清零。

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

六、image模塊時序描述

image模塊描述:

por_img_pixel_cnt:像素點計數器;

por_img_pixel_max:像素點最大值;

por_img_udp_cnt:udp包計數器;

por_img_udp_max:UDP包最大值;

por_img_row_max:圖片行最大值;

por_img_row_cnt:圖片行計數器。

頭包時序:??

在mac_cnt=50時,取出image_w_h;

等于51時,取出image_w_l;

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

數據包時序:

Image_row_end_flag信號在por_img_pixel_cnt == por_img_pixel_mux&& por_img_udp_cnt == por_img_udp_mux&&colour_cnt == 2時拉高一個時鐘周期。

Image_end_flag信號在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時,拉高一個時鐘周期。

七、TWO_buffer模塊時序描述

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

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

1、?解決包間隔時間問題;

2、?分時、交替存儲和讀取,起到緩沖作用;

3、sel_w在image_row_end==1時進行反轉;sel_r在sdram_read_ack ==1時進行反轉。

八、SDRAM控制模塊描述

SDRAM控制模塊描述:

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

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

3、自刷新時間間隔:15us。

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

Arbit_state:

Write_state:

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

九、RAM_2k模塊描述

RAM_2k模塊描述:

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

2、作用:緩存從SDRAM讀出的圖片的一行數據;

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

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

frame(成幀)模塊的描述:

根據千兆以太網協議(附錄)進行幀包的配置,以太網(IEEE 802.3)幀格式:

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

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

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

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

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

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

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

注釋:

1、head_flag在image_end=1時拉高,在head_cnt=cnt_len時拉低。

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

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時拉高,在sd_ack=1時拉低。

4、ram_wr_en在sd_req=1時拉高,在image_row_end=1時拉低。

5、data_flag在cnt_end_flag=1 時拉高,在data_cnt=cnt_len時拉低。

6、colour_flag在data_cnt=60時拉高,在data_cnt=cnt_len時拉低。

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

十一、check_sum模塊描述

check_sum模塊描述:

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

Chueck_sum部分波形圖:

注釋:

1、實現方法:將從frame模塊輸入到check_sum的數據進行check_sum計算,同時將輸入data_in先存入一個深度為2k的RAM中,在所有chenck_sum算完之后,在建數據一個一個讀出,在協議的相應位置加入check_sum值。

十二、crc模塊描述

crc模塊描述:

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

算子方程式:

2、將輸入數據進行crc運算,在crc校驗運算完的同時,將32位校驗碼補在數據流的后四位。

總結

上位機軟件:

1、receive_image上位機與從機通信軟件;

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

總結:

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

2、模塊化設計編程實現,測試通過之后在進行top裝配測試;

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

4、注意assign語句的使用,盡量用時序進行操作,避免不必要的時序違例;

5、注意標志信號的使用,盡量避免運算式在判斷條件里出現且進行多重判斷邏輯嵌套;

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

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

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

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

推薦器件

更多器件
器件型號 數量 器件廠商 器件描述 數據手冊 ECAD模型 風險等級 參考價格 更多信息
A3P400-FG256I 1 Microsemi Corporation Field Programmable Gate Array, 9216 CLBs, 400000 Gates, 350MHz, CMOS, PBGA256, 17 X 17 MM, 1.60 MM HEIGHT, 1 MM PITCH, FBGA-256
$42.14 查看
EPM1270F256I5N 1 Intel Corporation Flash PLD, 10ns, 980-Cell, CMOS, PBGA256, 17 X 17 MM, 1 MM PITCH, LEAD FREE, FBGA-256
$476.27 查看
A3P250-FGG144 1 Microsemi Corporation Field Programmable Gate Array, 6144 CLBs, 250000 Gates, 350MHz, CMOS, PBGA144, 13X 13 MM, 1.45 MM HEIGHT, 1 MM PITCH, GREEN, FBGA-144

ECAD模型

下載ECAD模型
$21.87 查看

相關推薦

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

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

石首市| 潜江市| 呼伦贝尔市| 岳池县| 酉阳| 澎湖县| 宁南县| 黄梅县| 贡觉县| 准格尔旗| 乌拉特后旗| 鄂托克前旗| 北京市| 拉孜县| 赞皇县| 龙山县| 嘉祥县| 满洲里市| 扎鲁特旗| 济宁市| 嘉兴市| 南岸区| 永善县| 巴林左旗| 通道| 西乌| 龙陵县| 顺平县| 芷江| 商丘市| 垫江县| 砀山县| 宜州市| 富川| 台中市| 城步| 孝感市| 西吉县| 东丰县| 镇安县| 无锡市|