HDLbits答案更新系列21(4 Verification: Reading Simulation 4.1 Finding bugs in code)_bugs case-程序员宅基地

目录

前言

4 Verification: Reading Simulation

4.1 Finding bugs in code

4.1.1 Mux(Bugs mux2)

4.1.2 NAND(Bugs nand3)

4.1.3 Mux(Bugs mux4)

4.1.4 Add/sub(Bugs addsubz)

4.1.5 Case statement(Bugs case)

结语

HDLbits网站链接


前言

今天进入到了第四部分,这部分第一小节的内容比较简单,直接更新吧。

4 Verification: Reading Simulation

4.1 Finding bugs in code

4.1.1 Mux(Bugs mux2)

module top_module (
    input sel,
    input [7:0] a,
    input [7:0] b,
    output[7:0] out  );

    assign out = sel ? a : b;

endmodule

这道题目的错误在于a和b都是多比特的数据,而sel信号是单比特的。如果a、b也是单比特,那么可以用修改前的方式。

4.1.2 NAND(Bugs nand3)

module top_module (input a, input b, input c, output out);
    
    wire out_1;

    andgate inst1 (out_1, a, b, c, 1'b1,1'b1);
    
    assign out = ~out_1;

endmodule

这道题第一处错误是端口映射没有将out写在第一位,第二处错误是题目要求完成与非门,作者给出的可引用的module是与门。

4.1.3 Mux(Bugs mux4)

module top_module (
    input [1:0] sel,
    input [7:0] a,
    input [7:0] b,
    input [7:0] c,
    input [7:0] d,
    output [7:0] out  ); 

    wire[7:0]	mux0;
    wire[7:0]	mux1;
    
    mux2 u1_mux2 ( sel[0],    a,    b, mux0 );
    mux2 u2_mux2 ( sel[0],    c,    d, mux1 );
    mux2 u3_mux2 ( sel[1], mux0, mux1,  out );

endmodule

这道题目中首先mux0和mux1应该定义为8bit,然后实例化的前两个mux应该是sel[0]。

4.1.4 Add/sub(Bugs addsubz)

