FPGA时序分析及时序约束常用方法(上篇)

背景:时序分析和时序约束是FPGA中很基础但很重要的一部分内容。设计出一个好的时序电路不是件简单的事,要理解什么是FPGA的时序分析和时序约束,首先我们必须对FPGA开发板的基本组成有一定的了解。

这里可以简单把FPGA芯片分成三部分

1:可编程逻辑功能快

可以这么说,在不考虑价格的前提下,可编程逻辑功能块数量是我们选购一块FPGA开发板很重要的因素。FPGA全名为现场可编程门阵列。这里的现场指的就是Altera和Xilinx两家主流的FPGA厂商,他们的FPGA大部分是基于SRAM工艺,所以可以反复进行擦写。而我们这里说的可编程逻辑功能块,就可以理解成实现FPGA可编程这个功能的基本单元。
而可编程逻辑功能快又分为三部分
1:查找表(look up table简称LUT)
在我们的硬件描述语言Verilog或者VHDL中,代码中的组合逻辑在最后下板实现的时候,都是通过查找表的方式实现的,根据输入的不同查找表会有不同的输出,我们也常常听说四输入查找表、六输入查找表等等。
2:触发器(简称FF,常用的D触发器为DFF)
FPGA本质就是数字电路的物理实现,所以这里所说的触发器跟我们数电中是一样的,D触发器的简化原理图如下,当复位信号无效之后,触发器开始正常工作,每当时钟沿来到的时候,将数据从D端口送给Q端口。(这个是我们后续理解时序分析和时序约束的基础)
FPGA时序分析及时序约束常用方法(上篇)_第1张图片
3:进位链

2:片类互连线

3:IO端口

除了上述的三种资源之外,FPGA芯片一般还有
1:数字时钟管理单元
2:DSP(嵌入式硬核除法器)
3:高速串行I/O接口
4:特殊功能模块(PCIE、DDR等硬核IP)
5:有的带有arm(即PL + PS的SOC架构)

常见的时序问题分四类:
1:寄存器到寄存器
2:输入引脚到寄存器
3:寄存器到输出引脚
4:输入引脚到输出引脚

下面结合上面给出的D触发器的结构图具体谈谈一些时序分析中的基础知识

时序分析:时序分析分析的是数据从一个寄存器出来,到进入下一个寄存器这一段路径,我们分析的就是这一段路径上数据的传输情况,看数据是否能被正确的接受以及发送给下一级电路。

时序约束:时序约束的目的就是为了保证在数据在上述那一段路径上的时间控制在一个时钟周期以内。时序约束我们要干的事就是告诉EDA工具一些我们设计的要求,然后让EDA工具去自动优化布局布线以尽可能达到我们的设计要求。

时序分析和时序约束的意义:可以概括为两点,第一就是可以保证数据的正确接受,第二是可以让我们设计出来的电路跑在更高的时钟主频下,毕竟FPGA一个很重要的特点就是能高速处理数据,这背后当然就是更高频率的时钟。

建立时间(setup_time):FPGA一般在每一个时钟的上升沿采集数据,建立时间指的就是在一个时钟上升沿来到之前,数据应该提前被准备好,这样我们才能正确地采集到这个数据,所以我们把建立时间定义为,在时钟上升沿来到之前,数据必须保持稳定的最小时间

保持时间(hold_time):同样的我们来理解保持时间,保持时间就是也是为了能正确地接受数据,他指的是数据在时钟沿被采样之后,数据必须保持稳定的最小时间

Tco:数据从触发器的输入端口进去,到从输出端口出来这之间的延迟,这个延迟是有器件本身的电气特性决定的,一般来说这个时间很短

Tdata: 数据传输的延迟时间,这个时间的长短完全取决于你代码的质量,我们常说好的时序是设计出来的,其实指的就是这一部分。数据传输时间过长不利于满足建立时间,但数据传输时间过短也不利于保持时间的满足

你可能感兴趣的:(FPGA)