EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
3 v5 Q- |8 q' t. c k% _ _4 b* E( n
掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了 FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂 贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这 个门槛很容易就过去。( Y! h2 a3 Z- j; g5 W
我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考, 不对的地方,欢迎大家讨论和指正。
- @- D0 h# i: ]$ X. k% ~" Y& I7 Y
, y8 m! q4 C% M7 n- J% |& R) K" R' I9 d1 n: q' X6 Q
6 r, k) Y, y9 ?8 R- \
FPGA学习步骤1、工欲善其事,必先利其器。
* f# u& ?+ E4 t( E
5 k4 q3 n9 T$ ?" P& t5 ?# D% c8 _+ q9 w: U( E0 Q
3 S) O+ r3 k* Q' v2 b' ?
计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。
9 x1 D3 L" S4 Q0 R* J% b硬 件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没 牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算 什么?, u! U& ^8 ]! G
+ [! M8 u: @8 j: f& \ s: G, i ]& y7 y" H, T
# C0 l* V7 k. @ z5 b2 E) AFPGA学习步骤2、熟悉verilog语言或者vhdl语言 ,熟练使用quartusII或者ISE软件。
* H* x; Y; D2 a" b9 o. T+ o. C& W6 c# F+ G* V
- h6 x$ K5 ` E0 j9 B
5 c( f5 u D+ ?VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。
4 N/ E Y/ }0 s* o- c起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。* |+ d" |! f- b- M% Y% \/ v7 d/ m# k
4 k! t: m* T8 ]7 G4 r
3 d( c& z& F2 l9 b9 z/ a0 U+ C9 U+ h
6 z# m' Y% t. rFPGA学习步骤3、设计一个小代码,下载到目标板看看结果. f- |8 {9 N! r- x
j/ n* ~. p+ ~4 b+ R" M, I
# V4 M0 P" g0 r 5 m+ k6 ]9 }! J7 D- G
此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。
# _- n1 p! H' w( }! z! `. y/ _/ Z- Z2 {+ b& W: q9 k( K& G
9 c" a4 B" }' ]( d
8 p7 K& K' e C4 G0 I' o7 y( D/ IFPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结果。0 p' I9 Z& S/ r+ d3 Q, f, Q
% k! B. X5 Y/ C
: H+ v+ M. ?: V
& n6 R! |& m8 v/ Y: X可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高。进入下一步。
! C0 ~; h, L0 T! H& m1 E% e( e2 | ~! Q, J/ z7 Q; @6 |$ B. [+ M
- ~3 ?. Y6 v& \* O, @, k # t6 L) A1 T% @* }7 V6 z( R
FPGA学习步骤5、设计复杂的代码,下载到目标板看看结果。. e$ X% a" T4 P2 z5 S7 c
. {2 X5 b1 m1 [! Z9 Z S$ k- o/ M0 h. [4 s* x" Q4 O
5 ~8 J# m5 r) Q5 T4 {* Q( G
譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了
, Z1 m" o6 V1 J( K3 W4 k1 Y) s' G! R4 C; X1 Q: o
7 A, L n2 K- M4 [4 s& E1 G5 f$ g
' \- i, A6 v1 e% ^ c( d7 t8 nFPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口
4 A* s& I* D$ t, k! q; y" m$ z8 _ c0 v2 C6 l
7 \0 W0 _ E( f L) t8 {$ V: Z! s 7 H+ x: B/ b: T$ E# g. H& \
这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了
! J" i- v7 a- M9 J# Q5 _' a L# V: N1 z2 w# \; Z+ r/ ^% Y
. q, P6 E) n3 q \5 H1 y0 w6 G: @+ U
6 C' x& W2 N( z5 v6 c) b' ^FPGA学习步骤7、设计一个复杂的协议
! B+ t0 z# R! @8 v
; I5 ~ W/ m! j* s) D/ i- {) _: X
6 p/ l$ f' E: F4 j5 |譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、# R6 _/ y% D- v, {3 d
* Z3 O" }% W4 K: t/ f m6 `7 I1 }$ \1 r1 U% c
& R6 j; ~* ~: Z) D6 G
FPGA学习步骤8、学习再学习
4 f* F, D& W$ C5 W" D1 J% O# E4 j# R$ I6 b) [; I6 m$ F% F
% h/ W$ k% C9 p' C/ s, X3 M, {8 R
- C! O' v. Y' \9 x9 U: P* Y
学习什么,我也不知道,我只知道“学无止境,山外有山”。
; c- T( p" }& q2 Z现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。& j) z7 K3 x+ S4 k: X
. J4 E/ x0 I; y- W. N( k0 B0 {+ u
" I* _$ g! z% H2 i; O. o5 v
" A9 d. D( P- Z0 {% N我觉得FPGA学习有以下几步必须要走: . V) g; C5 S. R4 M4 B4 Q
第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里 面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。 不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。5 U6 n6 x7 I L0 I& V
$ a7 d# k5 n$ ~" S, \" ]
. ~4 Q4 e+ {; z# ]
7 f5 G0 \, _0 L# m; J
第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。
* `% T) L/ H* F8 O: {) I了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
0 l9 l% r- j* x3 W- R8 X7 r
$ z2 h& Q) B9 G" j7 L! T+ n& E, ^' s' y4 L0 h
' V" \6 h* g& m第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。
2 X0 E! U5 k/ d7 Z. B
, ?. F+ N# G, o2 y* s9 F; \
- }3 X& c% Q/ D4 D" Y7 I 8 r+ M5 [. g. H9 C0 b# P
第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构)5 @/ t! M9 K" ^' a
% }" q2 l( Y6 |4 y8 m5 O+ E8 d) R7 F6 P" B; ^# Y5 J: t
; N5 I5 T; Z- C/ V5 F' ?7 Y, }* g) n
做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA中是由触发器和查找表以及互联线等基本结构组成的,其实在我们 在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出 来的是一个什么样的电路,计数器选择器 三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序 就去往FPGA中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于 语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法 上面花太多的功夫了,verilog 言简意赅assign always case if else 掌握这些几乎可以写出90%的电路了,上面是我对FPGA学习的一些愚见,希望对大家有所帮助。
: J4 A+ i6 i' T5 z$ x/ \7 w6 x e1 F6 Z* j/ _
c. X' U0 H" I, W9 B号外:香港应科院 LTE小基站基带核心技术发布会参观团召集——三重好礼等你拿!凡报名参加此次活动的前80位发烧友,我们将提供本届“中国电子信息博览会”(CITE)VIP嘉宾入场证,无需登记就可参观本届盛会!赶紧报名(微信报名回复“电子发烧友观展团+姓名+联系方式”或登录论坛报名)抢入场证啦!
7 y9 f/ h# p# J2 K* q1 L: ~6 W, h$ n4 i" j' c
|