EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- X0 Y: q O4 [
* A4 r. T0 c- k N 掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了 FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂 贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这 个门槛很容易就过去。# d/ i* a/ [% G% Y% b
我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考, 不对的地方,欢迎大家讨论和指正。) Q7 b( L$ N. U1 `& i- s( j' c- }
% E$ ~' L5 e3 o/ w; m8 Y w5 i4 G5 {6 J
" J- ^. o4 ^! Q/ @6 j
) I; m+ P3 [# U6 r0 M+ EFPGA学习步骤1、工欲善其事,必先利其器。 ?9 P# X5 y, T2 l& K, s* {0 C3 j
' o5 b z" p( b7 g$ q3 x- z% R' R( `
: k( f6 X: u$ p& @3 S计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。
4 Z9 {$ y: ]! [- f$ R$ G硬 件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没 牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算 什么?( [3 S% x4 z a5 [0 M, m
7 R4 D# t4 h% S% K6 r
/ d1 j5 F% N5 z( G1 k! L
9 s) k% [6 `7 r# Z
FPGA学习步骤2、熟悉verilog语言或者vhdl语言 ,熟练使用quartusII或者ISE软件。
) g+ D1 ~. y2 L! B; I2 _1 b# f% c) h/ v. F) A4 }" s* {6 Q
4 s' h$ }" x6 E0 p
' ]5 F/ j& ^. \VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。
0 |' G$ ~7 n4 N3 }4 G: d起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。
3 w. o- e7 ~4 i6 O/ D6 c" L: _4 z$ n
% I; j% {8 {! n# |! B9 p
e5 G1 W& m) H' ~, P* y( HFPGA学习步骤3、设计一个小代码,下载到目标板看看结果: c0 N( e2 J+ O
8 l% @' J. g3 D; a( I! `: z" {) _9 t" Q' i
! N7 w* k2 e W0 o* O此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。. R/ L( C' ?8 M: d! {6 n, ~. R
; A- q6 b# X; u& S0 q
I( `" V! o& l# G( o
, W) |' n, z X0 [2 H& EFPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结果。6 g' c+ y3 n" B0 h# b5 ~- u
6 k H. S w4 @ T: t7 S: E! S
( [7 I" {8 Q( K# \7 y
4 }7 h' E$ i$ y! y0 f可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高。进入下一步。
5 M1 }% Z/ L3 z h/ B, n
# Z0 K" t. [! S% f9 e- k: o
$ k/ @) u. L, S
0 r# _; u T" pFPGA学习步骤5、设计复杂的代码,下载到目标板看看结果。
& I3 u3 i, y3 |3 C8 G
4 S, s w4 y: o/ a3 y# A7 S0 ^! t$ \
@; |9 X: V# v. |$ `' S" e$ d 4 b1 @& t4 O4 {1 q
譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了
* |+ M" ?2 E- H( \0 W) t3 x$ N( Y8 N
% x* D" }8 |7 A% r& b' H
; A1 a$ n: w5 m0 z4 `; [FPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口
7 X; N0 @' b {, k, y0 t o5 o) N3 C7 c: W6 L% p7 p
! g9 Q9 x9 p* ]
4 u& q* m W% H( u; q$ N# }这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了# ~$ K; d( U2 D* n0 k& [
6 ?7 w l" b- h' ~2 n& ]' O/ p9 x% H; X( O# b
8 Q0 Q9 v0 B1 \8 vFPGA学习步骤7、设计一个复杂的协议
% l" n0 Q( C( L: I4 A+ y
8 ?" k. o$ f, ?& b; m
2 c% b( m, F. i m- G. B
. c5 Q2 d8 y2 l譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、8 d. }2 z2 p6 X6 [
4 J$ v0 {0 B3 K; {! V
4 z+ d% f- @0 e9 M 3 y9 V# Y7 s9 I8 U( D+ A
FPGA学习步骤8、学习再学习$ ~' i/ b5 j% B0 b$ v# _# L: t
S& f& S+ a% V$ k; J- T
1 ^& L& L/ m* z' a5 y
' o& p, p8 |6 F# d学习什么,我也不知道,我只知道“学无止境,山外有山”。
; P+ H' _2 t' C9 z2 I现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。
- j* I8 ^6 e8 ^ X% P7 I; p7 r) A+ F) U9 \+ m4 a
/ Z5 a3 ~0 L* p* F/ M
6 |# E5 T! h, Y5 ^* i我觉得FPGA学习有以下几步必须要走: 1 N2 k4 P5 d) c, x5 ], O. i
第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里 面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。 不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。
8 E* |3 T' U: W; h; ^+ T2 C" i; a' o' S5 x! f2 k# r" K% D' S+ E
9 S( `) f3 I* \
& v- g; `- Q8 g# D# M4 x
第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。 ; m/ P+ A1 ]$ f4 t2 s! U
了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
^/ ~2 ^3 l0 F* ?8 [: N1 X: U0 ?5 H6 f. S( y7 M" ^
3 F1 \. L) Q: j/ i/ j0 n6 n , j- _- h$ _! E2 N" V$ G \
第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。# m7 P6 O5 l v
2 {; [! U) ]# p& Y
9 i6 E- C, t* e' |# b- h
7 Y: H- `7 f% f
第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构)
4 I k/ I* h; A
, ?- A& j( m# }$ ?4 H6 ~
+ o; ?. X' M# o) q/ D) \
{+ j! W6 I& ^2 P做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA中是由触发器和查找表以及互联线等基本结构组成的,其实在我们 在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出 来的是一个什么样的电路,计数器选择器 三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序 就去往FPGA中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于 语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法 上面花太多的功夫了,verilog 言简意赅assign always case if else 掌握这些几乎可以写出90%的电路了,上面是我对FPGA学习的一些愚见,希望对大家有所帮助。
7 x1 z, x! A& L
* E& f3 D4 f' U0 S ?* ]. f6 p9 X4 G. ]( w* j- B
号外:香港应科院 LTE小基站基带核心技术发布会参观团召集——三重好礼等你拿!凡报名参加此次活动的前80位发烧友,我们将提供本届“中国电子信息博览会”(CITE)VIP嘉宾入场证,无需登记就可参观本届盛会!赶紧报名(微信报名回复“电子发烧友观展团+姓名+联系方式”或登录论坛报名)抢入场证啦!( L/ @% u2 [5 a [/ d, V( V
! b( d: p$ F% W
|