Latch的四种写法及为何要避免其产生,以及Latch与DFF的区别?

参考来源:

  1. https://blog.csdn.net/llxxyy507/article/details/82811992
  2. https://blog.csdn.net/tianyake_1/article/details/79031582
  3. https://blog.csdn.net/perfect_lun/article/details/51818886
  4. https://zhuanlan.zhihu.com/p/34408492?from_voters_page=true
  5. https://www.cnblogs.com/chengqi521/p/6721250.html
  6. https://m.newsmth.net/article/METech/44491

1. Latch写法

法一:if_else不完整,缺else分支;

法二:case语句不完整;

注意:if_esle_,case语句完整仍会产生Latch的原因

代码1:
在这里插入图片描述

代码2:
在这里插入图片描述
原因:

  1. 未在所有的情况下给每个信号变量赋值;
    解决办法:
    在所有的情况下给每个信号变量都赋值,或者在case或者if前给每个变量赋初值;

法三:组合逻辑中自己自己赋值;

在这里插入图片描述

法四:always块的敏感列表未列全;

在这里插入图片描述

2. 为何要避免Latch的产生

之所以在硬件设计中避免latch的出现,主要原因是latch会产生毛刺(glitch),这种毛刺对下一级电路是很危险的。并且其隐蔽性很强,不易查出。因此,在设计中,应尽量避免latch的使用。

==latch 就是因为电平触发,所以很容易产生glitch,如果后面接了边沿触发的东西,可能会出问题。==如果确认这些glitch没有负作用,当然可以用latch,毕竟要小接近一半的面积和Flip flop相比。

总结:

  1. 对毛刺敏感,可能会将毛刺锁存住,以致影响下一级电路。
  2. 无法做静态时序分析;
  3. FPGA上:浪费资源,latch比DFF大(ASIC上:Latch是DFF面积的一半)。

3. Latch与DFF的区别

锁存器与触发器最大的区别在于,锁存器是电平触发,而触发器是边沿触发。锁存器在不锁存数据时,输出随输入变化;但一旦数据锁存时,输入对输出不产生任何影响。
register在同一时钟边沿触发下工作,符合同步电路的设计思想,而latch则属于异步电路设计,往往导致时序分析困难,不适当的应用latch则会大量浪费芯片资源。

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值