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
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LATCHDFF是数字电路设计中常用的两种存储元件。LATCH是一种逻辑门电路,可以存储一个比特的数据,而DFF是一种触发器,也可以存储一个比特的数据。它们之间有一些区别。 首先,LATCHDFF在静态时序分析方面有所不同。由于LATCH对毛刺敏感,可能会将毛刺锁存住,从而影响下一级电路,因此无法进行静态时序分析。而DFF则没有这个问题,可以进行静态时序分析。\[1\] 其次,在FPGA和ASIC中,LATCHDFF的使用情况也不同。在ASIC中,使用LATCH可以节省门资源,因此LATCH的集度比DFF高。而在FPGA中,由于没有标准的LATCH单元,而有DFF单元,因此在FPGA中使用LATCH需要更多的资源来实现。\[2\] 此外,LATCH写法四种,包括if_else不完整、case语句不完整、组合逻辑中自己自己赋值以及always块的敏感列表未列全。而为了避免产生LATCH,需要注意完整编写if_else和case语句,并避免在组合逻辑中自己自己赋值,同时在always块中列出完整的敏感列表。\[3\] 综上所述,LATCHDFF是两种不同的存储元件,它们在静态时序分析、资源利用和写法等方面存在差异。 #### 引用[.reference_title] - *1* *3* [Latch四种写法及为何要避免产生,以及LatchDFF区别?](https://blog.csdn.net/weixin_43755290/article/details/108639774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [dfflatch的用法和区别](https://blog.csdn.net/kontrox/article/details/19620173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值