问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 7 人浏览分享

开启左侧

第2章 时序约束基本概念

[复制链接]
7 0
2.1  时钟
      控制触发器(Flip-Flop)或其它时序器件状态更新的周期性脉冲信号就是我们所说的时钟。如下图所示的时钟的理想模型,为周期固定且占空比为50%的方波,电路中所有数据的更新都是以时钟为基础进行控制的,数据在时钟的上升沿或下降沿发生变化,所以时钟在电路中起着同步数据的作用。时钟的频率决定了电路系统运行的最大速率。
image.jpg
      但实际上,时钟并不是严格的方波,如下图所示,其边沿的转换并不是瞬时的,且周期和占空比都在不断变化。FPGA系统运行的时钟通常由外部晶振产生,我们可以在晶振的数据手册中找到时钟的各种参数,其中包括频率、占空比、转换时间、温漂、频率稳定度等。
image.jpg
      当时钟通过外部的晶振或者芯片时钟,通过FPGA的管脚进入FPGA内部逻辑,时钟会产生延迟、漂移、抖动、失真等现象,所以在硬件设计和软件设计上都必须考虑时钟的影响。
(1)应该增加时钟的稳定性,减少抖动和失真,在一些工业场合还要考虑温度导致的时钟偏移;
(2)高频的时钟应该走专用的FPGA时钟管脚;
(3)异步时钟传输数据需要正确采取跨时钟域的解决方法;
(4)使用vivado软件进行正确的时序约束设计。


2.1.1  时钟的偏差(clock skew)
      如下图所示,时钟达到寄存器rega的时钟路径和时钟到达寄存regb的路径延迟是不一样的,所以时钟存在偏差(skew)
image.jpg
      当时钟到达寄存器rega的延迟小于时钟到达寄存器regb的延迟,skew为正,否则skew为负。skew为正会导致数据的保持时间变小,skew为负会导致数据的建立时间变小。
如下图所示,tda延迟小于tdb,skew为正。
image.jpg
      如图所示,tda延迟大于tdb,skew为负。
image.jpg
      可以看到时钟的偏差skew是固定的,要么为正,要么为负,是固定的,可预测的。


2.1.2  时钟的抖动(clock jitter)
      如下图所示,理想的时钟是一个完美的方波,实际的波形存在抖动,抖动会导致时钟沿随机的出现超前或者滞后,抖动会导致,建立时间和保持时间裕量减少。
image.jpg
      时钟信号从低电平变化到高电平是一个过程,当电平的门限升到一定电压就是高电平或者降低到一定电压就是低电平,如下图所示。
image.jpg
image.jpg
       以上升沿采样来说,时钟的抖动影响主要为上升沿的抖动Jitter=|T2-T1|,对于需要双边采样的数据系统,那么下降沿的抖动也要考虑进来。
引起抖动的主要因素包括:
1.FPGA输入时钟精度和温漂
2.时钟信号在PCB传输由于阻抗不匹配导致的畸变
3.电源干扰、电磁干扰、系统运行后的动态干扰
4.FPGA的品质和工艺


2.1.3  时钟的不确定性(clock uncertainty)
数字电路中,时钟信号到达触发器的精确时间存在的不确定性(clock uncertainty)。这种不确定性主要来源于两个方面:时钟偏差(Clock Skew)和时钟抖动(Clock Jitter)。
image.jpg

2.2  触发器
2.2.1  触发器定义
能够存储1位二值信号的基本单元电路统称为触发器,如下图所示,它可以在外部信号的作用下从一个稳定状态翻转到另一个稳定状态。FF在数字电路中扮演着至关重要的角色,它们被用于构建各种时序电路单元,如寄存器、计数器、分频器、状态机等。触发器的使用,使得数字系统能够存储和处理信息,实现复杂的逻辑和控制功能。

