欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Verilog刷题笔记63

Verilog刷题笔记63

2025/10/25 2:14:12 来源:https://blog.csdn.net/shikuanlong/article/details/141678626  浏览:    关键词:Verilog刷题笔记63

找BUG
1、:Bug mux2
在这里插入图片描述
在这里插入图片描述
挑错:

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

结果正确:
在这里插入图片描述
原因:
1、输出out也应为8位
2、逻辑错误,&按位操作,需要将sel扩展到8位才可以。
但是,& 不可替换为&&,否则out的值只会是0或1。
逻辑错误也可通过三目运算符进行判断。

2:Bugs nand3
在这里插入图片描述
挑错:

module top_module (input a, input b, input c, output out);//wire outzj;andgate inst1 (outzj,a,b,c,1,1);assign out=~outzj;endmodule

结果正确:
在这里插入图片描述

原因:
用一个5输入的与门实现三输入的与非门。
首先要补全输入,之前空置的输入可用1’b1代替,再对模块的输出结果进行取反。
给定模块的输出在最前面而不是最后一位参数。

3:Bugs mux4
This 4-to-1 multiplexer doesn’t work. Fix the bug(s).

You are provided with a bug-free 2-to-1 multiplexer:

module mux2 (
input sel,
input [7:0] a,
input [7:0] b,
output [7:0] out
);
在这里插入图片描述
挑错:

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,mux1;mux2 mux00 ( sel[0],    a,    b, mux0 );mux2 mux11 ( sel[0],    c,    d, mux1 );mux2 mux22 ( sel[1], mux0, mux1,  out );endmodule

结果正确:
在这里插入图片描述

原因:
使用给定的2选1选择器实现4选1,测试发现2选1的输出为sel=0输出a,sel=1输出b
例化名称不与变量名称相同
中间变量定义位宽不要出错

4:Bugs addsubz
The following adder-subtractor with zero flag doesn’t work. Fix the bug(s).
在这里插入图片描述
挑错:

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 @(*) begincase (do_sub)0: out = a+b;1: out = a-b;endcaseresult_is_zero=(out==8'd0)?1:0;endendmodule

结果正确:
在这里插入图片描述
原因:
~out 取反也不能说明out是否为全0,可以通过如下方法:

(~(out&&1'b1))
(out==8'd0)

一个always组合逻辑块内不要既有case又有其他的逻辑,有的允许,有的不允许,尽量不用。
always里面不要用assign进行赋值

5:Bugs case
This combinational circuit is supposed to recognize 8-bit keyboard scancodes for keys 0 through 9. It should indicate whether one of the 10 cases were recognized (valid), and if so, which key was detected. Fix the bug(s).
在这里插入图片描述
挑错:

module top_module (input [7:0] code,output reg [3:0] out,output reg valid=1 );//always @(*)beginvalid=0;out=0;case (code)8'h45: begin out = 0;valid=1;end8'h16: begin out = 1;valid=1;end8'h1e: begin out = 2;valid=1;end8'h26: begin out = 3;valid=1;end8'h25:begin  out = 4;valid=1;end8'h2e:begin  out = 5;valid=1;end8'h36: begin out = 6;valid=1;end8'h3d:begin  out = 7;valid=1;end8'h3e: begin out = 8;valid=1;end8'h46: begin out = 9;valid=1;endendcaseendendmodule

结果正确:
在这里插入图片描述

原因:
原代码中out=3时code是8’d26,out=9时code是6’h46,其它都是8位16进制,改成8’h之后成功运行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词