|
FPGA是英文Field-Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 + k0 D+ L. b, c4 L+ q9 x
7 |1 f. d9 |5 N+ _- tFPGA工作原理/ D3 X5 O( Y5 q7 p# F$ g; X3 a
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:
8 R+ u; k9 D- |) G* E! M! y; a/ y* u5 j: z: _* b
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
% ^( K/ T1 O, l4 `) e- k [- C( I; J4 M6 N0 y( R, D
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 / ?% m8 o! h. w$ Y0 |
9 g9 G0 A" s8 o: [3 G+ ` 3)FPGA内部有丰富的触发器和I/O引脚。 ' c+ t, G9 ^- Y
; s" }* b4 y; I. b
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 + P2 d7 d% G, a' x3 F* Y' x
! l1 U/ ^ \5 r) k9 {- h I G
5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
) Q" g" b# I( X- g5 m# H9 `+ l. |$ ^9 @" z( Y
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
; u: }2 k/ T8 N- \; G7 r; \+ x# C2 y& M" D
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。
: _1 _ X) }, T z, S% y7 i5 ^ [% \ F( J# E# x# y i
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。
# g& V/ j2 n% q/ o0 p
' ^' {8 H; ^/ G4 {' T9 LFPGA配置模式
. W9 D8 J& h* j FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。% t/ s: d' U' [ s( b( G# Y; O! r
1 J5 ?3 S- m, G( K; Q0 }, U 如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。
9 `6 D. B- w, `* Y6 A& o! y$ C. a5 v9 C; W0 C
例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。 4 y* g+ s( c9 y3 I w$ j1 S4 i
- i& Q# a+ j0 O. a" H/ `
幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nm FPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度帮助地系统设计工程师以更快、更高效的方式应用65nm FPGA器件。设计软件供应商Magma推出的综合工具Blast FPGA能帮助建立优化的布局,加快时序的收敛。
" i' }& `2 v6 Y! z- _) H* {; c! l* Q2 N" i6 ?: u l
最近FPGA的配置方式已经多元化!
# j. T9 G( C/ @4 j
, n) [6 a% v- `) V( a# iFPGA主要生产厂商介绍 1、Altera
& [, S5 }2 q& Q" J/ R# m% ]# m9 U' p( k* s
2、Xilinx
: s5 ~' Q6 ~( i/ n+ l6 o. _. o$ C5 A4 N0 P& i5 o, H, ]* T
3、Actel- q3 e) j; J" \0 w2 F& F" Q7 s
& l/ c' n/ B6 W( ~2 }4 c% e1 ?
4、Lattice# z7 ]5 P" e3 r u3 P
! p; l9 x/ d& F' K6 W
其中Altera和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。
7 M+ O" H6 w. ?3 \0 {
1 {- b/ F# f' F7 G FPGA设计的注意事项" n: C. |1 z, o; z+ p
2 `2 v+ j! l t% r; J
不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。 4 u, ?/ ^! D+ l6 g
1 B1 W# V4 Y' ]
I/O信号分配 % ?/ h' q, i$ m$ H* Y
/ N' c8 Z2 X& f7 Z 可提供最多的多功能引脚、I/O标准、端接方案和差分对的FPGA在信号分配方面也具有最复杂的设计指导原则。尽管Altera的FPGA器件没有设计指导原则(因为它实现起来比较容易),但赛灵思的FPGA设计指导原则却很复杂。但不管是哪一种情况,在为I/O引脚分配信号时,都有一些需要牢记的共同步骤:
7 M2 @2 A" ~2 h
7 b J; f; B }! k/ r 1. 使用一个电子数据表列出所有计划的信号分配,以及它们的重要属性,例如I/O标准、电压、需要的端接方法和相关的时钟。 3 f% q6 b) B9 J' K) r
7 O- A6 b. d u7 |8 s 2. 检查制造商的块/区域兼容性准则。
6 k3 ?7 J5 S1 |7 a
7 S+ b1 S6 z% M 3. 考虑使用第二个电子数据表制订FPGA的布局,以确定哪些管脚是通用的、哪些是专用的、哪些支持差分信号对和全局及局部时钟、哪些需要参考电压。 $ N: p) t0 V- h2 P2 \" H
^2 @ q5 `( q 4. 利用以上两个电子数据表的信息和区域兼容性准则,先分配受限制程度最大的信号到引脚上,最后分配受限制最小的。例如,你可能需要先分配串行总线和时钟信号,因为它们通常只分配到一些特定引脚。
2 H% s L+ }+ `( _/ w) Y' ?! X3 c) K
5. 按照受限制程度重新分配信号总线。在这个阶段,可能需要仔细权衡同时开关输出(SSO)和不兼容I/O标准等设计问题,尤其是当你具有很多个高速输出或使用了好几个不同的I/O标准时。如果你的设计需要局部/区域时钟,你将可能需要使用高速总线附近的管脚,最好提前记住这个要求,以免最后无法为其安排最合适的引脚。如果某个特定块所选择的I/O标准需要参考电压信号,记住先不要分配这些引脚。差分信号的分配始终要先于单端信号。如果某个FPGA提供了片内端接,那么它也可能适用于其他兼容性规则。
5 W! ?5 |4 P3 J/ | \2 ~ m$ {/ G. m. X( n4 z6 t* W' f# o; N
6. 在合适的地方分配剩余的信号。
% V' ]( X' O' m$ ?. b( H
3 n% `' ^3 _( Z; N6 a 在这个阶段,考虑写一个只包含端口分配的HDL文件。然后通过使用供应商提供的工具或使用一个文本编辑器手动创建一个限制文件,为I/O标准和SSO等增加必要的支持信息。准备好这些基本文件后,你可以运行布局布线工具来确认是否忽视了一些准则或者做了一个错误的分配。
4 X7 L* O: t6 |) v( A g; H! N6 i8 _% d$ ]; e$ F7 N
这将使你在设计的初始阶段就和布局工程师一起工作,共同规划PCB的走线、冗余规划、散热问题和信号完整性。FPGA工具可能可以在这些方面提供帮助,并协助你解决这些问题,因此你必须确保了解你的工具包的功能。 ) z% A1 p2 O- f/ p4 b6 ]' T
3 F+ \2 F, g7 a
你咨询一位布局专家的时间越晚,你就越有可能需要去处理一些复杂的问题和设计反复,而这些可能可以通过一些前期分析加以避免。一旦你实现了满意的信号分配,你就要用限制文件锁定它们。, H7 h5 r2 h6 m5 e8 l }- H
" y8 J) u# w7 G1 _/ g% k) L& M$ g3 N 基于CMOS的设计主要消耗三类切率:内部的(短路)、漏电的(静态的)以及开关的(电容)。当门电路瞬变时,VDD与地之间短路连接消耗内部功率。漏电功耗是CMOS工艺普遍存在的寄生效应引起的。而开关功耗则是自负载电容,放电造成的。开关功耗与短路功耗合在一起称为动态功耗。下面介绍降低静态功耗和动态功耗的设计技巧。" S/ K7 s1 p5 J) t
' l$ @/ C) b1 |( V' o6 t4 L5 C% m
降低静态功耗
5 f1 s' t Q/ \0 _& v! A% W. n# y& {& F' g a$ W7 e' h3 h
虽然静态电流与动态电流相比可以忽略不计,然而对电池供电的手持设备就显得十分重要,在设备通电而不工作时更是如此。静态电流的因素众多,包括处于没有完全关断或接通的状态下的I/O以及内部晶体管的工作电流、内部连线的电阻、输入与三态电驱动器上的拉或下拉电阻。在易失性技术中,保持编程信息也需一定的静态功率。抗熔断是一种非易失性技术,因此信息存储不消耗静态电流。
: b3 C* C( ?% _
1 @7 L" d. H. ~( P2 q 下面介绍几种降低静态功耗的设计方法:9 V% D N( Z, g$ M* `( ~
# A+ D' D$ t, O
•驱动输入应有充分的电压电平,因而所有晶体管都是完全通导或关闭的。
- ]; `# \! j6 M/ `( j3 O1 [9 z3 Y* n* ^7 \% x4 @
•由于I/O线上的上拉或下拉电阻要消耗一定的电流,因此尽量避免使用这些电阻。
% G3 I H6 t+ p5 j H5 P! H& Q+ v2 R; C$ j
•少用驱动电阻或双极晶体管,这些器件需维持一个恒定电流,从而增加了静态电流。+ L8 Y+ {4 y" U) l0 ?
3 r2 P& z- H' o6 X
•将时钟引脚按参数表推荐条件连接至低电平。悬空的时钟输入会大大增加静态电流。
" c! P, S% R% P
; f9 n% P s! ^" i j •在将设计划分为多个器件时,减少器件间I/O的使用。5 R( V# A" p2 C$ Y0 g8 i3 m/ a
/ x% ^9 v& b/ \3 t: K/ A
eX器件LP方式引脚的使用/ ^' u9 _/ ^/ E0 |$ E( p
l# e; Y% X2 X A$ R
Actel eX系列设计了特殊的低功率“休眠”模式。在该引脚驱动至高电平800ns后,器件进入极低功率待机模式,待机电流小于100μA。在低功率模式下,所有I/O(除时钟输入外)都处于三态,而内核全部断电。由于内核被断电,触发器中存储的信息会丢失,在进入工作模式(在引脚驱动至低平200ms后)时,用户需再次对器件初始化。同样,用户也应关闭所有通过CLKA、CLKB以及HCLK输入的时钟。然而这些时钟并不处于三态,时钟就可进入器件,从而增加功耗,因此在低功率模式下,时钟输入必须处于逻辑0或逻辑1。
, p$ \+ E y- i1 p0 g0 p) e' r4 G _( [; N+ d
有时用户很难阻止时钟进入器件。在此场合,用户可使用与CLKA或CLKA相邻的正常输入引脚并在设计中加进CLKINT。这样,时钟将通过靠近时钟引脚的正常输入进入器件,再通过CLKINT向器件提供时钟资源。
! S9 f3 L6 B' B3 h( S) Z( j6 E2 L
6 y" Z; F1 D. b0 X/ t( d) M 采用这种输入电路后,由于常规I/O是三态的,因此用户不必担心时钟进入器件。当然,增加一级门电路会产生0.6ns的较大时钟延时,幸好这在多数低功率设计中是可以接受的。注意应将与CLKINT缓冲器相关的CLKA或CLKB引脚接地。9 ?. s+ K# a- S* s
. e3 X; c6 o4 R! u 此外还要注意,CLKINT只可用作连线时钟,HCLK并不具备将内部走线网连接到HCLK的能力,因而HCLK资源不能被常规输入驱动。换句话说,如果使用LP引脚就不能使用HCLK;使用HCLK时就应在外部截断时钟信号。4 O! d$ @0 D H0 x( E) n: j
* u8 t& T" i$ p+ S6 W
降低动态功耗
$ |/ _% G7 R% C* j/ s5 n7 G8 ` e- f* E
动态功耗是在时钟工作且输入正在开关时的功耗。对CMOS电路,动态功耗基本上确定了总功耗。动态功耗包括几个成分,主要是电容负载充电与放电(内部与I/O)以及短路电流。多数动态功率是内部或外部电容向器件充、放电消耗的。如果器件驱动多个I/O负载,大量的动态电流构成总功耗的主要部分。
% D+ X0 t$ l0 n# r% f3 g1 d/ c) s2 g
对设计中给定的驱动器,动态功耗由下式计算
1 ~0 X: i1 v% y# A* M
: \3 l' v8 R: H, w. S p=CL×V 2 DD×f
, H4 R; U2 Z: W r' A' i. H; w9 T
6 o; S+ [% N+ R+ z 式中,CL是电容负载,VDD是电源电压,f则是开关频率。总功耗是每个驱动器功耗之总和。
9 _/ S& U7 k$ f
: f* `+ p9 x) n; J3 _ 由于VDD是固定的,降低内部功耗就要降低平均逻辑开关频率,减少每个时钟沿处的逻辑开关总数、减少连线网络,特别是高频信号连线网络中的电容值。对低功率设计,需要从系统至工艺的每个设计级别中采取相应预防措施,级别越高,效果越好。
- g' w3 W; H1 s4 U, C' t3 S6 a# d! s1 \5 n. A0 @
FPGA与CPLD的辨别和分类 FPGA与CPLD的辨别和分类主要是根据其结构特点和工作原理。通常的分类方法是:# ]3 j3 U$ D) a0 I: ^
" r/ c' O: r+ |6 X% y
将以乘积项结构方式构成逻辑行为的器件称为CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。. H& _ x, W( z# F% r
# C8 O5 m7 ~& a8 Q7 D* v- e
将以查表法结构方式构成逻辑行为的器件称为FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等。
; p& F, J8 A1 j/ o9 @1 I5 U" }9 d8 p" a% {. `
(注转于网) |
评分
-
查看全部评分
|