时序剖析时FPGA规划中永久的论题,也是FPGA开发人员规划进阶的必经之路。慢慢来,先介绍时序剖析中的一些根本概念。
1. 时钟相关
时钟的时序特性首要分为颤动(Jitter)、偏移(Skew)、占空比失真(Duty Cycle Distortion)3点。关于低速规划,根本不必考虑这些特征;关于高速规划,因为时钟自身的原因形成的时序问题很遍及,因此有必要重视。
1. 时钟颤动 (clock jitter)
抱负的时钟信号应该是抱负的方波,可是实际中的时钟的边缘改变不行能是瞬变的,它有个 从低到高 / 从高到低 的改变进程,如图1所示。
常见的颤动参数有3种:
周期颤动(Period Jitter):
周期颤动率(Period Jitter)丈量时钟输出传输违背其抱负方位的最大违背。Period Jitter代表周期差颤动的上下鸿沟。
周期差颤动(cycle-to-cycle Jitter):
周期差颤动率(cycle-to-cycle jitter)是两个相邻周期的时刻误差。它总是小于周期颤动(period jitter)
长时刻颤动(Long-term Jitter):
长时刻颤动率如下图(Long-Term Jitter)界说为一个时钟沿相关于基准周期时钟沿通过一段时刻的延时之后,与其抱负方位的违背。此丈量能够捕获锁相环低频周期改变(缓慢的,频率很低的)。长时刻颤动对图形、串行衔接通讯体系、打印机和任何光栅扫描操作十分重要。
时钟颤动的原因便是噪声。时钟颤动是永久存在的,当其大到能够和时钟周期相比较的时分,会影响到规划,这样的颤动是不行承受的。
2. 时钟偏斜 (clock skew)
时钟信号要供给给整个电路的时序单元,所以时钟信号线十分长,并构成分布式的RC网路。它的延时与时钟线的长度、时序单元的负载电容、个数有关,所以产生所谓的时钟偏移。时钟偏移是指同一个时钟信号抵达两个不同的寄存器之间的时刻差值,依据差值能够分为正偏移和负偏移。
时钟偏移的计算公式: Tskew = Tclk2 – Tclk1
时钟偏移是永久存在的,当其大到必定程度会影响电路的时序。处理方法便是在FPGA的规划中让首要的时钟信号走大局时钟网络。该网络选用全铜工艺和树状结构,并规划了专用时钟缓冲和驱动网络,到一切的IO单元、CLB和块RAM的偏移十分小,能够忽略不计。
3. 占空比失真DCD (Duty Cycle Distortion)
即时钟不对称,时钟的脉冲宽度产生了改变。DCD会吞噬很多的时序裕量,形成数字信号的失真,使过零区间违背抱负的方位。DCD通常是由信号的上升沿和下降沿之间时序不同而形成的。
2. 信号扇入/扇出 (fan-in/fan-out)
The number of circuits that can be fed input signals from an output device. 扇出,输出可从输出设备输入信号的电路的数量。
扇出(fan-out)是界说单个逻辑门能够驱动的数字信号输入最很多的术语。大多数TTL逻辑门能够为10个其他数字门或驱动器供给信号。因此,一个典型的TTL逻辑门有10个扇出信号。
在一些数字体系中,有必要有一个单一的TTL逻辑门来驱动10个以上的其他门或驱动器。这种状况下,被称为缓冲器(buf)的驱动器能够用在TTL逻辑门与它有必要驱动的多重驱动器之间。这种类型的缓冲器有25至30个扇出信号。逻辑反向器(也被称为非门)在大多数数字电路中能够辅佐这一功用。
模块的扇出是指模块的直属基层模块的个数。一般以为,规划得好的体系均匀扇出是3或4。一个模块的扇出数过大或过小都不抱负,过大比过小更严峻。一般以为扇出的上限不超越7。扇出过大意味着办理模块过于杂乱,需求操控和协调过多的下级。处理的方法是恰当添加中心层次。一个模块的扇入是指有多少个上级模块调用它。扇人越大,表明该模块被更多的上级模块同享。这当然是咱们所期望的。可是不能为了取得高扇人而不惜代价,例如把互相无关的功用凑在一起构成一个模块,尽管扇人数高了,但这样的模块内聚程度必定低。这是咱们应防止的。
规划得好的体系,上层模块有较高的扇出,基层模块有较高的扇人。其结构图画清真寺的塔,上面尖,中心宽,下面小。
3. launch edge
时序剖析起点(launch edge):榜首级寄存器数据改变的时钟边缘,也是静态时序剖析的起点。
4. latch edge
时序剖析结尾(latch edge):数据锁存的时钟边缘,也是静态时序剖析的结尾。
5. Clock-to-Output Delay
数据输出延时(Tco):这个时刻指的是当时钟有用沿改变后,数据从输入端到输出端的最小时刻距离。
6. 寄存器树立/坚持时刻 Setup/Hold Time
树立时刻(setup time)是指触发器的时钟信号上升沿到来曾经,数据安稳不变的时刻。输入信号应提早时钟上升沿(如上升沿有用)T 时刻抵达芯片,这个T 便是树立时刻Setup time。简而言之,时钟边缘触发前,要求数据有必要存在一段时刻,这便是器材需求的树立时刻。如不满意setup time,这个数据就不能被这一时钟打入触发器,只要鄙人一个时钟上升沿,数据才干被打入触发器。
坚持时刻(hold time)是指触发器的时钟信号上升沿到来今后,数据安稳不变的时刻。简而言之,时钟边缘触发后,数据也有必要坚持一段时刻,以便能够安稳读取,这便是器材需求的坚持时刻。假如hold time 不行,数据相同不能被打入触发器。
假如不满意树立和坚持时刻的话,那么DFF(D type flip-flop/D类型触发器) 将不能正确地采样到数据,将会呈现亚稳态(metastability )的状况。假如数据信号在时钟沿触发前后继续的时刻均超越树立和坚持时刻,那么超越量就别离被称为树立时刻裕量和坚持时刻裕量。
7. Data Arrival Time
输入数据在有用时钟沿后抵达所需求的时刻。首要分为三部分:时钟抵达寄存器时刻(Tclk1),寄存器输出延时(Tco)和数据传输延时(Tdata)
Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata
8. Clock Arrival Time
时钟从latch边缘抵达锁存寄存器时钟输入端所耗费的时刻为时钟抵达时刻。
Clock Arrival Time = Lacth edge + Tclk2
9. 树立裕量 Setup Slack
当数据需求时刻大于数据抵达时刻时,就说时刻有余量,Slack是表明规划是否满意时序的一个称谓。
Setup slack = Data Required Time – Data Arrival Time
正的slack表明数据需求时刻大于数据抵达时刻,满意时序(时序的余量),负的slack表明数据需求时刻小于数据抵达时刻,不满意时序(时序的短缺量)。
10. Recovery/Removal Time
Recovery time is the minimum length of time an asynchronous control signal, for example, and preset, must be stable before the next active clock edge. The recovery slack time calculation is similar to the clock setup slack time calculation, but it applies asynchronous control signals.
Removal time is the minimum length of time an asynchronous control signal must be stable after the active clock edge. The TimeQuest analyzer removal time slack calculation is similar to the clock hold slack calculation, but it applies asynchronous control signals.
recovery time specifies the time the inactive edge of the asynchronous signal has to arrive before the closing edge of the clock.
Removal time specifies the length of time the active phase of the asynchronous signal has to be held after the closing edge of the clock.
也便是说Recovery / Removal time类似于Setup / Hold Time,不过是用于异步信号,比方set,reset信号。他们查看异步类型的边缘,开释沿有必要在时钟沿前面提早recovery time开释,或许在时钟沿后removal time之后开释。留意异步复位亚稳态问题!
11. 最大时钟频率
时钟最小周期:体系时钟能运转的最高频率。
1. 当数据需求时刻大于数据抵达时刻时,时钟具有余量;
2. 当数据需求时刻小于数据抵达时刻时,不满意时序要求,寄存器阅历亚稳态或许不能正确取得数据;
3. 当数据需求时刻等于数据抵达时刻时,这是最小时钟运转频率,刚好满意时序。
最小时钟周期为数据抵达时刻等于数据需求时刻。
12. 时序剖析
剖析第9节的图,数据传达的途径从上一级触发器到下一级触发器树立通过的数据时延总和为:Tclk1 + Tco + Tdata + Tsetup-slack + Tsu
在两级寄存器之间,时钟距离为:Tclk + Tclk2
依据树立时刻要求(鄙人一个时钟上升沿到来的时分,数据有必要安稳,且坚持必定的时刻Tsu)能够列一个不等式:数据时延 时钟距离,即
Tclk1 + Tco + Tdata + Tsetup-slack + Tsu = Tclk + Tclk2
同理,依据坚持时刻要求(时钟上升沿到来后,寄存器锁存数据的时分,数据要坚持必定的安稳时刻Th)能够列一个不等式:
Tco + Tdata = Th
跟着体系时钟 fclk 变大时,Tclk变小,则要求 Tco + Tdata 也变小,当 Tco + Tdata 不满意榜首个不等式时,不满意树立时刻要求;可是,Tco + Tdata 也不是越小越好,当其太小时,不满意第二个不等式时,触发器不能正常锁存数据,即不满意坚持时刻要求。从某种意义上说,Th约束了数据传输速率。
关于规划者来说最大的意图是进步时序的裕量,这样即便信号完整性上呈现一点问题,或许外界环境产生必定的改变,体系依然能正常作业,这便是一个规划优秀的体系应该体现出的超强的安稳性。
【文章转载自网络,版权归原作者一切,若有侵权请联络删去】