微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA学习经验(转)

FPGA学习经验(转)

时间:10-02 整理:3721RD 点击:

FPGA在目前应用领域非常,在目前的单板设计里面,几乎都可以看到它的身影。从简单的逻辑组合,到高端的图像、通信协议处理,从单片逻辑到复杂的ASIC原型验证,从小家电到航天器,都可以看到FPGA应用,它的优点在这里无庸赘述。从个人实用角度看,对于学生,掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用fgpa可以让设计变得非常有灵活性。掌握了fpga的设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但fpga的入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。fpga的设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很容易就过去。
          我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对fpga的学习步骤理解写出来,仅是作为一个参考,不对的地方,欢迎大家讨论和指正。
      1、工欲善其事,必先利其器。
      计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。
    硬件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友, 总是嘴上说说,通个电话,连个手都没牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱, 你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算什么?
     
      2、熟悉verilog语言或者vhdl语言 ,熟练使用quartusII或者ISE软件。
      VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。
    起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师, 不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。
     
      3、设计一个小代码,下载到目标板看看结果
      此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到fpga外挂的flash,fpga程序能够从flash启动,表明fpga的最简单设计你已经成功,可以到下一步。
     
      4、设计稍微复杂的代码,下载到目标板看看结果。
      可以设计一个UART程序,网上有参考,你要懂RS232协议和fpga内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了,   恭喜,水平有提高。进入下一步。
     
      5、设计复杂的代码,下载到目标板看看结果。
      譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉fpga的设计饿了
     
      6、设计高速接口,譬如ddr2或者高速串行接口
       这要对fpga的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对fpga的物理接口掌握很深,你就是设计高手了
      
      7、设计一个复杂的协议
         譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、
        
      8、学习再学习
         学习什么,我也不知道,我只知道“学无止境,山外有山”。
最近也面试了很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。
我觉得有以下几步必须要走:
第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。
第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。
了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。
第四步:template很重要。能不能高效利用fpga资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构:)
做fpga主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,fpga中是由触发器和查找表以及互联线等基本结构组成的,其实在我们在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出来的是一个什么样的电路,计数器 选择器 三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序就去往fpga中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法上面花太多的功夫了,verilog 言简意赅assign always case if else 掌握这些几乎可以写出90%的电路了,上面是我的一些愚见,希望对大家有所帮助 ,个人愚见,欢迎大家讨论。

感同身受呢

顶顶顶

学习了  慢慢来

学习了

灰常不错

很好,学习了.

谢谢

顶啊

最近想学学FPGA,不知道怎么开始,看了帖子,茅塞顿开

最近想学学FPGA,不知道怎么开始,看了帖子,茅塞顿开

非常好

谢谢小编

看了你的贴子果然茅塞顿开啊!给力!

谢谢小编,正在学习FPGA的路上,希望得到前辈们的指导!

谢谢小编   有用

谢谢分享!

非常好,谢谢小编花费这么多笔墨分享经验

正在学习,所以有很多迷茫之处

好好  我们会好好学习  谢谢小编

....

说的不错啊,受教了

顶一个                        

学习了  慢慢来

很好的指导,我现在正起步,看了一些书,但是感觉还是晕晕的,不知道如何下手。真希望多几个像小编一样的前辈~~分享经验或代码

多谢前辈指点。

hao                                               

顶一下

谢谢小编分享,非常感谢

顶顶顶顶顶顶顶顶

受教了!

前辈,我想说:“FPGA,对不起,我错了,我真的错了,我还没完全理解自己实力,还有fpga的原理和运用就盲目选择了FPGA这条路,这是一条不归路呀!”

的的顶顶顶顶顶的顶顶顶顶顶的顶顶顶顶顶

顶顶顶顶顶顶顶顶顶顶顶顶顶

顶顶顶顶顶的顶顶顶顶顶的顶顶顶顶顶

的顶顶顶顶顶的顶顶顶顶顶

顶顶顶顶顶顶顶顶顶顶顶顶顶顶

学习学习。多看看。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top