文章目录
- 前言
- 一、模块定义
- 1. 模块声明
- 2. 端口定义
- 3. 信号类型声明
- 4. 逻辑功能定义
- 二、运算符与表达式
- 1. 算术运算符
- 2. 逻辑运算符
- 3. 位运算符
- 4. 关系运算符
- 5. 等式运算符
- 6. 缩减运算符
- 7. 移位运算符
- 8. 条件运算符
- 9. 位拼接运算符
- 三、语句
- 1. 赋值语句
- 2. 块语句
- 3. 条件语句
- 4. 循环语句
- 5. 结构说明语句
- 6. 编译预处理语句
- 总结
前言
Verilog是一种硬件描述语言,用于描述数字电路的行为和功能。
一、模块定义
Verilog程序的最基本设计单元是“模块”,模块从关键字module开始,到endmodule结束,其中每条语句以";"分隔。
一个完整的模块由以下四个部分组成:
1. 模块声明
格式如下:
module 模块名(端口名1,端口名2,…,端口名n);
模块名只能以下划线和字母****开头!!!
2. 端口定义
●输入端口定义为
input 端口名1,端口名2,…,端口名n;
●输出端口定义为
output 端口名1,端口名2,…,端口名n;
●双向端口(不常用)
inout 端口名1,端口名2,…,端口名n;
定义完要有分号!
3. 信号类型声明
最常用的类型有wire(连线)和reg(寄存器):
●wire类型表示一条连线,只要输入有变化输出马上无条件反映;
●reg类型表示一定要有触发,输出才会反应输入;
声明类型时也可以声明其位宽,如reg [2:0] A,其表示A为3bit位宽的寄存器。
不声明类型时默认为wire类型。
4. 逻辑功能定义
通常采用assign持续赋值语句、always过程赋值块和调用元件(元件例化)等三种方式构成逻辑功能。
Verilog模块的模板如下所示。
模块的总结如下。
二、运算符与表达式
表达式就是用运算符把操作数组合起来,并按照运算符的语义计算出结果。在Verilog中,运算符用于对信号进行数学和逻辑运算。运算符的分类如下所示。
1. 算术运算符
2. 逻辑运算符
3. 位运算符
4. 关系运算符
5. 等式运算符
6. 缩减运算符
7. 移位运算符
8. 条件运算符
9. 位拼接运算符
下面是运算符的优先级。
三、语句
Verilog的语句分类如下。
1. 赋值语句
2. 块语句
3. 条件语句
4. 循环语句
5. 结构说明语句
6. 编译预处理语句
需要注意的是,begin…end里面的语句是顺序执行的,always、assign、实例原件是并行执行的。
总结
Verilog是一种基于硬件描述语言的编程语言,用以设计和模拟数字电路。它支持门级、寄存器传输级、行为级等多层次的建模方式,并可用于仿真、综合和验证数字电路。