数字硬件建模-从另一方面理解Verilog(一)

2022-03-07 13:56:45 浏览数 (1)

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等式和不等式运算符

未完待续.....

0 人点赞