Day1 :VL1 四选一多路器
制作一个四选一的多路选择器,要求输出定义上为线网类型
状态转换:
d0 11
d1 10
d2 01
d3 00
信号示意图:
分析:1.输入d0,d1,d2,d3,要想实现四选一,需要几位信号呢?
答案是2位,2位的二进制有四种表现形式:00,01,10,11
故定义sel为[1:0]
读波形图可知:sel=0 =>sel=2’b00,根据上述状态转换,00对应的为d3,而d3显示的数为2,故mux_out=2, 其余同理
代码实现
`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_temp;//输出不能使用reg,所以定义一个临时变量
always@()begin
case(sel)
2’b00:mux_out_temp=d3;//信号与四个输入进行匹配
2’b01:mux_out_temp=d2;
2’b10:mux_out_temp=d1;
2’b11:mux_out_temp=d0;
endcase
end
assign mux_out=mux_out_temp;//最后使用assign对输出结果进行赋值,即可正常输出
//**code//
endmodule