SGMII调试及丢包问题
使用88E1514和FPGA连接做以太网通信,走的是LVDS接口
ip核使用:GMII转SGMII的桥,使用了同步SGMII模式,需要提供一路125MHz的同步时钟,并固定在1G模式。
------------------------------------------------------------------------------------------------------------------------
1、外部时钟使用GC管脚,可以直接给到MMCM/PLL,无需加BUFG会引入零点几纳秒的延时
默认我们认为clk和data是对齐的,所以一般要使用MMCM的对齐功能,即输入时钟和输出时钟同相位。MMCM实现对齐的方式是在fbclk上插入了一个bufg,在例化代码可以看到:
2、修改了xiliinx ip核源文件:(使用了最低抖动,默认是OPTIMIZED)
3、SGMII的PHY是CML电路,和FPGA LVDS端接时,FPGA输出需要使用交流耦合,一般串一个0.1~0.01uF/25V的
电容,FPGA输入可以直接耦合(也可以交流耦合),但注意不要使用外部终端电阻,使用FPGA内部电阻。
4、clock_delay_group约束
5、修改差分输入为单端时钟输入:
【虽然ip核文件不支持修改,但可以使用其它编辑器打开,在vivado外面修改,修改后在ip核重新生成的过程中替换上去即可】
gig_ethernet_pcs_pma_0_sgmii_phy_clk_gen.v
参考:
pg047-gig-eth-pcs-pma.pdf
Alaska® 88E1510/88E1518/ 88E1512/88E1514 Integrated 10/100/1000 Mbps Energy Efficient Ethernet Transceiver |