不同结构的FF触信号的方式不同,分为电平触发、脉冲触发和边沿触发三种。如下图所设计,Xilinx 7系列FPGA中的每个SLICE都包含8个FF,这些触发器可以配置成边沿敏感型的触发器或电平敏感型的锁存器。
image.jpg
通过以下verilog代码的描述,vivado工具会综合出如下带使能功能的同步清除D触发器电路,通过资源消耗报告可以看出该生成电路消耗了1个FF。该电路也可通过FDRE原语产生。
always@(posedge clk) begin
    if(rst_n)
q <= 0;
else
    q <= d;
end


2.2.2  触发器特性
如下图所示,触发器的建立时间(setup time)就是时钟上升沿到来之前,数据必须保持稳定的时间;保持时间(hold time)就是时钟上升沿到来之后,数据必须保持稳定的时间。建立时间和保持时间是触发器的特性,也是时序分析中的重要参数,数值由触发器的结构和工艺等决定。
此外,在时钟上升沿到达时钟端CK后,数据不会立即锁存在输出端Q,而是经过一段时间的延时才会输出,这段延迟的时间称为TCO,也由触发器内部决定,该参数在时序路径延迟的计算中不可忽略。
image.jpg
触发器的时钟端CK和数据端D需要满足建立时间和保持时间的要求,数据才能正常输出。如果数据的延时过长或过短,无法满足建立时间和保持时间的要求,则数据不能被正确锁存,就会产生亚稳态,如下图所示,即一段时间内Q端处于不确定状态,在0和1之间振荡,待状态稳定后Q端的值是随机的。
亚稳态会造成整个电路的不稳定甚至崩溃。我们做时序约束就是为了让数据和时钟的关系满足寄存器的建立时间和保持时间的要求,让整个电路系统稳定地运行,如果不满足要求,就是所谓的时序违例,需要对电路设计进行更改以达到时序收敛的目的。
image.jpg


2.3  静态时序分析概念
FPGA设计中都以同步电路为主,如下图所示,由于数据在时钟边沿才发生改变,相比与异步电路有更强的抗干扰能力,并且便于进行时序分析和验证。
image.jpg
      为保证设计的电路能够正常工作,不但需要保证逻辑正确,还要确保时序达到要求。RTL设计综合成电路网表后,要经过布局布线才能在FPGA上实现。综合的过程或粗略的估算每一条路径的延时,而实际的布线结果和综合估计的结果存在差异。布局布线过程决定了FPGA内部器件的摆放位置以及走线的长度和质量,走线的长短影响数据传输的延时,延时直接影响着电路的时序性能。
      综合和布局布线结束后,时序分析工具对整个电路进行静态时序分析,计算出每一条路径的延迟信息,以检查哪些路径不符合时序要求。
      如果没有进行时序约束,工具布局布线的过程就会比较随意,当工程消耗的资源比较少时,由于布线资源的裕量比较大,每一条路径都会有比较好的时序。当工程消耗的资源比较大时,由于布线资源紧张,每一条路径对延迟的需求不同,而工具并不清楚,就会把延迟需求较高的路径分配到低速线路上,造成时序违例。这种时序违例其实不是我们的设计出现了问题,而是工具的随意布线造成了资源的浪费,导致时序难以收敛,如下图所示。
image.jpg
      如果设计者对不同路径的延时进行正确的约束,工具布局布线时会尽可能满足设计者的要求,以达到最佳的时序,要是时序分析结果没有收敛,则需要对电路进行改进或放宽要求。
