如图2所示,CLKOUTP/M即为LVDS信号中的同步时钟信号,DA0_P/M到D12_P/M即为数据差分信号,DA0_P/M表示为同一对差分信号,该信号传输第0和第1比特,以此类推。
该ADC的LVDS接口输出时序如图3所示:
图3
如图3所示,可以清楚的看到,数据信号的偶比特和奇比特的有效时刻基本上以输出时钟CLKOUTM/P的上升沿和下降沿的中心。
那么问题来了,在FPGA里是否可以直接使用该同步时钟直接寄存器锁存信号不就可以了吗?事实上通常的做法都是这样的(该通常的做法跟FPGA的源同步LVDS I/O性能有关),但是必须加接口约束。为什么呢?因为ADC的LVDS输出的时钟和数据的相位关系是会随着工作环境,芯片的批次而变化的,因此不同工作环境,不同批次的芯片时钟和数据的相位关系可能会有变化,如果不加接口约束直接用源同步时钟锁存数据有可能会造成建立时间或保持时间不满足,进而造成接收数据错误。因此,必须加入接口时序约束以保证输入接口的寄存器满足建立时间和保持时间。如下图所示:
图4