FPGA时序约束篇之时序分析与时序约束的作用

发布于:2022-12-20 ⋅ 阅读:(372) ⋅ 点赞:(0)

一、写在前面

  在每个初学者学习FPGA设计时,都会听前辈说:时序约束对FPGA设计很重要。那么,听了这么多次,时序分析到底是什么?时序约束的作用是什么?
在这里插入图片描述
  网上巴拉巴拉看了一些杂七杂八的资料,简单写个学习笔记。

二、名词解释

  先用比较官方一点的语言来描述一下时序分析与时序约束?

  • 时序分析:时序分析是指通过分析FPGA设计中各个路径之间的数据传输和时钟传输路径,根据路径延迟与数据延迟,判断是否符合我们预期的要求:在工作时钟信号的锁存沿(Latch Edge)是否可以正确寄存我们需要的数据。
  • 时序约束:时序约束是指告诉EDA软件,我们所需要设计的系统需要达到什么样的设计指标,那么EDA软件根据我们所提供的设计指标,进行优化布局布线,尽量达到我们的设计指标。

  我们在使用HDL(Hardware Description Language )描述或者设计一个电路时,常常会被问到,你所设计的电路的最高主频能跑到多少?
  What?我们在给设计系统中不是给定了约束的系统时钟频率了吗?这里,最高主频是啥?最高主频是指当设计电路每个寄存器都能正确所存数据所需要的最大时钟频率。那么,在这里最高主频在设计中是通过我们手算得到的吗?当然不是。可以通过EDA软件的综合后的时序报告中可以看到。然后根据时序报告对时序约束进行修改。

三、举个栗子

  假如我们设计一个模块,其示意图如下。模块的输入数据DATA通过一个寄存器REG_1(D触发器)进行寄存后,在经过一系列的逻辑运算后,在通过一个寄存器(D触发器)REG_2进行寄存后,作为模块的输出。

在这里插入图片描述

  那么,这里有几个点需要指出:

  • CLK_1与CLK_2都是接到模块的输入时钟CLK,但是由于电路布局布线的原因,CLK_1与CLK_2相对于输入时钟(主时钟)的延迟是不一致的
    在这里插入图片描述
  • 数据从寄存器REG_1发出,再到寄存器REG_2,其中REG_1称为源寄存器,REG_2称为目的寄存器
  • 分析信号在两个寄存器之间的传递时,需要保证这两个寄存器的工作时钟信号是同源时钟

3.1 降低时钟频率

  对于上面图中的逻辑计算部分,内部是由一系列的逻辑门电路组成的,这里每个逻辑器件之间数据的传输存在延迟。那么问题来了,在第一个时钟的上升沿数据DATA从寄存器REG_1的D端输入,经过一定时间后从D触发器REG_1的Q端输出,再经过逻辑运算,这里逻辑运算也得需要一定的时间,从输入到输出存在延迟,如果这个延迟超过了一个时钟的周期,那么在第二个时钟周期的上升沿处,寄存器REG_2对逻辑运算的结果进行采样得到的结果就不是我们想要的数据,如下图所示。

在这里插入图片描述

  那么,在上图中,由于组合逻辑的路径太长,所以从寄存器REG_1的Q端到寄存器REG_2的D端的时间太长,从而导致经过组合逻辑运算后的数据到达目的寄存器REG_2的D端时已经超过了其工作时钟CLK_2的上升沿(Latch Edge),所以目的寄存器REG_2无法锁存到正确的数据。
  假如这里我们约束的系统时钟频率为50M Hz,那么源时钟CLK、源寄存器工作时钟CLK_1与目的寄存器工作时钟CLK_2的时钟周期都为20ns。这里由于无法满足时序收敛的要求,需要降低时钟频率,即增大时钟周期,以满足时序收敛的要求,如下图中右图所示。
在这里插入图片描述

3.2 提升时钟频率

  那么,上面是不满足时序收敛的情况。加入经过时序分析后,我们给的系统时钟频率50M Hz是满足时序收敛的情况,如下图中左图所示。
在这里插入图片描述

  那么,在这里,可以进一步提升时钟的频率,即降低时钟的周期,但此时目的寄存器REG_2仍然能够正确寄存数据,如上图中右图所示。

END

  好了,上面就是关于时序分析与时序约束的解释,如果有疑义的地方欢迎评论区友好探讨学习!!!!!
  关于时序分析与时序约束中的基本知识参照下一篇《FPGA时序约束篇之时序约束中的一些基础概念》
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看