当前位置:首页 > 新闻资讯 > FPGA之家动态 >

FPGA技术基础与实验教程

时间:2026-04-21      来源:FPGA_UCY 关于我们 0

程小雄编

中山大学

第一章概述

1985年,Xilinx公司推出了第一片FPGA(FieldProgrammableGateArray,现场可编程门阵列)器件,至今FPGA器件已经历了近二十年的发展。FPGA器件从最初的1200个可利用门,发展到20世纪90年代的25万个可利用门,而近年来国际著名厂商Altera公司、XiHnx公司又陆续推出了数百万门的单片FPGA芯片,将FPGA器件的集成度提高到了一个新的水平。

纵观PGA器件的发展,它之所以具有巨大的市场吸引力,根本在于zFPGA不仅可以满足电子系统小型化、低功耗、高可靠性等需要,而且其开发周期短、开发软件投入少、芯片价格不断降低,因而FPGA越来越多地取代了ASIC(ApplicationSpeciEcIntegratedCircuit,专用集成电路)的市场,特别是对小批量4多品种的产品需求,使PGA成为首选。

目前,FPGA系统设计开始进入"片上可编程系统"的新纪元,芯片朝着高密度、低压、低功耗方向挺进:国际各大公司都在积极扩充其IP库,以优化的资源更好地满足用户的需求,扩大市场。特别是引人注目的是FPGA动态可重构技术的开拓,这将推动数字系统设计观念的巨大转变。

1.1可编程逻辑器件(PLD)发展概述

PLD(ProgrammablehgicDevice,可编程逻辑器件)经过几年的发展,芯片规模、密度、性能都有了惊人的变化。PLD己日渐成为计算机应用、通信技术、自动控制、仪器仪表等领域广受技术人员欢迎的器件,它是科学实验、样机试制、小批量生产的最佳选择。现在的电子设计师,不仅要设计电子线路,设计PCB板,还要设计ASIC芯片。掌握现代电子设计方法,熟悉PLD结构是当前我国电子企业工程师的当务之急,是高校电子类、计算机类本科生、研究生的必修课。

自JackBill博士发明第一片IC(IntegratedCircuit,集成电路〉起,PLD已经走过了四十多个春秋。从简单的门电路到复杂的微处理器和存储器,PLD都在与整个半导体工业共同成长。

曾经有两个重要的问题越来越严重地阻碍了数字电子设计技术的发展。其一是,随着电子技术的发展和市场对新的电子产品的要求,实用电子系统,特别是数字电子系统的规模越来越大,一般的数字系统已超出了几千门的逻辑规模。如果仍然使用诸如图2-37所示的小规模逻辑器件来设计,势必导致产品的体积、成本和功耗急速上升,且由于一个产品中此类器件的数量太多而使系统的可靠性大为下降;其二则是,如果使用诸如74系列的小规模逻辑器件,传统的数字电路手工设计技术显然元法完成涉及数千门以上的大规模逻辑电路的构建。其中一个明显的问题就是,74系列器件构成的逻辑系统,其硬件调试和测试便是一个不可逾越的障碍。因为如果在测试中发现速度、信号干扰、可靠性、甚至电路板布线方案等不符合设计要求时,只能放弃原来已完成的系统,从头开始设计。这将严重降低产品的设计效率,增加产品的设计成本。

在利用固定功能逻辑器件进行数字电路设计时,通常将系统划分成若干个模块,然后选择合适的通用型逻辑器件连接成所需的电路。然而这种设计方法存在许多缺陷,首先是电路的体积和功耗大,涉及的器件数量多,器件间的连线多,导致电路的速度低,可靠性下降;其次是设计方案不便于修改,一旦形成电路,修改的工作量很大;而且设计人员需要非常熟悉大量的各种通用型逻辑器件的性能和引脚封装,因此设计效率极低;设计完成后又很难对系统进行仿真、测试和排错;此外,设计的电路容易被复制,不利于知识产权的保护。

所幸的是,可编程逻辑器件的出现彻底改变了这种不利的局面,并为电子设计自动化奠定了基础。可编程逻辑器件(ProgrammableLogicDevice,PLD)是早在20世纪70年代就发展起来的一种新的集成电路元件,是大规模集成电路技术发展的产物,是一种半定制的集成电路(即设计者可以根据需要对此器件的功能作进一步的设计),它集成了大量的逻辑单元和可编程连接元件,设计者可以结合计算机软件工具快速、方便地构建所需要的数字系统。设计者通过对器件中的逻辑单元的编程,就可以方便地设计出具有各种不同逻辑功能的元件。采用PLD设计逻辑电路可以充分发挥大规模集成电路的一系列优点,利用电子系统自动设计软件能方便、快捷地完成对PLD的设计、编程、调试和仿真等工作,为设计工作带来极大的便利,同时最大程度地消除了基于传统的设计方法和通用逻辑器件构成的数字电路系统的种种不利因素。为了解决这些问题,人们提出了一种可编程逻辑器件的概念。这种器件是一种逻辑功能可通过计算机轻易重构的数字电路器件。然而,这种逻辑可再编程(重构)的器件,由于受到当时集成电路工艺技术的限制,一直未能如愿。直到20世纪后期,集成电路技术有了飞速的发展,可编程逻辑器件才得以实现。这种器件不仅能满足大规模,乃至超大规模(近千万逻辑门)的逻辑设计,更重要的是系统能通过计算机完成快速测试和电路结构重构(即电路的布线布贯主莹莹二一直气吨速完成),从而极大提高了数字系统的设计效率和系统性能,基于计算机的数字系统自动设计技术(电子设计自动化EDA,fLEOInation)也得到了迅猛的发展。

PLD业界有以下三大发展方向:

(1)向密度更高、速度更快、频带更宽的百万门系统级方向发展。

(2〉向嵌入标准或通用功能方向发展。

(3)向低电压、低功耗的绿色元件方向发展。

PLD主要是指CPLD(ComplexProgrammableLogicDevice,复杂可编程逻辑器件〉和FPGA,能应用在不同的高科技研发领域,如数字电路设计、微处理器系统、DSP、电信、可重构计算机及ASIC设计。由于以EEPROM、SRAM或FLASH为基础,用户可以通过计算机对芯片进行编程,从而大大降低成本和缩短开发时间。在中国,通信设备制造商是PLD的最大用户。此外,也有厂家正用PLD开发DVD、机顶盒、可视电话和Intemet家庭娱乐设备。

近几年,我国在消费电子和通信设备制造方面进行了大力发展。21世纪是知识经济时代,人们需要的是"高价值 " 的产品 , 而非 " 高产量 " 的产品。那么 , 有没有办法让我国的电子 产品来一个 " 飞跃 ", 迅速从 " 低端 " 跨到 " 高端 " 呢 ? 回答是肯定的 , 有效利用 PLD 技术 就是解决方案之一。

随着中国的企业由制造型向设计型转变 , 利用 FPGA 作原型设计及前期样品生产的做法 将会逐渐流行。通过使用 CPLD/FPGA, 可得到降低成本和上市时间快的好处。

可编程逻辑器件的结构原理其实并不复杂。我们知道 .7 飞主苦至主王室杂的数字 电路系统都是由基本门来构成的 , 如与门、或门、非门、号着 Z -t- 等。由基 本门可构成两类数字电路 , 一类称为组合电路 , 另一类有亏于二三 ZF- 艾现 , 不是 所有的基本门都是必需的。例如 , 用与非门单一基本门就 E 丁汇 Et 主哇三 7 基本门。任 ,

何的组合逻辑函数都可以化为与或表达式 , 即任何的组合毛严革 f 一二字丁一或门二 级电路实现。同样 , 任何时序电路都可由组合电路加上存哇气 ' 二 g 非二异法发器等 构成。由此 , 可以提出一种可编程电路结构 , 即乘积项逻荤 73 际毛主瓦τ吉理结构图 如图 1-1 所示。

图 1-1 基本PLD器件原理结构图

当然 ," 与一或 " 结构组成的 PLD 器件的功能比较简阜 , 二号 B γ d 生据只读 存储器 ROM (Read Only Memory) 工作原理、地址信号与嘻二在圣色 frr 主 .以及专

用集成电路 ASIC (Application Specific Integrated Circuit 277 三 r 三 t 二辜百发 , 构 造出另外一种可编程的逻辑结构 , 那就是所谓查找表的逻整二又 -三 J …芝妻函数的 构成采用了静态随机存储器 SRAM" 数据 " 查找的方式 .二专芒手 5 气妾穹成了一 个查找表阵列 , 称为可编程门阵列 (Programmabid GateAr)更大逻 辑规模和设计更灵活的 PLD 器件 , 即现场可编程门阵列( gamIIIable Gate Array), 相关内容都将在以后的章节中陆续介绍。

1.2 可编程逻辑器件的发展历程

历史上 , 可编程逻辑器件经历了从可编程只读存储器 FF \二 CJJ2 日 e Read Only Memory) 、可编程逻辑阵列 PLA(Programmabie L 二ι -气 : 革圭主列逻辑

器件 PAL (Programmabie Array Logic) 、通用可重复结琶芒 EF 莘 J 二 -ι Generic Array Logic), 到采用大规模集成电路技术的可擦除型可主王呈量差仨芒二 Erasa- bie PrdEraIIIIIIable Logic Devic), 直至复杂可编程逻辑器饵二二 ---Program- ma 飞le Logic Device) 和 FPGA 的发展过程。在结构、工艺妻王王 -T 卢出切可

活性方面都有了极大的改进和提高 , 并仍在不断地发展。 可编程逻辑器件大致的发展过程如下 :

(1)20 世纪 70 年代 , 熔丝编程的 PROM 和 PLA 器件是最早的可编程逻辑器件。 (2)20 世纪 70 年代末 , 对 PLA 进行了改进 , 美国 AMD 公司推出 PAL 器件。 (3)20 世纪 80 年代初 ,Lattice 公司发明电可擦写的、比 PAL 更灵活的 GAL

器件。

(4)20 世纪 80 年代中期 ,Xilinx 公司提出现场可编程概念 , 同时生产出了第一片 FPGA 器件。同一时期 ,AItem 公司推出了 CPLD 器件 , 较 GAL 器件有更高的集 成度。

(5)20 世纪 80 年代末 ,Lattice 公司又提出在系统可编程技术 , 并且推出了一系列

在系统可编程 CPLD 器件 , 将 PLD 的性能和应用技术推向了一个全新的高度。

(6)20 世纪 90 年代后期至 21 世纪初 , 可编程逻辑集成电路技术进入飞速发展时 期。器件的可用逻辑门数超过了百万门 , 并出现了内嵌复杂功能模块 ( 如乘法器、

RAM 、 CPU 核、 DSP 核、锁相环 PLL 等 ) 的 PLD 器件 , 以及可编程片上系统 SOPC (System On Programmable Chip) 。有了 SOPC, 可以将几乎整个大规模数字系统 , 甚 至一个计算机系统都设计在一个单片可编程逻辑器件中了。

1.3 可编程逻辑器件的分类

从以上的介绍就可以看出 , 可编程逻辑器件的种类很多 , 几乎每个大的可编程逻辑 器件供应商 a 都能提供具有自身结构特点的不同类型的 PLD 器件。由于历史的原因 , 可 编程逻辑器件的命名各异 , 因此在介络可编程逻辑器件结构之前 , 有必要介绍几种 PLD 的分类方法。

1.按集成度分类

如图 1-2 所示 , 较常见的分类是按集成度来区分不同的 PLD 器件 , 一般可以分为 两大类器件。一类是芯片集成度较低的 , 包括早期出现的 PROM 、 PLA 、 PAL 、 GAL 等 , 都属于这类 , 可用的逻辑门数大约在 500 门以下 , 称为简单 PLD 。另一类是芯片 集成度较高的 , 如现在大量使用的 CPLD 、 FPGA 等器件 , 称为复杂 PLDO 这种分类方 法比较粗糙。

图 1-2 按集成度 (PLD) 分类

前面已经提到 , 常用的可编程逻辑器件都是从与或阵列和门阵列两类基本结构发展 起来的 , 所以可编程逻辑器件从结构上 ( 即形成可编程逻辑的基本原理上 ) 可分为两大 类器件 :

(1) 乘积项结构器件。其基本结构为与或阵列的器件 , 大部分简单 PLD 和 CPLD 都属于这个范畴。

(2) 查找表结构器件。由简单的查找表组成可编程门 , 再 : 究安主 ? 二 77s FPGA 就

属于此类器件。

第三种分类方法是从编程工艺上划分 , 即从实现逻辑重构告 TEZ ι二 z 二 ?:

(1) 熔丝 (Fuse) 型器件。早期的 PROM 器件就是采用熔主主古了去程过程就

是根据设计的熔丝图文件来烧断对应的熔丝 , 达到编程 ( 逻辑重丐了三 272

(2) 反熔丝 (Antifuse) 型器件。是对熔丝技术的改进 , 在装王三王三击穿漏层使 得两点之间获得导通。与熔丝烧断获得开路正好相反。某些 FPGi ζ二三 -' 二 L 种编程方 式 , 如 Actel 公司的 FPGA 器件。

无论是熔丝还是反熔丝结构 , 都只能编程一次 , 因而又被合号 47. 丁 ? 号吁 , 即一次性可编程 (One Time Programming) 器件。

(3)EPROM 型。称为紫外线擦除型可编程逻辑器件。这需要 RZE 工喜 73 程电压进 行编程。当需要再次编程时 , 用紫外线进行擦除。与熔丝、反熔丝主 T 亨二 -委器件可 多次编程。有时为降低生产成本 , 在制造 EPROM 型器件时不加上乓工会 ff 是擦除的 石英窗口 , 于是就不能用紫外线擦除 , 而只能编程一次 , 也被称为二 ? 骂气

(4)EEPROM 型。即电可擦写编程器件 , 多次编程方式更亏芝气有兰大部分 CPLD 及 GAL 器件采用此类结构。它是对 EPROM 工艺的改进 .? 霎王军去 ? 三是擦除 , 而是直接用电擦除 , 使用更方便。

(5)SRAM 型。即 SRAM 查找表结构的器件。大部分 FPGA 主 -fZEz: 甜编程 工艺 , 如 Xilinx 、 Altera 的 FPGA 器件采用的都是 SRAM 方式去 t 二 =2 岳王一 t 芝在编程 速度、编程要求上要优于前四种器件 , 不过 SRAM 型器件的综歪言主 tT= 三也 4 中 , 在断电后就丢失了。再次上电需要再次编程 ( 配置 ), 因而需要专 Ef 丰 = 岳王 EC 主这类配 置操作。而前四种器件在编程后是不会丢失编程信息的。

(6)Flash 型。由于反熔丝结构的可编程逻辑器件只能 -f272E ξ ~ 干声品的 研制和升级带来了麻烦。采用了反熔丝工艺的 Actei 公司 ,jt 了王工 -二 z 宅三ζ器件的 不足之处 , 推出了采用 Fiash 工艺的 FPGA, 可以实现多次可季军干芒豆掉电后 不需要重新配置。

2.从结构上分类

器件内的连线结构提供从器件引脚到器件内部逻辑单元 , 以及各逻辑单元之间的导电连接。器件的连线结构分为分段式和连续式两类。

类似于门阵列 ,FPGA 的结构采用细颗粒 (Fine grained) 逻辑单元 , 连线结构为分段式。 这种连线结构是利用不同长度的几种金属连接线段 , 经过起开关作用的开关元件 ( 传输管或 非熔丝开关 ), 将各逻辑单元连接起来构成信号通路。

另一类 HCPLD 采用了规模较大的逻辑单元 , 即粗颗粒 (Coarse grained) 、连续式连线结 构。这类器件常称为 CPLD, 属于这类器件的有 :EPLD(Erasable PLD, 可擦除可编程器件 ) 、MAX(MultipleArray Matrix, 多阵列矩阵 ) 和 FLEX (Flexible Logic Bernent Matrix, 灵活逻 辑单元矩阵 ) 等。连续式连线结构采用点到点的金属连线 , 这些连线经多路选择器或交叉矩 阵选通便构成了信号通路。因此 , 时间延时可预测 , 容易消除竞争和冒险现象 , 便于设计使 用。

3.从逻辑单元上分类

常见的逻辑单元类型有 : 查找表 (Look Up Table) 型、多路选择器 (Multiplexer) 型和 乘积项型。 XiEnx 公司和 Actel 公司的 FPGA 是分段式连接结构 , 其逻辑单元分别为查找表 型和多路选择器型。 Altera 公司的 PLD 是连续式连线结构 , 它的且 EX 系列的逻辑单元是查 找表型 , 它的 MAX 系列的逻辑单元是乘积项型。

(1) 查找表型

查找表是由存储器构成的。如图1-3所示。查找表可产生任何 4 个输入的逻辑函数。逻辑单元的输出可 以是寄存器型 , 也可以将寄存器旁路构成纯组合逻辑电路。为提高性能 , 附加了进位链电路 和级联链电路。利用进位链可实现快速加法器、计数器和比较器 ; 级联链连接邻近的单元 , 可实现多输入的逻辑函数。

(2) 多路选择器型

Altera 公司的逻辑单元是一个多路选择器的组合 , 利用多路选择器实现逻辑函数的乘积 项型。乘积项型逻辑单元类似于 PAL, 它由与门、或门和触发器构成。 Altera 公司的 MAX 系列产品逻辑单元的逻辑阵列是一个可编程与门阵列。为提高功能 , 提供了共享逻辑扩展项和并联逻辑扩展工页 , 以借用邻近逻辑单元中的乘积工页 , 实现较复杂的逻辑函数。乘积项型适 合于多输入组合逻辑的实现 : 而查找表型和多路选择器更适用于实现使用触发器较多的时序 电路。

4. 从编程特性上分类

PLD 编程技术有两大类 : 一种是一次性编程 : 另一种是可多次编程。后者使用起来较为 方便 , 容易修改设计。

(1) 一次性编程

Altera 公司生产的二次性编程的器件采用反熔丝 (Anti-Fuse) 开关 , 即用可编程低阻电路元件 (PLICE) 作为可编程的开关元件 , 它由一种特殊介质构成 , 位于层连线的交叉点上 , 形似印制板上的一个通孔 , 其直径仅为 12 μ mo 在未编程时 ,PLICE 呈现大于 100MQ 的高电阻 : 当加上 8V 电压之后 , 该介质被击穿 , 接通电阻小于 1 凶 , 等效于开关接通。由于 PLICE 占芯片面积非常小 , 因而 , 这类 PLD 的集成度飞工作频率和可靠性都较高。缺点是只允许编程一次 , 编程后不能修改。

(2) 可多次编程

Altera 公司和 XiHnx 公司生产的 PLD 是利用场效应晶体管作为开关元件 , 这些开关的通、断受本器件内的存储器控制。控制开关元件的存储器存储着编程的信息 , 通过改写该存储器 的内容便可实现多次编程 , 它们可用 EPROM( 可擦除可编程只读存储器 ) 、 EEPROM( 电可 擦除可编程只读存储器 ) 、 FLASH ( 闪速存储器 ) 或 SRAM ( 静态随机存取存储器 ) 制造。

因而 , 又可分为如下几种 :

①紫外光擦除的 EPROMo 这类器件像普通的 EPROM 一样 , 器件外壳上有一个石英窗。

利用紫外光可将编程信息擦除 , 在编程器上对器件编程。

②电擦除的 EEPROM 。这类器件内的 EEPROM 用来存储编程信息 , 需要在编程器上对

EEPROM 进行改写来实现编程。

③在系统编程 (In System 玩 ogramInability,ISP) 。这类器件内的 EEPROM 或 FLASH 用来存储编程信息。这种器件内有产生编程电压的电源泵 , 因而 , 不需要在编程器上编程 , 可直接对装在印制板上的器件进行编程。

④在线可重配置 (In Circuit Reconfgurability,ICU 。这类器件内的 SRAM 用来存储编 程信息 , 不需要在编程器上编程 , 可直接在印制板上对器件编程。通常 , 编程信息存于外附 的 EPROM 、 EEPROM 或系统的软、硬盘上 , 系统工作之前 , 将存在于器件外部的编程信息 输入到器件内的 SRAM, 再开始工作。

ISP 和 ICR 器件具有如下共同的优点 :

·在设计阶段 , 更新了 " 硬件概念 ", 用 " 软件 " 更改设计 , 加速了调试过程 : 只要保 持器件引脚的定义不变 , 不必改焊印制板 , 便可改变其逻辑关系 : 甚至可把某些 PLD 编程为测试源来测试印制板上的另一些 PLD, 实现器件之间相互测试的目的。

· ISP 和 ICR 不需要用编程器编程 , 引脚可以做得很小巧 , 从而减小引线电感、缩小器

件体积 , 提高了性能和可靠性。 ,

·在生产阶段 , 器件可先装焊在印制板上再编程 , 免去事先编程和贴标签的工作 , 这就

能够减少差错、改进工艺流程和降低成本。

·售后服务简单 , 便于现场修理和硬件升级。

ISP 和 ICR 相比又各有优点 :

-ISP 采用 EEPROM 或 FLASH 存储编程信息。因而 , 断电时信息不会丢失 ; 而 ICR 采 用 SRAM 存储编程信息 , 断电时信息会丢失 , 每次上电时 , 需重新输入编程信息。 ISP 器件设有保密位 , 保密性好 : 而 ICR 的编程信息存于外附的 EPROM 上 , 保密性差。

-ICR 的编程信息存于器件内的 SRAM 中 , 可在系统工作之前或工作期间向 SUM 写 入编程信息 , 即工作中的快速 (on the fly) 编程 , 允许同一器件在同一系统的不同时 刻实现不同的功能。 ISP 器件改写过程较慢 , 不能快速编程 , 编程次数过多 ( 超过 100 次 ) 会损坏器件。

1.4 简单 PLD 结构

简单 PLD 是早期出现的可编程逻辑器件 , 它们的逻辑走噎芒 规模 ( 不大予 500 门 ) 的数字逻辑电路设计 , 在结构上是由亨二二 出单元组成。常见的简单 PLD 有 PROM 、 PLA 、 PAL 、 GAL等。

1. 电路符号表示

在介绍简单 PLD 器件原理之前 , 有必要熟悉一些常写 Tf 主三在 = 述 PLD 内部结构的专用电路符号。由于 PLD 的特殊结构较繁杂 , 特用一种约定的符号来简化表示。

接人 PLD 内部的与一或阵列输入缓冲器电路 , 一般采用互补电路结构表示,可用

图 1-47 来表示 , 它等效于图1-48 的逻辑结构 , 即当信号 A 输入 PLD 的一端后 , 分别 以其同相信号 A 和反相信号互接入 PLD 器件中。

图 1-47

图 1-49 是 PLD 中与阵列的简化图形 , 表示可以选择 A 、 B 、 C 和 D 四个信号中的 任一或全部输入与门。图 1-49 中只标有A 、 B 、 D 三根线被连向与门 , 因此逻辑输出 是 F=A-B -D 。由此可见 , 在基本硬件配置不变的条件下 , 只需取舍连线间的连接 节点就能轻易改变逻辑结构和逻辑函数, 这就是最简单的可编程逻辑电路的实现原理。

由于图 1-49 中含有一个输入端可编程的与门 , 因此这个电路可以被看成一个可编

程 ( 电路结构可重构的 ) 与阵列的最小单元。

注意 : 在这里所表示的与白 lj, 是在原理上的等效。当采用某种硬件实现方法时 ,

如 NMOS 电路时 , 在图中的与门可能根本不存在 , 但 NMOS 构成的连接阵列中却含有 了与的逻辑。同样 , 或阵列也用类似的方式表示 , 道理也相同。

图 1-50 PLD 中可编程或阵列的简化图

图 1-50 是 PLD 中可编程或阵列的简化图形表示 , 根据连线的情况 , 可获得输出的 逻辑函数是 F=A 十 C 。图 4-51 是在阵列中连接关系的表示。十字交叉线表示两条线未 连接 ; 交叉线的交点上打黑点 , 表示固定连接 , 即在 PLD 出厂时已连接 ; 交叉线的交 点上打叉 , 表示该点可编程 ( 可重复断开和连上 ) 。在 PLD 出厂后通过编程 , 其连接可 随时改变。图 4-49 中的三个连接点中 , 一个 (A 信号 ) 是固定连接 , 两个 (B 、 D 信 号 ) 是后来的编程连接。


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

上一篇:曙海培训

下一篇:

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言