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

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

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

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

文章目录

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

一、什么是锁存器?

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

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

真值表为

SRQ00保持10001111翻转

由于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触发器和寄存器的关系与区别

相关推荐

针对win10电脑无线网卡的优化方法
365彩票数据最专业

针对win10电脑无线网卡的优化方法

📅 07-03 👁️ 5526
防水性能之充电篇-清洁和干燥说明
365彩票数据最专业

防水性能之充电篇-清洁和干燥说明

📅 08-08 👁️ 7567
实测不同长度和质量的线充电差异很大
s365 2.2.3

实测不同长度和质量的线充电差异很大

📅 07-02 👁️ 5759
通灵的星座,从最能读懂你的心思到最不能读懂你的想法排名 下
告别充电误区!手机新电池首次充电的正确姿势!
365账号限制投注怎么办

告别充电误区!手机新电池首次充电的正确姿势!

📅 08-03 👁️ 7915
2025巨人网游公司有哪些手机游戏 热度高的巨人网络旗下作品分享
烟的五行属性
365账号限制投注怎么办

烟的五行属性

📅 08-15 👁️ 3394
如何通过 7 种方法在电脑上运行安卓APP?
365账号限制投注怎么办

如何通过 7 种方法在电脑上运行安卓APP?

📅 07-30 👁️ 6333
自己动手写病毒
s365 2.2.3

自己动手写病毒

📅 08-04 👁️ 6072