0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么语句的不完整会导致锁存器的产生?

西西 来源:博客园 作者:caiqingfei 2020-06-26 09:19 次阅读

verilog中if与case语句必须完整,即if要加上else,case后要加上default语句,以防止锁存器的发生,接下来就来说说其中原因。

锁存器与触发器最大的区别在于,锁存器是电平触发,而触发器是边沿触发。锁存器在不锁存数据时,输出随输入变化;但一旦数据锁存时,输入对输出不产生任何影响。

为什么语句的不完整会导致锁存器的产生?

解:

老阮 (2014-10-21 19:30:10)

1、时序电路,生成触发器,触发器是有使能端的,使能端无效时数据不变,这是触发器的特性。

2、组合逻辑,由于数据要保持不变,只能通过锁存器来保存。

楼主位的第二个代码就是在enable为低时,数据不变,因此要生成锁存器。 第一个代码,由于是时序逻辑,生成的触发器在enable无效时就可以保存数据。跟锁存器无关。

walkman416

个人理解: 所谓生成latch其实是针对使用always语句描述一个组合逻辑而言,因为如果描述时序逻辑总是使用时钟或者时钟+复位作为敏感列表条件,所生成的电路总是组合逻辑+DFF;如果是描述组合逻辑,敏感列表中必然没有时钟复位,而是组合逻辑的输入信号。在FPGA设计,避免使用latch,不利于时序分析和仿真。 楼上有提到latch比DFF省资源, 这个在FPGA设计中其实还好, 因为在FPGA中DFF就是一个专用的硬件资源,并且数量也比较多。

使用always描述组合逻辑时,好的习惯是使用always @(*)作为敏感列表, 并且需要检查每个分支都有明确的赋值,从而避免生成latch.

黎释注

我是这么理解的,在一份资料看的,

时序电路=组合逻辑电路+储存电路;

储存电路有两个:锁存器(latch)和触发器;

边沿触发产生触发器,

电平触发产生锁存器,

多个触发器组成寄存器

当描述的是时序电路,寄存器变量对应的寄存器,

描述的是完整的组合逻辑电路,对应为硬件连线,

当描述的是不完整组合逻辑,则寄存器对应的是锁存

总结:

1,存储单元按照触发的方式分为电平触发和边沿触发,电平触发的为锁存器,边沿触发的触发器。 2,对于if,case的完整性,@老阮已经说的很清楚了,在FPGA建议使用触发器。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储单元
    +关注

    关注

    1

    文章

    53

    浏览量

    16073
  • 时序电路
    +关注

    关注

    1

    文章

    113

    浏览量

    21586
  • 锁存器
    +关注

    关注

    8

    文章

    744

    浏览量

    41035
  • 触发器
    +关注

    关注

    14

    文章

    1677

    浏览量

    60402
收藏 人收藏

    评论

    相关推荐

    ORcad 菜单栏显示不完整

    如图片,orcad安装后 ,菜单栏显示不完整,怎么设置这个? 用起来 不舒服
    发表于 03-23 21:27

    画的电路图输出不完整,怎么设置?

    电路图输出不完整,怎么调,还有蓝框的大小能调吗?
    发表于 06-04 13:54

    BMP解码显示图片不完整

    再次请教原子个你的那个图片解码的(BMP部分的)工程已经移植完毕(用的是znFAT32文件系统)但是显示的图片不完整(左边显示的是图片的右一半,右边边显示的是图片的左一半)
    发表于 07-10 04:35

    怎么实现二进制计数

    ,因为它们可能导致时序问题。警告:Xst:737 - 找到信号的8位
    发表于 03-13 09:16

    QT解决串口数据接收不完整问题

    1. 相关文章汇总(1)QT解决串口数据接收不完整问题(貌似贴出的代码可以存下串口接受的全部数据)(2)qt中使用串口类接收数据不完整 (3)Qt5.7串口接收数据不完整因为串口本来就不是一次接收
    发表于 08-18 06:58

    如何解决串口接收数据不完整

    如何解决串口接收数据不完整
    发表于 11-22 07:37

    stm32 printf打印出错导致信息不完整怎么解决?

    stm32 printf打印出错导致信息不完整怎么解决?
    发表于 12-02 08:02

    怎样去解决stm32串口DMA数据接收不完整的问题呢

    stm32串口DMA数据接收不完整问题说明最近做了一个项目需要用串口来接收模块端的应答数据,由于使用了实时操作系统,考虑中断嵌套或被打断的问题导致数据接收不完整的问题,使用串口dma接收数据,但
    发表于 02-21 06:19

    rt-thread使用ps显示的线程名字不完整怎么解决?

    使用ps显示的线程名字不完整
    发表于 05-09 10:04

    verilog中if与case语句不完整产生锁存器的原因分析

      在很多地方都能看到,verilog中if与case语句必须完整,即if要加上else,case后要加上default语句,以防止锁存器的发生,下载内容中就谈到了其中原因。
    发表于 09-16 09:29 24次下载

    stm32串口DMA数据接收不完整问题说明

    stm32串口DMA数据接收不完整问题说明最近做了一个项目需要用串口来接收模块端的应答数据,由于使用了实时操作系统,考虑中断嵌套或被打断的问题导致数据接收不完整的问题,使用串口dma接收数据
    发表于 12-24 19:37 18次下载
    stm32串口DMA数据接收<b class='flag-5'>不完整</b>问题说明

    APM32F091RCT6_SPI_从机接收数据不完整

    APM32F091RCT6_SPI_从机接收数据不完整
    发表于 11-09 21:04 0次下载
    APM32F091RCT6_SPI_从机接收数据<b class='flag-5'>不完整</b>

    浅谈C语言中的三种不完整类型

    不完整类型(Incomplete types)是缺少足够信息来确定该类型对象大小的对象类型,不完整类型可以在翻译单元的某些点完整
    发表于 12-16 09:52 354次阅读

    如何获取ChatGPT回答不完整的内容

    ____tz_zs 对于 ChatGPT 回答不完整的情况(篇幅限制,没有说完),可以输入“继续”指令,让其继续回答下去,获得完整内容。 如下图,发问 “使用web3js 调用 eth链智能合约” 直到这里才是获得了刚刚问题 “使用web3js 调用 eth链智能合约”
    发表于 02-10 10:48 0次下载
    如何获取ChatGPT回答<b class='flag-5'>不完整</b>的内容

    C语言中的不完整类型是什么

    C语言中存在这样一种类型,名叫不完整类型(Incomplete types),虽然我们可能不太理解,或许也没有仔细研究过,但是在实际的编程中,我们却已经用到过很多次了。
    的头像 发表于 02-21 10:03 903次阅读