大俠好,歡迎來到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。
今天和大俠簡單聊一聊FPGA 控制 RGMII 接口 PHY芯片基礎(chǔ),話不多說,上貨。
一、前言
網(wǎng)絡(luò)通信中的PHY芯片接口種類有很多,之前接觸過GMII接口的PHY芯片RTL8211EG。但GMII接口數(shù)量較多,本文使用RGMII接口的88E1512搭建網(wǎng)絡(luò)通信系統(tǒng)。這類接口總線位寬小,可以降低電路成本,在實(shí)際項(xiàng)目中應(yīng)用更廣泛。
二、從GMII過度到RGMII
先看看GMII和RGMII主要的接口。
GMII:
發(fā)送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er
接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_er
RGMII:
發(fā)送 tx_clk tx_d[3:0] tx_ctrl
接收 rx_clk rx_d[3:0] rx_ctrl
為什么接口變少了?首先數(shù)據(jù)總線從時(shí)鐘單邊沿采樣8bit轉(zhuǎn)變?yōu)榱穗p邊沿采樣4bit,從88E1512 Datasheet中時(shí)序圖可以直觀看出這一點(diǎn)。
RGMII中上升沿發(fā)送一字節(jié)數(shù)據(jù)的低四位,下降沿發(fā)送剩余的高四位數(shù)據(jù)。接收端時(shí)鐘雙邊沿采樣,因此125MHZ*8bit = 125MHZ*4bit*2 = 1000Mbit/s。至于GMII中的數(shù)據(jù)有效和數(shù)據(jù)錯(cuò)誤指示信號(hào)被ctrl信號(hào)復(fù)用:tx_ctrl在時(shí)鐘tx_clk上升沿發(fā)送是tx_en,在下降沿發(fā)送是tx_en ^ tx_er。rx_ctrl在時(shí)鐘rx_clk上升沿接收是rx_dv,在下降沿接收是rx_en ^ rx_er。綜上,RGMII接口引腳數(shù)從25個(gè)降低到14個(gè)。
三、add clock skew
從上邊的時(shí)序圖分析,數(shù)據(jù)在時(shí)鐘的邊沿變化。因此如果不做額外處理,接收端無法穩(wěn)定采樣。為了解決這一問題,常見的做法是為時(shí)鐘信號(hào)添加延時(shí),使其邊沿對(duì)準(zhǔn)數(shù)據(jù)總線的穩(wěn)定區(qū)間??梢栽?a class="article-link" target="_blank" href="/baike/1544287.html">控制器端、PCB走線以及PHY芯片內(nèi)部添加時(shí)鐘偏移,本文使用最后一種方式實(shí)現(xiàn)。
在第三階段中添加延遲。數(shù)據(jù)發(fā)送方向,F(xiàn)PGA側(cè)的TX_CLK信號(hào)不需要額外處理,也就是說FPGA發(fā)送與數(shù)據(jù)邊沿對(duì)齊的時(shí)鐘信號(hào)。TXD和TX_CLK信號(hào)波形如圖。
PHY內(nèi)部會(huì)調(diào)整TX_CLK,使之能夠穩(wěn)定采樣TXD。數(shù)據(jù)接收方向,由于RX_CLK由PHY提供,PHY芯片直接產(chǎn)生與數(shù)據(jù)中心對(duì)齊的時(shí)鐘信號(hào)。RXD和RX_CLK信號(hào)波形如圖。
可見,使PHY芯片工作在延遲模式下時(shí),F(xiàn)PGA不需要添加額外的邏輯來保證穩(wěn)定采樣。發(fā)送方向直接將數(shù)據(jù)驅(qū)動(dòng)時(shí)鐘作為TX_CLK信號(hào)發(fā)送,接收方向直接利用RX_CLK對(duì)RXD信號(hào)采樣。
四、系統(tǒng)設(shè)計(jì)方案
本文使用ZYNQ內(nèi)部的MAC控制器實(shí)現(xiàn)數(shù)據(jù)鏈路層功能。但由于其接口為GMII,需要用到GMII_to_RGMII IP Core轉(zhuǎn)換接口邏輯。上層網(wǎng)絡(luò)協(xié)議則通過LWIP開源協(xié)議棧完成。首先配置ZYNQ IP,使能ENET1并以EMIO方式引出。
系統(tǒng)硬件結(jié)構(gòu)如圖:
五、I/O 時(shí)序約束
在較高速設(shè)計(jì)場(chǎng)合下,輸入輸出接口部分很容易出現(xiàn)數(shù)據(jù)采樣不穩(wěn)定的現(xiàn)象。這時(shí)候就要通過Input delay,output delay約束以及STA來分析設(shè)計(jì)是否滿足穩(wěn)定采樣需求。input/output delay是指數(shù)據(jù)相對(duì)于時(shí)鐘的延遲,只有設(shè)置好上述兩個(gè)數(shù)值,綜合工具才會(huì)往正確的方向優(yōu)化并給出合理的時(shí)序報(bào)告。
FPGA與RGMII接口的PHY芯片之間的時(shí)序關(guān)系按照數(shù)據(jù)接口同步和數(shù)據(jù)采樣方式屬于源同步DDR采樣。input delay約束對(duì)應(yīng)接收方向,時(shí)序關(guān)系是中心對(duì)齊。output delay約束對(duì)應(yīng)發(fā)送方向,時(shí)序關(guān)系是邊沿對(duì)齊。前者由于很多時(shí)候不知道上游器件Tcko信息,會(huì)使用示波器測(cè)量有效數(shù)據(jù)窗口來計(jì)算。而后者因?yàn)槭沁呇貙?duì)齊,通過示波器測(cè)量抖動(dòng)窗口并使用skew based method計(jì)算。這部分筆者還沒有親身實(shí)踐過,若有誤歡迎指出。