时间:2025-08-01 来源:FPGA_UCY 关于我们 0
这个问题让我回忆起了十年前自己刚学FPGA时的难忘经历。
那是大三上学期FPGA的第一节课。
老师说,FPGA功能非常强大。硬件可编程,用代码定义硬件逻辑。
任何单片机能实现的功能,FPGA都能实现。
甚至可以在一个FPGA内实现多个8位或32位的单片机。
自己就这样带着一种高大上的感觉入坑了FPGA。
当时自认为c语言功底还可以,还参加过c语言程序设计大赛,觉得FPGA 肯定能学好。
后来才发现硬件和软件的思维方式完全不一样。
软件是一条条代码顺序执行,而硬件完全则是并行处理。
VHDL里没有主函数,只有不同功能的电路模块。
不过思维模式切换回硬件后,之前很多的编程训练对学习VHDL和verilog 还是很有帮助的。
FPGA确实远比单片机灵活和强大,自从接触了FPGA,自己的单片机开发板就失宠并开始吃灰了。。。
当时没钱买FPGA开发板,平时只能在Quartus II上做个仿真,看看波形。
只有FPGA的实验课上才能过把瘾。
不过老师的实验课安排的非常好。
最令我影响深刻的一个实验是用FPGA控制16*16的点阵显示自己的姓名。
老师事先给了代码,只不过是显示的学校名称,所以需要学生把学校名称改成自己的名字。
自己自认为编程基础很好,当然不愿意就这样简单改一下老师的代码。
要做就做一个更酷的:像广告牌一样滚动显示自己的名字。
那几天的脑子完全被FPGA占据了。
稍微有点课余时间就开始写代码。
然后就是盼着实验课快点到来,以便验证自己的设计。
终于盼到了,实验课上自己带着略微紧张的心情开始用 quartus 综合自己的代码。。。
刚开始有几个ERROR,很快改好了。
终于RTL综合完了,没有报错。
接着是布局布线和生成下载文件。
等了半天,跳出一个 ERROR:
逻辑资源超出限制。。。
因为自己当时用软件的思维方式去写VHDL,没有考虑任何硬件复用,结果编译出来的代码巨耗资源。
而实验室的实验箱比较落后,FPGA的逻辑资源不过几百K。
接下来的几天,自己重新思考整个逻辑,把原来的代码推倒重来。
这次的思路更加清晰,代码也更加简洁。
经过反复debug ,终于实现了预期的效果。
现在还记得老师看到自己的demo时充满欣赏的表情。
老师还专门把代码拷贝走,说要给下一届学生看看。
一不小心扯了这么多。不知道对各位学FPGA 有没有帮助。
下面步入正题:
首先,很高兴你喜欢FPGA,这是嵌入式领域比较好就业的一个方向,而且待遇不错。
我将入门学习分为四个部分,干货满满,推荐收藏。
第一部分 基础知识学习
1.《数字电路设计》,必备知识
当时自己学的是闫石老师写的这本书。比较经典。
看书的时候没必要纠结细节,知道常用的逻辑电路极其原理,知道什么是组合逻辑,什么是时序逻辑,以及同步和异步电路即可
2.《verilog 程序设计》,必备知识
我当时用的是夏宇闻老师的书。如果有数字电路和c语言的基础,学verilog 会很快。因为verilog 语法和c很像。但切记你写的是电路,不是程序。
学习的时候在电脑上装一个modelsim 或vivado ,一边学verilog 语法一边写代码做电路仿真。这样不至于太乏味,同时还能学会如何看波形和时序。
3.《c语言程序设计》,推荐学但非必须。推荐学的原因如下:
c语言是非常基础,且靠近底层硬件的语言,将来无论做硬件还是软件,c都能用的上。
比如,现在很多高端FPGA都集成了arm核,可以直接用c编程。
而且学好了c,其它高级语言学起来也会快很多。
推荐谭浩强老师的《C语言程序设计》。这本书应该是中文书籍中最适合初学者的。
我是高三暑假看谭浩强老师的书入门的c 。自己看了好几遍。大一时,当班里很多人还不知道什么是c语言时,自己已经过了计算机二级。
这也为后来参加各种专业比赛打下了良好的基础。至今仍然很感激谭浩强老师这本书。
第二部分 FPGA实践
(与第一部分同步进行)
在学习以上知识的同时,买一块配有丰富学习资料的FPGA开发板。边看书边做开发板的配套实验。
所做的实验务必亲手敲一遍代码,并理解清楚每行代码的含义。然后再适当对代码进行修改,验证所学。
除了做实验之外,把常用的逻辑电路都写一遍(做仿真即可),比如:
1. 加法器
2. 乘法器
3. 计数器(最常用的电路之一)
4. 同步复位电路/异步复位电路
5. 译码器
6. 多路选择器
7. 移位寄存器
8. 状态机(这里面的学问很多)
9. 同步FIFO
10. 异步FIFO
等等
第三部分 做DIY设计
基本功打好以后,可以再根据自己的兴趣做一些有趣的小项目,比如:
1. SPI
2. UART
3. FIR滤波器
4. FFT快速傅里叶变换
5. AES/SM4等分组密码算法的硬件实现
6. Cordic (这是一个非常有趣的算法,可计算sin/cos/sinh/cosh/ln/exp等很多数学运算)
7. cpu(可以参考开源risc-v项目的源码)
等等。。。
中途不断学习积累,相信你能做的越来越好。
第四部分 FPGA学习网站
1、opencores
开源IP最多的网站,我以前经常在上面找源码。现在好像国内注册不了,需要外网IP才能下载注册。
Home :: OpenCores
2、黑金动力社区
黑金开发板的官方博客,博客有FPGA的教程。
FPGA黑金开发板 - 博客园
3、FPGA官网
毫无疑问,FPGA的两大主力厂商的主页有非常多官方技术资料。
很多复杂的或是不常见的问题都可以在上面找到解决方法。
http://www.xilinx.com/
http://www.altera.com.cn/
我有时候遇到难以解决的问题会在官网上提问或者发邮件,基本上都有回复。
4. ZipCPU
About ZipCPU
讨论 FPGA 和软核 CPU 设计。该站点专注于 Verilog 解决方案,专门使用用于 FPGA 设计的开源 IP 产品。