Menu
CoddyTech

模块结构

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

模块是 Verilog 中的基本构建单元。每个设计都由相互连接的模块构成,从而形成更大的系统。

模块是一种硬件组件,包含:

  • 名称
  • 输入(传入的信号)
  • 输出(传出的信号)
  • 内部逻辑(模块的功能)

把模块想象成一个带有引脚和内部电路的芯片。

模块基本结构

每个模块都遵循以下结构:

module module_name (
  input  signals,
  output signals
);
  
  // 内部声明(wires、regs 等)
  // 逻辑(assign 语句、always 块等)
  
endmodule

模块的组成部分

部分用途
module 关键字开始模块定义
module_name模块名称
( )输入和输出端口列表
input / output声明端口方向
模块主体内部逻辑和连接
endmodule结束模块定义

简单模块示例

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

这个模块:

  • 名为 and_gate
  • 有两个输入(a、b)
  • 有一个输出(c)
  • 包含一条定义逻辑的 assign 语句

模块结构规则

  1. 一个文件对应一个模块 是常见做法
  2. 模块名称 应描述其功能
  3. 端口 列在名称后面的括号中
  1. 输入始终是 input(不能在内部编写)
  2. 输出是 output(可以是 reg 或 wire)
  3. endmodule 必须关闭模块
challenge icon

挑战

补全缺失的部分,完成这个模块。

要做什么:

  1. 添加模块名称 my_and
  2. 为 x 添加 input
  3. 为 y 添加 input
  4. 为 z 添加 output
  5. 使用 assign 添加内部逻辑

亲手试试

module ______ (   // 添加模块名
  input x,       // 添加输入
  input y,       // 添加输入
  output z       // 添加输出
);
  // 在这里添加 assign 语句(z = x & y)
  
endmodule
quiz icon自我测试

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

基础知识中的所有课

自己练习: Verilog 在线编译器