verilog题解 | 四选一多路器

四选一多路器

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

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output[1:0]mux_out
);
//*************code***********//
/*
1. 题中给的mux_out是wire类型的,所以不能直接在case语句中进行赋值,因此要创建reg类型的内部连线mux_out_reg;
2. always@(*)等同于always @(sel,d0,d1,d2,d3)
3. begin...end之间的语句只能用reg类型的变量,但可以使用阻塞赋值和非阻塞赋值
*/

reg [1:0] mux_out_reg;

always @(*)
begin
    case(sel)
        2'b00:mux_out_reg = d3;
        2'b01:mux_out_reg = d2;
        2'b10:mux_out_reg = d1;
        2'b11:mux_out_reg = d0;
        default:mux_out_reg = d0;
    endcase
end

assign mux_out = mux_out_reg;

//*************code***********//
endmodule

全部评论

相关推荐

北枳的南橘:建议大家务必去和他沟通一下,像极了小学生对你侃侃而谈国际局势😂
找AI工作可以去哪些公司...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务