FPGA IMPLEMENT 1Gb/10Gb ETH(一)

MII 10M/100M 10Mbps=2.5MHz*4bit 100Mbps=25MHz*4bit
RMII 10M/100M 10Mbps=5MHz*2bit 100Mbps=50MHz*2bit
SMII 串行10M/100M 100Mbps=125MHz*8b/10b 10Mbps=12.5MHz*8b/10b
GMII 1000M 1000Mbps=125MHz*8bit
RGMII 1000M 1000Mbps=125MHz*4bit*2 DDR採樣,上升沿bit3:0下降沿bit7:4
SGMII 串行1000M 1000Mbps=1250MHz*8b/10b
XGMII 10Gbps 10Gbps=156.25MHz*32bit*2 DDR採樣
XAUI

10Gbps

10Gbps=(3.125G*4x)*8b/10b
XLAUI 40Gbps 40Gbps=(10.3125*4x)*64b/66b
CAUI 100Gbps 100Gbps=(25.78125*4x)*64b/66b

 

前綴:

G:Gbps吉比特

R:reduce簡化版

X:10數字

S:serdes串行

 

vivado仿真後,點擊保存wcfg文件。再次打開仿真波形,點擊flow->static simulation打開wdb文件,在scope中右鍵add to wave window;

先來看1G ETH ,其中包含MAC和PCS/PMA兩個IP,UDP/TCP/IP暫時不講;

gig_ethernet_pcs_pma_0_example_design:MAC接口GMII/PHY接口1Gserdes;

初始化步驟

設置Configuration Vector寄存器,如loopback、PD、isolate、AN_enable,PG047-table2-39;

檢測Status Vector[0],代表初始化完成;

初始化4個不同類型以太網幀,放在數組中;

tx_stimulus_send_frame:模擬MAC:通過GMII發送4個以太網幀 to gig_ethernet_pcs_pma IP;

tx_monitor_check_frame:模擬對端接收數據PHY(PCS/PMA):對端PHY行爲:先將gig_ethernet_pcs_pma IP通過txp/txn解串,decode8b/10b,解碼後的數據送給對端MAC;然後將初始化數組中的以太網幀與對端MAC的數據比較,校驗數據正確性;

rx_stimulus_send_frame:模擬對端發送數據PHY(PCS/PMA):對端PHY行爲:將初始化數組中的以太網幀encode8b/10b,串化發送給rxp/rxn;

rx_monitor_check_frame:模擬MAC:通過GMII接收4個以太網幀from gig_ethernet_pcs_pma IP;將初始化數組中的以太網幀與MAC接收的數據比較,校驗數據正確性;

結構如下

幀結構說明

規範允許最多全部7個前導碼都丟失,只要在結構良好的幀中檢測到SFD就可以接收剩下的幀數據;

PCS之後的0x0F作爲擴展域,伴隨着er拉高,並不代表此幀出錯;

兼容性

1Gbps兼容100Mbps和10Mbps,以1Gbps時鐘125M爲基準

100Mbps:transiver時鐘12.5M

10Mbps:transiver時鐘1.25M

MAC在100M模式下,以太網幀的每個字節需要重複10個clk;在10M模式下,以太網幀的每個字節需要重複100個clk;並且需要控制幀間隔;

幀結構說明:

規範允許最多全部7個前導碼都丟失,只要在結構良好的幀中檢測到SFD就可以接收剩下的幀數據;

PCS之後的0x0F作爲擴展域,伴隨着er拉高,並不代表此幀出錯;

兼容性:

1Gbps兼容100Mbps和10Mbps,以1Gbps時鐘125M爲基準

100Mbps:transiver時鐘12.5M

10Mbps:transiver時鐘1.25M

MAC在100M模式下,以太網幀的每個字節需要重複10個clk;
在10M模式下,以太網幀的每個字節需要重複100個clk;並且需要控制幀間隔;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章