EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
R2 i# m' b; f$ R! W3 r9 \
4 `$ ^7 x' r* M) C; E! n4 Z! Z 掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了 FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂 贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这 个门槛很容易就过去。: l5 ?- u8 t6 P/ n4 E
我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考, 不对的地方,欢迎大家讨论和指正。
5 y6 Z$ F8 o- n' M4 U. Z, J! M/ V! {% _0 ?8 s T, A$ V6 u
9 O) y( n, b% t4 T& Q4 R
' d) |# J @9 y% W" ^4 Q8 vFPGA学习步骤1、工欲善其事,必先利其器。& _. q& ~9 O3 C. [9 Q3 N1 A
8 B: X5 Z. o- W
. Q* w6 E5 c' ?) Z; W- i & C; L M. f* t6 L/ U
计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。
5 i: ^& N3 X" I |0 \: _硬 件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没 牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算 什么?4 I3 M1 g: J9 o) c! X1 p; p
, m1 R; O3 j4 P( P4 [8 r# D
: H4 p4 r7 R$ i " p: `# o4 P+ l& f
FPGA学习步骤2、熟悉verilog语言或者vhdl语言 ,熟练使用quartusII或者ISE软件。
7 @6 O: T- Z) M5 ^+ H) T5 ~
" W. @: F7 Y6 H* i
' s; j% |* y7 R
7 o i1 a# ]% P' aVHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。
7 W9 I, z' O: ~8 q) T起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。. t! y+ K: k6 U: j4 c
: B, J3 ]: R, I' N& g
& U8 k) m: u# a/ _
7 q3 Y: e2 C- p: T X" d( ~FPGA学习步骤3、设计一个小代码,下载到目标板看看结果
- |9 B- {, h$ f) X& q v+ C8 W/ G: o( z! K+ ~6 R0 m( v
. o# ~: I8 P: i# E+ ^ J* `+ i
0 t% A: L$ p- y' j
此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。
& y g- N, O# S, W+ l2 Q" R" w
( x( X" M9 m# h6 [5 c; s$ T+ E6 R. @
+ l! e" p0 D+ B7 a* H
( Y* x; D! M3 O$ sFPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结果。& V# M8 ~# q7 k. @( C
5 Y( F' F) K5 O7 d' ~) k
m: T7 n1 B& a- v) N. {6 S 3 _9 a2 j3 g8 ?7 ? u
可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高。进入下一步。4 ?0 f7 j# m9 z
& g) O& K; ]. h) [" _% p% c2 k9 o" z1 P- D* y
- z8 K/ j: y; E( fFPGA学习步骤5、设计复杂的代码,下载到目标板看看结果。
6 L1 `* A+ O+ |# P4 X6 l5 Z
. X, j7 W7 F Y% G! N- T
) L0 p$ N& F7 _& j) q ~6 P$ V
0 \1 U, b/ q" J+ Q9 {6 Q譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了( {. Y7 R+ b0 @2 F) g1 z
& @' b9 k) V, W) ], k) W" A
, ]) p% m. \' Y+ u2 b
. S5 u4 W7 m0 L3 w/ a' l7 ]3 EFPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口4 G% z. _* E$ a k) ^+ V; L
$ Q6 O$ h7 X8 B5 b- z( B# J5 @$ W
) J8 G/ e/ t7 e/ ~- N
+ r, E) `0 s9 b2 M
这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了& R( D) Z# o, ~' Z# }+ `1 G9 }6 Y* t
& Q0 {9 z" o$ d3 N ?* G" E# U5 U! J
# ?$ g9 k# c" j/ v4 b! v; p 8 S3 z. V( ~" K) {) P2 o
FPGA学习步骤7、设计一个复杂的协议
B1 l2 c: a1 y* U5 x2 [$ s3 m
4 b7 r+ l, k, v; z" }, P/ L+ Z
9 y9 L5 r/ o; O7 q
譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、9 j: O; _" a2 B" \
/ C* \6 T( d' |2 w. t1 R$ R
* p8 U, t8 c5 I. |* w( r4 N1 o c 1 B* x: ^( f% k" f5 |
FPGA学习步骤8、学习再学习1 |7 N& w( s, } ?" e+ g& |5 @+ _
3 Y, _7 ]& `- s6 c0 U& `
7 w6 m, k# c4 o2 N$ @3 V# C/ b0 u 9 i4 z3 r* c& T$ S9 N: T; }
学习什么,我也不知道,我只知道“学无止境,山外有山”。 5 ], U2 `$ S% s6 u# G
现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。' B8 F5 u1 `0 {7 @# P( a
7 } q% `& q6 M7 X; V5 Q
3 q; z4 {, {! M( {2 o
% E: e0 a9 r6 n6 t
我觉得FPGA学习有以下几步必须要走: . r+ P" a! s1 J3 u
第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里 面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。 不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。! ~: | k3 t6 b6 B- |
; e1 k! b9 J( j7 B% g
2 E7 r1 f' P0 f% M G8 @
5 o& p2 Z2 I A4 ?' _: o
第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。 V' O4 a9 ]" V% U
了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。$ I- Z2 p. R/ ]% l
. U9 ^: @: @8 a! Z8 v
8 Z3 x' u' j j3 |$ a0 t1 X
% i: q: {# D* @. Y第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。
8 d7 K7 Y1 T5 y% ?6 ^- H4 a9 B) m2 X3 u$ Q7 g8 t" `- m- E: Z4 A
! b* j: l' r- {; U; l0 S) S5 j; b
# R$ L( |9 U/ _7 i+ d$ g) P! @
第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构)4 M% c' [9 t1 T/ x7 B; _
" o! h3 Q- }. h; r- |# j
- k- t. _& G: Z 5 V8 H* W8 R/ o3 a2 j
做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA中是由触发器和查找表以及互联线等基本结构组成的,其实在我们 在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出 来的是一个什么样的电路,计数器选择器 三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序 就去往FPGA中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于 语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法 上面花太多的功夫了,verilog 言简意赅assign always case if else 掌握这些几乎可以写出90%的电路了,上面是我对FPGA学习的一些愚见,希望对大家有所帮助。
% |! C/ O- P% \( I3 X
' [, L4 [& u2 P/ u3 p" w$ G$ X. L) d5 F4 O- ]
号外:香港应科院 LTE小基站基带核心技术发布会参观团召集——三重好礼等你拿!凡报名参加此次活动的前80位发烧友,我们将提供本届“中国电子信息博览会”(CITE)VIP嘉宾入场证,无需登记就可参观本届盛会!赶紧报名(微信报名回复“电子发烧友观展团+姓名+联系方式”或登录论坛报名)抢入场证啦!% j( X# b% f" V
% U8 _9 e. Y8 r6 K
|