|
FPGA(FieldProgrammableGateArray)译作中文为:现场可编程门阵列,也就是设计者可以在现场对可定制的数字逻辑进行编程的集成电路。
: P \+ v% @4 A, c
9 n, I2 H1 c; E t) ~ N2 d' e 1' Y1 o. [" ^* j/ B5 d
5 {1 g0 P" y# U0 o5 p( }
什么是FPGA?
) J* E" `2 h c; M4 H* @$ V( t% p8 y5 _0 x5 k- V
首先,如果你从未接触过FPGA(现场可编程门阵列),或者有过一点基础想要继续深入了解这个行业,在这个小节,我会向你介绍FPGA,并且向你解释FPGA都能解决什么问题,如何解决这些问题,并讨论如何将设计进行优化等等。2 L s. U( r' }6 o
) D3 t+ n3 x# f& r- ]! ?! z! q# j 在FPGA四个英文字母中,F代表着Field,即现场,那什么是现场呢?FPGA中的现场,是一种广义上的现场,既有指代产品所处之地,又体现的是FPGA的一种“即时性”;而P是Programmable,代表着可编程;G为Gate,门,也就是数字电路之中的逻辑门;A为Array,指由逻辑门组成的阵列。将四个英文单词组合,就是我们常说的现场可编程逻辑门阵列——FPGA。: Y. C7 N8 B# r
- @7 S9 e& T8 @3 E
与其他搭建硬件平台的方式相比,FPGA做了两件事,首先,它使你能够自由地搭建你需要的硬件平台,取代了从前使用ASIC(专用集成电路)时所不得不承担的长开发时间、高额开发经费以及设计风险,另外一点,相比于其它的硬件构成,它允许你构建你所需要的硬件而不需要ASIC,而且比采用微处理器内核更简单、快速、省电。: D) T: ~. ~4 A* [1 r
. Z/ y$ B7 I, O: L
2
% `$ p# v4 W6 W! Z
- e9 K8 Q4 d, \1 }5 B 我们为什么需要FPGA?
1 e" s6 ], o1 _" U- L9 H# m- I, s5 N2 n+ T
①编程自由度高
6 M1 O) A$ Y. F) b, u2 b q' Z8 ~' n8 v/ M) }
FPGA貌似在数字世界里无所不能,它就像乐高的积木一样可以搭建各种不同的功能模块,实现你所希望的各种功能,当然,首先你必须掌握最基本的数字逻辑知识,学会一种用来构建各种功能的工具语言(在这里我们推荐广受欢迎的Verilog),再次你要动脑(考验的是你的逻辑思维是否清晰),一个优秀的建筑师的作品是在脑子里勾画出来的,而不是拿积木碰运气拼凑出来的。
4 i7 W7 a/ g: L/ i, M& d
! }& ]& o& F/ O- t* c, t5 d( t ②开发周期短:“现场可编程”
" l+ l! S) ^$ x5 E& y, k9 [5 ^! Y3 C- m( M8 W1 `" \9 R. d
FPGA可以使你去对产品进行“现场”编程,这使得调试周期缩短,产品也就能够迅速适应新的工艺标准。并且产品在已经在现场安装上了之后依然可以对其硬件进行直接配置,也就是我们所说的“现场可编程”。如果你能够对简单的逻辑门进行合理配置或者将你想要的硬件系统描述出来,你就能利用这些简单的逻辑做些更有意义的事情。而在你的技术还没有成熟时,FPGA允许你进行多变化的设计,并且在设计流程中不用承担高额的经费以及和一些不得不面对的设计风险。3 {' ]! L/ u( g9 n/ H( n
7 u: ]0 [4 x8 A# e0 N+ v( Q ③高速
; H3 ~: K& Z" r- `0 t' j8 X% D$ c8 \- w. E) w+ x3 l
FPGA的高速体现在两个方面:并行性,PLL锁相环
" A9 a: m& C& [4 B2 q, G2 }$ V0 _' w0 c ^) U# s
第一点是FPGA的并行性,相比于传统的MCU,程序规模越大,越能体现出FPGA的优势。也许简单的“流水灯”程序看不出差别,但是如果是大型系统,存在大量的数据流,FPGA就可以调用内部的FIFO核进行高速处理,最终能够与MCU系统能够相差出数十毫秒到数百毫秒——这对于通讯行业以及航天、军工行业是极为致命的。
8 y' ~9 x& X/ g
* D7 i7 v8 S! {# [# G# g& W3 g 第二点就是PLL锁相环,MCU上同样含有PLL锁相环,但它受到的限制非常大,通常只能进行几个档位的倍频,而FPGA上的PLL倍频自由度较高,以Altera公司生产的MAX10为例,50MHz的时钟通常在芯片允许的情况下外部时钟可倍频到470MHz左右,而内部时钟可倍频到1.3GHz。
/ Z6 T, h: I) h% h, N0 D, r
* L8 _# J$ l! x$ Y! h9 } 举个汽车的倒车摄像头的例子,如果摄像头完成从视频捕捉到视频显示共花费了250ms的延时时间,而国家要求的延时时间不得超过100ms,你就可以用FPGA去取代传统MCU去处理图像信息,来满足政府的延时要求。* z8 i, s( d" @4 A& e1 V) c3 Q$ g
% Z1 S8 F0 p! \
④高集成度% |4 @7 {/ w. [
/ i% D' C) }# |! ]+ j' v! { 当半导体行业产品集成度越来越高的同时,编程者门也意识到可以在FPGA中建立整个子系统,而不是只局限于使用ASIC(专用集成电路),他们可以将更多的设备放在相同大小的封装里——并且允许实现更多样的功能和更复杂的算法,计算速度上升的同时,功耗也会更小。( ~/ q: z+ s6 F9 Z$ K
. W5 e3 _" D- _$ g, n. B ⑤可嵌入IP硬核
0 P6 N$ [' t/ k# G( b% n- r" Q* J1 H, U5 ^6 Z
FPGA可以内置IP核,提供丰富强大的功能,使开发者无需浪费时间去重复的构建同一种功能模块。同时,也会减少资源的消耗并且节约很多资金,目前FPGA的存储块可以嵌入很多个IP核,例如,计算电路,收发器,协议控制器,甚至嵌入一个MCU,然而,重要的是要记住,IP核不是像FPGA的其他逻辑单元一样可以重复编程,但是它是一个为了实现某一功能而定制出现的模块,也就是说对于IP核,我们不用每次都去重构它,这是在做无用功,我们直接调用即可。' e1 T I Q, D6 F. n0 Q& E0 ~
- _9 v. D* C" k( A. f V 因为IP核的这一特性,FPGA制造商可以将编写完成的IP硬核以商品的形式进行销售,也是因为这一原因,大多数的电子系统趋向了标准化。6 Y r1 f3 R( T0 g- z
( W( ?5 E1 u4 h+ i9 w9 L2 O v( {& l
|
|