Latch与触发器

FPGA学习篇之Latch与触发器


前言

  触发器大家可能再熟悉不过了,就拿D触发器来说,触发器是边沿敏感器件,会在时钟的上升沿(或者下降沿)将输入数据打入触发器(满足建立保持时间的情况下),在下一个上升沿到来前一直保持该数据。
  Lacth是锁存器,是一种电平敏感器件。在输入信号未锁存时,输出跟随输入变化,此时锁存器是”透明的“,相当于信号经过一个缓冲器。一旦触发电平有效,输出锁存该时刻的输入,触发电平未解除之前输入信号不再有作用。
  在一些教材中都会避免设计中产生锁存器,原因是在同步电路中锁存器会产生不好的效果,比如对毛刺敏感、上电后处于不定态、不能异步复位等,同时还会使静态时序分析变得困难。在FPGA中没有锁存器这种资源,需要用寄存器来组成锁存器,从而会消耗更多的逻辑资源。在ASIC设计中,锁存器会带来额外的延时,不利于提高系统的工作频率。
  当然锁存器不是一无是处,锁存器在异步电路中还是很有用的,由于我们设计的大多是同步电路,所以要避免锁存器的产生。


一、Latch的产生

  Latch是在组合逻辑电路中产生的,时序逻辑电路不会产生latch。当然组合逻辑产生latch主要是由于代码编写不规范导致的,主要是包括以下几个方面:

  1. 组合逻辑只有if没有else
  2. case语句条件列举不完整且没有default语句
  3. 第三种情况比较少见,在组合逻辑中变量赋值给自己

二、解决办法

  在设计组合逻辑电路时要注意以上几点问题,规范编写代码。同时在组合逻辑中一定要避免输出信号处于未知状态,让输出在任何条件下都有一个已知的状态就可以避免Latch的产生。Latch作为一种基本电路单元,会影响到电路的时序性能,应尽量避免使用,但出现Latch造成设计与意图不符的情况,是由于设计人员代码不规范造成的。但也随着综合器越来越优化使之可以更精准的识别出该代码是否为设计者真正想要的Latch,并给出必要的提示。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值