搜索
bottom↓
回复: 62

如何学习FPGA(经典转载,大师经验谈)

  [复制链接]

出0入0汤圆

发表于 2013-4-19 11:15:16 | 显示全部楼层 |阅读模式
本帖最后由 sky_prince 于 2013-4-19 11:14 编辑

    掌握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学习的一些愚见,希望对大家有所帮助。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2013-4-19 11:17:41 | 显示全部楼层
本帖最后由 sky_prince 于 2013-4-19 12:26 编辑

刚买一块开发板,学习FPGA,与大家共勉。
上传PDF版本,方便大家下载学习。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-4-19 11:29:18 | 显示全部楼层
看来我是入门阶段。

出0入0汤圆

 楼主| 发表于 2013-4-19 11:32:17 | 显示全部楼层
BigWolf 发表于 2013-4-19 11:29
看来我是入门阶段。

入门ing...

出0入0汤圆

发表于 2013-4-19 11:34:16 | 显示全部楼层
顶一下经验之谈!

出0入0汤圆

 楼主| 发表于 2013-4-19 12:24:38 | 显示全部楼层
本帖最后由 sky_prince 于 2013-4-19 12:27 编辑

很有指导意义的一片文章,努力学习。

出0入0汤圆

 楼主| 发表于 2013-4-19 16:58:22 | 显示全部楼层
sky_prince 发表于 2013-4-19 11:17
刚买一块开发板,学习FPGA,与大家共勉。
上传PDF版本,方便大家下载学习。。。
...

