原理
源文件
// 二选一多路选择器
module mux2(a, b, sel, out); //端口名称
input sel; //端口定义,input:输入端口;output:输出端口
input a;
input b;
output out;
assign out = (sel == 1)?a:b;//assign:连线,将sel == 1)?a:b的结果与 out端口相连
endmodule
仿真文件
`timescale 1ns / 1ns // 步进 / 精度
module mux2_tb(); //仿真文件名,无端口
/*定义类型,reg:寄存器类型,也相当于一个D触发器,且可以赋值;
wire:线网型,起连接作用,就是一条导线,只能用assign赋值
*/
reg sel;
reg a;
reg b;
wire out;
mux2 mux2_inst( //mux2:仿真模块,mux2_inst:仿真模块起别名
.sel(sel), //将定义好的类型给到仿真模块的端口
.b(b), //例如:.sel:模块里的端口(将上面定义的reg型sel放到这)
.a(a),
.out(out)
);
/*仿真就是验证所写的程序能不能实现相应目的,
仿真的条件和结果是已知的。
例如,当sel = 0; a = 0; b = 0;时,out=b,
*/
initial //模拟仿真
begin //begin end,相当于C语言的花括号{}
sel = 0; a = 0; b = 0; //当sel = 0; a = 0; b = 0;时,out会有什么结果
#200; //延时200纳秒
sel = 0; a = 0; b = 1;
#200;
sel = 0; a = 1; b = 0;
#200;
sel = 0; a = 1; b = 1;
#200;
sel = 1; a = 0; b = 0;
#200;
sel = 1; a = 0; b = 1;
#200;
sel = 1; a = 1; b = 0;
#200;
sel = 1; a = 1; b = 1;
#200;
end
endmodule