Menu
CoddyTech

你的第一个模块

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

模块是 Verilog 中的基本构建块。每段 Verilog 代码都位于一个模块中。

把模块想成一个组件,它包含:

  • 输入(传入的信号)
  • 输出(传出的信号)
  • 行为(它的作用)

模块语法

module module_name ( inputs, outputs );

  // 所有内容都写在这里

endmodule

每个模块都以 module 开始,以 endmodule 结束。

输入和输出

module and_gate(
  input a,     // a 输入到模块中
  input b,     // b 输入到模块中
  output c     // c 从模块输出
);

  // 在这里编写模块的行为

endmodule
  • 输入 = 信号进入模块
  • 输出 = 信号离开模块

添加行为

现在让模块做点事情:

module and_gate(
  input a,
  input b,
  output c
);

  assign c = a & b;  // 只有当 a 和 b 都为 1 时,c 才为 1

endmodule
  • assign 会持续将右侧连接到左侧
  • & 在 Verilog 中表示 AND
challenge icon

挑战

在这个挑战中,你需要创建一个执行 OR 运算的简单模块。

要做什么:

  1. 模块名称应为 or_gate
  2. 模块应有一个名为 x 的输入
  3. 模块应有一个名为 y 的输入
  4. 模块应有一个名为 z 的输出
  5. 在模块内部,使用 assign 让 z 等于 x OR y

模块头部和它的 3 个端口已经写在编辑器中。你需要添加的代码行是模块内部的 assign 语句。

注意:在 Verilog 中,OR 用竖线符号 | 表示。如果至少有一个输入为 1(true),输出就是 1(true)。

亲手试试

// 模块头和端口已经为你写好了
module or_gate(
  input x,
  input y,
  output z
);

  // 轮到你了:用 assign 将 z 设置为 x 和 y 的或运算结果
  // 在 Verilog 中,或运算写作 |

endmodule
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Verilog 在线编译器