我是靠谱客的博主 土豪白云,最近开发中收集的这篇文章主要介绍数字IC设计中为什么要避免锁存器(Latches)数字IC设计中为什么要避免锁存器(Latches)一、什么是锁存器?二、什么情况下会出现锁存器?三、为什么要避免出现锁存器?参考资料,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数字IC设计中为什么要避免锁存器(Latches)

上学时,老师说判断语句要把条件写全,不然会生成锁存器,做项目时又说多比特寄存器信号的赋值一定要加if条件,不让出现else的赋值。就很矛盾,本文主要讲下什么是锁存器,什么情况下会出现锁存器,以及锁存器的危害

文章目录

  • 数字IC设计中为什么要避免锁存器(Latches)
  • 一、什么是锁存器?
  • 二、什么情况下会出现锁存器?
  • 三、为什么要避免出现锁存器?
  • 参考资料

一、什么是锁存器?

锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态【1】。换句话说,如果一个模块的只有在特定电平的作用下,才会将输入信息更新到他的输出引脚,否则该模块的输出将保持不变,那么这个模块就可以被看成是一个锁存器。

常见的S-R寄存器的结构如下所示:

请添加图片描述

真值表为

SRQ
00保持
100
011
11翻转

由于S,R为00时,可以使输出Q保持不变,从而达到用组合逻辑来实现存储的目的;

二、什么情况下会出现锁存器?

时序逻辑由于寄存器的存在,因此不需要锁存器来存储数据;而组合逻辑的条件未给全时则会出现锁存器

比如

always@(*)
	if(vld)
		a = b;

这时由于没有写vld为0的情况,因此不会例化成二选一的选择器,而是会例化出锁存器,达到当vld为0时,保持数据不变的存储功能;

三、为什么要避免出现锁存器?

锁存器有以下缺点:

  • 不能异步复位,在上电后处于不确定的状态。
  • 锁存器会使静态时序分析变得非常复杂;
  • 如果是FPGA上的搭建电路的话,由于FPGA中基本的单元是由查找表和触发器组成的,若生成锁存器反而需要更多的资源;
  • 锁存器对毛刺敏感,会造成电路的不稳定(这一点我没想明白,例化成选择器就能解决这个问题吗??)

参考资料

【1】 锁存器_360百科 (so.com)
【2】 CSDN: FPGA学习之latch的产生原因、危害与避免措施_B_AKING的博客-CSDN博客_产生latch的原因
【3】CSDN: 锁存器,D触发器和寄存器的关系与区别

最后

以上就是土豪白云为你收集整理的数字IC设计中为什么要避免锁存器(Latches)数字IC设计中为什么要避免锁存器(Latches)一、什么是锁存器?二、什么情况下会出现锁存器?三、为什么要避免出现锁存器?参考资料的全部内容,希望文章能够帮你解决数字IC设计中为什么要避免锁存器(Latches)数字IC设计中为什么要避免锁存器(Latches)一、什么是锁存器?二、什么情况下会出现锁存器?三、为什么要避免出现锁存器?参考资料所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部