【资料图】
module mux2_1( input wire [0:0] in_1, input wire in_2, input wire sel, output reg out); // always产生组合逻辑的时候使用* always@(*) if(sel == 1"b1) out <= in_1; else out <= in_2;endmodule
`timescale 1ns/1nsmodule 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); //-9表示以ns的时间显示时间 10^-9表示ns,10^-3表示ms // 0表示小数点后打印的位数 // 最小显示位数6个 $monitor("@time %t:in_1=%b in2=%b out=%b",$time,in_1,in_2,out); // %t 是时间的占位符 $time使用%t占位 end // 例化module mux2_1 mux2_1_inst( .in_1 (in_1), .in_2 (in_2), .sel (sel ), .out (out ) );endmodule
// 其他方式实现// 方式2always@(*) case(sel) 1"b1:out = in_1; 1"b0:out = in_2; default : out = in1; endcase// 方式3assign out = sel ? in_1 : in_2;