HDLbits答案更新系列21(4 Verification: Reading Simulation 4.1 Finding bugs in code)_wangkai_2019的博客-程序员宝宝

目录

前言

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

智能推荐

js下 移动端底部下拉菜单_js 手机底部弹出下拉框_sinat_20625509的博客-程序员宝宝

a为要要上拉的菜单,b为点击按钮的部分,点击b,a与b一起上拉,再点击下退abosolute下都为bottom:0px,a通过改变高度,b向上位移a的高度,二者的速度一样在js中通过改变classvar k; $('#touch').onclick = function () { if(!k){ $

nyoj 95 众数问题(set)_weixin_30407613的博客-程序员宝宝

众数问题时间限制:3000ms | 内存限制:65535KB难度:3描述所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数,多重集合S重的重数最大的元素成为众数。例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。...

聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路_qswm_18301240090的博客-程序员宝宝

引言很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做《回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议》,首发于笔者的博客园博客,这里也郑重声明一下,所有内容类似文章均属转载或抄袭。之前看过的朋友可能会有疑问,为什么要再次捡起这篇文章,还把称谓改成了笔...

ZG前端学习系统day13 2020-11-18_短腿小萝卜的博客-程序员宝宝

css渐变线性渐变(linear-gradient):语法 不加前缀的线性渐变 background:linear-gradien(to 方向 ,颜色1, 颜色2,。。。)加前缀的线性渐变 注意省略to 方向相反 方向也可以使用角度重复线性渐变语法 background:repeating-linear-gradient(方向,颜色1 百分比,颜色2 百分比,颜色3,百分比。。)径向渐变语法 background:radial-gradient(方向 默认center,

树组建xTree与xLoadTree_村边一头牛的博客-程序员宝宝

xTree:[url]http://webfx.eae.net/dhtml/xtree/index.html[/url] 固定显示的树xLoadTree:[url]http://webfx.eae.net/dhtml/xloadtree/xloadtree.html[/url]动态加载的树xtree2:[url]http://webfx.eae.net/dhtml/xtree2b/[/ur...

随便推点

TVS/ESD国产化---雷卯电子2021上海慕尼黑展圆满收官_Amy雷卯电子青青的博客-程序员宝宝

缘您所需、雷卯创造,生产、技术和方案是雷卯服务客户的根本,和合共长、定能生慧。2021慕展圆满收官,此次雷卯电子展示技术团队实力,展出TVS/ESD和大功率汽车级别TVS的生产解剖实物,让客户直观了解大功率产品的实质。同时展示《电磁兼容百问百答》书籍,雷卯不断积累EMC解决方案,并每两年推出新版。雷卯电子成立十周年以来,一直专注电磁兼容方案解决和供应保护器件,为TVS/ESD器件国产化助力。雷卯小程序《EMC电磁兼容社区》受到工程师的喜爱和肯定:雷卯产品在汽车上应用案例丰富成熟:雷卯在5G.

Directx11学习笔记【二十二】 用高度图实现地形_地形高度图 raw_qq_41001717的博客-程序员宝宝

在前面我们曾经实现过简单的地形(Directx11学习笔记【十三】 实现一个简单地形),只不过原来使用一个固定的函数获得地形高度,这样跟真实的地形差距比较大。接下来让我们学习使用高度图来进行三维地形模拟。1.高度图  高度图其实就是一组连续的数组,这个数组中的元素与地形网格中的顶点一一对应,且每一个元素都指定了地形网格的某个顶点的高度值。高度图最常用的使用灰度图实现,灰度图中亮度越大对应的地形高度...

Java IO:在文件上创建文件锁_weixin_33727510的博客-程序员宝宝

为什么80%的码农都做不了架构师?>>> ...

[连载计划][大家一起学FPGA/SOPC]_weixin_33671935的博客-程序员宝宝

说明未完成的文档,没有链接。感言大量反馈表明:许多FPGA初学者,在学习进程中,刚开始大多是激情万丈,但是倘若是长期不得入门要领,有一些人便会逐渐丧失学习FPGA的兴趣和信心。这是为什么呢?究其原因,不外乎以下几点:目前市面上FPGA开发板的销售厂商数量众多,但是大多数情况下,厂商提供给FPGA初学者,仅是一些简单的例程代码和一些七凑八凑的文档和资料,严重缺乏针对FPGA入门的...

深度Deep系统的使用问题记录_a656678879的博客-程序员宝宝

深度Deep系统的使用问题记录yum程序的安装及操作安装yum操作:sudo apt-get install build-essential 安装build-essentialsudo apt-get install yum yum的基础操作:sudo yum install -y(y...

程序员必备系列:开发工具的安装和使用_T_LJAVA的博客-程序员宝宝

程序员必备系列:开发工具的安装和使用1.什么是BeanUtils工具BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。BeanUtils的使用使用beanUtils按照以下步骤~前提:约定前提: 参数名称 需要和javabean的属性名称保持一致!!!!优缺点优点:比较通用缺点:就是每次调用这两个方法都要在内部生产一个连接池,这样一个...

推荐文章

热门文章

相关标签