持续赋值方式
定义输入为a,b;片选信号为sel;输出为out;则代码为:
module MUX21_1(out,a,b,sel);
input a,b,sel;
output out;
assign out = (sel==0)?a:b; //持续赋值,如果sel=0,在out=a;否则out = b。
endmodule
阻塞赋值方式
定义输入为a,b;片选信号为sel;输出为out;则代码为:
module MUX21_2(out,a,b,sel);
input a,b,sel;
output out;
reg out;
always @(a or b or sel)
begin
if(sel == 0)
out = a; //阻塞赋值
else
out = b;
end
endmodule
仿真程序
`timescale 1ns/1ns
module mux_tp();
reg a,b,sel;
wire out;
MUX21_1 m1(
.a(a),
.b(b),
.sel(sel),
.out(out)
);
initial
begin
a = 0;b=0;sel=0;
#5 sel = 1;
#5 a = 1;sel = 0;
#5 sel =1;
#5 a=0;b=1;
#5 sel = 1;
#5 a=1;b=1;sel = 0;
#5 sel = 1;
end
initial $monitor($time,,,"a=%b b=%b sel = %b",a,b,sel,out); //显示结果
endmodule