原创 如何学习FPGA?FPGA学习必备的基础知识

2015-2-13 09:35 1229 17 18 分类: FPGA/CPLD

FPGA已成为现今的技术热点之一,无论学生还是工程师都希望跨进FPGA的大门。网络上各种开发板、培训班更是多如牛毛,仿佛在告诉你不懂FPGA你就OUT啦。那么我们要玩转FPGA必须具备哪些基础知识呢?下面我们慢慢道来。

(一) 要了解什么是FPGA

既然要玩转FPGA,那我们首先最重要的当然是要了解什么FPGA。FPGA(Field-Programmable Gate Array),即现场可编程门阵列。看到编程两个字码农就笑了,不就是编程嘛,那可是我们的强项。且慢,此编程非彼编程。一定要把FPGA的编程和软件编程区分开来。软件的编程,处理器会逐条的把语言翻译成各种控制信号,去控制内部电路完成一个个运算或操作。那么FPGA的编程是怎么实现的呢?无论Altera家还是Xlinix家的FPGA,叫法有什么差异,基本单元都相似,都是由真值表和D触发器构成。改变真值表的值就改变了逻辑功能,再通过和D触发器组合来实现任何时序逻辑。所以我们对FPGA的编程,实际上就是去修改这些真值表和连接关系,使他们组成一张专门的真值表,去实现特定的功能。这和软件编程一步步运行程序有本质的区别。要想玩转FPGA,就必须理解FPGA内部的工作原理,学习如何利用这些单元实现复杂的逻辑设计。

(二) 正确理解HDL语言

HDL(Hardware Description Language),硬件描述语言。通过名称我们能看出来,HDL语言是一种“描述”语言,这一点和C语言是有本质区别的。正确理解描述的含义,对学好HDL语言很有帮助。HDL语言只是用文本的方式把硬件电路描述出来。我们在阅读HDL程序的时候,在脑子里应该能反映出一个完整的硬件电路结构。从另一方面说,我们在编写HDL语言之前,就已经对要实现的电路有清晰的概念。所以HDL语言只是一个描述我们头脑中具体电路的工具,玩转FPGA的根本不是语言而是逻辑电路设计。不要再纠结于我应该学习VHDL还是Verilog,那种语言更好学这些问题。如果把学习FPGA的重点放在学习语言上,死记硬背一些语法,那自然是抓错了重点。语言在日常使用中会越用越熟练,不需要花很长的专门时间去学习。当然一本好的参考资料可以随时方便查询会是很有帮助的。

(三) 数字电路基础

说到底,FPGA就是一堆数字逻辑组合在一起实现特定功能而已。所以数字电路基础知识是根本。如果你连触发器,组合电路,时序电路,竞争,毛刺等等基本概念还莫能两可不清不楚的话,那玩转FPGA只能是痴人说梦的幻想了。我们必须要好好的学好数字电路基础这门课,基本的数字电路烂熟于心。把这些基础打牢固,再往更深的方向发展。什么时候能够从抽象的算法中提炼算法的结构,再分解成具体的模块并通过硬件电路实现出来,这时候就算从菜鸟级别步入老鸟级别了。

(四) 硬件设计思想

这一点应该说是重中之重。学习FPGA,一定要有硬件设计思想。在软件编程的时候,比如1秒钟能实现5次乘法运算,那系统要求1秒钟实现50次乘法运算怎么办,我们会尽可能的优化代码,让代码更简洁更高效,或者提高系统主频,让系统跑的更快。但是在FPGA里面我们不是这种思维方式。在FPGA里实现一个乘法器不够用,那我就实现两个实现三个去满足系统要求;我可以进行流水线设计;串行运行方式不够快了,我可以先串并转换,再并行的做处理……只要FPGA的资源够用,我可以充分利用资源去满足系统要求。因为在我手里的就是一堆硬件资源,我要做的是把他们组合成一个好用的电路。评价硬件描述语言写的好坏的标准和其他软件编程语言的标准是完全不同的。因此一定要摒弃软件编程的一些固有思路,学会用硬件的方式去解决问题。时刻提醒自己正在设计的是一个电路,而不是一行行空洞的代码。这是很多做软件编程的人很难跨过的坎。FPGA学了很久还在纠结到底是用if_else语句好呢还是用case语句好?而不能透过这些语句表面看到他们所具体代表的电路。只有建立了硬件设计思想,才有更深入学习FPGA的可能。 FPGA入门简单精通难。要想入门,买一块开发板跟着例程走一遍,很多人都能在很短的时间内熟悉开发软件的操作方法并且点亮开发板上的LED或者再实现个跑马灯什么的。但是再往后进步往往就进展很慢。上面提到的这四条是玩转FPGA的基础,只有打好了坚实的基础后面才能一马平川。希望每个学习FPGA的人最后都能成为大牛,设计出自己的完美电路。

文章评论1条评论)

登录后参与讨论

用户592202 2015-1-29 11:37

补充一点:硬件描述语言的作用,就是把需要的物理电路(以及子电路)的外部特性说清楚。那么,是对谁说清楚呢?当然不是对我们描述者,而是对真正的“设计者”--EDA(Electronics Design Automation 即电子设计自动化)。最后由EDA完成电路的真正实现。人只是进行电路的“上层”说明,而由EDA进行“下层”设计。
相关推荐阅读
用户402158 2016-05-12 15:36
【感恩回馈】 4月热心博主来领书啦
亲爱的博主朋友们,   感谢你们一直在EDN奉献好文章,使各位朋友受益匪浅,为了鼓励大家,我们选出了4月份的几位热心博主,各奖励一本电子书籍,书籍及获取方式我们将会私下联系您。 (PS...
用户402158 2016-04-20 10:06
2016博客大赛第1季获奖名单
2016第一季度博客大赛不设主题,感谢网友们带来的价值原创、翻译博文和连载专栏。谢谢大家一致的支持和分享。   2016第二季博客大赛火热进行中,依然不设主题,期待您的参加。   ...
用户402158 2016-02-04 15:54
2015博客大赛第4季获奖名单
2015博客大赛第4季聚焦技术类,聊技术类:嵌入式、可编程、DSP。谢谢大家一致的支持和分享。   2016第一季博客大赛全新起航,大奖升级,不设主题,我们将重点关注能为网友带来价值的原创...
用户402158 2015-12-02 16:12
EDNChina高级编辑器使用指南,教你轻松写博文
EDNChina高级编辑器使用指南 为了方便网友更快速发表、编辑或修改文章和帖子,EDNChina升级了编辑器功能(博客、论坛、小组),欢迎您使用并提出宝贵意见!   进入编辑状态,您...
用户402158 2015-12-02 15:44
博文超过字数限制?一键清除文字格式或一键排版解忧愁!
近期有网友反馈,在使用高级编辑模式编辑博文时,无论是直接从word粘贴过来还是用上传word文档的方式,字数都超过了限制。 无论从word还是网页,直接的复制粘贴都带有原文中的大量无关代码,为...
用户402158 2015-10-30 11:01
EDN-China招聘网络编辑啦!
职位描述   A.   电子行业分析师/编辑        电子行业分析师/编辑主要负责主编分派的采访/写作、杂志内容等工作   1.   积极通过多种渠道追踪电子行业技术...
我要评论
1
17
关闭 站长推荐上一条 /2 下一条