hdlbits系列verilog解答(always块if语句2)-32

本文讨论了在Verilog设计中如何避免错误地创建锁存器,强调组合逻辑必须在所有条件下为所有输出分配值。通过分析`if`语句示例,解释了未使用`else`分支可能导致的问题,并提供了相关Verilog代码示例。
摘要由CSDN通过智能技术生成


一、问题描述

常见的错误来源:如何避免锁存器
在设计电路时,首先要考虑电路:

  • 我想要这个逻辑门
  • 我想要一个具有这些输入并产生这些输出的组合逻辑
  • 我想要一个组合逻辑,然后是一组触发器

你不能做的是先写代码,然后希望它能生成一个合适的电路。
If (cpu_overheated) then shut_off_computer = 1;
If (~arrived) then keep_driving = ~gas_tank_empty;

语法正确的代码并不一定会产生合理的电路(组合逻辑 + 触发器)。通常的原因是:“在您指定的情况之外会发生什么?Verilog的答案是:保持输出不变。

这种“保持输出不变”的行为意味着需要记住当前状态,从而产生锁存器。组合逻辑(例如,逻辑门)无法记住任何状态。注意 Warning (10240): … inferring latch(es)" 消息。除非锁存器是故意的,否则它几乎总是表明存在错误。组合电路必须在所有条件下为所有输出分配一个值。这通常意味着您始终需要 else 为输出分配子句或默认值。

以下代码包含创建锁存器的错误行为。修复这些错误,以便只有在计算机确实过热时才会关闭计算机,并在到达目的地或需

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值