Problem 158-Bugs_mux2
题目说明
这个 8 位宽的 2 对 1 多路复用器不起作用。修复错误。
模块端口声明
moduletop_module( inputsel, input[7:0]a, input[7:0]b, output[7:0]out);
题目解析
sel的位宽不够,补到8位即可。
moduletop_module( inputlogicsel, inputlogic[7:0]a, inputlogic[7:0]b, outputlogic[7:0]out); assignout=({8{sel}}&a)|(~{8{sel}}&b); endmodule
点击Submit,等待一会就能看到下图结果:
注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。
这一题就结束了。
Problem 159-Bugs_nand3
题目说明
本题中的三输入与非门不工作了,找出并修正 BUG。
读者必须使用提供的 5 输入与门来实现这个与非门。
模块端口声明
moduletop_module(inputa,inputb,inputc,outputout);
题目解析
原题中只使用了与门~
moduletop_module(inputlogica, inputlogicb, inputlogicc, outputlogicout );// varlogicout_temp; andgateinst1(.out(out_temp), .a(a), .b(b), .c(c), .d(1'd1), .e(1'd1) ); assignout=~out_temp; endmodule
点击Submit,等待一会就能看到下图结果:
注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。
这一题就结束了。
Problem 160-Bugs_mux4
题目说明
这个 4 对 1 多路复用器不起作用。修复错误。
下面无错误的 2 对 1 多路复用器:
modulemux2( inputsel, input[7:0]a, input[7:0]b, output[7:0]out );
模块端口声明
moduletop_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);
题目解析
没啥大问题,还是变量位宽问题。
moduletop_module( inputlogic[1:0]sel, inputlogic[7:0]a, inputlogic[7:0]b, inputlogic[7:0]c, inputlogic[7:0]d, outputlogic[7:0]out );// varlogic[7:0]mux0,mux1; mux2u1_mux0(sel[0],a,b,mux0); mux2u2_mux1(sel[0],c,d,mux1); mux2u3_mux2(sel[1],mux0,mux1,out); endmodule
点击Submit,等待一会就能看到下图结果:
注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。
这一题就结束了。
Problem 161-Bugs_addsubz
题目说明
继续找BUG
图片来自HDLBits
模块端口声明
moduletop_module( inputdo_sub, input[7:0]a, input[7:0]b, outputreg[7:0]out, outputregresult_is_zero );
题目解析
out条件举例不足。
moduletop_module( inputlogicdo_sub, inputlogic[7:0]a, inputlogic[7:0]b, outputlogic[7:0]out, outputlogicresult_is_zero ); always_combbegin case(do_sub) 0:out=a+b; 1:out=a-b; endcase if(out==8'd0)begin result_is_zero=1; end elsebegin result_is_zero=0; end end endmodule
点击Submit,等待一会就能看到下图结果:
注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。
这一题就结束了。
Problem 162-Bugs_case
题目说明
这个组合电路应该识别键 0 到 9 的 8 位键盘扫描码。它应该指示是否识别了 10 种情况中的一种(valid),如果是,则检测到哪个键。修复错误。
模块端口声明
moduletop_module( input[7:0]code, outputreg[3:0]out, outputregvalid=1);
题目解析
信号定义时不能赋值,case最后一个选项位宽不对。
moduletop_module( inputlogic[7:0]code, outputlogic[3:0]out, outputlogicvalid);// always_combbegin out=4'd0; valid=1'd1; case(code) 8'h45:out=4'd0; 8'h16:out=4'd1; 8'h1e:out=4'd2; 8'h26:out=4'd3; 8'h25:out=4'd4; 8'h2e:out=4'd5; 8'h36:out=4'd6; 8'h3d:out=4'd7; 8'h3e:out=4'd8; 8'h46:out=4'd9; default:valid=1'd0; endcase end endmodule
点击Submit,等待一会就能看到下图结果:
注意图中的Ref是参考波形,Yours是你的代码生成的波形,网站会对比这两个波形,一旦这两者不匹配,仿真结果会变红。
这一题就结束了。
审核编辑:刘清
-
多路复用器
+关注
关注
9文章
872浏览量
65295 -
与非门
+关注
关注
1文章
123浏览量
12758
原文标题:总结
文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论