Verilog刷题[hdlbits] :Always if2

news2024/11/24 22:35:59

题目:Always if2

A common source of errors: How to avoid making latches
一个常见的错误来源:如何避免产生latches

When designing circuits, you must think first in terms of circuits:
在设计电路时,必须首先考虑电路:

  • I want this logic gate
    我想要这个逻辑门
  • I want a combinational blob of logic that has these inputs and produces these outputs
    我想要一个有这些输入并产生这些输出的组合逻辑团
  • I want a combinational blob of logic followed by a set of flip-flops
    我想要一个逻辑组合,后面跟着一组flip-flops

What you must not do is write the code first, then hope it generates a proper circuit.
你不能做的是先写代码,然后希望它能产生一个合适的电路。

  • If (cpu_overheated) then shut_off_computer = 1;
  • If (~arrived) then keep_driving = ~gas_tank_empty;

Syntactically-correct code does not necessarily result in a reasonable circuit (combinational logic + flip-flops). The usual reason is: “What happens in the cases other than those you specified?”. Verilog’s answer is: Keep the outputs unchanged.
语法正确的代码不一定产生合理的电路(组合逻辑+触发器)。通常的原因是:“除了你指定的那些情况之外,会发生什么?”Verilog的答案是:保持输出不变。

This behaviour of “keep outputs unchanged” means the current state needs to be remembered, and thus produces a latch. Combinational logic (e.g., logic gates) cannot remember any state. Watch out for Warning (10240): … inferring latch(es)" messages. Unless the latch was intentional, it almost always indicates a bug. Combinational circuits must have a value assigned to all outputs under all conditions. This usually means you always need else clauses or a default value assigned to the outputs.
这种“保持输出不变”的行为意味着需要记住当前状态,从而产生锁存。组合逻辑(例如,逻辑门)不能记住任何状态。注意警告(10240):…推断latch消息。除非latch是故意的,否则它几乎总是表明有bug。在任何条件下,组合电路的所有输出都必须有一个值。这通常意味着您总是需要else子句或为输出分配默认值。

Demonstration

示范

The following code contains incorrect behaviour that creates a latch. Fix the bugs so that you will shut off the computer only if it’s really overheated, and stop driving if you’ve arrived at your destination or you need to refuel.
以下代码包含创建latch的不正确行为。修复这些漏洞,这样你就只会在电脑真的过热时关闭电脑,当你到达目的地或需要加油时就不要开车了。
在这里插入图片描述

组合逻辑中,如果if缺少else语句,或是自己赋值给自己的情况就会产生latch。为了避免latch产生,if需要加上else语句,覆盖所有可能。

// synthesis verilog_input_version verilog_2001
module top_module (
    input      cpu_overheated,
    output reg shut_off_computer,
    input      arrived,
    input      gas_tank_empty,
    output reg keep_driving  ); //

    always @(*) begin
        if (cpu_overheated)
           shut_off_computer = 1;
        else
            shut_off_computer = 0;
    end

    always @(*) begin
        if (~arrived)
           keep_driving = ~gas_tank_empty;
        else
            keep_driving = 0;
    end

endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1179725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring】c命名和p命名空间注入

p命名空间注入 导入p名称空间 xmlns:p"http://www.springframework.org/schema/p"直接输入p就会有相关的属性弹出 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xml…

若依分离版——定时调度

定时调度操作简单&#xff0c;只需在已有的service方法添加component&#xff0c;并在定时任务中添加任务即可。 一、在已有service类上加上Component("TestTask") Component("TestTask") //定时调度任务 public class SysTestServiceImpl implements …

学生用的台灯护眼的哪种比较好?专业的护眼台灯分享

对于学生而言&#xff0c;台灯是必不可少的一盏桌面照明灯具&#xff0c;尤其是在夜间不管是读书、写字还是使用观看电子屏幕&#xff0c;都需要一个光源稳定、柔和的台灯。而这些需要考虑到照度、色温、蓝光、频闪等参数&#xff0c;所以挑选一盏台灯时千万不能马虎&#xff0…

python 视频硬字幕去除 内嵌字幕去除工具 vsr

项目简介 开源地址&#xff1a;https://github.com/YaoFANGUK/video-subtitle-remover Video-subtitle-remover (VSR) 是一款基于AI技术&#xff0c;将视频中的硬字幕去除的软件。 主要实现了以下功能&#xff1a; 无损分辨率将视频中的硬字幕去除&#xff0c;生成去除字幕后…

AI:66-基于机器学习房价预测

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

【代码扫描修复】不安全的反序列化攻击(高危)

目录 一、漏洞描述1.1 摘要&#xff1a;1.2 漏洞解释&#xff1a;1.3 修复建议 二、知识补充2.1 反序列化的历史2.2 什么是序列化、反序列化&#xff1f;补充&#xff1a;Java 对象序列化为二进制 2.3 序列化/反序列化库2.4 反序列化漏洞 三、漏洞复现&#xff1a;攻击链13.1 依…

jacoco和sonar

