Menu
CoddyTech

复习:ALU 设计

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

challenge icon

挑战

ALU(算术逻辑单元)是一种数字电路,它接收两个输入,对它们执行运算,并产生一个输出。它根据选择信号对两个输入执行算术和逻辑运算。select 信号会选择要执行的一个运算。

工作原理

select运算输出
2'b00加法a + b
2'b01减法a - b
2'b10按位与a & b
2'b11按位或a | b

使用 case 语句构建一个简单的 ALU。

操作说明:

  1. 创建一个名为 alu 的模块
  2. 添加输入:a(4 位)、b(4 位)、select(2 位)
  3. 添加输出:result(4 位,reg 类型)
  4. 添加一个 always @(*) 块
  5. 在其中添加一个 case (select) 语句
  6. 为 2'b00、2'b01、2'b10、2'b11 添加四个分支
  7. 添加一个 default 分支,将 result = 0 设为默认值
  8. 用 endcase 和 endmodule 结束

亲手试试

// TODO: 创建模块 alu 

  // TODO: 添加输入(a, b, select)
  
  // TODO: 添加输出(result)

  // TODO: 添加 always @(*) 代码块
  
  // TODO: 添加 case (select)
  
  // TODO: 添加 case 2'b00: result = a + b;
  
  // TODO: 添加 case 2'b01: result = a - b;
  
  // TODO: 添加 case 2'b10: result = a & b;
  
  // TODO: 添加 case 2'b11: result = a | b;
  
  // TODO: 添加 default: result = 0;
  
  // TODO: 添加 endcase

// TODO: 添加 endmodule

基础知识中的所有课

自己练习: Verilog 在线编译器