Verilog标准化为IEEE 1364标准,用于描述数字电子电路。Verilog HDL主要用于RTL抽象级别的设计和验证。Verilog由Prabhu Goel和Phil Moorby于1984年在Gateway design automations创建。Verilog IEEE标准包括Verilog-95(IEEE 1364-1995)、Verilog-2001(IEEE 1364-2001)和Verilog-2005(IEEE 1364-2005)。Verilog是区分大小写的,在进一步讨论RTL设计和合成之前,必须对Verilog代码结构有基本的了解(图1.3)
图1.3 Verilog代码结构模板
如Verilog代码结构模板所示。
Verilog设计说明
在实际场景中,Verilog HDL分为三种不同的编码描述。编码描述的不同风格是结构、行为和可综合的RTL。考虑图1.4C所示的半加法器的设计结构,它描述不同的编码风格。图1.4显示了半加法器的真值表、原理图和逻辑结构实现。
结构设计
结构设计定义了设计的数据结构,并使用所需的网络连接以网络列表的形式进行描述。结构设计主要是不同小复杂度数字逻辑块的实例化。它基本上是一个小型模块的设计连接,以实现中等或复杂的逻辑。示例1.1描述了“basic_verilog”模块的结构代码样式(图1.4)。
示例1.1“basic_verilog”的结构样式
图1.4“basic_Verilog”的逻辑结构
行为设计
名称本身表示编码样式的性质。在Verilog代码的行为风格中,功能是从特定设计的真值表中编码的。假设设计是带有输入和输出的黑盒。设计者的主要意图是根据所需的输入集(示例1.2)在输出端映射功能。
可综合RTL设计
可综合RTL代码在实际环境中用于描述使用可综合结构的设计功能。RTL代码样式是使用可综合结构对功能的高级描述。建议使用可综合的Verilog结构使用RTL编码样式(示例1.3)。
示例1.3“basic_Verilog”的可合成RTL Verilog代码
关键Verilog术语
在接下来讨论Verilog术语之前,了解Verilog是如何工作的是至关重要的。为什么它是一种硬件描述语言?
- Verilog不同于软件语言,因为它用于描述硬件。Verilog支持描述传播时间和灵敏度。
- Verilog支持并发(并行)执行语句,甚至支持顺序执行语句。
- Verilog支持阻塞(=)分配,甚至支持非阻塞分配(<=)。阻塞赋值用于描述组合逻辑,非阻塞赋值用于描述顺序逻辑。这些作业将在后续章节中讨论。
- Verilog支持输入、输出和双向(inout)端口的声明。
- Verilog支持常量和参数的定义。Verilog支持文件处理。
- Verilog支持四值逻辑:逻辑“0”、逻辑“1”、高阻抗“z”和未知“X”。
- Verilog支持使用“always”和“initial”关键字的程序块。带有关键字“always”的过程块表示自由运行的进程并始终在事件上执行,带有关键字“initial”的过程块表示只执行一次块。两个程序块都在模拟器时间“0”执行。这些模块将在后续章节中讨论。
- Verilog支持可合成结构以及不可合成结构。
- Verilog支持递归使用任务和函数。
- Verilog支持程序语言接口(PLI),将控制从Verilog传输到用“C”语言编写的函数。
下面显示的模板描述了用于描述大多数组合逻辑设计的关键Verilog结构(图1.5)。
图1.5基本Verilog定义和说明
Verilog算术运算符
Verilog支持加法、减法、乘法、除法和模运算符来执行算术运算。表1.1描述了算术运算符(示例1.4)。
表1.1 Verilog算术运算符
操作符 | 名称 | 功能 |
---|---|---|
| 二元加法Binary addition | 执行两个二进制操作数相加的步骤 |
− | 二进制减号Binary minus | 执行两个二进制操作数的减法 |
* | 乘法Multiplication | 执行两个二进制操作数的乘法 |
/ | 除法Division | 对两个二进制操作数进行除法 |
% | 模数Modulus | 从两个操作数的除法求模 |
示例1.4
Verilog逻辑运算符
Verilog支持逻辑AND、OR和否定运算符来执行所需的逻辑操作。逻辑运算符用于在操作结束时返回单位值。表1.2描述了逻辑运算符的功能使用(示例1.5)。
表1.2 Verilog逻辑运算符
操作符 | 名称 | 功能 |
---|---|---|
&& | 逻辑与Logical AND | 对两个二进制操作数执行逻辑与 |
! | 逻辑反Logical Negation | 对给定的二进制数执行逻辑求反 |
示例1.5 Verilog逻辑运算符
Verilog等式和不等式运算符
Verilog相等运算符用于在比较两个操作数后返回真值或假值。表1.3描述了操作员的功能(示例1.6)。
表1.3 Verilog等式和不等式运算符
操作符 | 名称 | 功能 |
---|---|---|
== | Case equality | 比较两个操作数的等式 |
!= | Case inequality | 用于找出两个操作数的不等式 |
示例1.6 Verilog等式和不等式运算符
未完待续.....