前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数字硬件建模-从另一方面理解Verilog(一)

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

作者头像
碎碎思
发布2022-03-07 13:56:45
1.1K0
发布2022-03-07 13:56:45
举报
文章被收录于专栏:OpenFPGA

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

未完待续.....

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Verilog设计说明
    • 结构设计
      • 行为设计
        • 可综合RTL设计
        • 关键Verilog术语
          • Verilog算术运算符
            • Verilog逻辑运算符
              • Verilog等式和不等式运算符
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档