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

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

一、項(xiàng)目概況

1、項(xiàng)目流程圖

2、模塊說(shuō)明:

PC:個(gè)人電腦,有網(wǎng)線插槽的即可
RJ45接口:板卡上的網(wǎng)線插槽
PHY芯片:板卡上的以太網(wǎng)芯片,輸入4對(duì)差分信號(hào),轉(zhuǎn)換為輸出雙沿4bit數(shù)據(jù)信號(hào)
FPGA:現(xiàn)場(chǎng)可編程邏輯門陣列,主控制器
DDR3芯片:第三代同步動(dòng)態(tài)隨機(jī)存取內(nèi)存芯片,之前學(xué)過(guò)了
HDMI接口:高清多媒體接口,之前學(xué)過(guò)了

3、項(xiàng)目說(shuō)明:

電腦上位機(jī)將一幅 1024*768 圖片通過(guò)雙絞線(網(wǎng)線),發(fā)送給板卡網(wǎng)口(RJ45接口),RJ45接口將數(shù)據(jù)傳輸給網(wǎng)卡(PHY芯片),PHY 芯片將差分信號(hào)轉(zhuǎn)換成雙沿?cái)?shù)據(jù),IDDR將雙沿?cái)?shù)據(jù)轉(zhuǎn)換成單沿?cái)?shù)據(jù)傳輸給 FPGA,F(xiàn)PGA 處理完成后將圖像數(shù)據(jù)緩存到DDR3 中,DDR3 中的圖像數(shù)據(jù)使用 UDP 協(xié)議傳回 PC 機(jī),同時(shí)將 DDR3 中數(shù)據(jù)使用 HDMI 傳輸?shù)斤@示器上。


二、PHY芯片

詳情參考 VSC8601-DS-r41-VMDS-10210 文檔,該文檔可以在 Xilinx 官網(wǎng)中下載。

1、以太網(wǎng)和 RJ45 接口

以太網(wǎng)是一種產(chǎn)生較早,使用相當(dāng)廣泛的局域網(wǎng)。分類標(biāo)準(zhǔn)有標(biāo)準(zhǔn)以太網(wǎng)(10Mbit/s),快速以太網(wǎng)(100Mbit/s)和千兆以太網(wǎng)(1000Mbit/s)。隨著以太網(wǎng)技術(shù)的飛速發(fā)展,市場(chǎng)上也出現(xiàn)了萬(wàn)兆以太網(wǎng)其技術(shù)支持10Gbit/s的傳輸速率。以太網(wǎng)連接端口:常見(jiàn)的以太網(wǎng)接口類型有RJ45接口,RJ11接口。SC光纖接口等。其中RJ45接口是我們常見(jiàn)的網(wǎng)絡(luò)設(shè)備接口。

RJ45接口定義以及各引腳功能說(shuō)明如下圖所示,在以太網(wǎng)中只使用了1、2、3、6這四根線,其中1、2這組負(fù)責(zé)傳輸數(shù)據(jù)(TX+、TX-),而3、6這組負(fù)責(zé)接收數(shù)據(jù)(RX+、RX-),另外四根線是備用的。

總的來(lái)說(shuō),這一塊部分知道即刻,不需要我們自己設(shè)計(jì)代碼。


2、PHY 芯片介紹:

本項(xiàng)目使用 VITESSE VSC8601 網(wǎng)卡芯片,該芯片支持 10/100/1000 BASE-T,常用的網(wǎng)卡芯片有 VITESSE、高通等公司產(chǎn)品,該芯片通稱為 PHY 芯片。該芯片與我們電腦、FPGA、MCU 等微處理器通信必須遵循 RGMII 協(xié)議。


3、PHY 芯片配置

①SMI串行管理接口

VSC8601 設(shè)備包含一個(gè) IEEE 802.3 兼容的串行管理接口(SMI),其中 MDC 和 MDIO 可對(duì)該芯片進(jìn)行控制。SMI 提供了訪問(wèn)權(quán)限設(shè)備控制和狀態(tài)寄存器??刂?SMI 的寄存器集由 32 個(gè) 16 位寄存器組成,包括所有需要的 IEEE 指定寄存器。此外,通過(guò)設(shè)備寄存器 31 可以訪問(wèn)寄存器的附加寄存器。SMI 是一個(gè)同步串行接口,其配置方式和 IIC 類似,MDIO 引腳具有有雙向數(shù)據(jù),在 MDC 信號(hào)的上升邊緣上采集。MDC 采集速度應(yīng)在 0 MHz 到 25mhz。數(shù)據(jù)通過(guò) SMI 使用具有可選和任意長(zhǎng)度前導(dǎo)的 32 位幀傳輸,下圖(文檔26頁(yè))顯示了用于讀操作和寫操作的SMI框架格式。

由圖可以看到 PHY Address 有 A0 - A4 共 5 bit,故一個(gè)處理器最多可以掛載這樣的 PHY 芯片 2^5=32 個(gè)。用戶可通過(guò)配置 PHY Address 或 Resgister Address 將該芯片按需配置。

