题解 | #四选一多路器#
四选一多路器
http://www.nowcoder.com/practice/cba4617e1ef64e9ea52cbb400a0725a3
两种解法:
1. 在always块内赋值,使用case语句或者if...else语句
注意always块内赋值,要把变量声明为reg类型
`timescale 1ns/1ns module mux4_1( input [1:0]d1,d2,d3,d0, input [1:0]sel, output [1:0]mux_out ); //*************code***********// // 1. case ,always @ (*) always @ (sel, d0, d1, d2, d3) // 2. 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
`timescale 1ns/1ns module mux4_1( input [1:0]d1,d2,d3,d0, input [1:0]sel, output [1:0]mux_out ); //*************code***********// assign mux_out = (sel == 2'b00) ? d3 : ((sel == 2'b01) ? d2 : (sel == 2'b10) ? d1 : d0); //*************code***********// endmodule