跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表

目录

  1. 一、入门前提
  2. 二、仿真环境选择
  3. 三、Verilog 设计流程
  4. 四、核心语法规则
  5. 1. 基础格式规范
  6. 2. 标识符与关键字
  7. 3. 数值表示规则
  8. (1)四种基础逻辑值(硬件电平描述)
  9. (2)进制格式(格式:位宽 +' 进制符号 + 数值)
  10. 4. 核心数据类型(仅两种,明确硬件映射)
  11. (1)reg 类型
  • 💰 8折买阿里云服务器限时8折了解详情
编程语言

Verilog 零基础入门:语法、仿真与 FPGA 实战

介绍 Verilog 语言入门基础。学习需具备数字电子技术和 C 语言基础。仿真环境包括 Xilinx Vivado、Quartus II 等,需注意路径全英文约束。设计流程涵盖需求分析、功能划分、HDL 描述、仿真、综合、布局布线及时序验证。核心语法规则涉及大小写敏感、标识符命名、数值进制表示及数据类型如 reg 和 wire。掌握代码到硬件的映射逻辑是学习重点。

FlinkHero发布于 2026/4/5更新于 2026/4/2012 浏览

一、入门前提

Verilog 是 FPGA 开发的核心硬件描述语言,学习需具备两大基础:一是数字电子技术常识(理解逻辑门、时序 / 组合逻辑等概念),二是 C 语言基础(有助于快速适应语法结构)。学习核心是掌握'代码→硬件'的映射逻辑,而非单纯记忆语法。

二、仿真环境选择

根据开发场景选择适配环境,需重点注意路径约束:

  • FPGA 开发环境:Xilinx Vivado(主流推荐)、Xilinx ISE(已停更)、Intel Quartus II
  • ASIC 开发环境:Synopsys VCS
  • 关键约束:电脑用户名、软件安装路径、工程路径必须全英文(无中文 / 特殊符号),否则会导致软件启动失败、编译报错或仿真异常。

三、Verilog 设计流程

  1. 需求分析:明确电路核心功能(如 LED 闪烁、数据运算);
  2. 功能划分:拆解复杂功能为独立子模块(如时钟模块、逻辑处理模块);
  3. HDL 描述:用 Verilog 代码编写模块,定义端口、数据类型与逻辑功能;
  4. 功能仿真:验证代码逻辑正确性,不通过则返回修改;
  5. 逻辑综合:将代码映射为 FPGA 内部物理结构(查找表、触发器等);
  6. 布局布线:按时序、引脚约束,匹配 FPGA 硬件资源;
  7. 时序仿真:验证时序性能,无问题则生成比特流文件,下载至 FPGA 硬件。

四、核心语法规则

1. 基础格式规范
  • 大小写敏感:clk与CLK是不同标识符,关键字必须全小写;
  • 空格与换行:无语法意义,可灵活排版;
  • 语句结束:以分号;结尾,不可省略;
  • 注释方式:单行// 注释内容,多行/* 注释内容 */(不可嵌套)。

示例(两种写法功能一致):

// 推荐写法:分行排版
input wire a;
input wire b;
wire [1:0] results;
assign results = (a == 1'b0) ? 2'b01 : (b == 1'b0) ? 2'b10 : 2'b11;

// 紧凑写法:语法合法但可读性差
input wire a;input wire b;wire[1:0] results;assign results=(a==1'b0)?2'b01:(b==1'b0)?2'b10:2'b11;
2. 标识符与关键字
  • 标识符:变量 / 模块的'名字',首字符为字母 / 下划线,后续可接字母 / 数字 / 下划线(不可数字 / 特殊符号开头);
  • 关键字:语言预留功能词汇(全小写),如reg(寄存器)、input(输入端口)、wire(线网)等;
  • 示例:reg [3:0] counter;中,reg是关键字,counter是标识符。
3. 数值表示规则
(1)四种基础逻辑值(硬件电平描述)
  • 0:逻辑 0(低电平,'假');
  • 1:逻辑 1(高电平,'真');
  • x/X:未知状态(信号可能为 0 或 1);
  • z/Z:高阻状态(无驱动源,逻辑值由上下拉电阻决定)。
(2)进制格式(格式:位宽 +' 进制符号 + 数值)
  • 二进制:'b(如2'b01);
  • 八进制:'o(如3'o15);
  • 十进制:'d(如4'd10);
  • 十六进制:'h(如,适合简化宽位数据)。
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog

更多推荐文章

查看全部
  • Simbody: C++ 多体动力学与物理仿真库
  • C++ 异常处理机制深度解析
  • sherpa-onnx 离线语音部署框架:支持 Whisper、Moonshine、SenseVoice 等模型
  • Git Bash 详解:功能、组成、使用场景与底层原理
  • Pi0 模型微调入门:基于 LoRA 的机器人动作策略适配
  • 五款开源翻译模型中文场景适用性评测
  • LLaMA Factory 核心原理讲解
  • A* 算法原理与历史:Hart, Nilsson, Raphael 1968 年论文解读

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online

8'h3F
4. 核心数据类型(仅两种,明确硬件映射)
(1)reg 类型
  • Python 变量赋值陷阱:浅拷贝与深拷贝解析
  • DeepSeek + 通义万相高效制作 AI 视频实战详解
  • RabbitMQ 七种工作模式详解
  • JavaScript 直连 MongoDB 实战指南与避坑手册
  • Qwen3-1.7B 代码生成能力评测:与 GitHub Copilot 对比
  • TCP 拥塞控制:AIMD 算法深度解析
  • Java Web 大文件分块上传与断点续传实现方案
  • Java 网络协议:HTTP 请求与响应
  • 二叉树、平衡树、B 树与 B+ 树核心原理及代码实现
  • 运动模糊修复:4 类实用算法及 OpenCV+Halcon 实战代码
  • VS Code 中关闭 GitHub Copilot 代码补全
  • Java 内存泄漏问题的诊断与优化方法