Menu
CoddyTech

2 选 1 多路复用器设计

本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 64 课,共 90 课。

challenge icon

挑战

多路复用器(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 多路复用器会根据选择信号,从两个输入中选出一个并传送到输出。

真值表

 

selout
0out = in0
1out = in1

当 sel 为 0 时,输出跟随 in0。当 sel 为 1 时,输出跟随 in1。

操作步骤:

  1. 创建一个名为 mux2to1 的模块
  2. 添加输入 in0(1 位)
  3. 添加输入 in1(1 位)
  4. 添加输入 sel(1 位)
  5. 添加输出 out(1 位,类型为 reg)
  6. 添加一个 always @(*) 块
  7. 在块内添加一个 if-else 语句:
    • 如果 sel == 0,设置 out = in0
    • 否则,设置 out = in1
  8. 使用 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 在线编译器