www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > FPGA開(kāi)源工作室

一、ODDR原語(yǔ)

FPGA 傳輸?shù)臄?shù)據(jù)為單沿?cái)?shù)據(jù),而 PHY 傳輸?shù)臄?shù)據(jù)為雙沿?cái)?shù)據(jù),所以FPGA 發(fā)送心跳包的最后需要使用 ODDR 原語(yǔ)將單沿?cái)?shù)據(jù)轉(zhuǎn)換為雙沿?cái)?shù)據(jù)。通常情況下 FPGA 處理數(shù)據(jù)使用的時(shí)鐘為晶振產(chǎn)生的時(shí)鐘(FPGA 時(shí)鐘),而 FPGA 傳輸來(lái)的數(shù)據(jù)經(jīng)過(guò)ODDR 原語(yǔ)后轉(zhuǎn)換為雙沿的數(shù)據(jù)都是和 PHY 的時(shí)鐘同步,所以我們?nèi)绻氚?FPGA 時(shí)鐘的數(shù)據(jù)傳給 PHY 芯片則需要進(jìn)行跨時(shí)鐘域,將 FPGA 時(shí)鐘同步的數(shù)據(jù)轉(zhuǎn)換為 PHY 時(shí)鐘同步的數(shù)據(jù)。此處單沿轉(zhuǎn)雙沿?cái)?shù)據(jù)采用 Output DDR 原語(yǔ),簡(jiǎn)稱 ODDR,將單沿 8bit 數(shù)據(jù)轉(zhuǎn)換為雙沿 4bit 數(shù)據(jù)。

ODDR原語(yǔ)參考 7 Series FPGAs SelectIO Resources 文檔和 Xilinx 7 Series FPGA Libraries Guide for HDL Designs 。

1、ODDR原語(yǔ)獲取途徑

2、ODDR原語(yǔ)接口和屬性(文檔129頁(yè))

D1 和 D2 為數(shù)據(jù)輸入,CE 為 ODDR 工作使能,C 為時(shí)鐘,S 和 R 分別為置位和復(fù)位,Q為輸出。


3、ODDR原語(yǔ)工作模式(文檔126頁(yè))

ODDR 有兩種工作模式,模式配置如下圖所示,分別為:OPPOSITE_EDGE、SAME_EDGE。


OPPOSITE_EDGE 模式下,雙沿都用來(lái)捕捉數(shù)據(jù),其中上升沿捕捉低位數(shù)據(jù) D1,下降沿捕捉高位數(shù)據(jù)D2,輸出 Q 在上升沿傳輸 D1,下降沿傳輸D2。SAME_EDGE 模式下,只采用上升沿來(lái)捕捉低位數(shù)據(jù) D1 和高位數(shù)據(jù) D2,然后在輸出 Q 的下降傳輸 D1,上升沿傳輸 D2。此次傳輸我們采用 SAME_EDGE 模式。


4、ODDR雙沿?cái)?shù)據(jù)轉(zhuǎn)單沿?cái)?shù)據(jù)使用方式

根據(jù)硬件電路圖,PHY 傳輸給 FPGA 有一條時(shí)鐘線、一條使能線和四條數(shù)據(jù)線,其中使能線和數(shù)據(jù)線都為雙沿?cái)?shù)據(jù)。一條使能線包含了 DV 和 ERR,其中上升沿傳輸?shù)氖?DV 信號(hào)(即數(shù)據(jù)有效信號(hào)),下降沿傳輸?shù)臑?ERR 信號(hào)(即數(shù)據(jù)出錯(cuò)信號(hào),通常情況下不考慮 ERR,ERR 是由硬件引起,和軟件無(wú)關(guān));四條數(shù)據(jù)線包含了一個(gè)始終 8bit 數(shù)據(jù),其中上升沿傳輸?shù)氖?8bit 數(shù)據(jù)中的[3:0],下降沿傳輸?shù)氖?8bit 數(shù)據(jù)中的[7:4]。 我們采用 ODDR 原語(yǔ)將單沿 8bit 數(shù)據(jù)轉(zhuǎn)換為雙沿 4bit 數(shù)據(jù),同時(shí)將 4bit 數(shù)據(jù)對(duì)應(yīng)有效 DV 信號(hào)提取。那么可以建立實(shí)現(xiàn)單沿轉(zhuǎn)雙沿功能的模塊:oddr_ctrl,其中輸入與輸出關(guān)系圖如下所示。最后 PHY 芯片傳輸出去的 phy_txd 和 phy_tx_ctl 都和 PHY 的時(shí)鐘 phy_tx_clk 同步。圖中 sclk_90 為輸入的時(shí)鐘信號(hào)是 FPGA 時(shí)鐘相移90度后形成的,目的是轉(zhuǎn)換 phy_tx_rxd 和 phy_tx_ctl 更穩(wěn)定,tx_dat 和 tx_en 為該模塊輸入的單沿 8bit 數(shù)據(jù)和對(duì)應(yīng)的數(shù)據(jù)有效使能。


二、以太網(wǎng)復(fù)位信號(hào)

前面博客《千兆以太網(wǎng)(1)》中說(shuō)過(guò) PHY 芯片初始化必須滿足當(dāng)上電后至少經(jīng)過(guò) 4ms 以上才可以將 PHY 芯片復(fù)位引腳置高,因此輸出端口不要忘記了 PHY 芯片的復(fù)位信號(hào) phy_rst_n,該信號(hào)通過(guò)延時(shí) 4ms 即可產(chǎn)生,有了這個(gè)信號(hào),PHY 芯片才能工作起來(lái)。

//延時(shí) 4ms 后啟動(dòng) phy_rst_n always @(posedge clk50) begin if(rst) begin phy_rst_cnt <= 'd0; end else if(phy_rst_cnt[18]==1'b0) begin phy_rst_cnt <= phy_rst_cnt + 1'b1; end end assign phy_rst_n = phy_rst_cnt[18];


三、Wireshark 抓包

上板后打開(kāi)點(diǎn)擊電腦中的以太網(wǎng)設(shè)置 --- 更改適配器選項(xiàng),即可看到網(wǎng)卡正常工作起來(lái)。


打開(kāi) Wireshark 軟件,可以看到 以太網(wǎng) 的波形正在變化。


雙擊進(jìn)去,點(diǎn)擊 編輯 --- 首選項(xiàng),點(diǎn)擊 NTP 即可看到我們的端口編號(hào),本次設(shè)計(jì)的是 UDP,為什么看 NTP ?因?yàn)?NTP 其實(shí)包含了 UDP,可以看成是 UDP 的一種。


點(diǎn)擊 UDP 和 IPv4,將 UDP校驗(yàn)和 IP校驗(yàn) 打勾,待會(huì)就看得到是否校驗(yàn)成功了。


接著我們重新捕獲以太網(wǎng),可以看到很多藍(lán)色的部分表示我們傳輸?shù)男奶?,黑色則的不是我們的,它的 Source 和 Destination 都和我們?cè)O(shè)置的不同,那就不管它了。點(diǎn)擊某個(gè)藍(lán)色條紋,下方就出現(xiàn)了相關(guān)信息,這些信息是去除了包頭(7個(gè)55、1個(gè)d5)后的,因此字節(jié)顯示 106 ,和我們?cè)O(shè)計(jì)相吻合。此外可以看到頭部校驗(yàn)分別顯示 [correct] 和 [Good],表明我們這次的校驗(yàn)也是正確的。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