掌握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、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、
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学习的一些愚见,希望对大家有所帮助。

FPGA——如何学习FPGA相关推荐

  1. XIlinx FPGA 和 Intel FPGA的区别

    目录 一 FPGA简介 什么是FPGA呢 ? FPGA的内部结构有什么呢? 为什么要开发FPGA? FPGA的发展历程? FPGA用于做什么? FPGA的优缺点? 二 Xilinx FPGA和Inte ...

  2. 《FPGA全程进阶---实战演练》第一章之如何学习FPGA

    对于很多初学者,大部分都是急于求成,熟不知越是急于求成,最终越是学无所成,到头来两手空空,要学好FPGA,必须弄懂FPGA本质的一些内容. 1.FPGA内部结构及基本原理 FPGA是可以编程的,必须通 ...

  3. 作为初学者应该如何来学习FPGA

    FPGA作为一种高新的技术,已经逐渐普及到了各行各业,无论是消费类.通信类.电子行业都无处不在它的身影,从1985年第一颗FPGA诞生至 今,FPGA已经历了将近20多个年头,从当初的几百个门电路到现 ...

  4. FPGA硬件学习基础知识点总结(1)

    FPGA硬件学习基础知识点总结(1)锁存器与触发器 总结一下数电,FPGA的一些基础知识,涉及到硬件电路的设计.主要是记录自己的学习过程. 锁存器与触发器 锁存器(latch):锁存器是电平触发的存储 ...

  5. 我的FPGA入门学习计划

    本文是自己初步学习fpga的一个计划,由于这个月才开始接触的fpga所以可能有认识不足的地方 还请各位大侠指点 (ps本文涉及到的书籍大部分都能在网络上找到pdf档 利用好搜索引擎 和网盘搜索引擎即可 ...

  6. 作为刚開始学习的人应该怎样来学习FPGA

    FPGA作为一种高新的技术.已经逐渐普及到了各行各业.不管是消费类.通信类.电子行业都无处不在它的身影,从1985年第一颗FPGA诞生至 今,FPGA已经历了将近20多个年头,从当初的几百个门电路到如 ...

  7. 芯片设计:FPGA开发学习

    文章目录 1.课程准备 1.1 FPGA概论 2.2 了解FPGA的开发流程 2.3 下载并安装Quartus/modelsiam和GVIM软件 2.Verilog语言学习 2.1 [第四课]:硬件描 ...

  8. 学习FPGA之二:云端加速

    随着互联网,移动互联网,人工智能,物联网(5G),甚至元宇宙的发展,海量的数据越来越多,但是经过有效处理的1%都不到.数据被称为人工智能时代的石油,数据的处理越来越重要,数据中心的运算,传输是在低层需 ...

  9. 深度学习FPGA实现基础知识17(图像处理卷积运算 矩阵卷积)

    需求说明:深度学习FPGA实现知识储备 内容:第一部分:矩阵的卷积运算详细过程           第二部分:图像处理之卷积理解           第三部分:矩阵卷积转换为矩阵相乘 整理来自:时间的 ...

最新文章

  1. Qlikview 的服务器
  2. 不需要网络的调频收音机_测试工程师真的不需要懂网络知识么?
  3. 关于setTimeout
  4. jquery和php上传文件进度条,jQuery实现文件上传进度条特效_jquery
  5. 2021 考研线代知识点整理
  6. aceadmin源码
  7. 高速PCB设计的一些注意事项
  8. cesium label和billboard 的一些配置注释
  9. 类iGoogle实现参考资料
  10. 你所不知道的NVMe SSD固态硬盘读写速度及国货的惊喜--基于FPGA的速度测试
  11. GBK版本和UTF-8版本的区别
  12. 【HoloLens】启用Mixed Reality Portal混合现实门户
  13. php取雅加达时间,2018年雅加达亚运会电竞赛程表 8月电子竞技比赛时间一览
  14. 消息传递,生产者消费者
  15. js java 图片上传_spring(java,js,html) 截图上传图片实例详解
  16. C++ Primer 5th 中文版 源码_无需金币(百度网盘)
  17. 美团java一面面经
  18. AppScan 安全漏洞扫描策略
  19. JNI中Native方法的注册方式
  20. java判断一个月连续打卡时间_java并发编程实战《五》死锁 挑战打卡60天

热门文章

  1. 信息学奥赛一本通例题2.14~2.16
  2. 例子(点击www.xxx.com/yyy/index.php)
  3. scope hosting_VPS Hosting 101 –虚拟专用服务器入门指南
  4. 一文读懂基于Redis的Amazon MemoryDB数据库
  5. 数据结构——初识数据结构
  6. Android实战之小说阅读器,带有水平翻页,记录上次读取页码数
  7. zabbix安装与配置-zabbix安装与配置
  8. 一文最全科普FPGA技术知识
  9. 2020化工自动化控制仪表证考试及化工自动化控制仪表实操考试视频
  10. git 放弃本地操作,直接更新拉取远程最新代码