掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很容易就过去。我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考,不对的地方,欢迎大家讨论和指正。
FPGA学习步骤1、工欲善其事,必先利其器    
    计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。硬件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习FPGA,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算什么?
FPGA学习步骤2、熟悉verilog语言或者vhdl语言,熟练使用quartusII或者ISE软件   
    VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。
FPGA学习步骤3、设计一个小代码,下载到目标板看看结果
    此时可以设计一个最简单的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。
FPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结果
    可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高,进入下一步。
FPGA学习步骤5、设计复杂的代码,下载到目标板看看结果
    譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了。
FPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口    
    这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了。
FPGA学习步骤7、设计一个复杂的协议
    譬如USB、PCI Express、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手。
FPGA学习步骤8、学习再学习
    学习什么,我也不知道,我只知道“学无止境,山外有山”。
    现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习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学习的一些愚见,希望对大家有所帮助。

再加一个连接,这个也是一位前辈写的学习经验

http://www.amobbs.com/thread-5530014-1-1.html

转载于:https://www.cnblogs.com/xyboy/archive/2013/05/19/3087304.html

FPGA学习经验(BBS论坛)相关推荐

  1. 转 fpga学习经验2

    FPGA在目前应用领域非常,在目前的单板设计里面,几乎都可以看到它的身影.从简单的逻辑组合,到高端的图像.通信协议处理,从单片逻辑到复杂的ASIC原型验证,从小家电到航天器,都可以看到FPGA应用,它 ...

  2. FPGA学习网站、开源网站和论坛网站汇总

    分享FPGA常用的一些学习网站.开源网站和论坛网站,方便大家找资料,查问题. 一.基础类学习网站 1.HDLbits(初学者入门) HDLBits有一系列的 Verilog 基础知识,可以在线仿真的学 ...

  3. 学习篇--FPGA学习网站

    1.  OPENCORES.ORG这里提供非常多,非常好的PLD了内核,8051内核就可以在里面找到.进入后,选择project或者由 http//www.opencores.org/browse.c ...

  4. FPGA和外围接口-第一章 爱上FPGA(1.4 FPGA开源网站和论坛))

    FPGA开源网站和论坛 1.1.1 25个FPGA开源网站 1.OPENCORES.ORG 网站地址::http://www.opencores.org 图1‑31 OPENCORES.ORG网站截图 ...

  5. FPGA开源网站和论坛介绍

    学习FPGA,找不到资料?-FPGA开源网站和论坛介绍 碎碎思 目录 学习FPGA,找不到资料?-FPGA开源网站和论坛介绍 1.25个FPGA开源网站 1.1 http://OPENCORES.OR ...

  6. FPGA开源网站和论坛

    FPGA开源网站和论坛 FPGA开源网站和论坛 1.1.1 25个FPGA开源网站 1.OPENCORES.ORG 网站地址::http://www.opencores.org 图1‑31  OPEN ...

  7. 视频教程-python项目之BBS论坛开发-Python

    python项目之BBS论坛开发 TriAquae开源运维软件创始人,混迹IT运维领域多年,曾就职于松下.国政通.飞信.中金.NOKIA等公司,维护过少至几十台,多至数万台设备的IT系统,致力于提高企 ...

  8. WCF分布式开发步步为赢(0):WCF学习经验分享,如何更好地学习WCF?

    WCF分布式开发学习,应该从哪里开始? 微软WCF Web服务 Web API学习群 339444457 微软ASP.NET MVC 4 Web编程群     44206115 学习WCF是不是就不需 ...

  9. [zz]WCF分布式开发步步为赢(0):WCF学习经验分享,如何更好地学习WCF?

    WCF分布式开发学习,应该从哪里开始?    学习WCF是不是就不需要学习Enterprise Sevices(COM+).Net Remoting.Web Service(ASMX).WSE3.0和 ...

最新文章

  1. golang 打印调用堆栈
  2. python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退
  3. windows2008下 IIS7 HTTP 错误 404.2 - Not Found 解决方法(图文)
  4. Rxjs of() 和 of({}) 的区别
  5. 前端学习(3340):ant design中icon图标的使用
  6. CSS3技巧 —— 渐变
  7. 人工智能的前生,今世,和未来
  8. MySQL中cast()与convert()的用法
  9. php调用trait方法,PHP Laravel中的Trait使用方法
  10. ISIS仿真中Buzzer蜂鸣器不发声
  11. 毕业设计 基于STM32停车管理系统 - 物联网
  12. 解决smtp出现(500, b'Error: bad syntax')
  13. 【LGP5108】仰望半月的夜空
  14. 设计一个自然数类,该类的对象能表示一个自然数
  15. 西邮Linux兴趣小组2017纳新免试题揭秘
  16. apicloud加java,【APICloud】App开发中加入系统分享功能案例源码分享
  17. bzoj5314: [Jsoi2018]潜入行动【树形dp】
  18. 无线基站定位服务器,UWB定位技术的三种定位方法
  19. java程序1:从键盘输入圆的半径,求圆的周长和面积
  20. 谷歌眼镜开发Mirror API之快速启动

热门文章

  1. 技术解读|RRBS测序中因酶切人为引入碱基问题
  2. java任意长度获取随机数
  3. 软件工程Alpha冲刺day4
  4. C语言abs和labs函数详解和示例
  5. 熬夜怒肝,保姆级Python学习路线,起飞!
  6. 【论文速读】自动解题+认知推理+常识发现
  7. svn服务端工具VisualSVN Server
  8. html文件用wps打开,wps文件如何打开?直接打开wps文件的操作技巧
  9. 自动化运维 -- 02 Ansible
  10. (二)进一步认识数据库