// synthesis verilog_input_version verilog_2001
module top_module ( 
    input do_sub,
    input [7:0] a,
    input [7:0] b,
    output reg [7:0] out,
    output reg result_is_zero
);//

    always @(*) begin
        case (do_sub)
          0: out = a+b;
          1: out = a-b;
        endcase

        if (out == 8'd0)
            result_is_zero = 1;
        else
            result_is_zero = 0;
    end

endmodule

这道题目要将result_is_zero补充完整。

4.1.5 Case statement(Bugs case)

module top_module (
    input [7:0] code,
    output reg [3:0] out,
    output reg valid
);

    always @(*)begin
        case (code)
            8'h45: out = 0;
            8'h16: out = 1;
            8'h1e: out = 2;
            8'h26: out = 3;
            8'h25: out = 4;
            8'h2e: out = 5;
            8'h36: out = 6;
            8'h3d: out = 7;
            8'h3e: out = 8;
            8'h46: out = 9;
            default: out = 0;
        endcase
        if(out == 4'd0 && code != 8'h45)begin
            valid = 1'b0;
        end
        else begin
            valid = 1'b1;
        end
    end
    
    /*
    //second way
    always @(*) begin
		out = 0;
		valid = 1;	
		case (code)
			8'h45: out = 0;
			8'h16: out = 1;
			8'h1e: out = 2;
			8'h26: out = 3;	
			8'h25: out = 4;
			8'h2e: out = 5;
			8'h36: out = 6;
			8'h3d: out = 7;
			8'h3e: out = 8;
			8'h46: out = 9;
			default: valid = 0;
		endcase
	end
    */

endmodule

这道题给出两种方法,大家看一下就可以了。第一种方法我将valid和out全部写在一个always中,这是不好的,建议大家分开写。

结语

今天更新这个小节吧,应该没有特别难的题目,如果我有代码错误的地方欢迎留言指出哦。

HDLbits网站链接

https://hdlbits.01xz.net/wiki/Main_Page

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangkai_2019/article/details/106603648

智能推荐

2024年地理科学数据库-程序员宅基地

文章浏览阅读697次,点赞14次,收藏20次。地理科学数据库网站导航收集近1000个相关网站,由刘洪老师(成都地质调查中心高级工程师)长期维护,定期更新,该版本为2024年最新版本,转发请注明来源为刘洪老师。该网站导航表由刘洪老师(成都地质调查中心高级工程师)长期维护,定期更新。,转发请注明来源为刘洪老师。

读取点坐标简单地制作dxf文件(C#)_c#生成dxf-程序员宅基地

文章浏览阅读1w次,点赞5次,收藏37次。有时候我们需要在测量的小程序中加入一个功能,就是生成dxf文件。除了调用各种库,就是要自己看过dxf文件的组码,如果不能使用第三方的东西,那我们就可以用组码中最简单直接的部分来完成生成dxf文件的工作这是我们读入的‘控制点.dat’,用datagridview控价展示出了它们的xyz坐标我们还可以在程序界面中画出来,但这个不是关键了,就不管了,主要看看生成的dxf文件。这个点我没瞄准,左下..._c#生成dxf

Android RecyclerView —— 自定义分割线_android recyclerview自定义分割线-程序员宅基地

文章浏览阅读3.4k次。Android RecyclerView —— 自定义分割线Android RecyclerView —— 基本使用Android RecyclerView —— 适配器封装探索前面说了 RecyclerView 的基本使用以及对适配器的封装,但是在使用 ListView 时,有 dividerHeight 和 divider 属性用来设置分割线的高度和颜色(Drawable),但是在 Re..._android recyclerview自定义分割线

6阶群的非平凡子群_当|G|=8时,群<G,*>只能有?阶非平凡子群,不能有?阶子群,平凡子群为?...-程序员宅基地

文章浏览阅读1.4k次。匿名用户1级2013-01-02 回答试卷二十四试题与答案 一、填空题每空1分本大题共15分 1设432aA143aB请在下列每对集合中填入适当的符号。 1a B 2 34a A。 2设10AN为自然数集是偶数。是奇数xxxf10若AAf则f是 射的若ANf则f是 射的。 3设图G V E 中有7个结点各结点的次数分别为2446552 则G中有 条边根据 。 4两个重言式的析取是 一个重言式和一个..._已知群g的阶为8,则g只能有多少阶非平凡子群

会议室如何实施6s管理?-程序员宅基地

文章浏览阅读725次。华天谋6s管理专家概述:会议室实施6s管理可造就舒适的会议环境,遵从易取、易放、易管的原则,保证会议室区域物品精准有序,提高工作效率,树立良好企业形象。责任区会议室6S责任区是指会议室的地面、墙面、天花板、窗台、桌椅、调音台、话筒、白板以及空调等相关会议设备和设施。每个与会人员均有责任做好个人会议室的6S工作,遵守会议室6S的有关规定。会议室6S操作规范(1)基本要求会议室物品应定置摆放,..._会议室6s管理办法

对今日头条android端的一次简单分析(上)_chromium libwebp.so libstatic-webp.so-程序员宅基地

文章浏览阅读6.7k次。前言闲来无事,正看着百度新闻,突然灵感一闪,何不研究下一款新闻app,那就从今日头条开始吧。第一步1.1、轮廓分析这里使用压缩软件打开,主要看lib目录及assets目录。 1.2、lib目录lib目录主要是放一些库或jar包,打开后发现,只有一个armeabi目录,我们知道x86/x86_64/armeabi-v7a/arm64-v8a设备都支持armeabi架构的.so文件,所以一个目录也是可_chromium libwebp.so libstatic-webp.so

随便推点

Revit(11)-元素-根据族名称创建族实例并移动_revit 2020获取元素族名称-程序员宅基地

文章浏览阅读272次。系列文章目录Revit开发中异常记录Revit (1) - CAD - 获取图层Revit (2) - CAD - 获取CAD文字Revit (3) - 二开 -创建柱子Revit (4) - 二开 -批量创建柱子Revit (5) - 二开 -创建墙体Revit (6) - Teigha - LayerTableRevit (7) - Teigha - BlockTableRevit(8)-数据结构-类别、族概念Revit(9)-元素-元素的获取Revit(10)-参数-参数的获取与_revit 2020获取元素族名称

JavaScript多线程之二~~Node.js中的Web Worker_nodejs web worker-程序员宅基地

文章浏览阅读1.1w次。webworker-threads时Web Worker规范在Node.js上的实现。这个模块是基于node-threads-a-gogo模块(简称TAGG)做的,可以让Node.js实现多线程编程,充分使用服务器的资源。_nodejs web worker

Window Contents Capturing using WM_PRINT Message-程序员宅基地

文章浏览阅读3.1k次。Window Contents Capturing using WM_PRINT MessageCopyright (c) 2000 by Feng Yuan (author of Windows Graphics Programming: Win32 GDI and DirectDraw, www.fengyuan.com). All rights reserved. Version 1_wm_print

4.(css3布局)使用flex布局携程网首页案例_(css3布局)使用 flex 布局携程网首页案例-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏10次。文章目录1. 携程网首页案例制作1.1 技术选型1.2 搭建相关文件夹1.3 设置视口标签以及引入初始化样式1.4 初始化样式1.5 模块名字划分1.6 常见flex布局思路1.7 背景线性渐变2. 代码实现2.1 search-index2.2 focus2.3 local-nav2.4 nav2.5 subnav-entry2.6 sales1. 携程网首页案例制作1.1 技术选型方案:我们采取单独制作移动页面方案技术:布局采取flex布局为主1.2 搭建相关文件夹参考:https_(css3布局)使用 flex 布局携程网首页案例

关于WindowsServer总是自动关机的问题-程序员宅基地

文章浏览阅读4.1k次。星期六一大早同事打电话给我,小镭啊,你快看看他们学校的vCenter中有一台虚拟机总是自动关机,你帮我看看是什么原因啊? 我登陆vCenter,观察了一段时间zyglpt这台虚拟机总是自动关机,时间在1到3个小时之间随机关机,刚开始还以为是集群的原因,可一想不可能啊?为了验证自己的想法,..._windowsserver2019系统为什么使用时会自动关机

Python异常处理和多线程_python多线程异常-程序员宅基地

文章浏览阅读1w次。异常处理 异常在程序的运行过程中发生的不正常的事件,会中断正在运行的程序。多线程 由于每个进程只要干一件事,所以,一个进程只要有一个线程,当然,想 Word这种复杂的进程可以有多个线程,多个线程可以同时执行,多线程的执行方式和多线程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂得交替运行,看起来就像同时执行一样_python多线程异常

推荐文章

热门文章

相关标签