②配置引腳和設(shè)備功能表(文檔64頁(yè))

③相關(guān)引腳的功能,用于解釋上表(文檔65頁(yè))

④電阻對(duì)應(yīng) Pin 值表(文檔66頁(yè))

⑤PHY芯片配置

結(jié)合上面的表和 PHY 芯片的板卡原理圖,即可確定出 CMODE Pin 的具體值了。



三、PHY芯片的初始化和RGMII協(xié)議

1、PHY 芯片初始化

VSC8601 芯片上電后需要進(jìn)行復(fù)位配置,該芯片復(fù)位信號(hào)需要在上電保持一段時(shí)間后才能將復(fù)位信號(hào)置為高,否則 PHY 芯片不會(huì)工作,其配置過(guò)程如圖(文檔79頁(yè))所示。PHY 的復(fù)位信號(hào)引腳和 FPGA 相連,當(dāng)上電后至少經(jīng)過(guò) 4ms 以上才可以將 PHY 芯片復(fù)位引腳置高,這樣就完成 PHY 芯片初始化了,還是蠻簡(jiǎn)單的。


2、PHY芯片的RGMII協(xié)議

RGMII協(xié)議是PHY芯片和FPGA芯片之間的傳輸協(xié)議。RGMII 是 Reduced GMII(吉比特介質(zhì)獨(dú)立接口)。RGMII 均采用 4bit 數(shù)據(jù)接口,工作時(shí)鐘 125MHz,并且在上升沿和下降沿同時(shí)傳輸數(shù)據(jù),數(shù)據(jù)傳輸速率可以達(dá)到4*125*2=1000Mbps。同時(shí)兼容 MII 所規(guī)定的 10/100 Mbps 工作方式,支持傳輸速率:10M/100M/1000Mb/s ,其對(duì)應(yīng) clk 信號(hào)分別為:2.5MHz/25MHz/125MHz。RGMII 數(shù)據(jù)結(jié)構(gòu)符合 IEEE 以太網(wǎng)標(biāo)準(zhǔn),接口定義見(jiàn) IEEE 802.3-2000。

PHY 芯片與 FPGA 數(shù)據(jù)交互的端口有:發(fā)射端、接收端及HPY 的復(fù)位端口。發(fā)射端和接收端分別有 6 個(gè)引腳與 FPGA 相連,分別有一個(gè)時(shí)鐘引腳、一個(gè)數(shù)據(jù)控制使能引腳,四個(gè)數(shù)據(jù)引腳。而我們想要達(dá)到 1.0Gb/s 帶寬,HPY 對(duì)應(yīng)時(shí)鐘為 125MHZ,若為單沿采樣那么帶寬為 125M/s*4=500Mb/s,及達(dá)不到 1.0Gb/s,在原有的硬件基礎(chǔ)上想要使用 125M 時(shí)鐘產(chǎn)生帶寬為 1.0Gb/b,那么需要雙沿控制采樣數(shù)據(jù),及時(shí)鐘上升沿 4bit 下降沿 4bit,帶寬為125M/s*4*2=1000Mb/s=1.0 Gb/b。該協(xié)議為 RGMII(Reduced Gigabit Media Independent Interface)。RGMII 均采用 4 位數(shù)據(jù)接口,工作時(shí)鐘 125MHz,并且在上升沿和下降沿同時(shí)傳輸數(shù)據(jù),因此傳輸速率可達(dá) 1000Mbps。RGMII 無(wú)補(bǔ)償工作時(shí)序如圖(文檔81頁(yè))所示。

觀察圖中 RX_CLK(at Transmitter) 和 RX_CLK(at Receiver),RX_CLK(at Transmitter)為 HPY 時(shí)鐘,在上升沿時(shí)對(duì)應(yīng)輸出數(shù)據(jù)為 RXD[3:0] 和 RXDV,在下降沿時(shí)對(duì)應(yīng)出數(shù)據(jù)為 RXD[7:4] 和 RXERR,及一個(gè)時(shí)鐘周期對(duì)應(yīng) 8bit 數(shù)、一個(gè)有效使能和一個(gè)錯(cuò)誤信號(hào)。RX_CLK(at Receiver) 是在 RX_CLK(at Transmitter) 的基礎(chǔ)上相移 90°左右而得,這樣采集到的數(shù)據(jù)會(huì)更加穩(wěn)定。

四、IDDR原語(yǔ)

