好文档 - 专业文书写作范文服务资料分享网站

FPGA基于output delay的IO约束实例分析

天下 分享 时间: 加入收藏 我要投稿 点赞

基于output delay的IO约束实例分析

对于源同步电路,需要将数据和时钟分开送往目的芯片,通常的做法是让时钟和数据分别通过ODDR输出,但此时默认输出路径不做时序约束,所以会导致工程时序收敛但是上板出问题的现象发生,主要还是时序出现了问题。造成这些误差的终极原因有下面几点:1、FPGA内不同Corner下器件(主要是BUF)的延迟差距大;2、数据和时钟在板级线延迟误差;3、目的芯片的setup和hold时间影响;4、目的芯片阈值电压影响。

对于上述原因产生的影响,现有的做法主要为时钟相位偏移和在数据通道加delay,两种做法框图如下,左边为加output delay,右边为相位偏移:

ODDRClkInPLL0度相位ClkOutODDR0度相位ClkOutClkInPLLx度相位ODDRDataDelayDoutODDRDataDout

图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的寄存器。

FPGAdata数据DODDRQOdelayOBUF板级走线晶振 50MINBUFMMCM / PLLBUFG目的芯片CH7301D1'b1QFFC时钟DODDRQOBUF板级走线 图2 实例中加delay原理图

说明:在vivado分析建立时间时,数据通路都按照最差延迟考虑,此时所有BUF、ODDR、MMCM和net延迟都按照最慢处理,而时钟通路都按照最快处理;相反,分析保持时间时,数据通路按照最快处理,时钟通路按照最慢处理。

二、IO约束过程

首先在CH7301的datasheet可以找到图3的信息,看到寄存器的建立保持时间均为0.5ns。

图3 目的芯片CH7301信息

图4表示板级每个信号的走线长度,每1000mil走线延迟0.18ns,所以可以进行计算:对于数据来说,最长的线为[DVI_OUT_D11]=1255.93mil,延迟0.226ns;最短的线为[DVI_OUT_D2]= 916.46mil,延迟0.164ns。对于时钟线来说,线长为[DVI_OUT_CLK]= 910.38mil,延迟0.162ns。

图4 板级布线长度

综上所述,我们得到的板级延迟和目的芯片建立保持时间如下: 目的芯片FF的Tsu和Th均为0.5ns。

数据线最大延迟:T(Trace_data)max = 0.226 ns 数据线最小延迟:T(Trace_data)min = 0.164 ns 时钟线延迟:T(Trace_clk) = 0.162 ns 有了以上数据,可以根据vivado推荐的output delay约束规则,进行output delay的约束设置,由于随路时钟为148.5MHz,为了方便约束时钟为150MHz: 其中tsu_r和thd_r分别为上升沿的建立和保持时间,tsu_f和thd_f为下降沿的建立保持时间;而trce_dly_max和trce_dly_min表示PCB上数据和时钟线差值的最大和最小值。

FPGA基于output delay的IO约束实例分析

基于outputdelay的IO约束实例分析对于源同步电路,需要将数据和时钟分开送往目的芯片,通常的做法是让时钟和数据分别通过ODDR输出,但此时默认输出路径不做时序约束,所以会导致工程时序收敛但是上板出问题的现象发生,主要还是时序出现了问题。造成这些误差的终极原因有下面几点:1、FPGA内不同Corner下器件(主要是BUF)的延迟差距大;
推荐度:
点击下载文档文档为doc格式
5atb68ngpw4oweh0q68m0sr9z0p08p00ny3
领取福利

微信扫码领取福利

微信扫码分享