目录 jacoco 引入依赖 构建配置修改 单元测试 生成报告 查看报告 报告说明 1. Instructions 2. Branches 3. Cyclomatic Complexity 4. Lines 5. Methods 6. Classes sonar7.7 基础环境 需要下载软件 解压文件并配置 运行启动 jacoco 引入依赖 <dep…

CAP定理一文带你速解(通俗易懂,图文并茂)

目录 CAP定理 概述 Consistence&#xff08;一致性&#xff09; Availability &#xff08;可用性&#xff09; Partition Tolerance&#xff08;分区容错性&#xff09; 保证P&#xff0c;为什么无法同时满足AC&#xff1f; CP与AP如何取舍 CAP定理是分布式事务的基础…

Node.js |(五)包管理工具 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;概念介绍&#x1f4da;npm&#x1f407;安装npm&#x1f407;基本使用&#x1f407;生产依赖与开发依赖&#x1f407;npm全局安装&#x1f407;npm安装指定包和删除…

机器视觉工程师注意高新待遇来了,非标设备厂家早就布局海外市场,国内大多数企业是谋生存情况下,而更具有大局观的企业走出去则是谋发展

冬天来了&#xff0c;大家记得多添点衣服&#xff0c;记得穿秋裤&#xff01; 当各个厂家都在国内抢订单的时候&#xff0c;更多的非标设备厂家早已走向海外&#xff0c;布局海外市场&#xff0c;或者在新的领域积极开展新的业务。为自身公司带来大量海外订单。 别的企业都是…

Excel 转 Json 、Node.js实现(应用场景:i18n国际化)

创作灵感来源于在线转换是按照换行符去转换excel内容换行符后很难处理 本文是按单元格转换 const xlsx require(node-xlsx) const fs require(fs) const xlsxData xlsx.parse(./demo.xlsx) // 需要转换的excel文件// 数据处理 方便粘贴复制 const data xlsxData[2].data …

汽车发动机各系统部件构造图解及名称大全(超详细)

我们都知道发动机是汽车的心脏,相信大家都有东拼西凑的学一些发动机知识,今天汽车维修网小编给大家系统的整理整个发动机的基础知识,如果能认真看完,相信肯定有所收获。全文3065字,81幅结构图,建议收藏、分享后再慢慢看。 首先我们来看一下 发动机总成构造图解 发动机…

zookeeper:启动原理

主类&#xff1a; QuorumPeerMain, 其中调用了main对象的initializeAndRun方法&#xff0c; 首先定义了QuorumPeerConfig对象&#xff0c;然后调用了parse方法&#xff0c;parse方法代码如下&#xff1a; 其中调用的parseProperties方法的代码如下&#xff1a; 可以看到&am…

嵌入式C语言自我修养《数据存储与指针》学习笔记

目录 一、数据类型和存储 1.大端模式和小端模式 2.有符号数和无符号数 二、数据对齐 1.为什么要数据对齐 2.结构体对齐 3.联合体对齐 三、数据的可移植性 四、 Linux内核中的size_t类型 五、typedef的使用 1. typedef的基本用法 2.使用typedef的优势 3. typedef的作用域 六…

前端常用的版本管理工具

一、是什么 版本控制&#xff08;Version control&#xff09;&#xff0c;是维护工程蓝图的标准作法&#xff0c;能追踪工程蓝图从诞生一直到定案的过程。此外&#xff0c;版本控制也是一种软件工程技巧&#xff0c;借此能在软件开发的过程中&#xff0c;确保由不同人所编辑的…

汽车驾驶智能座舱太阳光模拟器老化试验

一、太阳光模拟器老化试验目的 太阳光模拟器氙光灯老化试验是一种常用的材料老化测试方法&#xff0c;通过模拟自然光照条件下的老化过程&#xff0c;评估材料的耐光性能和耐候性能其主要目的有: 1.评估材料在长时间暴露于自然光照条件下的耐久性能: 2.比较不同材料的耐光性…

龙芯loongarch64服务器编译安装scipy

前言 根据我之前的文章介绍&#xff0c;龙芯loongarch64服务器中的很多python依赖包安装有问题&#xff0c;发现其中安装的"scikit-learn"就无法正常使用&#xff0c;所有这里在 pip3 install scikit-learn -U -i https://pypi.tuna.tsinghua.edu.cn/simple 的时候发…

telnet的使用

用于查看 某个ip某个端口通不通 telnet 136.126.122.123 6380 这个代表通了

NLP项目windows环境搭建

一、安装Anaconda Free Download | Anaconda 二、安装PyCharm PyCharm&#xff1a;JetBrains为专业开发者提供的Python IDE 三、创建Python虚拟环境 1. 打开命令窗口 "开始"菜单中找到Anaconda3 - Anaconda Powershell Prompt 说明&#xff1a; Anaconda Power…

应用在触摸显示屏中的高性能低功耗触摸芯片

触摸屏显示器(Touch Screen)可以让使用者只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作&#xff0c;这样摆脱了键盘和鼠标操作&#xff0c;使人机交互更为直截了当。简单的说&#xff0c;只是在显示器上安装了触摸屏&#xff0c;成为带有触摸功能的显示器。…