三位4选1多路选择器
要求输入信号有4个,且每个信号宽3位
如果是直接根据选择信号选
选择的是信号,选择的是编号,与信号具体是什么内容无关,信号的内容与其是否被选择无关,信号的编号决定其是否被选择

这里是说选择的是端口,每个端口的位宽为1,可以看成每个信号都只有1位
- `timescale 1ns/1ns // 定义时间单位和延时精度
- module mux4_1_tb(); // 定义模块名
-
- // 定义激励信号
- reg tb_int0 ;
- reg tb_int1 ;
- reg tb_int2 ;
- reg tb_int3 ;
- reg [1:0] tb_sel ;
-
- // 定义输出信号
- wire out;
-
- parameter TIME = 20;
-
- // 模块例化
- mux4_1 mux4_1_tb(
- .int0 (tb_int0) ,
- .int1 (tb_int1) ,
- .int2 (tb_int2) ,
- .int3 (tb_int3) ,
- .sel (tb_sel) ,
- .out (out)
- );
-
- // 模拟输入
- initial begin
- tb_int0 = 0; // 将tb_int0初始化为0
- forever begin
- #TIME;
- tb_int0 = ~tb_int0; // 每20个时间单位内,将tb_int0的值取反
- end
- end
-
- initial begin
- tb_int1 = 0; // 将tb_int1初始化为0
- forever begin
- #(TIME*2);
- tb_int1 = ~tb_int1; // 每40个时间单位内,将tb_int1的值取反
- end
- end
-
- initial begin
- tb_int2 = 0; // 将tb_int2初始化为0
- forever begin
- #(TIME*3);
- tb_int2 = ~tb_int2; // 每60个时间单位内,将tb_int2的值取反
- end
- end
-
- initial begin
- tb_int3 = 0; // 将tb_int3初始化为0
- forever begin
- #(TIME*4);
- tb_int3 = ~tb_int3; // 每80个时间单位内,将tb_int3的值取反
- end
- end
-
- initial begin
- tb_sel = 0; // 将tb_sel初始化为0
- forever begin
- #(TIME*6);
- tb_sel = ~tb_sel; // 每160个时间单位内,将tb_sel的值取反
- end
- end
- endmodule
电路设计实现:两个电路图
代码:设计,仿真,引脚代码
上板效果阐述与截图
分析思考
两个电路图之间的差异,能耗,资源利用
写两个文件,一个是verliog的,一个是BD的
verliog简单,在这个文件里实现上板子和引脚编写
BD,根据信号,从4选1里,先选择出两个,再选择出1个
这里是要用一个块,就是二选一选择器,输入有两个信号,以及一个选择信号,输出一个选择出来的信号,由于输入信号是一位的,所以应该把原始的二位输入信号拆分成一位一位的传进去