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;並且需要控制幀間隔;