FPGA 需要学习的东西还很多需要哪些东西

你认为想学FPGA的话,先学好什么才最重要?_fpga吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:10,382贴子:
你认为想学FPGA的话,先学好什么才最重要?收藏
  【】我们玩FPGA的通常就是跟数字电路打交道,要想玩得转,必须先学习并掌握最最基础的数字电路和HDL硬件描述语言,当然这只是入门必备,实际上远远不够。个人拙见,要入行除了至少掌握一种FPGA的仿真及开发调试流程之外;起码还要了解一些模拟电路知识,掌握诸如电源纹波、时钟抖动、信号质量等经常需要测量的硬件参数的测试方法;起码还要掌握一种原理图和Layout设计软件,能够查看分析调试电路板上的电路模块,如电源、时钟、存储器、配置、I/O和高速收发器等模块;起码还要掌握一种单片机的开发流程,项目中难免有一些需要配置控制的需求,使用外置单片机或者内置ARM硬核或者其他软CPU来实现,简单又方便;由于本人水平有限,其他方面这里就不再赘述。  那么,针对FPGA入门学习的一般流程,简单总结一下,供朋友们参考,有经验的大牛可以绕道:  1.首先要有开发平台,把该准备的都准备好,磨刀不误砍柴工:  比如ALTERA的Quartus II软件、开发板和配置调试工具USB Blaster,以及仿真软件Modelsim SE。软件可以从网上下载,入门功能的许可的和谐方法一大堆;开发板和USB Blaster可以借,可以买,动手能力强的朋友,自己画一块也行。对于初学者,建议找一块有详细配套教程的开发板。  2. 对于新手来讲,按部就班地学习往往就是最快的学习方法:  照猫画虎尽管囫囵吞枣一知半解,但起码能把开发流程摸熟,能跑起来。刚拿到开发板,肯定是丈二和尚摸不着头脑。这个时候,建议先根据开发板的配套教程,把原理图上的各项模块功能厘清,把FPGA周围的电源、时钟、复位、配置、GPIO和连接器等的电路原理理一理分析分析。再按照配套教程中介绍的流程,把配套的测试工程跑通,在这个阶段,把FPGA开发所涉及的RTL输入,综合、前仿真、布局布线、后仿真、配置调试的流程摸清楚。学习新东西的过程中,难免会出现一些不熟悉的“疑难杂症”,切莫灰心,坚持就是胜利。当然,往往这个时候,有些朋友开始嫌弃教程写得冗长、写得烂,或者碰到英文教程推辞看不懂,就开始闭门造车,天天碰壁,逐渐丧失兴趣和信心,当开发板上面落满了灰,你还好意思在跳槽的时候吹牛有过如何丰富FPGA经验吗?  3. 熟悉了开发流程:  接下来就可以分析或者改写原教程中的代码或者模块,有针对性地去实现一些功能模块,并且通过一些软件自带的调试组件来辅助验证结果是否符合预期,如SignalTap II等。无论是原厂的单板,还是FPGA爱好者做的单板,配套例程都会有一些经典的电路实现案例,比如基本的分频器,简单的I2C通信、SRAM读写控制,以及稍微复杂的SDRAM读写控制等,认真分析别人如何写代码实现所观测到的时序,与此同时,阅读相应模块手册或者器件内部组件文档中的时序描述章节来对比分析,查阅网上别人分享的调试心得博客、论文等,直到理解并掌握为止,并且适当地做些笔记归纳总结,所谓时常记记,以防忘记,给其他人或者给以后的自己参考。  4. 光靠自己研究,有时会被一些问题阻塞思绪,大脑会卡壳:  那么,加入一些学习小组、专业的讨论圈子是有必要的,是利大于弊的,比如电子发烧友论坛、FPGA产业圈QQ群,分享心得,咨询问题,探讨人生。这个过程,也有可能误入歧途,有些朋友可能过分享受社交的愉悦,迷恋于灌水的浪潮中。建议在学习工作的时候,把精力主要放到学习研究中,切莫堕入无聊的灌水大军中。除了线上交流,大家也可以参加电子发烧友等社区组织的线下沙龙活动,面对面地交流学习,探讨问题的同时还可能交往一些好朋友。跟别人讨论问题,目的是为了解决问题,处理过程需要一些技巧,建议尽量把已经遇到的问题的器件型号软件版本、观测到的症状、仿真调试的波形、已尝试的方法和已分析的可能原因先罗列出来,让能帮你且有时间有心情帮你的朋友快速及时地分析出原因并给出解决方法,这是一个简单的讨论问题的方法论。别人帮你是恩德,不是义务。如果没有人帮到你,不要灰心,继续想其他办法。  5. 有一点基础了,就可以适时选择一些项目练手:  不仅可以锻炼FPGA开发能力,还可以增强信心,沉淀经验,获取价值体现。老是拿着开发板玩,思维容易囿于开发板所涉及的小小“圈套”,其实开发板只是个学习工具,开发板玩得再熟,也只是熟悉那上面的几个小模块而已。FPGA应用广泛,相关产品层出不穷,大把的就业及市场机会,如果光学不练,那真是白瞎了时光,浪费了生命。
集成可编程FPGA,模块化I/O和实时处理器的NI硬件平台,结合图形化系统设计,大大提高任意测试,监测或控制应用严苛需求.
说的很中肯
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或如何学习FPGA?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的人最后都能成为大牛,设计出自己的完美电路。
阅读(...) 评论()

我要回帖

更多关于 需要学习的东西 的文章

 

随机推荐