FPGA 从入门到放弃(再到入门)
写在前面
第一次接触 FPGA 的时候,我感觉像回到了 51 单片机时代 —— 啥都得自己写,啥都得自己配。但一旦理解了"硬件描述语言"的本质,会发现它比单片机好玩得多。
这篇文章是我自己折腾 FPGA 一年多的小结,不是教程,更像一份避坑指南。
一、FPGA 是什么(一句话版)
FPGA = 现场可编程门阵列。
你可以把它想象成:
一堆空白的数字电路积木,你写代码告诉它"怎么把这些积木拼起来",它就变成了一块定制芯片。
和单片机的区别:
- 单片机是软件驱动硬件(写 C 代码,跑在固定硬件上)
- FPGA 是软件定义硬件(写 HDL,直接生成电路)
二、为什么学 FPGA
| 场景 | 为什么 FPGA 更合适 |
|---|---|
| 高速并行(图像 / 通信) | FPGA 可以并行处理,单片机只能顺序执行 |
| 低延迟(电机控制 / 协议) | FPGA 纳秒级响应,单片机微秒级 |
| 灵活协议(UART / SPI / I2S ...) | 自己写 IP 核,周期可控 |
| 验证 ASIC 设计 | 流片前先用 FPGA 验证逻辑 |
对我来说,学 FPGA 的最大动机是:理解了它,看任何芯片的数据手册都会快很多。
三、硬件描述语言(HDL)选哪个
主流就两个:
| 语言 | 风格 | 适合 |
|---|---|---|
| Verilog | C 风格,语法宽松 | 工业界主流,上手快 |
| VHDL | Ada 风格,语法严格 | 军工 / 航空,欧洲多 |
建议:
- 初学 → Verilog(资料多、岗位多、好学)
- 想严谨 → VHDL(但学习曲线更陡)
- 别纠结 → 两个都了解一下语法,后续主要用 Verilog
个人体感:Verilog 像是写代码,VHDL 像是填表格。
四、开发流程
1. 需求分析(我要实现什么功能)
↓
2. 画框图 / 状态机
↓
3. 写 Verilog 代码
↓
4. 写 testbench(仿真)
↓
5. 功能仿真(modelsim / vivado simulator)
↓
6. 综合(把 HDL 转成门级网表)
↓
7. 布局布线(把电路放到 FPGA 物理资源上)
↓
8. 时序仿真(带延迟的仿真)
↓
9. 烧录 + 上板调试
关键点:
- 第 4 步 testbench 一定要写,不要直接上板调,会崩溃
- 第 7 步如果时序不收敛,要回头改代码或换更快的器件
五、入门学习路线(我自己走过的)
阶段一:点灯(1-2 周)
目标:让板子上的 LED 亮起来
- 学 GPIO 输出
- 学时钟分频
- 写一个 LED 闪烁的模块
不要小看点灯,很多复杂项目都是从这开始的。
阶段二:按键 + 数码管(2-3 周)
目标:按键控制 LED / 数码管显示
- 学按键消抖
- 学有限状态机(FSM)
- 写一个简单的计数器
阶段三:UART 通信(3-4 周)
目标:实现串口收发
- 学波特率生成
- 学串口协议
- 写 UART TX / RX 模块
做到这里,基本可以应付电赛 / 课设的大部分需求。
阶段四:综合项目(1-2 月)
推荐练手项目:
- VGA 显示字符 / 图像
- I2S 音频播放器
- 简易示波器 / 信号发生器
- 数字滤波器(FIR / IIR)
六、推荐开发板
| 板子 | 厂商 | 特点 | 价格 |
|---|---|---|---|
| 小梅哥 AC620 | 小梅哥 | 资料多,Altera Cyclone IV | ¥200 |
| 正点原子 ZYNQ | 正点原子 | ZYNQ 7020,带 ARM 核 | ¥500 |
| 黑金 AX7020 | 黑金 | 同上,资料稍弱 | ¥400 |
| 野火 ZYNQ | 野火 | 配套教程最好 | ¥600+ |
我的建议:初学选 小梅哥 AC620 或 正点原子 ZYNQ,别买太高端的,资源过剩用不上。
七、必备工具
| 工具 | 用途 |
|---|---|
| Vivado | Xilinx 官方,适合 ZYNQ / 7 系列 |
| Quartus | Altera 官方,适合 Cyclone 系列 |
| Modelsim | 仿真工具,工业级 |
| SignalTap | Vivado 内嵌逻辑分析仪,在线抓信号 |
| Notepad++ / VSCode | 写代码 |
避坑:别用 Quartus 较新版本(13.0+),对老器件支持有问题。
八、常见误区
- ❌ 把 Verilog 当 C 写:Verilog 描述的是电路,不是顺序执行的代码
- ❌ 跳过仿真直接上板:95% 的 bug 都能在仿真阶段抓到
- ❌ 追求资源利用率:FPGA 资源没那么贵,代码可读性更重要
- ❌ 死磕时序收敛:有时候换个实现方式比死磕工具链有效
九、学习资料
入门
- 小梅哥 AC620 配套视频(B 站)
- 正点原子 ZYNQ 教程(哔哩哔哩)
- 野火 ZYNQ 教程
进阶
- 《Verilog 数字系统设计教程》(夏宇闻)
- 《FPGA 设计实战演练》(吴厚航)
- 《数字信号处理的 FPGA 实现》(Uwe Meyer-Baese)
社区
我的下一步
接下来打算写:
- ✅ UART / SPI / I2C 的 FPGA 实现
- ✅ 简易示波器项目复盘
- ✅ ZYNQ + ARM 核的双核通信
有什么想看的,评论区留言 ~
FPGA 入门曲线陡,但一旦跨过去,你会打开新世界的大门。