FPGA数字电路时序分析案例

时间:2025-11-02  作者:Diven  阅读:0

数字电路分为组合( combinational)电路和时序(sequential)电路。组合电路的输出仅取决于输入,时序电路的输出取决于当前的输入和之前的输入。组合电路是不需要记忆的,但时序电路有记忆功能。

FPGA数字电路时序分析案例

在红色方框处会因为n1n2响应时间的延迟不同导致 OR门产生一个本不期望出现的低电平。尽管很短暂,但在复杂电路中该现象还是会影响某些破坏性的效果。

为了防止毛刺出现我们可以修改电路,原因与本节内容无关,所以不展开:

(二)  时序逻辑电路

前面提过,时序逻辑电路的输出响应同时取决于当前的输入与之前的输入状态,所以需要一个存储器件保存之前的出入状态。存储元器件的基本模块为一个双稳态(bistable)的元件。该元件需要有两种稳定的状态,即0和1。我们首先可以想到将两个反相器(非门)交叉耦合(cross coupled),即可形成一个最简单的双稳态电路。

我们可以假设Q为0或1,都可以发现输出始终保持稳定。但是该器件有两个问题:

无法确定Q和~Q的初始值;

没有出入信号。

我们在此基础上需要逐步修改出有实际意义的存储器件。本节关注点在时序分析,所以不做详细分析,只需要抽象化知道功能即可。

1.    SR锁存器

将非门改为或非门,即SR锁存器

有置位(SET)和复位(RESET)两个输入信号,以此控制Q的输出。真值表如下:

当S和R均为0时,Q可以保存之前的状态。Q也可以通过S和R来控制。但是SR锁存器并没有引入时钟的概念,即无法决定什么时间来控制Q的状态。

2.    D锁存器

引入CLK,和D信号来决定在何时根据D的状态来控制输出Q电路和真值表如下图:

由真值表可知D锁存器(Latch)是电平敏感的,当CLK=1时,Q=D,当CLK=0时,Q保持之前的状态,无视D的变化。

3.    D触发器(filpflop)

我们使用两个由反向时钟控制的D Latch级联(背靠背,back to back)组成DFF,因为反向时钟的作用可以使时钟电平敏感变为边沿敏感,电路如下图:

DFF在时钟的上升沿将D赋值给Q,在其时刻Q保持不变。DFF也常常被称为主从触发器,边沿触发器,正边沿触发器。

4.    寄存器

将N个共享同一时钟的DFF并联即为N位寄存器,如图:

5.    时序逻辑电路的时序

当触发器或寄存器在时钟上升沿到达时将D的值赋给Q,这个过程称之为采样(sampling)。当时钟上升沿时,如果D是0或者1的稳定状态,那么Q也会输出一个稳定的对应值。但如果运气不好,在时钟上升沿,输入D正处于变化状态(比如一个0-1上升的过程中),那么Q的值将不确定。所以对于Latch和FF我们都有一个约束,即建立时间(setup time)和保持时间(hold time)。

即在时钟上升沿到来之前Tsetup,输入信号必须稳定,且保持到上升沿到来之后Thold时刻。也就是在Tsetup和Thold时刻之间,必须确保输入D保持稳定,才能使Q采样成功。

a)   触发器的动态规范(dynamIC discipline)

同组合逻辑一样,电子在任何电路元器件传播均需要时间,在latch和FF中也不例外,如下图所示。当时钟上升沿到来,采样输入值后,会经过最短延迟Tccq(Time for ff Contamination Clk-to-Q delay),输出才会发生变化,最迟在Tpcq(flip-flop PropagationClk-to-Q delay)之前稳定下来。

b)   建立时间约束

以一个简单的时序逻辑电路(reg to reg)为例,如下图所示:

数据从R1输出的Q1开始,经过一个未知的组合逻辑电路并输出D2,进入R2,其中R1和R2的CLK为同一时钟且不考虑布线差异。

如以上时序图所示,时钟周期为Tc,在一个Cycle内,

我们首先看Q1:

Q1来自寄存器R1的输出,所以Q1必定是不稳定的,看5.a那张时序图,Q1会在第一个CLK的上升沿到来后Tccq和Tpcq之间的某个时间稳定下来,具体时间不知道也不重要,反正我们可以确定最迟Tpcq肯定是稳定的。

随后稳定的Q1会进入组合逻辑电路,最迟经过Tpd时刻稳定下来并输出(不记得Tpd是什么的往前面翻翻,注意要区别于Tpcq),如果这个时刻处在第2个CLK上升沿Tsetup之前,那么第2个CLK就能够顺利采样。

我们就称这种情况为满足建立时间约束。我们可以很容易得到一个等式:

在正常的数字电路系统设计中,系统时钟周期通常由架构师、市场部门决定(以确保产品有足够的性能和竞争力)。或者由设计者本人确定,反正键盘在你手里,你是老大你说了算。Tpcq和Tsetup这是由制造工艺决定的,越先进的制程则延迟越小(或者你是用fpga做产品,那么fpga的型号决定了这两个时钟参数)。所以通常对于设计者来说,为了满足建立时间,你能修改的或者说决定的只有Tpd,即组合逻辑电路的传播延迟。所以我们可以将上述公式变换为:

