跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

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

介绍 Verilog 零基础入门知识,涵盖数字电子与 C 语言基础要求。详细说明了 FPGA/ASIC 开发环境选择及路径约束注意事项,梳理了从需求分析到时序仿真的完整设计流程。核心部分讲解了 Verilog 基础格式规范、标识符关键字、数值表示规则及数据类型,并通过代码示例展示了格式化与紧凑写法的区别。

HadoopMan发布于 2026/4/6更新于 2026/10/18102 浏览

一、入门前提

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'h3F,适合简化宽位数据)。
4. 核心数据类型(仅两种,明确硬件映射)
1. reg 类型

目录

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

更多推荐文章

查看全部
  • GitHub 仓库创建与本地 Git 配置指南
  • Paperzz 本科文献综述全流程指南:从选题到成稿的智能写作新体验
  • Kerberos 认证协议详解与操作流程
  • OpenClaw 数字员工核心逻辑与架构全景解析
  • Kimi K2.5 开源部署、API 接入、Agent 集群与多模态视觉实战
  • Python 学习方向建议与核心资源概览
  • 通过逆向 WebChat 协议实现 OpenClaw 零后端接入
  • Z-Image-Turbo AI 绘画工具使用指南
  • Gitee+PicGo 搭建 Markdown 笔记图床指南
  • npm 安装 OpenClaw 时 Git 报错的解决方法
  • CSS 颜色函数与渐变:构建绚丽前端界面
  • AI 数据标注工具实战:提速 3 倍的落地经验
  • C++ STL list 容器详解:使用与模拟实现
  • Android AMS 启动流程源码解析
  • 十大 AI 论文降重与智能写作工具评测
  • WPF + .NET6 WebAPI + SqlSugar 权限管理系统架构与实现
  • Vivado 生成 MCS 文件并烧录 Flash 实现掉电保存
  • 入职不到 20 人 IT 公司的真实经历与反思
  • Edge 边栏 Copilot 图标消失的解决方法
  • 普元 Mobile SlidePage 子页面数据刷新方案

相关免费在线工具

  • 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