好贷网好贷款

dff与latch的用法和区别

发布时间:2016-12-4 18:25:27 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"dff与latch的用法和区别",主要涉及到dff与latch的用法和区别方面的内容,对于dff与latch的用法和区别感兴趣的同学可以参考一下。

dff与latch的用法和区别 废话少说,dff是边沿敏感,latch是电平敏感。 用法上图: 功能仿真:   以下部分是摘抄别人的技术心得: latch(锁存器)与 DFF(D触发器)的区别 1、latch由电平触发,非同步控制。在使能信号有效时latch相当于通路,在使能信号无效时latch保持输出状态。DFF由时钟沿触发,同步控制。 2、latch容易产生毛刺(glitch),DFF则不易产生毛刺。 3、如果使用门电路来搭建latch和DFF,则latch消耗的门资源比DFF要少,这是latch比DFF优越的地方。所以,在ASIC中使用latch的集成度比DFF高,但在FPGA中正好相反,因为FPGA中没有标准的latch单元,但有DFF单元,一个LATCH需要多个LE才能实现。 4、latch将静态时序分析变得极为复杂。    一般的设计规则是:在绝大多数设计中避免产生latch。它会让您设计的时序完蛋,并且它的隐蔽性很强,非老手不能查出。latch最大的危害在于不能过滤毛刺。这对于下一级电路是极其危险的。所以,只要能用D触发器的地方,就不用latch。     有些地方没有时钟,也只能用latch了。比如现在用一个clk接到latch的使能端(假设是高电平使能),这样需要的setup时间,就是数据在时钟的下降沿之前需要的时间,但是如果是一个DFF,那么setup时间就是在时钟的上升沿需要的时间。这就说明如果数据晚于控制信号的情况下,只能用latch,这种情况就是,前面所提到的latch timing borrow。基本上相当于借了一个高电平时间。也就是说,latch借的时间也是有限的。   在if语句和case不全很容易产生latch,需要注意。 问:这两个代码哪个综合更容易产生latch: 代码1 always@(enable or ina or inb) begin if(enable) begin data_out = ina; end else begin data_out = inb; end end 代码2 input[3:0] data_in; always@(data_in) begin case(data_in) 0 :              out1 = 1'b1; 1,3 :           out2 = 1'b1; 2,4,5,6,7 : out3 = 1'b1; default:      out4 = 1'b1; endcase end 答案是代码2在综合时更容易产生latch。 因为case下赋值不全呀!比如当data_in=0时,只是给out1=1'b1,那out2,out3,out4呢,没有赋值,所以out2,out3,out4就保持原值。这就是latch。 如果把每一个case值下都把out1,out2,out3,out4都做一遍赋值,那就不会产生latch了。 latch的优缺点总结: latch的缺点: 1. latch是电平触发,无法实现同步操作,与我们正常的时序逻辑电路设计思路不符。 2. latch会对输入电平敏感,受布线延迟影响较大,比较容易导致输出有毛刺产生。 3. latch会导致静态时序分析和DFT会很复杂。 4. 在ASIC中使用latch的集成度比DFF高,但在FPGA中正好相反,因为FPGA中没有标准的latch单元,但有DFF单元,一个LATCH需要多个LE才能实现。 latch的好处: 因为使用latch可以timing borrow,在高速电路设计中(timing会很紧),有时候就需要用latch。

上一篇:Ubuntu 编译安装 hadoop 2.2.0
下一篇:centos 6.5搭建hadoop2.2.0

相关文章

相关评论