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

一、入门前提

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. 基础格式规范

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

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

verilog

// 推荐写法:分行排版 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 类型

    Read more

    速通前端篇 —— CSS

    速通前端篇 —— CSS

    找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-ZEEKLOG博客 所属专栏:速通前端 目录 CSS的介绍 基本语法规范 CSS选择器 标签选择器 class选择器  id选择器  复合选择器  通配符选择器 CSS常见样式  颜色 color 字体大小 font-size  边框 border  宽度 与 高度  内边距 外边距  CSS的介绍 CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式。CSS能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果。能够做到页面的样式和结构分离。简单理解,CSS就是类似于对页面进行"化妆",让页面变得更加好看。 基本语法规范 选择器+{一条/N条声明} 1、

    前端实战:手把手教你实现浏览器通知功能

    前端实战:手把手教你实现浏览器通知功能

    前端入门:浏览器通知功能从0到1实现指南 作为前端学习者,你可能见过这样的场景:打开网页版聊天工具,就算把浏览器最小化,桌面也会弹出“新消息”提醒;或者某些网站的活动通知,会直接显示在电脑/手机桌面上。这种功能就是「浏览器桌面通知」,今天我们就从零开始,搞懂它、学会用它。 一、先搞懂3个基础问题 1. 什么是浏览器桌面通知? 简单说,就是网页能在浏览器窗口外面(比如电脑桌面、手机屏幕)给你发提醒。哪怕浏览器最小化、甚至页面切到后台,只要权限允许,都能收到通知,不用一直盯着网页。 2. 什么时候会用到它? 常见场景很贴近日常: * 网页版微信/QQ的新消息提醒; * 工作系统的审批提醒、任务到期通知; * 电商网站的订单状态更新(比如“你的快递已发货”); * 新闻/小说网站的订阅内容更新提醒。 3. 用起来难吗?有什么限制? 不难!核心就2步:先让用户同意开启通知(申请权限)

    Qwen3-TTS多语种语音合成实战:Python API调用+WebUI双模式使用指南

    Qwen3-TTS多语种语音合成实战:Python API调用+WebUI双模式使用指南 1. 为什么你需要关注Qwen3-TTS 你有没有遇到过这些场景? * 做海外短视频,需要为不同国家观众配上地道口音的配音,但找配音员成本高、周期长; * 开发多语言智能客服,想让系统用西班牙语自然地读出订单状态,而不是机械念字; * 给孩子做双语启蒙App,希望中文讲解后立刻接上温柔的日语复述,语调和停顿都像真人。 传统TTS工具要么只支持一两种语言,要么切换语种要重装模型,更别说控制情绪、语速、方言风格了。而Qwen3-TTS-12Hz-1.7B-CustomVoice,就是为解决这些问题而生的——它不是“能说多种语言”,而是“真正理解多种语言该怎么说”。 这不是一个堆参数的模型,而是一个在真实使用中经得起推敲的语音生成工具。它覆盖中文、英文、日文、韩文、德文、法文、俄文、葡萄牙文、西班牙文和意大利文共10种主流语言,还支持粤语、关西腔、柏林口音等方言风格。更重要的是,它不靠后期拼接或规则调整,而是从文本理解开始,就自动决定哪里该轻快、哪里该停顿、哪句该带点笑意——就像一位熟

    前端 SSR:别让你的网站变成 SEO 黑洞

    前端 SSR:别让你的网站变成 SEO 黑洞 毒舌时刻 这网站做得跟黑洞似的,搜索引擎根本爬不进去。 各位前端同行,咱们今天聊聊前端 SSR(服务端渲染)。别告诉我你还在使用纯客户端渲染,那感觉就像在没有窗户的房间里生活——能住,但看不见外面的世界。 为什么你需要 SSR 最近看到一个项目,纯客户端渲染,SEO 排名倒数,用户体验差。我就想问:你是在做网站还是在做内部工具? 反面教材 // 反面教材:纯客户端渲染 // App.jsx import React, { useState, useEffect } from 'react'; function App() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); useEffect(