题解 | #四选一多路器#

四选一多路器

http://www.nowcoder.com/practice/cba4617e1ef64e9ea52cbb400a0725a3

Verilog Tips

1.module里定义时自动为wire型变量
2.always的@内变量设置为*可以自动匹配输入
3.always模块内被赋值的变量必须是reg型,赋的值类型随意
4.assign时被赋值的变量必须是wire型,赋的值类型随意

Verilog Code

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
    reg [1:0]mux_out_t;
    always @(*)
        begin
            case(sel)
                3:mux_out_t=d0;
                2:mux_out_t=d1;
                1:mux_out_t=d2;
                0:mux_out_t=d3;
                default:mux_out_t=d3;
            endcase
        end
    assign mux_out=mux_out_t;
//*************code***********//
endmodule

Testbench Tips

1.testbench里需要根据Verilog里的输入输出重新定义变量,再实例化设计模块
2.initial作为初始化模块,被初始化的变量必须是reg型

Testbench Code

`timescale 1ns/1ns
module testbench();
  initial begin
    $dumpfile("out.vcd");
    $dumpvars(0, testbench);
  end  
    reg [1:0]d1,d2,d3,d0,sel;
    initial begin
        d1=0;
        d2=1;
        d3=2;
        d0=3;
        sel=0;
        #5 sel=1;
        #5 sel=2;
    end
    mux4_1 t(.d1(d1),
             .d2(d2),
             .d3(d3),
             .d0(d0),
             .sel(sel),
             .mux_out(mux_out));
endmodule
全部评论
1.module里定义时自动为wire型变量 2.always的@内变量设置为*可以自动匹配输入 3.always模块内被赋值的变量必须是reg型,赋的值类型随意 4.assign时被赋值的变量必须是wire型,赋的值类型随意
1 回复 分享
发布于 2022-08-14 11:12

相关推荐

不愿透露姓名的神秘牛友
昨天 18:54
点赞 评论 收藏
分享
10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
25 5 评论
分享
牛客网
牛客企业服务