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
查看7道真题和解析