本人电子专业大二,想自学FPGA,目前数电基础一般,C语言学过一点。看到网上有人说先刷一遍Verilog语法再看开发板,也有人说直接买板子边点灯边学。纠结死了,求过来人指点一下到底怎么起步最不容易劝退?另外如果直接上手,第一周该做点什么才不算瞎折腾?
FPGA零基础自学,先学Verilog语法还是直接上手开发板点灯?
3 个回答

我也经历过你这个纠结,而且我当时比你更惨,数电都还没学完。我的结论是:别把语法当第一关,直接上板子,但上板子前花三小时把最核心的那几个语法点过一遍。你想想,Verilog语法再多,你第一周真正用到的无非就是module、input/output、wire/reg、always、assign、posedge,再加一个parameter。这些东西你刷一遍语法书可能要两周,但你在点灯例程里边改边查,两天就熟了。关键区别在于,语法书给你的是一堆规则,而开发板给你的是反馈。你写错一个分号,Vivado报错,你改,编译,下载,灯亮了——这个闭环比你看十页书都记得牢。而且FPGA最劝退的不是语法,是你写完代码不知道它在硬件里到底怎么跑的。点灯能让你直观看到always块和assign的区别:assign是组合逻辑,always里带posedge是时序逻辑,灯一亮一灭,你瞬间就懂了。所以我的建议是:第一周买块板子,先跑通官方LED例程,然后自己改三个东西:改计数器的位宽让灯闪得快一点慢一点,改成按键控制灯亮灭,再加一个复位按键。这三件事做完,你基本就把时序逻辑、组合逻辑、同步复位这几个核心概念全摸到了。至于语法书,当字典查,别当教材读。等你点灯点烦了,自然会想去做串口、PWM,那时候再回头系统补语法,效率高得多。唯一要注意的是别陷在例程里只会改参数,第二周开始一定要自己从头写一个模块,哪怕只是把LED闪烁的计数器单独封装成一个module,再例化两次,你就开始理解模块化设计了。另外你C语言学过一点,其实有点帮助,但别拿C的思维硬套Verilog,C是顺序执行,Verilog里always块是并发的,这个弯转不过来会很难受。总之,先动手,让灯亮起来,你就有动力继续了。你现在手上的开发板是什么型号?如果是正点原子或者黑金的话,他们例程里的LED部分写得挺清楚的,可以照着抄一遍再改。

直接上手板子,别刷语法。你数电基础一般,C语言一般,刷语法书大概率刷到always和assign就困了,然后怀疑人生。买块板子,找个带按键和LED的例程,第一周就干三件事:编译下载官方例程,把LED闪烁改成按键控制,再把闪烁速度改一改。语法遇到不懂的查一下,查完继续干。等你做完这三个,Verilog的核心语法你基本都用过了,比看书快三倍。别追求第一周把Vivado所有功能搞懂,能下载程序就行。另外提醒一句,数电基础弱不要紧,但时序逻辑的寄存器概念最好先花半小时搞明白,不然看always块会懵。

你纠结的这个问题,本质上是在问「先学工具还是先学语言」,但FPGA入门有个反直觉的地方:工具链的陌生感比语法更劝退。我建议你第一周别碰语法书,也别急着买板子,先干一件事——把Vivado或者Quartus装好,随便找个官方模板工程,点几下编译生成比特流,下载到板子上让LED亮起来。这一步能让你把「写代码—综合—布局布线—下载」这条链路走通,哪怕代码是复制的,你也知道了「哦,原来FPGA是这么跑起来的」。完成这个之后,再回头花三天看Verilog的module、wire/reg、always、assign这几个核心语法,配合按键点灯和流水灯例程边改边查,效果比抱着书啃两周强得多。为什么这么排序?因为语法是死的,你迟早会查得到,但「工程流程怎么跑通」这种经验,没人带你的时候最容易卡住——很多人就是卡在不知道Vivado报错日志怎么看、管脚约束文件怎么改、下载器驱动怎么装这些破事上,然后误以为自己不适合学FPGA。你数电基础一般没关系,只要搞懂一个概念:always块里的reg在时钟边沿才更新,assign是组合逻辑随时变化,这两个的区别能在点灯例程里直观看到,比看书明白十倍。第一周具体安排:第一天装软件、跑通官方LED闪烁例程;第二天改成按键控制LED亮灭,顺便学会看管脚约束;第三天做流水灯,用parameter改一下延时参数;第四天把流水灯改成按键切换方向;第五天复盘,把用到的语法查一遍记笔记。这样一周下来,你既有了「我能控制硬件」的正反馈,又被动接触了最核心的语法,后面再深入时序分析、状态机的时候,你至少知道自己在调什么。最后提醒一句:别在语法书上画重点,也别收藏一堆教程,你的目标是让灯亮起来,不是成为Verilog语法专家。你手头打算买哪家的板子?如果是正点原子或者黑金,他们的例程里管脚约束文件都是现成的,能省不少事。
发表回答
登录后可在本页底部提交回答