PHY 傳輸?shù)臄?shù)據(jù)為雙沿?cái)?shù)據(jù),通常 FPGA 處理的為單沿?cái)?shù)據(jù),所以FPGA 接收到圖像信息包后首先需要使用 IDDR 原語(yǔ)將雙沿?cái)?shù)據(jù)轉(zhuǎn)換為單沿?cái)?shù)據(jù)。通常情況下 FPGA 處理數(shù)據(jù)使用的時(shí)鐘為晶振產(chǎn)生的時(shí)鐘(FPGA 時(shí)鐘),而 PHY 傳輸來(lái)的數(shù)據(jù)以及經(jīng)過(guò)IDDR 原語(yǔ)后轉(zhuǎn)換為單沿的數(shù)據(jù)都是和 PHY 的時(shí)鐘同步,所以我們?nèi)绻胧褂?FPGA 時(shí)鐘作為后續(xù)的圖像數(shù)據(jù)處理必須要進(jìn)行跨時(shí)鐘域,將 PHY 時(shí)鐘同步的數(shù)據(jù)轉(zhuǎn)換為 FPGA 時(shí)鐘同步的數(shù)據(jù)。此處雙沿轉(zhuǎn)單沿?cái)?shù)據(jù)采用 Input DDR 原語(yǔ),簡(jiǎn)稱 IDDR,將雙沿 4bit 數(shù)據(jù)轉(zhuǎn)換為單沿 8bit 數(shù)據(jù)。

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


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



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

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


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

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

通過(guò)對(duì)比三圖差異,結(jié)合本項(xiàng)目平臺(tái)選擇模式:SAME_EDGE_PIPELINED。因?yàn)闀r(shí)鐘上升沿和下降沿各對(duì)應(yīng)一個(gè)數(shù)據(jù),那么千兆以太網(wǎng)數(shù)據(jù)傳輸:0bit 和 4bit 為一組,1bit 和 5bit 為一組,2bit 和 6bit 為一組,3bit 和 7bit 為一組。


4、IDDR雙沿?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]。 我們采用 IDDR 原語(yǔ)將雙沿 4bit 數(shù)據(jù)轉(zhuǎn)換為 8bit 數(shù)據(jù),同時(shí)將 8bit 數(shù)據(jù)對(duì)應(yīng)有效 DV 信號(hào)提取。那么可以建立實(shí)現(xiàn)雙沿轉(zhuǎn)單沿功能的模塊:iddr_ctrl,其中輸入與輸出關(guān)系圖如下所示。PHY 芯片傳輸來(lái)的 phy_rxd 和 phy_rx_ctl 都和 PHY 的時(shí)鐘同步。圖中 phy_rx_clk_90 為輸入的時(shí)鐘信號(hào)是 PHY 時(shí)鐘相移90度后形成的,目的是采集 phy_rx_rxd 和 phy_rx_ctl 更穩(wěn)定,rx_data 和 rx_en 即為該模塊輸出的單沿 8bit 數(shù)據(jù)和對(duì)應(yīng)的數(shù)據(jù)有效使能。


千兆以太網(wǎng)數(shù)據(jù)傳輸經(jīng)過(guò) IDDR 后 8bit 數(shù)據(jù) rx_data 與使能 rx_en 對(duì)應(yīng)關(guān)系如下圖所示。

通過(guò)圖可以看出,IDDR 時(shí)鐘上升沿采集的 phy_rx_crl 信號(hào)為 EN(DV),代表數(shù)據(jù)有效,下降沿采集的為 ERR,代表數(shù)據(jù)錯(cuò)誤,本項(xiàng)目此處不考慮錯(cuò)誤信號(hào),最終從 IDDR 輸出的 rx_en 信號(hào)正好和拼接完成后的 rx_data 數(shù)據(jù)對(duì)應(yīng),即可作為 8bit 數(shù)據(jù)有效使能。

五、上板驗(yàn)證

代碼寫好后注意一下,前面說(shuō)過(guò) PHY 芯片初始化必須滿足當(dāng)上電后至少經(jīng)過(guò) 4ms 以上才可以將 PHY 芯片復(fù)位引腳置高,因此頂層必須設(shè)置一下 PHY 芯片的復(fù)位引腳,該信號(hào)通過(guò)延時(shí) 4ms 即可產(chǎn)生,有了這個(gè)信號(hào),PHY 芯片才能工作起來(lái)。

//延時(shí) 4ms 后啟動(dòng) phy_rst_n always @(posedge sclk) 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];

這次實(shí)驗(yàn)較簡(jiǎn)單,看不到任何現(xiàn)象,可以先生成一個(gè) ila,將 rx_data 和 rx_en 放進(jìn)去以待觀察,最后不要忘記綁定引腳哦。生成bit文件后下載到板卡上,板卡上的網(wǎng)口和電腦網(wǎng)口連接,點(diǎn)擊電腦中的 以太網(wǎng)設(shè)置 --- 更改適配器選項(xiàng),即可看到網(wǎng)卡正常工作起來(lái)。

查看 ila,將 rx_en 的上升沿作為觸發(fā)信號(hào),得到如下波形:

如圖可以觀察到,千兆以太網(wǎng)數(shù)據(jù)以包為單位發(fā)送,每次發(fā)送有一定的數(shù)據(jù),并且在每次發(fā)送前都會(huì)先發(fā)送 7 個(gè) 0x55 和 1 個(gè) 0xd5 作為包的針頭,如果是這樣的波形,那么表明此次試驗(yàn)設(shè)計(jì)成功。

本站聲明: 本文章由作者或相關(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)閉