可编程逻辑
FPGA开发过程中,离不开时序约束,那么时序约束是什么?简单点说,FPGA芯片中的逻辑电路,从输入到输出所需要的时间,这个时间必须在设定的时钟周期内完成,更详细一点,即需要满足建立和保持时间。
时序约束可以让VIvado和Quartus等FPGA开发软件,在布线时检测综合出来的逻辑电路是否满足这个时序要求,并生成时序报告。
一、建立/保持时间
设定时序约束的目的就是为了满足建立时间和保持时间,所以理解“建立时间和保持时间”这两个概念非常重要。
建立时间:在时钟上升沿到来之前,输入信号需要提前一个最小时间里“预先准备好”,这个最小时间量就是建立时间;
保持时间:在时钟上升沿到来之后,输入信号必须保持一个最小时间量“不能变化”,这样这个最小时间量就是保持时间。
只有满足建立时间和保持时间,这样才能准确捕获到这个输入信号,下一级电路逻辑才能正常接收到正确的信号。
建立和保持时间是由FPGA芯片器件特性决定,也就是制程工艺决定的,以Xilinx FPGA K7芯片为例,setup time为0.04ns,hold time为0.2ns,具体可以查对应芯片手册的setup time和hold time。
实际的时钟信号是存在时钟抖动的,时钟抖动( Clock Jitter)是实际时钟存在随着时间积累的、时而超前、时而滞后的偏移,如下图所示。
时钟偏差(Clock Skew)表示在同一个时钟域内时钟信号到达各个寄存器用时的差异。时钟信号在FPGA芯片中也是需要走线的,所以也存在布线延迟。
时钟的不确定性,就是由时钟抖动和时钟偏差组成的。
时序路径是指从FPGA输入到输出的所有逻辑路径组成的路径。当存在时序路径时,需要考虑时序约束以确保正确的逻辑功能和时序性能。
时序路径中的关键元素包括:
(1) 路径起点(即时钟触发器输入端口)
(2)路径终点(即输出端口的寄存器或查找表单元)
(3)逻辑电路和逻辑器件
有了这些元素,就可以构建完整的时序路径。在实践中,我们可以使用FPGA工具来分析、优化和修复时序路径。
时序路径对于设计的正确性和时序性能来说都是非常重要的。为了最大程度地提高性能并避免瓶颈,我们必须对时序路径进行详细的分析和优化。
一个基本的时序路径包括源时钟路径、数据路径和目的时钟路径,如下图所示:
各部分对应的延时计算如下图所示:
时序约束的公式为:Tclk ≥ Tco + Tlogic + Trouting + Tsetup - Tskew
说明:Tclk表示系统时钟周期;Tco表示发送端寄存器时钟到输出时间;Tlogic表示组合逻辑延迟时间;Trouting为两级寄存器之间的布线延迟;Tsetup为接收端寄存器的建立时间;Tskew为时钟偏差。
Tlogic与我们写的HDL代码有直接关系,Trouting是FPGA开发软件综合布线根据FPGA内部资源情况进行布线产生的延时。
本文介绍了FPGA时序约束的基础理论知识,希望通过阅读本文,大家能够更好地理解时序约束原理,并在实际工作中运用这些原理提高设计效率和准确性。
全部0条评论
快来发表一下你的评论吧 !