[FPGA 学习记录] 避免latch的产生

本文详细解释了latch(锁存器)的概念、异步与同步电路的区别,以及在设计中避免latch产生的关键。通过实例讲解了三种产生latch的情况,包括if-else/else缺失、case条件分支未完整和自赋值。通过3-8译码器实验展示了latch的产生和避免方法。

避免 latch 的产生

那么在前面几小节当中,我们使用诸多实例,对简单组合逻辑的相关知识做了一个系统性的讲解。我们使用了我们的多路选择器、3-8译码器和半加器,后来我们又通过全加器这个实验工程,为大家讲解了层次化的设计思想。

在前面几小节当中,我们经常会提到一个词就是 latch。那么本小节就是有关 latch 的讲解。

在这一小节我们将会为大家讲解一下:如何避免 latch 的产生。

本小节的主要内容可以分为两个部分:第一部分就是 latch 的简介。在这一部分,我们会对 latch 的相关知识做一个系统性的讲解;在第二部分,我们会讲解几种产生 latch 情况。了解了这几种产生 latch 的情况之后,我们在后面的设计过程中,就可以避免 latch 的产生。


首先,是 latch 的简介

1 latch 的简介

latch 其实就是锁存器。它是一种在异步电路系统中对输入信号电平敏感的单元,可以用来存储信息。那么锁存器在数据未锁存时,输出端的信号随输入信号变化,就像信号通过一个缓冲器一样。但是一旦我们的锁存信号有效时,数据就被锁存,输入信号是不起作用的。因此,锁存器也被称为透明锁存器,它指的是:不锁存时输出对于输入是透明的。

那么以上就是 latch 的概念解析。在这个概念解析当中,我们提到了一个词叫做异步电路。既然提到了异步电路,与它对应的就是同步电路。这两种电路有什么区别呢?我们来比较一下

异步电路与同步电路

异步电路主要是组合逻辑电路,它用于产生 FIFO 或者 RAM 的读写控制信号脉冲。那么FIFO 和 RAM 的相关知识,我们在后面会提到。异步电路同时也可用在时序电路之中,当它使用在时序电路当中时,它是没有统一的时钟的,状态变化的时刻是不稳定的。通常我们的输入信号,只在电路处于稳定状态时才会发生变化。

与异步电路对应的是同步电路,同步电路是由时序电路和组合逻辑电路构成的电路。其中,时序电路它包括寄存器和各种触发器。那么同步电路所有的操作都在严格的时钟控制下完成的,这些时钟电路共享同一个 CLK 就是同一个时钟,所有的状态变化都是在时钟的上升沿或者下降沿完成的。

我们后面所有的设计,都是基于同步电路进行设计的,我们使用的都是触发器。而在异步电路中广泛使用的是我们的 latch,它可以在没有时钟的情况下进行数据的存储,在异步电路中 latch 可以替代寄存器的角色,我们的 latch 只有在组合逻辑中才会产生,它在异步电路中是非常有用的,我们前面已经提到了,它可以替代寄存器进行数据的存储。但是我们在同步电路中,会尽量避免 latch 的产生,在同步电路中 latch 会产生一些不好的效果。

latch 的危害

  • 对毛刺特别敏感
  • 不能异步复位,上电后处于不定态
  • latch 会使我们的静态时序分析变得十分复杂
  • latch 的产生,会占用更多的逻辑资源(在我们 FPGA 的资源中,大部分器件是没有锁存器这个东西的
    所以说 我们需要使用寄存器来组成锁存器)
  • 在我们的 ASIC 设计当中,锁存器会带来额外的延时,这样不利于我们提高系统的工作效率

那么以上就是 latch 的一些危害,所以说我们要避免 latch 的产生。
那么这里,我们列举了几种产生 latch 的情况

2 几种产生 latch 的情况

  1. 第一种是在组合逻辑中 if-else 条件分支语句缺少 else 语句。这种情况下会产生latch

  2. 第二种就是组合逻辑中的 case 条件分支语句条件未完全列举,而且它缺少 default 语句。

    那么这里为什么是 case 条件分支语句条件未完全列举,而且是缺少 default 语句呢?
    如果说我们的 case 条件分支语句条件未完全列举时,我们使用 default 语句,那么未列举的条件就会执行 default 语句。也就是说 default 语句,就是为了解决条件未完全列举这种情况。只有在条件未完全列举时,而且没有 default 语句,才会产生 latch,大家注意下这种情况。

  3. 第三种情况就是:组合逻辑中输出变量赋值给了自己

这里,就列举了三种产生 latch 的情况。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值