EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
* r" `" d; C3 \# X3 M5 j5 R+ b3 C9 g" O/ K2 C ]: |( _: j+ t8 h
掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了 FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂 贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这 个门槛很容易就过去。 [( ~4 y5 E- u
我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考, 不对的地方,欢迎大家讨论和指正。+ t. {/ y) U6 J. ~0 {
& ~. I: |* F f, \
9 v% f- u( D0 J1 c
* G& @- ]: X1 G$ b# o* X* NFPGA学习步骤1、工欲善其事,必先利其器。, C+ z& Q& a' e0 i0 N
* M6 M4 A2 [( \# K3 i) `
& J& i4 }* c: ~/ b# |
0 U/ d2 V0 P6 F1 w
计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。 9 v% _9 G, F( |- ^' I! a( T
硬 件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没 牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算 什么?
% I. \4 F1 F& Y. z/ X8 `0 j+ P1 Z. W# R( G+ E
+ F9 v+ E) j+ F) S% v; a
8 x: ~' N& H" q' e1 J! s
FPGA学习步骤2、熟悉verilog语言或者vhdl语言 ,熟练使用quartusII或者ISE软件。
! K, k( Y4 e9 Z& p3 `& y, _( \0 W0 U+ w# b+ s3 W( V9 M
1 k$ {) c; E; c* F
& K% P! @+ G4 G9 N* v( R2 L) }( T
VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。
, g# R8 y( X9 @. ]2 E% x, S/ e: }起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。& e; J, J# R. s9 i" D& \3 h- c, I
3 j9 ^. k/ B$ p( }5 b& p) r) m
1 f [' @/ z" Z2 u4 F& }
# M; W: N G; ^FPGA学习步骤3、设计一个小代码,下载到目标板看看结果7 K2 r- l( [8 G" D( p. `; r
$ g; } U7 n5 j) e& f @
8 S" x5 O k4 ?
% R9 z$ L: J! S. n0 o此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。
3 v/ ]5 _& N9 I) j8 k7 c; i. m2 B4 j/ }
: C+ |0 `. c# G9 n; b6 l# D8 I
$ P1 F: o" [4 J- y) O
FPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结果。
+ D0 H4 o' k! c6 _* l" @/ D* v+ @& t
+ q2 k- L- A8 C
+ [' s$ B4 I$ V' y" e7 m$ J $ |" u0 e9 O6 ]) |) _6 p( t1 D
可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高。进入下一步。
( o d( d8 U6 o- G# b+ d) ^! o; }5 ~+ c" R! b
9 o4 Q" S" C5 Q , @5 q" m' c8 }/ s7 N! W. n
FPGA学习步骤5、设计复杂的代码,下载到目标板看看结果。
% u K8 I' u+ B' \( U- z W
9 r/ ^9 E+ f4 J0 @6 |: t( m9 v, r: n3 @ n
0 ?$ C L5 `+ V+ F+ `3 U& t譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了0 |7 K1 o$ @; i; n; w' U
9 x6 L7 c* X- h' B6 J9 u5 o# M. w
$ R& V- E" ~) t: J" c' h , G9 X1 X$ k# O
FPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口
6 p& d! J+ q! H1 W
% I& @# I: E$ g1 S" y9 D, l* _/ _6 P
! o6 r! {3 J6 K! g9 K& v) H5 Y
3 I5 g3 z) X( P. u0 S2 \. p( D& |这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了
8 S* W2 P* p4 ~- T( |& y3 w7 L5 ~- q6 X7 H6 Y5 m9 u& E
: M; s/ y. R; v / `& W6 K& K& Q/ Q
FPGA学习步骤7、设计一个复杂的协议7 ]% c& }& ?" Y" @4 Q! G
# q( A, i4 {; d- w
, T; U- q2 I* t1 |# Z2 Y. }9 H( |- C
4 a( ~4 d. |( ?5 W4 N譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、9 I* `. {1 n4 q% B+ `
2 i# a8 t7 H) L- W+ M
/ d* X- b+ Y' ?$ K9 A$ L. a
% R- V- F3 C& ^7 A0 |- jFPGA学习步骤8、学习再学习+ y0 q, X5 O3 d" k. F6 G
2 x( R, J1 g( f% G
0 R0 a% I8 S' a y; g9 W7 Q. R
; @% S' L) Z, m$ ~学习什么,我也不知道,我只知道“学无止境,山外有山”。 $ W$ Z& \5 _; y6 I$ ^0 q
现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。
* n* i0 I7 H0 T) P/ z1 v( g2 Q) Q. i- S
4 l$ p* J* B3 v1 s% l3 F
0 V2 J$ ?* G% b" m我觉得FPGA学习有以下几步必须要走:
6 x. \5 {4 \' N! I5 ]' S第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里 面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。 不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。
1 ~) i/ }1 j4 o! ?4 f, s3 \. m0 V5 l; W, p/ o
! ]% ~, H& C# S9 |$ i% O
- X* t8 {/ n" e4 L( q2 v0 @. z第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。
t) k" f* J. I. S* G+ g了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
2 ~: @, @8 o7 C+ u( E! V# U; x+ J
. T( I, ^% y1 C4 _0 H/ Q5 }3 @, t ( Z X4 n7 o5 V6 c# ^: `! l, E n1 v5 j
第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。/ p8 P, H4 t* F* c) k) e
8 Q# \! `* ]: n0 N
& S$ O" t% p! \8 y
+ H3 P n x$ {9 M第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构)4 {# o; Q8 L# ?$ P. l/ W+ F
# t/ k- d9 l. ]) u* M# w( ?* L0 z8 o8 x
9 u8 T& O2 D1 ~8 m5 ]: B3 p, G3 D1 C做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA中是由触发器和查找表以及互联线等基本结构组成的,其实在我们 在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出 来的是一个什么样的电路,计数器选择器 三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序 就去往FPGA中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于 语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法 上面花太多的功夫了,verilog 言简意赅assign always case if else 掌握这些几乎可以写出90%的电路了,上面是我对FPGA学习的一些愚见,希望对大家有所帮助。
' t7 X! x$ k, s0 G/ S
. g/ B7 g/ p- F% i) H4 ?2 Z: }; y4 n! p5 w1 d
号外:香港应科院 LTE小基站基带核心技术发布会参观团召集——三重好礼等你拿!凡报名参加此次活动的前80位发烧友,我们将提供本届“中国电子信息博览会”(CITE)VIP嘉宾入场证,无需登记就可参观本届盛会!赶紧报名(微信报名回复“电子发烧友观展团+姓名+联系方式”或登录论坛报名)抢入场证啦!
6 J* @0 Y' k2 @- S# f! d1 @" P9 ~2 u8 s7 ^! q% }& u" K$ i
|