dff和latch的用法和区别

 2024-02-23 04:02:56  阅读 0

言归正传,dff 是边沿敏感的,latch 是电平敏感的。

上图使用情况:

触发器代码SQL_d触发器verilog代码_触发器代码数据库SQL

功能模拟:

触发器代码数据库SQL_d触发器verilog代码_触发器代码SQL

以下部分摘录别人的技术经验:

锁存器(latch)和DFF(D触发器)的区别

1、锁存器由电平触发,异步控制。 当使能信号有效时,锁存器相当于一条通路,当使能信号无效时,锁存器保持输出状态。 DFF由时钟边沿触发并同步控制。

2、Latch容易产生毛刺(),但DFF不易产生毛刺。

3. 如果使用门电路来构建锁存器和DFF,则锁存器比DFF消耗更少的门资源。 这就是latch优于DFF的地方。 因此,在ASIC中使用Latch的集成度要高于DFF,但在FPGA中则相反,因为FPGA中没有标准的Latch单元,但有DFF单元,而一个LATCH需要多个LE来实现。

4. Latch使得静态时序分析变得极其复杂。

一般设计规则是:在大多数设计中避免使用锁存器。 它会破坏你设计的时序,而且非常隐蔽,没有经验的用户无法察觉。 插销最大的危险是不能过滤毛刺。 这对于下一级电路来说是极其危险的。 因此,只要能使用D触发器,就不需要锁存器。

有些地方没有时钟,所以我们必须使用锁存器。 比如现在用一个clk连接到latch的使能端(假设是高电平使能)。 所需的建立时间是在时钟下降沿之前数据所需的时间。 但如果是DFF,那么建立时间就是时钟上升沿所需的时间。 这意味着如果数据晚于控制信号,则只能使用锁存器。 这种情况就是前面提到的latch。 基本上这就像借用了一个高水平的时间。 换句话说,锁存器借用时间也是有限的。

if语句和case不完整时很容易产生latch,需要注意。

问题:这两个代码组合时哪一个更有可能产生锁存器:

代码1

@(或ina或inb)

开始

如果()

开始

=伊娜;

结尾

别的

开始

=inb;

结尾

结尾

代码2

输入[3:0];

@()

开始

案件()

0:输出1=1'b1;

1,3:out2 = 1'b1;

2,4,5,6,7 : out3 = 1'b1;

:out4 = 1'b1;

结尾

答案是代码 2 在综合期间更有可能产生锁存器。

因为案例中的作业不完整! 例如,当=0时,仅给出out1=1'b1。 那么out2、out3、out4就没有被赋值,所以out2、out3、out4保留原来的值。 这是闩锁。

如果为每个 case 值都分配了 out1、out2、out3 和 out4,则不会生成锁存器。

总结一下latch的优缺点:

闩锁的缺点:

1、锁存器是电平触发的,无法实现同步操作,这与我们正常的时序逻辑电路设计思路不一致。

2、锁存器对输入电平敏感,受布线延迟影响较大,容易造成输出毛刺。

3. Latch会使静态时序分析和DFT变得非常复杂。

4、ASIC中使用Latch的集成度比DFF高,但FPGA中则相反,因为FPGA中没有标准的Latch单元,但有DFF单元,而一个LATCH需要多个LE实施的。

锁存器的优点:

因为可以使用锁存器,所以在高速电路设计中(会很紧张),有时需要使用锁存器。

标签: 触发 时钟 电平

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码