在FPGA的设计过程当中时序约束的设计是非常重要的一个环节,在FPGA工程设计的代码量或者逻辑量大的时候如果没有一个可靠的约束设计是很难保证FPGA稳定运行的。说起来搞笑的事还记得我刚刚接触FPGA的时候还不知道时序约束这个词,那个时候一心只想着代码,最后写的代码也是顾前不顾尾,在参与FPGA开发1年多之后知道有一个时序约束的这个部分,后面边学边做一点点对时序约束有一个概念。时序约束是FPGA设计的基础,所以这一小节先介绍下FPGA时序约束的基本概念。
一、什么是FPGA时序约束
因为在前面说了时序约束是非常重要的,到底什么是FPGA的时序约束?通俗的说,在FPGA逻辑电路中,从一端信号的输入到另一端信号的输出是需要一定时间的,信号的输入和输出的时间范围内既要能够满足设计者的要求又要能够在FPGA中实现可用的逻辑电路,完成正确的输入和输出。我们将这个时间范围形成一个约束告诉编译器,让编译器来综合编译出满足时序要求的电路,这个过程把他认为是FPGA的时序约束。
都知道在HDL代码设计过程当中主要有3个重要部分,组合逻辑电路,时序逻辑电路和状态机。组合逻辑电路不需要时钟的参与,而时序逻辑电路需要时钟的参与,并在代码的设计过程中大量的使用时序逻辑电路,这是为了避免电路中竞争和冒险的发生使得电路不稳定。想要设计好时序逻辑电路就存在了一些概念,在时序设计的过程中需要我们理解,比如建立时间,保持时间等。接下来先初步了解几个概念。
二、时序约束里面的一些概念
1、建立时间(Tsu):触发器的时钟信号沿到来以前,数据需要稳定的时间。
2、保持时间(Th):触发器的时钟信号沿到来以后,数据稳定不变的时间。
3、时钟偏差SKEW:时钟源到不同DFF时钟总输入端的延时差异,这个skew的存在,会对DFF的时序造成影响,比较坏的情况可能会使得DFF的setup或hold时序要求无法满足。
4、时钟不确定性
时钟不确定性是时钟沿的实际到达时间与理想到达时间,可能存在的偏差。主要因素为时钟抖动,在FPGA器件中,抖动包含有三种,分别是输入抖动、周期抖动、系统抖动。
三、总结
本节主要介绍了时序约束的重要性,对FPGA时序约束进行了解释说明,对时序约束里面的一些概念进行了说明(建立时间,保持时间,时钟偏差,时钟不确定性),下一小节主要介绍FPGA内部时序路径的四大类型有哪些。