数字电子技术基础
看懂HDL编码到比特流下载全链路,掌握每个环节的关键工具与设计陷阱
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
数字电子技术基础
看懂HDL编码到比特流下载全链路,掌握每个环节的关键工具与设计陷阱
数字电路与FPGA概述
上页我们知道数字信号只有0和1两种状态。但怎么用真实器件实现「判断」和「运算」?这条路走了几十年——从满桌飞线的晶体管,到今天能容纳百万逻辑门的FPGA。
分立晶体管=自己种菜从头做;74芯片=去饭馆点现成菜;FPGA=进自助厨房,食材工具任你发挥
FPGA开发完整流程
从左到右看FPGA开发的五阶段主干,底部虚线箭头表示时序不满足时的反馈回路。
电路设计方法
FPGA开发流程走完一圈,轮到第一个真正动手的环节——把想法变成电路。这页回答一个常见疑问:为什么现在主流都是写代码而不是画图?
面包板要插每个芯片每根线,HDL写「模块做什么」,EDA自动搭出等价电路
功能仿真原理
设计完电路后,下一步是把逻辑跑一遍验证对错——这就是功能仿真。它的核心特点很极端:彻底忽略硬件延迟,只问「对不对」,不问「快不快」。
演员围读只对台词顺逻辑,不走位、不卡时间——只确认故事讲得对不对
指定目标芯片
功能仿真通过后,下一步就是把设计绑定到具体芯片上——器件选型与工程配置。
功能仿真vs时序仿真
两者长得像、都是仿真,但验证的根本问题不同——一个查逻辑,一个查时间。
- 验证RTL逻辑功能是否正确
- 不考虑任何门延时与线延时
- RTL编码完成后立即可执行
- 速度快,分钟级即可完成
- 验证时序约束是否被满足
- 包含真实的门延时与布线延时
- 必须在布局布线之后进行
- 更接近真实芯片的运行情况
时序仿真信号流程
从左到右追踪信号流向:激励与SDF汇入仿真引擎,输出带门级延时的波形与时序报告。
时序约束基础
上页看到了时序仿真如何核对每一段延迟,但仿真到底在比对什么?答案就是时序约束——每个数据必须赶在时钟下次敲响之前抵达目标寄存器。
一棒总用时=时钟周期;起跑冲刺=逻辑延迟;伸手准备=建立时间;松手延后=保持时间
外设接口类型
GPIO、UART、SPI、I2C等常用接口
自动化选外设流程
现代FPGA工具把外设配置从手写代码变成参数化向导,五步走完就能拿到可综合的IP核。
引脚分配策略
深色块是高亮步骤,沿判定线看决策逻辑:识别电压→匹配Bank→混压处理→约束生成。
锁定引脚与验证
引脚锁定文件与DRC检查
下载文件格式解析
编译完工程打开输出文件夹,会同时躺着 .sof、.pof、.rbf 几个文件——它们内部其实是同一份比特流,区别只在「打包方式」和「投递地址」。
SOF是巴氏鲜奶(直饮、过期作废);POF是常温奶(常温久存、开罐即饮);RBF是奶粉(纯原料、外部调配再还原)
生成下载文件命令
用 TCL 在 Vivado 中生成 .bit(直接加载)与 .bin(烧 Flash)的命令
write_bitstream 生成 .bit(SRAM 加载);write_cfgmem 打包 .bin(Flash 镜像);-loadbit 用 up 0x0 指定起始地址;glob 检查产物
扩展设计原则
下载文件生成后,工程看似结束。但下次要加功能、或者这段代码要搬到下一个项目——怎么写才省事?这就要靠三个设计原则。
积木是模块,凸点是接口;同一套装拼不同造型是复用;买新积木扩展,不用拆旧的
顶层模块架构
模块互联与信号路由
时钟域交叉设计
芯片内部常有多时钟域(如 CPU 100MHz、外设 50MHz)并行。数据跨域传递,像把货物从一条传送带直接扔到另一条不同时速的传送带——会散落错位,必须设计同步策略。
数据像旅客从 A 国过关到 B 国,海关(同步器)不检查就可能带亚稳态入境
复位电路设计
Verilog 实现同步与异步复位 D 触发器,看敏感列表如何决定复位时机。
差异全在 always 敏感列表:同步版只写 posedge clk,异步版多写 or negedge rst_n,复位边沿一触发立刻响应。
资源评估与优化
从报告里找瓶颈,再针对性优化,最后回归验证,逐步逼近资源预算。
状态机基本概念
前面我们把顶层模块、时钟域、复位电路这些骨架都搭好了,但模块内部到底该如何"记住自己在做什么"、"下一步该做什么"?这就需要状态机——FPGA 里描述时序行为最常用的模型。
所在楼层=状态,按钮+当前楼层→下一楼层=转移,电机方向/门开闭=输出
状态机类型对比
输出何时变化、依赖什么——两种状态机的根本分歧在这里
- 当前状态 + 当前输入共同决定输出
- 输入变化可在同一周期传到输出
- 描述同一功能时状态数更少
- 对输入毛刺敏感
- 仅由当前状态决定输出
- 输出必随状态跳变,晚一拍
- 等价功能下状态数可能更多
- 输出只随时钟翻转,更稳定
状态转移图绘制
看图分两段:上方 a1–a4 是绘制流程,下方 a5–a14 是化简流程(比较→隐含表→递归→合并)。
一段式vs二段式vs三段式
三种风格的Verilog实现对比
状态编码方式
前面已经用状态转移图约定状态集合和跳转关系;现在要把每个状态映射成位串。编码一改变,寄存器、译码逻辑、切换行为与实现代价都会跟着改变。
二进制像连续房间号,独热像每间房单独亮灯,格雷码像相邻房间只改一个号码。
状态机设计实战
三段式 Moore 状态机实现「1011」序列检测,可直接综合。
三段式拆分清晰:状态寄存器锁当前态,组合逻辑算次态,输出独立于输入;Moore 型 dout 比输入晚一拍,体现状态机时序的本质。
状态机仿真验证
状态机仿真不是跑一两遍就完事,状态和转移必须逐条覆盖才算完整验证。
状态机设计自测
关于Moore型和Mealy型状态机输出方式的本质区别,下列说法正确的是?
开发流程总结
- ✓前端后端分阶段把关:仿真不过不进实现
- ✓约束驱动结果:时序、引脚、资源三约束缺一不可
- ✓状态机是控制核心:编码选型决定资源与可靠性
- ✓时钟与复位是地基:跨时钟域与复位决定系统稳定性
- ✓模块化与顶层架构:层次清晰才便于复用与扩展
深入思考问题
先自己思考,再对照参考答案。
参考答案格雷码每次只翻转 1 位,能消除多位同时跳变产生的毛刺,常用于异步 FIFO 指针和低功耗场景。
参考答案多 bit 数据流打两拍可能采样到中间态。需握手、格雷码编码或异步 FIFO 保证多 bit 安全跨域。
参考答案布线失败或出现负 slack。频率超物理极限时,建立时间无法满足,必须降频、改流水线或换更快的芯片。