括号内的项Tpcq+Tsetup我们称之为时序开销,反正这是一个由制造工艺或者芯片型号决定的固定值。我们想要Tc更短(时钟频率更快),就要确保组合逻辑的传播延迟不能太大。如果代码是固定的(比如用的ip),组合逻辑的传播延迟没办法缩减,那么就只能降低时钟频率(增大Tc)。

减少组合逻辑的传播延迟主要办法就是减少逻辑的关键路径上的门电路的数量,如果是fpga的话就是减少lut的级联级数。

c)   保持时间约束

同样关注目的寄存器(destination)R2,R2采样的输入信号是D2,D2来自于经过组合逻辑电路的Q1,Q1来自R1的输出,且在Tccq之前都是稳定的(即使R1的输入变化导致Q1变化,最快也要等到Tccq之后,没想明白的看5.a),在经过组合逻辑电路之后,同理也会在Tcd之前保持稳定,为了确保在Thold之间D2都是稳定的, 会得到下列公式:

同样Tccq和Thold都是由触发器的制造工艺决定的,所以我们可以变化等式得到:

也就是组合逻辑的最小延迟Tcd的值。我们从公式可以发现,满足保持时间约束与系统时钟周期无关,仅与组合逻辑的最小延迟有关。

在实际电路中,我们有情况是2个触发器直接级联,中间不经过任何组合逻辑电路:

也就是Tcd=0,所以

换句话说就是一个可靠触发器的保持时间必定要小于最小延迟时间。在实际的数字IC设计中,因为Tcd=0这种情况都能满足,那加了组合逻辑电路Tcd>0必定不会出现不满足的情况。但是因为我们的例子中没有考虑CLK的时钟抖动,以及CLK时钟同源但是布线长度不同而导致的偏移,所以实际也会出现Tcd<0的情况。但是作为前端设计不会关注保持时中违例,而是在用工具生成时序分析报告后由后端通过插入Buffer来处理。在在FPGA设计中,时序分析会在综合和实现两个步骤分别产生,如果综合的时序报告中有保持时间违例一般不做处理(如果违例太大就需要考虑提前进行处理了),工具会在实现的布局布线阶段自动fix违例。如果布局布线后的时序报告依旧有保持时间违例,一般小于300ps的不做处理,因为工具计算的时候往往是用最差策略来计算的。如果违例数值过于大的话,就要考虑修改代码,或者通过ECO的方式修改时钟BUFF位置,减少时钟偏移。

编辑:黄飞

 

猜您喜欢

现代电子设备中,集成电路(IC)封装的选择非常重要。MSOP10_3X2.9MM是应用的小型封装,因其优异的性能和紧凑的尺寸,受到众多设计工程师的青睐。本文将深...
2025-04-24 12:31:12

当今快节奏的数字生活中,我们的电子设备已经成为重要的一部分。无论是智能手机、笔记本电脑还是电动汽车,电池续航能力都直接影响着我们的使用体验。而电池管理系统 (B...
2024-10-02 00:00:00

贴片排阻作为电子元器件中的重要组成部分,应用于各种电路设计中。合美电机(HERMEI)作为国内知名的电子元器件制造品牌,其生产的贴片排阻凭借很好的品质和优异的性...
2014-01-10 12:21:30

贴片电阻在电路图和元件标识中通常用字母「R」表示。 就像其他电子元件一样,例如电容用「C」、电感用「L」,电阻也采用一个特定的字母来简化电路设计和识别。 在电路...
2025-04-14 15:02:01

贴片电阻作为基础且重要的元件,应用于各种电子设备中。ASJ(新加坡)贴片电阻优良的品质和稳定的性能,受到众多电子制造商的青睐。本文将围绕ASJ贴片电阻的电压参数...
2016-05-16 03:03:37

湿手器是现代化的卫生设备,专为解决洗手后手部湿润的问题而设计。工作原理简单高效,用户只需将洗净的手放入湿手器内,设备便会迅速通过温暖的气流将水分蒸发,确保手部在...
2009-05-17 00:00:00

独石电容在电子行业中很重要。被应用于各种电子设备。选择一个好的独石电容品牌,能提高产品质量。下面,我将推荐几个知名品牌。品牌一:松下电器松下电器是个老品牌。的独...
2025-03-22 20:00:34

橡皮圈是常见的办公和日常用品,因其简单实用而受到欢迎。选择合适的橡皮圈时,有几个重要参数需要考虑。首先是橡皮圈的直径。根据用途的不同,橡皮圈的直径可以从几毫米到...
2025-01-14 00:00:00

贴片电阻,也叫片式电阻或SMD电阻,是一种小型化的电子元件,应用于电子电路中。识别贴片电阻主要依靠其表面印制的三位或四位数字,这代表了电阻的阻值。 例如,104...
2024-11-29 10:25:40

电路中,电阻是影响电流流动的重要因素。根据欧姆定律,电压(V)等于电流(I)与电阻(R)的乘积,即 V = I × R。虽然电阻的大小通常是固定的,但在某些情况...
2025-04-15 22:00:12