4 选 1 多路复用器设计
本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 65 课,共 90 课。
挑战
4 选 1 多路复用器
4 选 1 多路复用器有四个数据输入(in0、in1、in2、in3)、两个选择位(sel[1:0])和一个输出(out)。这两个选择位决定哪个输入传递到输出:
- 当
sel = 2'b00时,输出为in0 - 当
sel = 2'b01时,输出为in1 - 当
sel = 2'b10时,输出为in2 - 当
sel = 2'b11时,输出为in3
你将用两种方式构建这个多路复用器:先使用 if-else 语句,然后在下一课中使用 case 语句。这两种方法都可行,但有很多选项时,使用 case 通常更简洁。
4 选 1 多路复用器根据 2 位选择信号,从四个输入中选出一个并将其传递到输出。
真值表
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
当 sel 为 00 时,输出跟随 in0。当 sel 为 01 时,输出跟随 in1。当 sel 为 10 时,输出跟随 in2。当 sel 为 11 时,输出跟随 in3。
要做什么:
- 创建一个名为
mux4to1的模块 - 添加输入
in0(1 位) - 添加输入
in1(1 位) - 添加输入
in2(1 位) - 添加输入
in3(1 位) - 添加输入
sel(2 位) - 添加输出
out(1 位,类型为reg) - 添加一个
always @(*)块 - 在块内添加一个检查
sel的if-else语句:- 如果
sel == 2'b00,设置out = in0 - 否则,如果
sel == 2'b01,设置out = in1 - 否则,如果
sel == 2'b10,设置out = in2 - 否则,设置
out = in3
- 如果
- 用
endmodule结束
亲手试试
// 第 1 步:创建名为 mux4to1 的模块
// 第 2 步:添加输入 in0
// 第 3 步:添加输入 in1
// 第 4 步:添加输入 in2
// 第 5 步:添加输入 in3
// 第 6 步:添加输入 sel(2 位)
// 第 7 步:添加输出 out(reg 类型)
// 第 8 步:添加 always @(*) 代码块
// 第 9 步:添加 if-else 语句
// 如果 sel == 2'b00,则 out = in0
// 否则,如果 sel == 2'b01,则 out = in1
// 否则,如果 sel == 2'b10,则 out = in2
// 否则,out = in3
// 第 10 步:结束模块基础知识中的所有课
自己练习: Verilog 在线编译器