FPGA基于基于outputdelay的的IO约束实例分析约束实例分析
基于output delay的IO约束实例分析
对于源同步电路,需要将数据和时钟分开送往⽬的芯⽚,通常的做法是让时钟和数据分别通过ODDR输出,但此时默认输出路
径不做时序约束,所以会导致⼯程时序收敛但是上板出问题的现象发⽣,主要还是时序出现了问题。造成这些误差的终极原因
有下⾯⼏点:1、FPGA内不同Corner下器件(主要是BUF)的延迟差距⼤;2、数据和时钟在板级线延迟误差;3、⽬的芯⽚
的setup和hold时间影响;4、⽬的芯⽚阈值电压影响。
对于上述原因产⽣的影响,现有的做法主要为时钟相位偏移和在数据通道加delay,两种做法框图如下,左边为加output
delay,右边为相位偏移:
图1 加delay和相位偏移框图
对于相位偏移,做法为PLL输出两路相位不同的时钟,⼀路偏移0度相位,⼀路偏移x 度相位,这种做法很难⽤约束的⽅法检查
正确性,但是可以通过实验的⽅法改变x的值,使数据和时钟满⾜后级芯⽚的时序,是⼀个简单易⽤的⽅法,缺点是调整不够
精确。
由于FPGA中IOB资源含有output delay延迟单元,可以以⼏⼗ps的精度改变延迟,使得数据通路加delay的⽅法得以实现。此
时可以预先知道板⼦布线延迟,以及⽬的芯⽚寄存器建⽴保持时间,则可以通过增加约束让vivado软件来进⾏计算,缺点是前
期要精确知道这些参数和延迟,否则约束是不正确的。
仔细考虑发现,两种⽅法的原理⼤同⼩异,实现⽅法虽然不同,但是都是让时钟路和数据路在时序上分开⼀段时间,来抵消线
延迟和器件误差的影响,从⽽满⾜⽬的芯⽚的建⽴保持时间。本⽂仅总结增加output delay的⽅式。
⼀、实例原理分析:
当前实例中,在输出管脚不够⽤的情况下,将视频输出的24bit缩减为12bit,此时在功能正常的条件下,要求时钟在双沿采
样,所以需要⽤到ODDR将数据转为双沿输出。由于1080p下像素时钟为148.5M,但是当以ODDR输出时相当于近300M的采
样率。
图2为当前实例中加了delay的简易框图,晶振输⼊50MHz时钟通过INBUF给MMCM (实际中还有其他BUF),转换为148.5M
的像素时钟,分别驱动时钟和数据通路的ODDR。数据通路中还增加了delay,然后两路信号经过OBUF后输出,最后通过板级
⾛线,输⼊到⽬的芯⽚CH7301的寄存器。