课程前置说明(模块整体定位)
1.1 核心定位
筑基篇是整个专栏的前置入门地基,专为FPGA零基础、软件转硬件、在校初学者打造。彻底解决新手三大痛点:看不懂FPGA体系、不会用AI工具辅助开发、不懂硬件思维逻辑。
区别于传统铺垫式水文,本篇完全贴合AI+FPGA全新开发模式,不堆砌老旧理论,只讲2026年工程落地必备知识,为后续【模块一纯逻辑开发、模块二Zynq开发】全程铺路,让学员跳过盲目自学、踩坑试错阶段,直接进入高效实战学习状态。
1.2 基础信息
- 适配人群
FPGA 零基础、嵌入式软件转岗、电子专业萌新、AI 算法想做硬件部署的开发者
- 零门槛要求
仅需掌握基础 C 语言,无需数字电路、FPGA、硬件开发经验
- 核心工具
Vivado 2019.2、Gowin_V1.9.12.03 (64‑bit)(如果用到国产FPGA、我的手里还没有硬件板卡)
1.3 筑基篇结业能力
建立AI硬件开发思维,区分软件编程与 FPGA 硬件设计的核心差异
精通 FPGA 全开发流程,掌握 Vivado 工程创建、编译、仿真、上板全操作
熟练使用 FPGA 专属 AI 工具链,掌握专业 Prompt 写法,告别无效提问
读懂 FPGA 硬件架构、芯片资源、板卡选型逻辑,规避新手选型坑
掌握 FPGA 学习方法论、排错思路、工程规范,建立职业化开发习惯
重新认识FPGA:AI浪潮之下,跳出软件思维做硬件
课时导读
很多初学者踏上FPGA学习之路的时候,第一件事就是直接啃Verilog语法,复制网上开源例程跑仿真。仿真波形一切正常,一旦下载到开发板上,功能就异常。
现在又出现了更普遍的现象:初学者直接把需求丢给大模型,一键生成Verilog代码。仿真可以跑通,上板之后随机出错、出现亚稳态、时序违规。究其根本:AI可以帮你产出RTL代码,但是AI无法帮你建立硬件思维。如果你本身分不清硬件并行和软件串行,你就没有能力审查AI输出代码的对错。
本节课,我们不从门电路开始死记理论;站在AI辅助开发的视角,重新理解FPGA芯片本身,厘清软件开发者思维上的鸿沟,同时明确定位AI在整个FPGA项目开发流程当中所处的位置。为本专栏后续全部实战内容打好思想层面的地基。
1 FPGA、MCU、CPU本质工作模式对比
1.1 CPU/MCU(单片机):时间复用的串行执行
传统CPU、单片机是基于指令流完成运算。程序的指令按照顺序读取、译码、执行。即便采用多核、流水线技术,内核内部依旧是串行处理模型。
核心特点:一套运算硬件资源,在不同时间分片完成多份计算任务,时间换资源。
举例:单片机实现多路加法运算,采用for循环分时计算,利用时间分片依次完成。硬件只有一组加法器,反复复用。
1.2 FPGA:空间并行的可编程硬件
FPGA内部并不是预先写好的处理器,内部是海量可编程资源单元:LUT查找表、FF触发器、BRAM块存储器、DSP乘法运算单元、IO引脚资源。Verilog描述的不是“执行步骤”,而是硬件电路之间的连接关系。经过综合之后,直接在芯片内部搭建起一套定制的数字电路。
核心特点:复制多套硬件电路,同一时钟周期内多路运算同时运行;以芯片资源换取低延迟并行计算能力,空间换时间。
举例:同样实现10路并行加法运算;FPGA可以直接实例化10个独立加法器,同一个时钟边沿一次性输出全部运算结果;代价就是消耗更多DSP以及逻辑资源。
新手常见认知误区:普通纯逻辑FPGA内部没有ARM处理器硬核;Zynq系列是FPGA逻辑部分+ARM硬核集成在同一块芯片上,属于软硬协同SoC架构,后面模块二会详细展开。(这里补充一点就是软核,遵循精简指令集计算(RISC)原则,用于运行软件程序。比如microblaze、armv7-m等。)
1.3 FPGA内部基础资源速览(建立宏观印象,不用背诵)
- LUT(查找表)
主要用来实现各类组合逻辑,等效搭建逻辑门电路;
- FF(触发器)
时序逻辑核心单元,用于寄存器寄存数据,跟随时钟边沿完成数据更新;
- BRAM(Block RAM)片上块存储
FPGA内部专用存储器资源;适合缓存中间数据、FIFO;
- DSP Slice运算单元
硬件乘法、乘加运算;信号滤波、FFT、神经网络算子加速主要依靠DSP;
- IOB引脚资源
芯片对外物理引脚,连接板卡外设。
2 FPGA开发板选型方法论(新手如何避坑)
新手选购开发板经常出现两类问题:一是盲目选购高价高端开发板,资源严重过剩;二是贪图低价,板卡逻辑资源太少,后期跑稍微复杂一点项目直接报资源不足。
选型评估优先看4个指标:
- 逻辑资源规模(LUT、FF数量)
入门练习项目几千~两万LUT够用;后期做信号处理、AI算子加速尽量选择五万LUT以上规格;
- BRAM、DSP数量
做数字信号处理、神经网络算子,DSP数量属于硬性指标;
- 板载外设资源
LED、按键、OLED显示屏、HDMI、千兆以太网;初学阶段尽量外设丰富;
- EDA工具链生态
Xilinx Vivado生态工程案例、参考资料最多;国产高云Gowin适合低成本国产化学习。
本专栏学习建议:大家初学可以优先选择Artix‑7系列或者高云GW2A系列开发板。
3 软件思维 VS FPGA硬件思维(本课时重点)
软件出身的学习者最大障碍,就是旧有的顺序执行思维惯性。
对比项 | C语言软件开发 | Verilog FPGA硬件开发 |
|---|---|---|
执行方式 | 语句串行顺序执行 | 硬件天然并行,多个always块同时运行 |
循环语义 | for循环:时间上反复执行指令 | generate循环:空间上复制多份硬件电路,直接消耗芯片资源 |
临时数据存储 | 内存 | 触发器FF / BRAM存储块 |
性能优化思路 | 优化算法,减少指令运行周期 | 增加硬件资源换取更低延迟、更高吞吐 |
高频踩坑提醒:很多软件转硬件学员直接在always块内部写for循环,期望实现软件式循环运算;综合工具并不会按照时间循环运行,行为完全不符合预期,后续课时会结合AI生成错误代码实例演示该坑点。
关键认知:写Verilog不是写程序,而是描述一张硬件电路蓝图。写每一行RTL的时候脑海里面尽量脑补对应的硬件电路结构。
4 AI在FPGA开发当中的正确定位(AI时代新认知)
当下很多学习者的工作模式:直接丢需求给大模型复制RTL代码直接上板调试。这种模式隐患非常大。
AI可以完成的工作
根据需求快速输出RTL初稿;
辅助编写Testbench仿真激励;
辅助解读Vivado综合报错、Warning日志;
辅助整理约束文件,解释时序相关概念。
AI不能够完成的工作
AI无法自动保证时序收敛;
AI并不了解你手上这块开发板真实引脚定义;
AI生成代码很容易忽略复位、跨时钟域、亚稳态等关键问题;
AI无法替代开发者完成顶层架构划分与方案设计。
本专栏推荐AI辅助FPGA开发标准工作流
人做顶层架构设计 → AI完成子模块RTL初稿 → 人工审查代码风险点 → Testbench仿真验证 → 综合时序分析 → 上板实测调试
一句话总结:AI是你的开发助手,不能替代开发者本身的硬件思维。
5 筑基篇后续课程预览
筑基篇一共6课时,后续课程规划简要预览:
第2课时:Vivado与Gowin开发环境安装,完整工程实操:新建工程、综合、生成比特流;
第3课时:仿真详解:行为仿真、综合后仿真、时序仿真三者区别,仿真的意义;
第4课时:FPGA场景下如何撰写高质量Prompt;搭建属于自己的FPGA提示词库;
第5课时:FPGA排错方法论;读懂工程Warning与Error日志;梳理新手高频故障;
第6课时:筑基篇综合实训:流水灯工程,Vivado与Gowin双平台实操;筑基篇结业复盘,正式开启纯逻辑开发模块。
📝课后(建议个人笔记记录,非强制提交)
简述CPU串行执行与FPGA硬件并行的本质区别;
直接复制AI生成RTL代码直接上板,会带来哪些潜在风险;
调研1‑2款适合初学者的FPGA开发板,记录板卡LUT、DSP资源指标。
课时小结
本课时我们完成思想层面的转变:学习FPGA第一件事情不是急着写语法,而是完成思维的切换,从软件串行思维过渡到硬件并行思维;同时摆正AI助手在整个开发流程当中的位置。只有先建立正确的硬件视角,后续Verilog语法、时序分析、Zynq软硬协同学习,才能够少踩大量自学阶段的坑。下一节课正式进入开发环境的安装与工程实操。
本课时配套参考资料
说明:本课时参考资料分为官方手册、书籍资料、网络学习资源三类,适合课后拓展阅读。
下载链接:链接:https://pan.quark.cn/s/5dd260db5bff
一、官方文档(优先查阅)
AMD(Xilinx)UG888 Vivado Design Suite Tutorial: Design Flows Overview,Vivado整体设计流程官方教程;
高云半导体《Gowin云源软件用户指南》,国产FPGA工具基础流程参考;
Artix‑7系列器件DataSheet,熟悉LUT、FF、DSP、BRAM硬件资源定义。
二、书籍参考
《EDA原理及Verilog HDL实现》何宾,清华大学出版社;适合零基础建立数字硬件概念,同时覆盖国产高云平台内容;
《深入浅出玩转FPGA》吴厚航;适合初学者理解FPGA完整开发流程。
三、网络拓展阅读
Thinking‑in‑Hardware(FPGARelated)网页文章:Everything happens at once,理解硬件并行思维(英文);
Xilinx官方在线培训文档:FPGA基础概念入门。
✨阅读建议
本课时只需要快速浏览上述官方文档的概述章节,不需要通读整本手册;先建立宏观认知,后续课时随着工程实践再回头细读对应章节。