这是在类似的另一篇文章,一起学习...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-4-19 17:44:18 | 显示全部楼层
{:smile:

出0入0汤圆

发表于 2013-4-19 21:42:19 | 显示全部楼层
入门中……加油

出0入0汤圆

 楼主| 发表于 2013-4-20 11:40:16 | 显示全部楼层
sqq 发表于 2013-4-19 21:42
入门中……加油

一起学习。

出0入0汤圆

发表于 2013-4-20 12:29:12 | 显示全部楼层
瞎说,不在工作中实际应用个3,5年,能成为高手?还大师经验,教师经验倒有点像。

出0入0汤圆

 楼主| 发表于 2013-4-20 17:54:39 | 显示全部楼层
40130064 发表于 2013-4-20 12:29
瞎说,不在工作中实际应用个3,5年,能成为高手?还大师经验,教师经验倒有点像。 ...

是的 。对于刚开始学的,有什么建议吗?

出0入0汤圆

发表于 2013-4-20 22:21:36 | 显示全部楼层
sky_prince 发表于 2013-4-20 17:54
是的 。对于刚开始学的,有什么建议吗?

我也不知道 ,只是觉得这样练不成高手。

出0入0汤圆

 楼主| 发表于 2013-4-22 19:28:20 | 显示全部楼层
今天点亮了一颗LED灯,\(^o^)/

出0入0汤圆

发表于 2013-4-28 22:50:46 | 显示全部楼层
好的经验,值得借鉴!

出0入0汤圆

发表于 2013-4-29 13:25:08 | 显示全部楼层
总结的不错,值得借鉴。

出0入0汤圆

发表于 2013-5-12 17:33:33 | 显示全部楼层
友情帮顶一下。。。。

出0入0汤圆

发表于 2013-5-12 22:30:15 | 显示全部楼层
非常好的经验啊

出0入0汤圆

发表于 2013-5-14 23:11:28 | 显示全部楼层
请问楼主,对于一个C都还没有入门的人来说,能够学的好FPGA吗?

出0入0汤圆

 楼主| 发表于 2013-5-15 08:44:35 | 显示全部楼层
imfv 发表于 2013-5-14 23:11
请问楼主,对于一个C都还没有入门的人来说,能够学的好FPGA吗?

两者没多大关系,说不定哦。

出0入0汤圆

发表于 2013-5-15 08:58:32 | 显示全部楼层
总结得不错。

出0入0汤圆

发表于 2013-5-16 18:43:36 | 显示全部楼层
第一步搞清楚FPGA是个神马东西比较重要。

出0入0汤圆

发表于 2013-5-19 01:12:05 来自手机 | 显示全部楼层
这是一个日积月累的过程 酒要酿久了才会香 谢谢

出0入0汤圆

 楼主| 发表于 2013-5-20 09:14:12 | 显示全部楼层
kanhai2222 发表于 2013-5-19 01:12
这是一个日积月累的过程 酒要酿久了才会香 谢谢

是的,日积月累。

出0入0汤圆

发表于 2013-5-28 16:05:13 | 显示全部楼层
入门准备中。。。。。

出0入0汤圆

发表于 2013-5-28 16:10:52 | 显示全部楼层
其实fqga可以搞什么?数字处理,图像处理,还是ASIC的验证?

出0入0汤圆

发表于 2013-5-29 10:32:46 | 显示全部楼层
同为入门级选手

出0入0汤圆

 楼主| 发表于 2013-5-29 10:56:36 | 显示全部楼层
shiyongxie1987 发表于 2013-5-28 16:10
其实fqga可以搞什么?数字处理,图像处理,还是ASIC的验证?

都可以。

出0入0汤圆

发表于 2013-12-12 10:05:06 | 显示全部楼层
入门往上爬。工作中很多单片机无法办到的得借助CPLD,但是也得CPLD水平比较高才能做出来的,譬如高速PID调节,AD采集再算再DA输出

出0入0汤圆

发表于 2014-1-9 11:19:03 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-1-13 14:06:46 | 显示全部楼层
受教了,谢谢

出0入0汤圆

发表于 2014-1-13 15:48:51 | 显示全部楼层
学习了,不错的建议,其实关键还是要学,要动手。

出0入0汤圆

发表于 2014-1-13 16:59:02 | 显示全部楼层
膜拜下屠龙之技哈^_^b

出0入0汤圆

发表于 2014-1-19 20:44:57 | 显示全部楼层
lz用的啥型号的学习板啊?好用不?能不能给推荐 一块嘞?正准备开始学呢,先谢谢啦

出0入0汤圆

发表于 2014-1-23 07:44:12 来自手机 | 显示全部楼层
茅塞顿开!

出0入0汤圆

发表于 2014-2-2 18:53:26 | 显示全部楼层
十分感谢你的经验分享,我现在处于第二阶段,正在看verilog语言~共勉~~

出0入58汤圆

发表于 2014-2-2 21:39:14 来自手机 | 显示全部楼层
感谢分享!

出0入0汤圆

发表于 2014-5-8 00:54:40 | 显示全部楼层
下载是需要莫元的啊

出0入0汤圆

 楼主| 发表于 2014-5-8 08:41:18 | 显示全部楼层
liujinxu212 发表于 2014-5-8 00:54
下载是需要莫元的啊

没有吧,没听说过。

出0入0汤圆

发表于 2014-5-13 15:27:31 | 显示全部楼层
要掌握楼主这几天需要下很大的功夫,与大家共勉。

出0入0汤圆

发表于 2014-5-19 09:57:20 | 显示全部楼层
学习,我还没入门

出0入114汤圆

发表于 2014-5-29 12:54:25 | 显示全部楼层
十分感谢经验分享

出0入0汤圆

发表于 2014-5-29 13:05:44 | 显示全部楼层
标记,如何学习FPGA(经典转载,大师经验谈)

出0入0汤圆

发表于 2014-5-30 08:26:22 | 显示全部楼层
学习中。。

出0入0汤圆

发表于 2014-5-30 13:19:28 | 显示全部楼层
正学习,希望大家多指点!

出0入0汤圆

发表于 2014-6-1 08:40:10 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2014-8-20 09:54:59 | 显示全部楼层
不错,最后就是实践很重要,可以买个开发板接触一下硬件,总学习理论的东西也不是最好的方式。推荐FPGA黑金开发板,很多人在用。

出0入0汤圆

发表于 2014-8-20 19:33:10 | 显示全部楼层
新手学习啦!

出0入0汤圆

 楼主| 发表于 2014-8-21 11:09:14 | 显示全部楼层
avic 发表于 2014-8-20 09:54
不错,最后就是实践很重要,可以买个开发板接触一下硬件,总学习理论的东西也不是最好的方式。推荐FPGA黑金 ...

正用黑金学习中...

出0入0汤圆

发表于 2016-4-30 18:18:54 | 显示全部楼层
我是菜鸟过来和各位老师学学经验

出0入0汤圆

发表于 2016-4-30 18:19:41 | 显示全部楼层
avic 发表于 2014-8-20 09:54
不错,最后就是实践很重要,可以买个开发板接触一下硬件,总学习理论的东西也不是最好的方式。推荐FPGA黑金 ...

我的开发板都落灰了,一直没有坚持下来

出0入0汤圆

发表于 2017-3-22 10:49:11 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2017-3-31 13:16:05 来自手机 | 显示全部楼层
又温习一下,感觉说的真好

出0入0汤圆

发表于 2017-4-3 20:43:13 | 显示全部楼层
第一、熟悉verilog 能下载程序到FPGA里,基本算入门
第二、会使用modelsim 仿真自己的代码,基本入门
第三、会有时序约束,对自己的代买进行约束,入门
第四、会使用IP核,并能正确仿真,进阶

出0入0汤圆

发表于 2017-5-23 23:37:02 | 显示全部楼层
谢谢分享,新手来学习!

出0入0汤圆

发表于 2017-5-24 10:30:29 来自手机 | 显示全部楼层
十分感谢

出0入0汤圆

发表于 2017-5-24 10:51:48 | 显示全部楼层
学习再学习,说的真好

出0入0汤圆

发表于 2017-5-30 11:22:21 来自手机 | 显示全部楼层
长知识了,我也将加入FPGA的学习大军中来。

出0入0汤圆

发表于 2017-6-1 16:40:00 | 显示全部楼层
会使用IP核,并能正确仿真,资料太少。

出0入0汤圆

发表于 2017-6-1 21:09:52 | 显示全部楼层
先做个UART,然后就可以写状态机,并把内部运行记录(你写在状态机各个分支的标志)通过UART传电脑

出0入0汤圆

发表于 2017-7-15 23:25:21 | 显示全部楼层
谢谢,很有帮助!

出0入0汤圆

发表于 2017-7-24 23:27:49 来自手机 | 显示全部楼层
谢谢            

出0入0汤圆

发表于 2017-8-28 11:16:44 | 显示全部楼层
感觉最好有一个可以落实的计划,这事对新人才有意义。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 13:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表