1. 时钟的定义
理想的时钟模型是一个占空比为50%且周期固定的方波。时钟信号的高脉冲宽度与周期之比即该时钟信号的占空比。
2. 时钟偏差
由于材料、工艺、温度以及各种噪声的影响,时钟的周期无法保证绝对的精准。FPGA设计者需要根据相关的时钟偏差参数,以时序约束的方式告知FPGA编译工具,留出一部分的时序余量。
影响时钟精度偏差的一般有时钟精度、时钟温漂、时钟抖动等参数:
- 时钟精度(Frequency Tolerance):时钟精度一般是在25℃下测量的时钟相对于标准频率的偏差,单位为ppm(百万分之一)。若手册上显示时钟的精度为±15ppm,简单的理解,15ppm就意味着每秒会产生15μs的偏差。如果时钟频率是25MHz,周期为1/25MHz=40ns,那么每个时钟周期产生的精度偏差值就是40ns×(±15/1000000)=0.6ps。
- 时钟温漂(Frequency versus Temperature Characteristics):由于晶振材料和工艺的限制,致使时钟在不同的温度下精度会有较大的偏差,这种精度偏差通常称为时钟温漂。单位一般也是ppm。如果时钟频率是25MHz,手册上显示的温漂为±100ppm,那么每个时钟周期由于温漂所产生的精度偏差值就是40ns×(±100/1000000)=4ps。
- 时钟抖动(Jitter):晶振源固有的噪声和干扰通常会带来时钟信号的周期性偏差,称为时钟抖动,其单位一般是ps。与前面两个参数相比,时钟抖动通常较小,但对于几百MHz的时钟频率而言,其占比不容忽视。时钟抖动的模型可以这样理解:观察两个连续时钟周期的长度T1和T2,它们之间的绝对差值
|T1 - T2| 就定义为抖动值。在示波器或分析图上,表现为理想的方波边缘出现了微小的、不规则的偏移。
3. 建立时间与保持时间
要理解数字电路如何可靠工作,必须掌握两个核心概念,它们也是计算机基础中数字逻辑部分的关键:
- 建立时间 Tsu:时钟上升沿到来之前,数据必须保持稳定的最短时间。
- 保持时间 Th:时钟上升沿到来之后,数据必须继续保持稳定的最短时间。
一个数据需要在时钟上升沿被锁存,那么这个数据就必须在这个时钟上升沿的建立时间和保持时间内保持稳定,即在这段时间内传输的数据值不能发生任何变化。
从概念示意图上看,一个理想的数字信号波形(如阶梯状方波)被时钟边沿采样。在时钟上升沿到来前的一小段时间窗口(Tsu)内,以及到来后的一小段时间窗口(Th)内,数据信号的电平必须已经稳定且保持不变。
如果违反上述任一条件,都将导致寄存器采样错误。我们可以通过一个具体的寄存器时序图来分析:
- 建立时间违例:假设输入信号
reg3in 在时钟 clk_r3 的上升沿到来之前的建立时间内发生了跳变。那么 clk_r3 的上升沿锁存到的将是一个不稳定、正处于变化过程中的数据值,这直接导致寄存器输出 reg3out 在接下来的周期内处于不确定 (uncertain) 状态。
- 保持时间违例:假设输入信号
reg3in 在时钟 clk_r3 的上升沿到来之后,未能保持足够长的稳定时间(即保持时间),而是过早地发生了变化。同样,这会导致时钟沿采样到的数据边界模糊,使得输出 reg3out 变得不确定。
因此,时序分析结果满足时序要求的一个基本前提,就是传输数据在时钟锁存沿的建立时间和保持时间窗口内必须是稳定的。任何违例都会导致功能错误。
4. 寄存器到寄存器的时序分析(reg2reg)
对于FPGA内部寄存器到寄存器的路径,只要告诉编译工具它们所用的时钟频率,工具就会自动将时钟周期、建立时间和保持时间等参数代入公式,计算出该路径允许的延时范围,并以此为目标进行布局布线。
4.1 数据路径和时钟路径
在一个典型的reg2reg路径中,涉及两条关键路径,其管理思想与复杂的网络/系统中的路径规划有相似之处:
- 数据路径:数据从源寄存器(reg1)的输出端,经过中间的组合逻辑和走线,最终传输到目的寄存器(reg2)的输入端所经过的完整路径。
- 时钟路径:通常有两条。一条是时钟信号从时钟源出发,到达源寄存器(reg1)时钟端的路径;另一条是时钟信号从同一个时钟源出发,到达目的寄存器(reg2)时钟端的路径。
这两条时钟路径的差异会导致“时钟偏斜”,是时序分析中必须考虑的重要因素。
5. 引脚到寄存器的时序分析(pin2reg)
FPGA与外部芯片的同步通信接口,根据时钟来源可分为系统同步接口和源同步接口。
系统同步接口的框图结构如下:一个公共的时钟源同时驱动FPGA器件和外部芯片。FPGA内部的寄存器(reg1)通过输入引脚接收来自外部芯片寄存器(reg2)的数据。整个通信由同一个系统时钟同步。关键点在于,数据从外部芯片发出,经过PCB走线,到达FPGA输入引脚,再进入内部寄存器,整个链路延时必须满足FPGA内部寄存器的建立和保持时间要求。
源同步接口的框图结构则不同:时钟由发送数据的一方(例如外部芯片)提供,并随数据一起发送给接收方(例如FPGA)。在图中,时钟源位于外部芯片侧,它驱动自身寄存器(reg2)的同时,也将时钟信号通过专门的时钟引脚发送给FPGA。FPGA则使用这个传入的时钟来采样同时传入的数据。这种方式将数据和时钟的传输延时绑定,更有利于高速传输,但约束方式与系统同步不同。
6. 寄存器到引脚的时序分析(reg2pin)
在reg2pin模型中,数据从FPGA内部的寄存器发出,通过输出引脚送到外部芯片的输入端。此时,目的寄存器在外部芯片中。进行时序分析时,需要根据外部芯片手册中提供的其输入引脚的建立时间和保持时间要求,来对FPGA内部的这条输出路径进行约束,确保数据在外部芯片的时钟沿能正确被采样。
7. 引脚到引脚的时序分析(pin2pin)
pin2pin路径指的是信号从FPGA的输入引脚进入,不经过任何寄存器,直接通过纯组合逻辑,最终从FPGA的输出引脚送出。这条路径上只有组合逻辑延时和走线延时,不涉及寄存器的建立/保持时间问题。进行时序分析时,通常只需要使用 set_max_delay 和 set_min_delay 这类约束命令,将路径允许的最大和最小延时值告知编译工具即可。
参考资料
[1] FPGA时序约束【基本时序分析】, 微信公众号:mp.weixin.qq.com/s/67ZtIh6pgRyjgv0fSfRdgg
版权声明:本文由 云栈社区 整理发布,版权归原作者所有。