找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 2|回复: 0
打印 上一主题 下一主题

[硬件] 如何学习FPGA

[复制链接]

551

主题

1462

帖子

3万

积分

EDA365管理团队

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

积分
39465
跳转到指定楼层
1#
发表于 2019-9-27 15:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

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

x

. Z& G+ {, N5 G; g3 f
) b$ ^9 w1 [8 O( C    掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了 FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂 贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这 个门槛很容易就过去。4 m9 \7 O9 I5 {1 y5 c9 W6 a6 I+ C: z
  我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考, 不对的地方,欢迎大家讨论和指正。
: n$ f  J/ q( e$ V! d+ o3 T' N9 j! A$ Y6 \
+ ?9 E! Z* ~6 L' X6 Q. |6 K) I
( j# _( H( [) e0 w
FPGA学习步骤1、工欲善其事,必先利其器。
# b: h, ^% m4 _& M: c( Z
7 A' ^: @( X  L9 Q; ]+ y3 r5 f' m$ s5 \; m, B
) S) w) z6 s, M1 U( ^6 h; d; z- W, n
计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。
. z4 V: S" w% ~
硬 件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没 牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算 什么?
3 g: S5 y" K9 t0 n7 k: @4 `+ P9 A7 O- C" g

  x0 U( w( t! I+ b/ F& f' y; `

  l: m3 w8 G* ^3 |4 X7 q
FPGA学习步骤2、熟悉verilog语言或者vhdl语言 ,熟练使用quartusII或者ISE软件。% B; ^* d8 J6 @0 C0 m! f7 f' M+ _6 |
7 N! @) V5 W& N( p, Q+ K
5 `" l7 J& Y, e  S( t8 `

9 w; U3 E. S* P# m4 a
VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。

  u( Y( `( l: c) M7 S7 h
起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。
8 n" u' @$ v( m: u' ^, k2 e7 K4 g% a

1 t: @% R4 F+ g( {1 {  i
% u  ]& ]1 M* o9 [8 S2 S
FPGA学习步骤3、设计一个小代码,下载到目标板看看结果
2 i! t% p& v! [* y+ o: ?2 u& P, ]- ~' B* \# D
7 j& b) p: x0 s# ~. t9 Y# \
" y; l' j- D0 ?/ N* o" P
此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。8 V3 ]1 T+ {4 t) i, k

- F" K6 |6 u. e3 p2 u
1 t, |5 \6 |6 c7 G% J

* a  d; B4 E: b- P9 [: ~. t
FPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结, W& ~- c& o! I' F5 Q
! ?, \, \$ q7 e
! o2 c  i5 K" ?( S, }

5 {3 {0 Q; \  u& f
可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高。进入下一步。
1 q' _' \1 }  l- X& g4 i# V! `+ l9 f' p- p; r2 ^8 M
5 y0 T! J& n  q2 z4 O8 ^1 k
7 M) P) v1 |2 }" q* x
FPGA学习步骤5、设计复杂的代码,下载到目标板看看结果。
9 \' w6 I. C- u7 I, |+ k7 S
8 ~8 Z* s( ~' d7 l
; Z  }- d; |* c% g

! {$ _- l: n) Z) o- d
譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了. L' [1 m3 I9 |' C% n

) _  p& f* r8 B, b2 C" @
9 C6 r: w) Y' M; m) w) C- ?. [9 |

/ |! L: a& g9 d. W7 ]* z1 Y. {
FPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口
  @# F6 R8 A4 R0 |5 r. C$ b8 b! n7 d" c9 I4 P
! C' R6 X+ x/ _, p( X- |  l; e

- k* l( y7 b) C3 X2 g( w8 [
这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了: h6 T0 t- Z: t! ]

3 l$ w* E% q- j# |) m. k; p" V) R7 T* G1 ?  y& i. |! }. m* I

" ]/ N1 G& z( F$ b
FPGA学习步骤7、设计一个复杂的协议3 t% V4 w9 k/ J7 j

, _/ z- t! K# L8 z; |7 L6 \  y4 N  ~8 ^' R+ A, q" ~* q

3 t+ r. ]- l" T5 T# r  A
譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、
1 i  d; [. I+ P2 h8 L" V7 V' i4 @& ^4 c# E

5 ^& r! C( ^7 C2 T& P$ c

3 n7 t8 o' e5 G1 F9 R1 R5 |
FPGA学习步骤8、学习再学习
: S' d: G% y6 J. U  B; K
8 V7 H8 ?0 M$ M: A
) w# ]( |/ z; d6 i) s1 ?/ {

4 J2 E: V$ F2 {6 F% y6 K$ [$ _( }4 J& Q
学习什么,我也不知道,我只知道“学无止境,山外有山”。

* g4 p( J/ J; s
现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。
9 O8 g( L; i. N2 ]0 C; c) S& D$ s3 x: k+ V- L
2 _7 @6 Z2 @( h/ C4 w9 M" o; R4 e

( H$ Z$ c8 R! h4 p% l$ D9 G
我觉得FPGA学习有以下几步必须要走:
' t! H7 C6 p# \3 i
第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里 面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。 不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。5 R9 O3 V! ^' x! T' S! X5 P% y) c
9 G' e- S% A" f

8 s3 d8 }& W6 U( u8 ~! \

5 n' G; X  V6 e+ i+ D/ \1 y: a+ x
第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。

/ g1 X) `! a6 d4 l0 t
了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
& }( W4 U3 ^, q- \: @1 I
# k% E# U: o. m3 O8 M2 v, ~3 r& e% B* Q: X1 {% z
- T. c; r0 }' X4 z2 Q! c3 N1 |
第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。
$ G/ n* }) M9 F$ {" M0 m# e
% R% v: {5 F! g- P) M! H  Z4 y0 j9 X- F# W& o- ~+ b

; u9 e9 Z  Y! L; j- p0 r9 O
第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构)
4 Y4 R; l' |' ~' Y% F0 R8 d7 h" r! M, {' T7 u8 ]

) i/ X6 ^7 i1 I8 v. |

! K. O, x) U5 `, b; ~1 X
做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA中是由触发器和查找表以及互联线等基本结构组成的,其实在我们 在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出 来的是一个什么样的电路,计数器选择器  三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序 就去往FPGA中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于 语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法 上面花太多的功夫了,verilog 言简意赅assign always case if else  掌握这些几乎可以写出90%的电路了,上面是我对FPGA学习的一些愚见,希望对大家有所帮助。
# t8 u; y- f9 x' A3 A% i% O4 P& w$ n" ~: e5 E2 p
- {, K& e8 q" K# ]% V. d
号外:香港应科院 LTE小基站基带核心技术发布会参观团召集——三重好礼等你拿!凡报名参加此次活动的前80位发烧友,我们将提供本届“中国电子信息博览会”(CITE)VIP嘉宾入场证,无需登记就可参观本届盛会!赶紧报名(微信报名回复“电子发烧友观展团+姓名+联系方式”或登录论坛报名)抢入场证啦!9 R( d+ @$ |, j0 x2 c$ w
3 W# q: e+ ^+ \+ O+ n5 }) d0 y( D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-3 21:29 , Processed in 0.055969 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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