原文地址:FPGA学习步骤作者:激扬青春

觉得有些道理,就转过来了,希望对大家有帮助!
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%的电路了,上面是我的一些愚见,希望对大家有所帮助 ,个人愚见,欢迎大家讨论

转载于:https://www.cnblogs.com/JustDoFPGA/archive/2012/07/05/8412743.html

[转载]FPGA学习步骤相关推荐

  1. FPGA学习步骤,我的体会

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

  2. FPGA学习步骤(打算以后也转FPGA了,毕竟工资比硬件工程师高)

    学习FPGA,在不同层次的人明显有不同的答案.先说一句,说不要开发版的都是菜鸟级选手. 我把FPGA层次划分为,鸡蛋级别,菜鸟级别,老鸟级别,高手级别四类.我是鸡蛋级别的!啥也不会. 1)熟悉语法,其 ...

  3. FPGA学习经验(BBS论坛)

    掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性.掌握了FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来 ...

  4. 【转载】学习嵌入式系统需要具备的条件、方法及步骤

    事先说明,我并不是对嵌入式有多大的兴趣,但我非常希望自己能一直向底层前进,不停地去探究最底层的奥秘. 查阅了很多资料,似乎嵌入式最附合自己对底层的探求,或许它是,或许不是,但对于现在的我而言最重要的是 ...

  5. 转载 PCIe学习(二):PCIe DMA关键模块分析之一

    版权声明:本文为CSDN博主「CLGo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/cllovexyh/a ...

  6. 智能&大数据时代,架构师思维的十个学习步骤(优化版)

    前言: 秦朝的<书同文.车同轨>,加上唐朝的<诗同形>,有效的减法设计,创造了大一统(加法)的辉煌国度.君不见,在前面各步骤里,诸如:从复杂中设计出简单.以需求检验设计等都是基 ...

  7. FPGA学习及设计中的注意事项

    为什么80%的码农都做不了架构师?>>>    FPGA学习及设计中的注意事项 1.基础问题 FPGA的基础就是数字电路和HDL语言,想学好FPGA的人,建议床头都有一本数字电路的书 ...

  8. FPGA学习之路—应用程序—原码二位乘法器及Verilog代码分析

    FPGA学习之路--原码二位乘法器及Verilog代码分析 原理 原码乘法可以分为原码一位乘和原码二位乘,两者在实现规则上大同小异.原码一位乘每次判断乘数的最低位,对被乘数和部分积进行相应操作.而原码 ...

  9. delphi 7 学习步骤

    delphi 7 学习步骤:先学做界面,主要是控件,之后学数据库连接方式ADO或者BDE,以及SQL语句,学完了这些再做个系统基本就入门了实践是最重要的,首先是掌握基本方法,然后自己取创意.逐个实现, ...

最新文章

  1. python3占位符 中文_WxString:有没有使用Python 3-占位符实现字符串格式化的C/C++代码?...
  2. oracle awr报告提取,oracle AWR报告提取分析
  3. python 协程、进程、线程_Python 中的进程、线程、协程
  4. k8s php mysql_在k8s上部署第一个php应用
  5. ie传递给系统调用的数据区域太小_内存区域与内存溢出异常
  6. Linux学习笔记(三)
  7. mysql查询时,offset过大影响性能的原因与优化方法
  8. 同一域名下部署多个vue项目
  9. 、简述global关键字的作用_GLOBAL和$GLOBALS[]的讲解
  10. mysql中有time吗_mysql中 datatime与timestamp的区别说明
  11. 视频剪辑软件到底哪个功能强?容易上手并且不要钱的?
  12. mysql 多表连接技巧_【Mysql进阶技巧(1)】 MySQL的多表关联与自连接
  13. PythonHDF5目录
  14. ptt评论量子计算机,PTT网友热议Nuguri替补:打野下路状态都拉跨不换,先换上路??...
  15. ros中的launch文件
  16. 实验二 数字类型及其操作(新)
  17. 【初识】初学编程,望多指教
  18. 怎么隐藏label标签
  19. unity学习———2D人物的移动
  20. 百度地图聚合点的展示

热门文章

  1. uniapp宽屏开发PC端方案,及衍生问题解决
  2. 使用python制作小心心
  3. axure原型怎么让文字自动换行_Excel换行技巧分享,学会这些方法你也是大神
  4. python绘制带误差线的条形图
  5. CAD入门基本操作命令
  6. 秒杀服务------技术点及亮点
  7. MyEclipse自动生成注释,修改注释模板
  8. 首都经济贸易大学本科毕业论文答辩PPT模板
  9. 平均查找长度之二分查找 -【Java】
  10. 《TensorFlow+Keras深度学习人工智能实践应用》林大贵著第六章第七章代码