当前位置: 首页 > news >正文

打工人日报#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 提供了丰富的运算符,可分为以下几类:

阅读

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

http://www.jsqmd.com/news/7665/

相关文章:

  • GPT-5 撼动量子计算:AI 在科研领域的颠覆性应用 - 实践
  • python 肘部法则,判点聚类分为几类,K-means聚类分析
  • AT_abc315_f [ABC315F] Shortcuts
  • 紫外UV固化太阳光模拟器的原理 - 教程
  • 《系统与软件工程功能规模测量IFPUG手段》(GB/T42449-2023)标准解读
  • 实用指南:无人机图传及组网功能如何实现?适用频段与传输模块选择全攻略
  • 每日一题
  • P5709 【深基2.习6】Apples Prologue / 苹果和虫子
  • 问题表 - microsoft
  • KD论文阅读 - 实践
  • Leetcode 736. Lisp 语法解析
  • Day10.1
  • 随想八
  • 【600】
  • SolarWinds Web Help Desk远程代码执行漏洞分析
  • Aria2安装
  • 正则表达式学习
  • 神经网络之简单的标量何以表达模型的拟合能力 - 指南
  • 一篇文章入门RabbitMQ:基本概念与Java利用
  • PHP程序员要是基础不扎实,越学越吃力
  • lesson70:jQuery Ajax完全指南:从基础到4.0新特性及现代替代优秀的方案引言:jQuery Ajax的时代价值与演进
  • 《电路基础》第八章学习笔记
  • 《电路基础》第七章学习笔记
  • 《电路基础》第七章学习笔记
  • XGBoost
  • LLM大模型:deepseek sparse attention是个啥?
  • 详细介绍:从零到一:Docker Compose 轻松部署微服务实战!
  • 软著申请全流程材料模板,2025年最新模板汇总! - 实践
  • 四川话ASR-微调-语音识别-Paraformer-Large - 教程
  • 手把手教你使用 Docker 部署 Nginx 教程