大体思路是:有两路输入信号,一个选通信号,当选通信号高电平时,按输入1的波形,当选通信号为低电平时,按输入2的波形。
大致波形图如下图:
rtl代码如下:
module mux2_1
(
input wire [0:0] in_1,
input wire in_2,
input wire sel,
output reg out
);
always@(*)
if(sel==1'b1)
out =in_1;
else
out =in_2;
endmodule
modelsim代码如下:
`timescale 1ns/1ns
module tb_mux2_1();
reg in_1;
reg in_2;
reg sel;
wire out;
initial
begin
in_1 <= 1'b0;
in_2 <= 1'b0;
sel <= 1'b0;
end
always #10 in_1 <= {$random} %2;
always #10 in_2 <= {$random} %2;
always #10 sel <= {$random} %2;
initial
begin
$timeformat(-9,0,"ns",6);
$monitor("@time %t:in_1=%b in_2=%b sel=%b out=%b",$time,in_1,in_2,sel,out);
end
mux2_1 mux2_1_inst
(
.in_1(in_1),
.in_2(in_2),
.sel (sel),
.out(out)
);
endmodule
我们给input1为KEY1,input2为KEY2,选通信号为KEY3,OUT为LED灯。
仿真时:
波形图和我们预期一样
上板验证: