3. FPGA
FPGA(Field Programmable Gate Array),即现场可编程门阵列,它是在 PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为 ASIC 领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
(1) 技术背景
以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如 AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的 FPGA 里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。系统设计师可以根据需要通过可编辑的连接把 FPGA 内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品 FPGA 的逻辑块和连接可以按照设计者而改变,所以 FPGA 可以完成所需要的逻辑功能。
1984 年 Ross Freeman、Bernie Vonderschmitt 和 Jim Barnett 创立了赛灵思(Xilinx)公司,Xilinx 是第一个建立无工厂(fabless)生产模式,除了设计、营销与产品支持以外其他事务均进行外包的半导体公司,Xilinx 首创了 FPGA 这一创新性的技术,并于 1985 年首次推出商业化产品——XC2064,采用 2μm 工艺,包含 64 个逻辑模块和 85000 个晶体管,门数量不超过 1000 个。
Xilinx 创始人 Ross Freeman(左图, FPGA 的发明人)和 Bernie Vonderschmitt(右图)
世界第一款 FPGA——XC2064 实物图
FPGA 一般来说比 ASIC 的速度要慢,实现同样的功能比 ASIC 电路面积要大。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
与 FPGA 相似的另外一种方法是用 CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)。CPLD 和 FPGA 包括了一些相对大数量的可编辑逻辑单元。CPLD 逻辑门的密度在几千到几万个逻辑单元之间,而 FPGA 通常是在几万到几百万。CPLD 和 FPGA 的主要区别是他们的系统结构。
CPLD 和 FPGA 在系统结构的比较
选项 |
CPLD |
FPGA |
结构要求 |
|
|
内置功能模块和存储器 |
无 |
|
运行机制 |
CPLD 下电之后,原有烧入的逻辑结构不会消失 |
FPGA 下电之后,再次上电时,需要重新加载 FLASH 里面的逻辑代码,需要一定的加载时间。 |
(2) 工作原理
FPGA 采用了逻辑单元阵列 LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块 CLB(Configurable Logic Block)、输入输出模块 IOB(Input Output Block)和内部连线(Interconnect)三个部分。
FPGA 是可编程器件,与传统逻辑电路和门阵列(如 PAL,GAL 及 CPLD 器件)相比,FPGA 具有不同的结构。FPGA 利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个 D 触发器的输入端,触发器再来驱动其他逻辑电路或驱动 I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到 I/O 模块。
FPGA 的可编程实际上是改变了 CLB 和 IOB 的触发器状态,这样,可以实现多次重复的编程由于 FPGA 需要被反复烧写,它实现组合逻辑的基本结构不可能像 ASIC 那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。
查找表(Look-Up-Table,LUT)可以很好地满足这一要求,LUT 本质上就是一个 RAM。
目前 FPGA 中多使用 4 输入的 LUT,所以每一个 LUT 可以看成一个有 4 位地址线的 RAM。 当用户通过原理图或 HDL 语言描述了一个逻辑电路以后,PLD/FPGA 开发软件会自动计算逻辑电路的所有可能结果,并把真值表事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
输入与门的真值表
从表中可以看到,LUT 具有和逻辑电路相同的功能。实际上,LUT 具有更快的执行速度和更大的规模。
FPGA 芯片主要由 7 部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式 RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
FPGA 芯片的内部结构
每个模块的功能如下:
可编程输入输出单元(IOB)
可编程输入 / 输出单元简称 I/O 单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入 / 输出信号的驱动与匹配要求。
FPGA 内的 I/O 按组分类,每组都能够独立地支持不同的 I/O 标准。通过软件的灵活配置,可适配不同的电气标准与 I/O 物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。I/O 口的频率也越来越高,一些高端的 FPGA 通过 DDR 寄存器技术可以支持高达 2Gbps 的数据速率。
可配置逻辑块(CLB)
CLB 是 FPGA 内的基本逻辑单元。CLB 的实际数量和特性会依器件的不同而不同,但是每个 CLB 都包含一个可配置开关矩阵,此矩阵由 4 或 6 个输入、一些选型电路(多路复用器等)和触发器组成。
开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或 RAM。在 Xilinx 公司的 FPGA 器件中,CLB 由多个(一般为 4 个或 2 个)相同的 Slice 和附加逻辑构成。每个 CLB 模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式 RAM 和分布式 ROM。
数字时钟管理模块(DCM)
业内大多数 FPGA 均提供数字时钟管理,如 Xilinx 的全部 FPGA 均具有这种特性。
Xilinx 推出最先进的 FPGA 提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。
嵌入式块 RAM(BRAM)
大多数 FPGA 都具有内嵌的块 RAM,这大大拓展了 FPGA 的应用范围和灵活性。块 RAM 可被配置为单端口 RAM、双端口 RAM、内容地址存储器 (CAM)以及 FIFO 等常用存储结构。
CAM 存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM 中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。
除了块 RAM,还可以将 FPGA 中的 LUT 灵活地配置成 RAM、ROM 和 FIFO 等结构。单片块 RAM 的容量为 18k 比特,即位宽为 18 比特、深度为 1024,可以根据需要改变其位宽和深度,也可以将多片块 RAM 级联起来形成更大的 RAM。
丰富的布线资源
布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。
FPGA 芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为 4 类不同的类别,详见下表。
FPGA 芯片内部的布线资源表
类别名称 |
功能说明 |
全局布线资源 |
用于芯片内部全局时钟和全局复位 / 置位的布线 |
长线资源 |
用以完成芯片 Bank 间的高速信号和第二全局时钟信号的布线 |
短线资源 |
用于完成基本逻辑单元之间的逻辑互连和布线 |
分布式的布线资源 |
用于专有时钟、复位等控制信号线 |
底层内嵌功能单元
内嵌功能模块主要指 DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP 和 CPU 等软处理核(SoftCore)。
DLL 和 PLL 具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。
内嵌专用硬核
内嵌专用硬核是相对底层嵌入的软核而言的,指 FPGA 处理能力强大的硬核(Hard Core),等效于 ASIC 电路。为了提高 FPGA 性能,芯片生产商在芯片内部集成了一些专用的硬核。
例如:为了提高 FPGA 的乘法速度,主流的 FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的 FPGA 内部都集成了串并收发器(SERDES),可以达到数十 Gbps 的收发速度。
正因如此,FPGA 具有如下的基本特点:
- 采用 FPGA 设计 ASIC 电路,用户不需要投片生产,就能得到合用的芯片,是 ASIC 电路中设计周期最短、开发费用最低、风险最小的器件之一。
- 可做其它全定制或半定制 ASIC 电路的中试样片。
- 内部有丰富的触发器和 I/O 引脚。
- 采用高速 CMOS 工艺,功耗低,可以与 CMOS、TTL 电平兼容。
可以说,FPGA 芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
(3) 生产厂商
全球知名的 FPGA 生产厂商及相应的开发平台信息如下:
厂商 |
主要贡献 |
开发平台 |
Altera |
可编程逻辑器件的发明者 |
Quartus II |
Xilinx |
FPGA 的发明者,拥有世界一半以上的市场 |
ISE |
Actel |
提供非易失性 FPGA |
Libero |
Lattice |
提供瞬时上电操作、安全性和节省空间的单芯片解决方案的一系列无可匹敌的非易失可编程器件。 |
ISPLEVER |
Atmel |
2016 年,被美国 MICROCHIP 收购 |
尽管 FPGA 和 CPLD 都是可编程 ASIC 器件,有很多共同特点,但由于 CPLD 和 FPGA 结构上的差异,具有各自的特点:
CPLD |
FPGA |
|
应用场合 |
适合完成各种算法和组合逻辑 |
适合于完成时序逻辑 |
时序延迟 |
均匀的、可预测 |
不可预测 |
编程原理 |
通过修改具有固定内连电路的逻辑功能来编程 |
可在逻辑门下编程,比 CPLD 具有更大的灵活性 |
集成度 |
低 |
高 |
编程方式 |
|
|
速度 |
逻辑块级编程,速度快 |
门级编程,并且 CLB 之间采用分布式互联,速度慢 |
保密性 |
好 |
差 |
功耗 |
大 |
小 |
(4) 市场发展
20 世纪 90 年代后期 FPGA 市场就已经过一番激烈整合,许多业者不是退出 PLD(可程序化逻辑装置)市场,就是出售其 PLD 业务部门,或将 PLD 业务部门分立成独立公司,或进行购并等。
时至今日,FPGA 市场的主要业者仅剩数家,包括 Altera、Xilinx、Actel、Atmel、Lattice、QuickLogic 等,不过 2007 年 11 月 QuickLogic 也确定淡出 FPGA 市场,并转进发展 CSSP(CustomerSpecificStandardProduct)。
但 FPGA 领域依然有新兴业者出现,例如 AchronixSemiconductor、MathStar 等。且除了单纯数字逻辑性质的可程序逻辑装置外,混讯、模拟性质的可程序逻辑装置也展露头角,例如:
CypressSemiconductor 的 PSoC(ProgrammableSystem-on-Chip)即具有可组态性的混讯电路、Actel 公司也提出可程序化的混讯芯片——Fusion,或者也有业者提出所谓的现场可程序化模拟数组(FieldProgrammableAnalogArray;FPAA)等,相信这些都能为可程序化芯片带来更多的发展动能。
Cypress 的 PSoC 典型应用
FPGA 产品的应用领域已经从原来的通信扩展到消费电子、汽车电子、工业控制、测试测量等广泛的领域。而应用的变化也使 FPGA 产品近几年的演进趋势越来越明显:
一方面,FPGA 供应商致力于采用当前最先进的工艺来提升产品的性能,降低产品的成本;
另一方面,越来越多的通用 IP(知识产权)或客户定制 IP 被引入 FPGA 中,以满足客户产品快速上市的要求。此外,FPGA 企业都在大力降低产品的功耗,满足业界越来越苛刻的低功耗需求。
4. ASIC、单片机和 DSP 的区别与联系
ASIC 原本就是专门为某一项功能开发的专用集成芯片,比如:摄像头里面的芯片,小小的一片,集成度很低,成本很低,可是够用了。后来 ASIC 发展了一些,称为半定制专用集成电路,相对来说更接近 FPGA,甚至在某些地方,ASIC 就是个大概念,FPGA 属于 ASIC 之下的一部分。
单片机就是一个“百搭”的通用 CPU,提供各种接口来对整体进行控制,相当一个总调度,简单的功能一片 CPU 独立工作也就完成了。原来的 51 系列就是一堆 IO 口,后来慢慢的把常用的 PWM、AD 之类的功能加入了单片机。接下来又出现了 AVR、PIC、ARM、HOTEK……,其实 ARM9 以后,已经说不清 ARM 算哪类了,目前的架构来看,ARM 更接近 DSP。
与非网原创内容,不经允许,谢绝转载!
本系列更多内容,请参照:处理器史话汇总。