ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

打工人日报#20250927 - 教程

打工人日报#20250927 - 教程

打工人日报#20250927

知识点

Verilog HDL 介绍

Verilog HDL(Hardware Description Language,硬件描述语言)是一种用于数字硬件设计的标准语言,在集成电路设计、FPGA 开发等领域应用广泛。以下从多个方面对其进行介绍:

1. 发展历程

2. 语言特点

  • 功能强大:可以对数字电路的结构和行为进行描述。既能描述电路的逻辑门级结构,如与门、或门、非门等的连接关系,也能从行为级描述电路的功能,像状态机的状态转移、数据处理算法等。例如,对于一个轻松的加法器,可以用逻辑门级描述其由多个全加器单元组成,也能用行为级描述为两个输入数相加得到输出结果。
  • 灵活性高:支持多种建模方式,包括数据流建模(经过描述数据在硬件中的流动来建模)、行为建模(基于算法和顺序执行描述硬件行为)和结构建模(通过实例化不同模块来构建硬件结构)。工程师可根据设计需求和场景选择最合适的建模方式,或在同一设计中混合采用多种方式。
  • 可综合性好:能够被综合工具转化为实际的硬件电路。这意味着用 Verilog HDL 编写的代码可以经过综合程序处理,生成门级网表,进而用于 ASIC 制造或 FPGA 设置,实现从代码到实际硬件的转化。
  • 易于学习:语法与 C 语言有相似之处,对于有 C 语言基础的工程师来说,学习门槛相对较低。同时,其具有丰富的运算符和数据类型,便于理解和使用。

Verilog 的逻辑值

Verilog 的标识符

标识符是用于给变量、模块、端口、信号等命名的字符串。在 Verilog 中,标识符具有以下规则:

  • 组成字符:由字母(大小写敏感)、数字、下划线(_)和美元符号()组成。例如,modulename、signal1、temp、)组成。例如,module_name、signal1、_temp、)组成。例如,modulenamesignal1temp有效的标识符。就是count都
  • 有效的。就是开头字符:必须以字母或下划线开头,不能以数字或美元符号开头。例如,1signal是无效的标识符,而signal1
  • 保留字:不能使用 Verilog 的保留字作为标识符。保留字是 Verilog 语言中具有特定含义的单词,如module、input、always等。

Verilog 的数字进制格式

Verilog 拥护多种数字进制格式来表示常量:

Verilog 的数据类型

Verilog 中有多种数据类型,核心分为以下几类:

  • 线网类型(Net Types):用于表示连接不同模块或元件的信号线,其值由驱动它的元件决定。
  • wire:最常用的线网类型,用于连接组合逻辑电路。例如,wire [7:0] data_bus;定义了一个 8 位宽的 wire 型信号data_bus,可用于传输数据。
  • tri:与wire类似,常用于描述具有多个驱动源的总线结构,允许多个驱动源连接到同一根线。当多个驱动源的输出一致时,信号取该值;当驱动源输出冲突时,信号值为x。
  • 寄存器类型(Register Types):常用于存储数据,可在always块中赋值。
  • reg:最基本的寄存器类型,用于在always块或initial块中保存数据。例如,reg [3:0] counter;定义了一个 4 位宽的reg型变量counter,可用于计数。
  • integer:32 位有符号整数类型,常用于循环控制变量或数学计算。例如,integer i;定义了一个整数变量i,可在for循环中使用。
  • real:64 位双精度浮点数类型,用于进行高精度的数值计算,但在可综合设计中较少使用,因为大多数硬件不直接协助浮点数运算。
  • 数组类型(Array Types):可以定义一维或多维数组。例如,reg [7:0] memory [0:255];定义了一个 256 个元素的数组memory,每个元素是一个 8 位宽的reg型数据,模拟了一个简单的内存结构。
  • 用户自定义类型(User - defined Types):
  • typedef:允许用户定义新的数据类型。例如,typedef enum {IDLE, READ, WRITE} state_type;定义了一个枚举类型state_type,包含三个状态:IDLE、READ和WRITE。这种类型常用于描述状态机的状态。

Verilog 的运算符

Verilog 提供了丰富的运算符,可分为以下几类:

阅读

《杀死一只知更鸟》
第三章 结束
在这里插入图片描述

返回列表