你的第一个模块
本课属于 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
endmoduleassign会持续将右侧连接到左侧&在 Verilog 中表示 AND
挑战
在这个挑战中,你需要创建一个执行 OR 运算的简单模块。
要做什么:
- 模块名称应为
or_gate - 模块应有一个名为
x的输入 - 模块应有一个名为
y的输入 - 模块应有一个名为
z的输出 - 在模块内部,使用
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
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Verilog 在线编译器