建立时间与保持时间、input_delay与output_delay

参考:https://blog.csdn.net/zhanghaijun2013/article/details/104105740

发起端/发起寄存器/发起时钟/发起沿:指的是产生数据的源端
接收端/接收寄存器/捕获时钟/捕获沿:指的是接收数据的目的端

在这里插入图片描述

时序分析的最终目的是要分析出目的寄存器的时序是否满足,源端寄存器是目的寄存器的数据源,给目的端提供数据,因此,源寄存器会提供一个初始时间去进行时序分析。目的寄存器这边的分析,要抓住两点:以源端提供的初始时间,分析时钟沿和数据沿什么时候到。

在这里插入图片描述
在这里插入图片描述

分析完什么时候到之后,针对目的端,要分析连续的两次数据什么时候到。两次数据发起的初始时刻,都是源端时钟的上升沿。第一次数据到的时候分析建立时间,第二次数据到的时候,要更新数据了,要分析保持时间。
在这里插入图片描述

源时钟和目的时钟有时钟偏斜,因此是两个不同的时钟,时序分析的时候清楚目的寄存器的时钟是谁,初始时间是以源时钟初始时间为基准,因此要注意时钟偏斜这个变量,在时序分析计算的时候要考虑到。
对于同步设计Tskew可忽略(认为其值为0),因为FPGA中的时钟树会尽量保证到每个寄存器的延迟相同。

此外,时钟可能还不稳定,在正常位置左右摆动,因此,在分析建立时间和保持时间的时候,要针对时钟的不稳定,分析时钟向左摆动最大值与向右摆动最大值对建立时间和保持时间裕量的影响。

在这里插入图片描述
建立和保持时间是由器件特性决定了,当我们决定了使用哪个FPGA,就意味着建立和保持时间也就确定了。Xilinx FPGA的setup time基本都在0.04ns的量级,hold time基本在0.2ns的量级。

在Vivado规定,必须要指定管脚电平,不然在最后一步生成比特流时会出错。
除了管脚位置和电平,还有一个大家容易忽略但很容易引起错误的就是端接,当我们使用差分电平时比如LVDS,使用IBUFDS来处理输入的差分信号时,可以指定端接为TRUE。
在这里插入图片描述
但在Ultrascale中的IBUFDS,却把端接这个选项去掉了,我们必须要在xdc或I/O Pors界面中,手动指定,否则可能会出错。
在这里插入图片描述
差分端口输入,当连续输入的数据为11101111这种时,中间那个0拉不下来,还是1,同样也会发生在000010000,这样就导致数据传输错误,后来才发现是端接忘记加。因为端接会影响信号的实际电平,导致FPGA判断错误。
当综合完成后,我们可以点击DRC,进行设计规则检查,这一步可以报出一些关键问题,比如时钟端口未分配在时钟引脚上等。

延迟约束:数据从源端到目的端,受布线影响,路径也是不恒定的,因此,数据到达目的段寄存器时,也会有一个抖动,这个抖动就靠input_delay和output_delay约束。这个约束本质是告诉vivado输入信号和输入时钟之间的延迟关系。input_delay = 数据路径(clk 到FPGA的引脚)- 时钟路径(clk到FPGA的管脚),注意是FPGA管脚,只是告诉软件,时钟和数据到达管脚时的相位关系,带入到寄存器同步模型中,就是时钟经过数据路径到达目的寄存器的数据端口,与时钟经过时钟布线,达到目的寄存器的时钟端口时间差多少。内部在布线的时候,软件可以根据关系,通过内部的布线,微调数据延迟和时钟布线延迟,满足建立保持时间。
在这里插入图片描述
当满足图中的时序时,最大延迟为2ns,最小延迟为1ns。

因此,需要加的时序约束为:

create_clock -name sysclk -period 10 [get_ports clkin]
set_input_delay 2 -max -clock sysclk [get_ports Datain]
set_input_delay 1 -min -clock sysclk [get_ports Datain]

input_delay指明了要约束的输入数据端口是哪个,数据路径的延时是多少,这个数据端口寄存器所用时钟是哪个时钟

外部芯片的手册一般会说明从管脚出来的随路时钟和数据的相位关系,这个相位产生的原因,就是芯片内部的源段寄存器数据路径和时钟路径有时间差导致,其实就是芯片内部的TCO+TLOGIC,如果把目的寄存器当作fpga管脚的话,那么数据延迟还要再加上布线延迟,一般布线时钟和数据等长,因此,时钟和数据的相位差不发生变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值