|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
4 m; n6 u7 W* M2 B2 n- l4 Q
FPGA是个什么玩意?( F1 n7 L+ P- R, }& o+ B+ h% k9 L6 e8 X
6 Q6 I5 J A" B! {: Q% z
! \* W s8 s0 c: x/ |# L0 } z9 y, t3 j ~: e. W- A
1 R# T8 v( w7 G6 M
# Y) U" N4 O) P! b! Z3 T' c, Z首先来说:
* B! ~: O* S' {9 A
$ z6 `8 O l8 g$ i6 _% J% r' n8 X9 M
( {! h* G `% n" p( D; MFPGA是一种器件。其英文名 feild programable gate arry 。: a4 P" L1 C3 A6 N9 |: u
$ o& {" z/ p/ @1 K; b# {- t% F5 I7 c' ?
/ v3 y3 [) c, T* s* m, t3 K) y! ~4 Q6 J0 ?' o" r. @+ {4 o4 W
) n7 Y2 v- a5 W- P很长,但不通俗。通俗来说,是一种功能强大似乎无所不能的器件。. G) U% i! |* |# M
1 V& Q$ @# U0 s, G s- \+ Z1 d$ v) y7 M/ t1 b2 x3 J; w+ ^ L; \ | |; P
. X U& H- Q/ f$ @2 @4 ]. K
通常用于通信、网络、图像处理、工业控制等不同领域的器件。就像ARM、DSP等嵌入式器件一样,成为无数码农码工们情感倾泻而出的代码真正获得生命的地方。只不过,一样的编程,却是不一样的思想。嵌入式软件人员看到的是C。而FPGA工程师看到是硬件描述语言,verilog或VHDL。软件看到是函数、对象、重构。FPGA工程师则是模块、流水、复用。从现象上看,都是代码到下载程序再到硬件上运行。不能只看现象而忽略本质。FPGA 开发本质上是设计一颗IC,“**的身子,丫鬟的命”不是所有verilog/VHDL代码,都能获得青睐去流片成为真正的芯片,而更多的则成为运行在FPGA器件上,成为完成相同功能的替代品。其实现的功能却一点也不逊色于百万身价流片的近亲。从而成为独树一帜的行业。9 W+ w( u6 f+ {4 f6 m, d9 K. T4 w) R9 D( U G( H: v& F& F: |
- ?. P+ a* s( ]; E1 j. ^4 r! y; A0 `. E# |5 |# `! A- K
! {9 F, ?1 w8 pFPGA开发的流程,是通过verilog/VHDL等硬件描述语言通过EDA工具编译、综合、布局布线成为下载文件,最终加载到FPGA器件中去,完成所实现的功能。
9 b3 Z3 S4 y6 N" e# s2 V$ K
+ C5 h3 z* Z& ]- t9 J" d( N
0 O( R% {' L4 w5 P0 V4 G; \那硬件描述语言描述的是什么?这里描述的就是组合逻辑电路和时序逻辑电路。组合逻辑电路就是大家所熟知的与门、或门、非门。1 v9 R0 S6 n+ i
' I( j# A+ Y/ T. y5 H# ~
+ k6 d& T! z1 ~! E时序逻辑电路则是触发器。数字芯片上绝大部分逻辑都是这两种逻辑实现的。也就是基本上每个电子行业的人所学过的数字电路。6 o+ C/ r/ _% D1 g2 M8 R2 w: m7 `8 Z; |* A& t v
( R2 X6 \/ e' D7 i" \: C% ~
3 X5 w0 @1 ^7 w3 A5 S- ^3 f: G7 n% r% ^3 H$ I) Q
顺便说一下,感谢香农大师,在其硕士毕业论文<继电器与开关电路的符号分析>就奠定了数字电路的的根基。只不过在FPGA中,与或非的操作变成了查找表的操作。于是所有的数字电路变成了查找表和寄存器,这就构成了FPGA的基础。查找表负责逻辑实现,寄存器存储电路状态。二者配合,双剑合璧,天衣无缝。这是最初的FPGA的雏形。 1 g) q7 r0 n% x) N8 R
2 h7 Q, s+ F) w+ y$ j: g8 h! [4 X8 W; n# _ W$ d2 ^
. s9 g' ?, a( c" X
3 s4 g4 P, X& {现代FPGA内部出了查找表和寄存器之外,还有RAM块,用于存储大量的数据块,这是因为RAM块较寄存器来存储大量数据更能节省芯片实现的面积。FPGA内部的时序电路则需要时钟的输入,通常FPGA内部需要时钟种类较多,因此需要在片内产生所需的的相关的时钟,如不同频率,不同相位的时钟,因此时钟管理单元DCM/PLL也是必不可少的内部部件。4 A8 M2 `" ]/ K- N0 ^) q* h. p( ~* ^# J' K* l' Z
9 u0 u6 Y8 }* c3 n- s3 q. Q# b
- L x! ~; n( ~9 m0 n( t. Y
% R! t4 n: u. K9 v5 S除此之外,FPGA内部还包括接口I/O,I/O分为普通I/O和高速I/O,高速I/O支持例如高速的SERDES,用于实现XAUI,PCIE等高速接口,这些接口动辄几Gbps到10Gbps以上。此外种类多种多样的硬核IP也是各FPGA厂商差异化竞争利器,例如POWERPC、ARM等硬核IP。从而构成CPU+FPGA于一体的集可编程性和可重构的处理平台。因此,相对来所,FPGA虽然发展有二三十年的历史,其基本架构一直不变不大。 3 Q. Z9 w: j+ ~2 c G' y9 s. X0 E) L u3 i$ A- M: h
6 l- U& K0 D: P- B4 V0 e* E5 S+ t7 z$ B# m5 c7 r
# O. }! P1 m1 ~" \
8 h. j. n# l9 W, G/ ^回到问题开始的地方,FPGA的英文翻译过来是现场可编程门阵列。这是相对ASIC来说的,ASIC的硬件也可看做是门阵列,但是其是非可编程的器件。流片完成其功能就固化了,而FPGA的可编程性就在其能够重新下载配置文件,来改变其内在的功能,这就是其可编程性的由来。. d0 i' M9 e* Y* _* {1 h! b8 \, v
9 @, l3 ^/ U$ a$ ]4 o* _4 B4 `" C( ~( @) Q
4 X! x# y: R3 B7 M. C$ N9 F; _7 Y0 d* b$ p" h
从前端开发流程来说,FPGA和ASIC开发并无二至。由于ASIC开发一次性投入成本较高,FPGA无疑是一种经济的替代方案,用于实现的高速的数据并行处理。如业务能够支撑大规模应用并且协议固化,则能够分摊成本的ASIC实现就有成本的优势。' A5 R4 f# r" D! r
1 I+ `3 k1 p; ~" j- i6 h3 D- Y8 k+ g/ i
FPGA作为一种器件,技术上主要垄断在少数大公司手中,那就是双巨头ALTERA和XILINX。除此之外还有一些份额相对较小的公司,例如ACTEL和LATTICE。不止是FPGA的硬件芯片,其配套的EDA工具技术壁垒更高。因此相对于CPU来说,FPGA的国产化更不乐观,不过已经有国内的厂商来从事这一行业,例如国微和京微雅格等,也在一些细分市场上推出自己的FPGA产品。 k1 n" V$ Z8 H% {
7 U6 ~" o3 {: t
0 [; b( V! s' `1 ~0 E2 d' c" B+ h) c |
|