前言
前天和昨天测试了一下SGMII的Timing,这里记录一下遇到的问题,一些前辈的解说和自己的理解。
SGMII
首先,网上关于SGMII的介绍已经十分详细,这里也不再多叙述自己的拙见了。SGMII是GMII的Serdes串列的一种升级细分,目前市面上使用比较多的PHY与MAC连接的就是SGMII以及RGMII,RGMII是GMII的一种简化版本,本文章暂不多介绍。SGMII是使用串列差分的方式,将原先并行的数据变为串行差分数据。众所周知,并行数据在到达一定高频后就无法继续往上,因为并行之间的干扰在高频下就无法忽视了,严重影响了最高传输数据速率,所以才会出现串行数据更适合高速信号传输的情况。差分信号,我的理解是在高频时,刚好相反的特性会抵消干扰,对其他信号的辐射也会大大减小。并且,串行所需要的线路更少,布线也更方便。
大部分协议都是以时钟作为基准,SGMII在时钟上升沿和下降沿触发,进行数据传输,同理我之前做的Flash Timing,SPI Timing,I2C Timing等,这些都会以时钟作为基准,这点是根本,所以时钟信号需要稳定且漂亮。SGMII的参考时钟是625Mhz频率,因为上升沿下降沿均采样,所以数据传输速率是1.25Gbps。
我测试的板子中存在两块芯片,支持1G和2.5G的Baud Rate,有三个SGMII接口待测,其中还有一个SGMII+接口,接下来记录一下我的测试过程,并对里面的一些问题详细叙说一下。