这个问题让我回忆起了十年前自己刚学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 产品。 如果本文对你有帮助,记得点赞、关注! |
19款电子扎带
电路板识别电子标签