2 选 1 多路复用器设计
本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 64 课,共 90 课。
挑战
多路复用器(MUX)是一种数字电路,它会根据选择信号,从多个输入中选出一个,并将其传送到单个输出。你可以把它想成一个数据选择器。多个输入会传入,而你可以选择其中一个送到输出。
在这个项目中,你将使用 if-else 和 case 语句构建不同规模的多路复用器。
2 选 1 多路复用器
2 选 1 多路复用器是最简单的形式。它有两个数据输入(in0 和 in1)、一个选择输入(sel)和一个输出(out)。当 sel 为 0 时,输出跟随 in0。当 sel 为 1 时,输出跟随 in1。你将使用 always @(*) 块中的 if-else 语句来实现它。
示例:如果 in0 = 0、in1 = 1 且 sel = 1,那么 out = 1。
2 选 1 多路复用器会根据选择信号,从两个输入中选出一个并传送到输出。
真值表
| sel | out |
|---|---|
| 0 | out = in0 |
| 1 | out = in1 |
当 sel 为 0 时,输出跟随 in0。当 sel 为 1 时,输出跟随 in1。
操作步骤:
- 创建一个名为
mux2to1的模块 - 添加输入
in0(1 位) - 添加输入
in1(1 位) - 添加输入
sel(1 位) - 添加输出
out(1 位,类型为reg) - 添加一个
always @(*)块 - 在块内添加一个
if-else语句:- 如果
sel == 0,设置out = in0 - 否则,设置
out = in1
- 如果
- 使用
endmodule结束
亲手试试
// 步骤 1:创建名为 mux2to1 的模块
// 步骤 2:添加输入 in0
// 步骤 3:添加输入 in1
// 步骤 4:添加输入 sel
// 步骤 5:添加输出 out(reg 类型)
// 步骤 6:添加 always @(*) 块
// 步骤 7:添加 if-else 语句
// 如果 sel == 0,则 out = in0
// 否则,out = in1
// 步骤 8:结束模块基础知识中的所有课
自己练习: Verilog 在线编译器