2.4  时序路径模型
时序分析是基于路径进行检查的,四条典型的路径如下图所示。
image.jpg
路径1为引脚到寄存器的路径(pin2reg),数据在FPGA外部由开发板上的时钟或外部器件输出的时钟发送,经延迟后到达器件端口,通过芯片内部逻辑传输后到达寄存器,由于工具无法得知外部的延时,需要我们通过查询外部芯片的数据手册和计算PCB板卡走线延时,来告知工具数据和时钟到达输入引脚的延时关系,该路径使用input delay约束。
路径2为寄存器到寄存器的路径(reg2reg),数据在芯片内部由源寄存器发送,经过寄存器内部延时和逻辑延时到达目标寄存器,由于芯片内部的延时是可以计算的,该路径使用create clock进行约束。
路径3为寄存器到引脚的路径(reg2pin), 数据由芯片内部的寄存器发送至外部器件的寄存器,我们需要告知工具外部器件的时序要求和开发板走线延时,来让芯片内部寄存器发送的数据,经过一定的内部延时和PCB板卡上的走线延时后,满足其时序要求,该路径使用output delay约束。
路径4为引脚到引脚的路径(pin2pin),该路径只有逻辑和走线延时,没有经过寄存器,一般使用max delay和min delay约束。
这四种路径就是时序分析的基本模型,下面我们来介绍如何分析一条路径的延时。


2.5  数据到达路径和数据需求路径
      数据路径和时钟路径是时序分析中的重要概念。如下图所示数据路径是数据从源寄存器的时钟引脚开始,到目的寄存器的输入引脚所经过的路径。时钟路径是从源端到寄存器的时钟引脚所经过的路径,在进行时序分析时,时钟从源端到源寄存器的路径称为源时钟路径,时钟从源端到目的寄存器的路径称为目的时钟路径。
image.jpg
      如图所示的寄存器到寄存器的时序路径中,数据到达路径指的是数据从源寄存器传输到目的寄存器的实际路径,其路径延时称为数据到达时间,其值为数据路径延时与源时钟路径延时之和。数据需求路径指的是为了使数据满足相应的建立时间和保持时间要求,数据理论上应该传输时间的计算路径,其路径延时称为数据需求时间,在计算时,对建立时间和保持时间的分析要分别取不同的值,如下图所示。
image.jpg


2.6  发射沿(launch edge)和锁存沿(latch edge)
      如下图所示,发射沿(launch edge)为源寄存器发送数据的时钟沿,锁存沿(latch edge)为目的寄存器捕获数据的时钟沿,锁存沿一般比发射沿晚一个时钟周期。
image.jpg


2.7  建立时间和保持时间的关系
      如下图所示,对于分析建立时间来说,时钟源到达源寄存器将数据发送锁存后,在下一个时钟周期的上升沿才会被目的寄存器锁存,所以在建立时间分析时分析同一个信号的锁存沿和发射沿(当前源寄存器的发送沿是新的数据的发送沿,目的寄存器正在所存的是上一个时钟发送的数据,如果在源寄存器到目的寄存器存在正数延迟,会减少建立时间)。
对于保持时间来说,保持时间分析时应当分析当前数据的发射沿和上一个数据的锁存沿如果信号延时太短、传输的太快,则目的寄存器不能捕获到信号(当前源寄存器的发送沿也是目的寄存器上一个数据的锁存沿,如果在源寄存器到目的寄存器存在正数延迟,会增加保持时间)。
image.jpg


2.8  建立时间裕量和保持时间裕量
      时间裕量(有时也称为时序裕量)指的是实际的时间延迟与最大允许的时间延迟之间的差值。在时序分析中,如果一个路径的时间裕量为正,则说明该路径满足时序要求;如果为负,则表明存在时序违规。
      建立时间裕量指的是时钟边沿到来前实际的数据稳定时间与建立时间之间的差值。如果该值为正,则说明建立时间满足要求;若为负,则可能存在建立时间违规。保持时间裕量指的是时钟边沿到来后实际的数据稳定时间与保持时间之间的差值。如果该值为正,则说明保持时间满足要求;若为负,则可能存在保持时间违规。
image.jpg
      如上图所示,建立时间裕量和保持时间裕量都是用来衡量时序路径是否满足时序约束的重要指标。在FPGA设计中,通过优化布线、选择合适的触发器类型和位置等手段可以改善这些裕量,从而提高设计的整体性能和可靠性。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

10

粉丝

71

主题
精彩推荐
热门资讯
    网友晒图
      图文推荐
        
        • 微信公众平台

        • 扫描访问手机版