工程师笔记:从零开始大战FPGA
作者前言:我学习FPGA是因为公司需要,同时自己也想接触这方面的知识,在大规模、高速信号领域还是有一定的优势,总而言之出于共赢的想法吧。自学的话,因为我是会跟着项目学习的,所以就是用到哪部分再去补充哪部分的知识。我的思路是先把基础的语法熟悉,数电和信号处理的知识再扎实一下,同时了解下FPGA代码的规范写法,至于开发工具的话就先大体了解下流程操作,应用的时候再逐渐熟悉。然后在实践中提高实际设计的能力。
可能有些是在校自学的,那么我觉得手头宽裕的可以买块开发板来练习效果会更直观,不宽裕的话找学校从事这方面的老师去当个助理,或者在外实习,都是可行的步骤。另外就是坚持(自古以来说的容易做的难)。
从零开始大战FPGA——第一天(盲人摸象)
之前一直接触ARM,单片机多一些,大多是裸机开发,由于公司需要FPGA这块的工作,只好硬着头皮去学。哎,真是什么都是被逼出来的,我的兴趣本来是想走偏软一点的方向的,现在看来,又远了一步啦,只好有时间了再慢慢学习。打算把每天学习的内容记下来,希望一方面能鞭策自己,另一方面也是将来可以回顾下当初走的路。
由于是个人学习记录,难免有错误之处,望各位看到的亲们可以指正、共勉!
FPGA第一天:
首先,知道了什么叫FPGA(不要鄙视我,虽然我本科时也有集电路和cpld这些课,但纯粹是混过来的,老师名字都不知道),FPGA就是现场可编程门阵列,在我的理解看来就是FPGA里面有非常多的逻辑单元,几十几百万门,然后以编程的手段让这些逻辑单元组成各种各样的电路,实现指定的功能。
了解了FPGA的基本概念后就开始看 Verilog了,(Verilog跟C语言有点像,看起来比较容易,在亚洲用的比较多,也比较灵活。VHDL语法更严谨,美国军方开发的,不好入门,但是可以自定义类型等等,不是很熟悉,在欧洲美洲用的多些?不太确定)公司是做军品的,后期可能需要学习VHDL想想头都大。
抱着书,看了一整天,看完了语法部分,了解了基本数据类型,运算符,语法等等。有以下几点感触:
Verilog本质还是硬件操作。C语言是顺序进行的,Verilog是并行的,这点很重要!
Verilog的精髓感觉是模块化思想(废话,其实所有语言都是模块化...)
wire型变量和reg变量这两个区分比较纠结,现在是记住了,但是并没有理解透(太理论了,需要在实践中区分啊)
initial,assign,always,这几个也有点绕哈哈。
然后看了ISE这个软件的使用(用的片子是Xilinx的多些),一句话,比较繁琐,功能强劲。。。
说说这个软件的流程吧,看了好久才理解的,首先设计大体框架,然后代码编写,然后代码编仿真,然后仿真,仿真完以后把编好的代码整成一张网表,然后用这张网表映射到FPGA的电路上去,然会就会神奇的由代码变成了硬件电路(好伟大啊是吧),然后就是各种约束规则,布线布局。再然后就是再仿真,这个仿真是真实反映实际电路的,再再然后就可以把代码下载到片子啦。
这是我自己的理解和总结,人家官方给每个步骤起了个好听的名字:什么设计文档、仿真、综合、实现、布局布线、仿真、下载,很绕口,反正了解这个软件怎么用就行了,我这只是刚刚接触,根本没有仔细了解其功能,待日后发掘之!
好吧,今天的FPGA就看了这么多,效率不是很高,关键是手头还有其他任务,是关于IC卡的,13.56Mhz的数据收发,头疼,芯片手册看半天也没看懂,明天继续,欢迎大牛们提出宝贵的学习建议,欢迎小牛们指正错误之处,欢迎大伙共勉!
从零开始大战FPGA——第二天(朝花夕拾)
夜深人静的时候最适合总结和学习新东西了有木有啊,嘿嘿。FPGA之旅的第二天,走你! 今天看的东西不是特别多,主要是公司还有其他活要干(说点小感悟:公司是给你钱让你产生效益的,而学校是你花钱买教育的,这是我看来本质的区别,后来者一定要转变好心态和思维),但是学习还得继续。废话结束!
回顾:昨天主要看了一些基本的语法(我是以夏宇闻的书为参考书,其他的用到时再去拓展),首先复习吧(年纪大了一下就忘了)。
wire和reg的区别(自己的理解,望大牛批评指正):从仿真角度看,wire对应的连续的赋值,比如assign;reg对应过程赋值,比如always、initial;从综合的角度来看,要对应实际的电路,wire综合出来的结果就是一根导线,就起连接作用。reg比如在always中综合的结果就是逻辑电路,比如or、and这些门电路,没有时钟的边沿。另一个结果是带有时钟边沿的,综合出来就
- 浅析FPGA设计流程及布线资源(02-06)
- FPGA硬件电路的调试必备原则和技巧(02-16)
- FPGA工程师:如何在FPGA中实现状态机?(03-01)
- 新手福音:概述学习FPGA的一些常见误区(08-27)
- LT3751如何使高压电容器充电变得简单(08-12)
- 三路输出LED驱动器可驱动共阳极LED串(08-17)