经过论坛里如火如荼的FPGA DIY活动就能看出来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的人最终都能成为大牛,规划出自己的完美电路。