EDA技术及其创新实践(Verilog HDL版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 可编程逻辑器件

本节至第1.11节主要介绍本教材实验所基于的硬件平台,即FPGA的相关知识。

可编程逻辑器件(PLD,Programmable Logic Devices)是20世纪70年代发展起来的一种新的集成器件。PLD是大规模集成电路技术发展的产物,是一种半定制的集成电路,结合EDA技术可以快速、方便地构建数字系统。

数字电路基础知识表明,数字电路系统都是由基本门来构成的,如与门、或门、非门、传输门等;由基本门可构成两类数字电路,一类是组合电路,另一类是时序电路,它含有存储元件。事实上,不是所有的基本门都是必须的,如用与非门这种单一基本门就可以构成其他的基本门。任何的组合逻辑函数都可以化为“与-或”表达式。即任何的组合电路可以用“与门-或门”二级电路实现。同样,任何时序电路都可由组合电路加上存储元件,即锁存器、触发器来构成。由此,人们提出了一种可编程电路结构,即可重构的电路结构。

1.6.1 PLD的分类

可编程逻辑器件的种类很多,几乎每个大的可编程逻辑器件供应商都能提供具有自身结构特点的PLD器件。由于历史的原因,可编程逻辑器件的命名各异,在详细介绍可编程逻辑器件之前,有必要介绍几种PLD的分类方法:

(1)以集成度分,一般可分为两大类器件

①低集成度芯片。早期出现的PROM(Programmable Read Only Memory)、PAL(Programmable Array Logic)、可重复编程的GAL(Generic Array Logic),都属于此类。一般而言,可重构使用的逻辑门数大约在500门以下,称为简单PLD。

②高集成度芯片。如现在大量使用的CPLD、FPGA器件,属于复杂PLD。

(2)从结构上可分为两大类器件

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

②查找表结构器件。由简单的查找表组成可编程门,再构成阵列形式。大多数FPGA是属于此类器件。

(3)从编程工艺上划分

①熔丝(Fuse)型器件。早期的PROM器件就是采用熔丝结构的,编程过程就是根据设计的熔丝图文件来烧断对应的熔丝,达到编程的目的。

②反熔丝(Anti-fuse)型器件。是对熔丝技术的改进,在编程处通过击穿漏层使得两点之间获得导通,这与熔丝烧断获得开路正好相反。

③EPROM型。称为紫外线擦除电可编程逻辑器件。它是用较高的编程电压进行编程,当需要再次编程时,用紫外线进行擦除。Atmel公司曾经有过此类PLD,目前已淘汰。

④EEPROM型。即电可擦写编程器件,现有部分CPLD及GAL器件采用此类结构。它是对EPROM的工艺改进,不需要紫外线擦除,而是直接用电擦除。

⑤SRAM型。即SRAM查找表结构的器件。大部分的FPGA器件都采用了此种编程工艺。如Xilinx和Altera的FPGA器件采用的即是SRAM编程方式。这种方式在编程速度、编程要求上要优于前四种器件,不过SRAM型器件的编程信息存放在RAM中,在断电后就丢失了,再次上电需要再次编程(配置),因而需要专用器件来完成这类自动配置操作。

⑥Flash型。Actel公司为了解决上述反熔丝器件的不足之处,推出了采用Flash工艺的FPGA,可以实现多次可编程,同时做到掉电后不需要重新配置。现在Xilinx和Altera的多个系列CPLD也采用Flash型。

在习惯上,还有另外一种分类方法,即掉电后是否需要重新配置的器件,CPLD不需要重新配置,而FPGA(大多数)需要重新配置。

1.6.2 PROM可编程原理

为了介绍PLD器件的可编程原理,在此首先介绍在结构上具有典型性的PROM。但此前有必要熟悉一些常用的逻辑电路符号及常用的描述PLD内部结构的专用电路符号。

通常,逻辑符号之“国标”是指我国的国家标准,但目前流行于国内高校数字电路教材中的所谓“国标”逻辑符号原本是全盘照搬ANSI/IEEE—1984版的IEC国际标准符号,且至今并没有升级。然而由于此类符号表达形式过于复杂,即用矩形图型逻辑符号(即Rectangular outline symbols)来标志逻辑功能,故被公认为不适合于表述PLD中复杂的逻辑结构。因此数年后,IEEE又推出了ANSI/IEEE—1991标准,于是国际上几乎所有技术资料和相关教材很快就废弃了原标准(84标准)的应用,继而普遍采用了1991版本的国际标准逻辑符号(即Distinctive shape Symbols)。该版本符号的优势和特点是,用图形的不同形状来标志逻辑模块的功能,从而即使图形画面很小时也能十分容易地辨认出模块的逻辑功能。

本书全部采用IEEE—1991标准符号,图1-3即ANSI/IEEE—1991版与ANSI/IEEE—1984版(与中国国标相同)的IEC国际标准逻辑门部分符号对照表。

图1-3 两种不同版本的国际标准逻辑门符号对照表

在目前流行的EDA软件中,原理图中的逻辑符号也都采用了ANSI/IEEE—1991标准。由于PLD的复杂结构,用1991标准的符号的好处是能十分容易地衍生出一套用于描述PLD复杂逻辑结构的简化符号来。如图1-4所示,接入PLD内部的与或阵列输入缓冲器电路,一般采用互补结构,它等效于图1-5的逻辑结构,即当信号输入PLD后,分别以其同相和反相信号接入。图1-6是PLD中与阵列的简化图形,表示可以选择A、B、C和D四个信号中的任一组或全部输入与门。在这里用以形象地表示与阵列,这是在原理上的等效。当采用某种硬件实现方法,如NMOS电路时,在图中的与门可能根本不存在。但NMOS构成的连接阵列中却含有与逻辑。同样的道理,或阵列也用类似的方式表示。图1-7是PLD中或阵列的简化图形表示。图1-8是在阵列中连接关系的表示。十字交叉线表示两条线未连接;交叉线的交点上打黑点,表示固定连接,即在PLD出厂时已连接;交叉线的交点上打叉,表示该点可编程,在PLD出厂后通过编程,其连接可随时改变。

图1-4 PLD的互补缓冲器

图1-5 PLD的互补输入

图1-6 PLD中与阵列的表示

图1-7 PLD中或阵列的表示

图1-8 阵列线连接表示

PROM作为可编程只读存储器。其ROM除了用做只读存储器外,还可作为PLD使用。一个ROM器件主要由地址译码部分、ROM单元阵列和输出缓冲部分构成。也可以从可编程逻辑器件的角度来分析PROM的基本结构。

为了更清晰直观地表示PROM中固定的与阵列和可编程的或阵列,PROM可以表示为PLD阵列图,以4×2 PROM为例,如图1-9所示。

以下二式是已知半加器的逻辑表达式,可用4×2 PROM编程实现。

S=A0⊕A1, C=A0-A1

图1-10的连接结构表达的是半加器逻辑阵列:

图1-9 PROM表达的PLD阵列图

图1-10 用PROM完成半加器逻辑阵列

此二式是图1-10结构的布尔表达式,即所谓的“乘积项”方式。式中的A1和A0分别是加数和被加数;F0为和,F1为进位。反之,根据半加器的逻辑关系,就可以得到图1-10的阵列点连接关系,从而可以形成阵列点文件,这个文件对于一般的PLD器件称为熔丝图文件(Fuse Map)。对于PROM,则为存储单元的编程数据文件。

PROM只能用于组合电路的可编程。输入变量的增加会引起存储容量的增加,这种增加是按2的幂次增加的,多输入变量的组合电路函数是不适合用单个PROM来编程表达的。

1.6.3 GAL

1985年,美国Lattice公司在PAL的基础上,设计出了GAL器件,即通用阵列逻辑器件。GAL首次在PLD上采用了EEPROM工艺,使得GAL具有电可擦除重复编程的特点,彻底解决了熔丝型可编程器件的一次可编程问题。GAL在“与-或”阵列结构上沿用了PROM的与阵列可编程、或阵列固定的结构(图1-11),但对PROM的I/O结构进行了较大的改进,在GAL的输出部分增加了输出逻辑宏单元(OLMC,Output Logic Macro Cell),此结构使得PLD器件在组合逻辑和时序逻辑的可编程或可重构性能都成为可能。

图1-11 GAL16V8的结构图

图1-11所示的是GAL16V8型号的器件,它包含了8个OLMC,每一个OLMC可实现时序电路可编程,而其左侧的电路结构是与阵列可编程的组合逻辑可编程结构。专业习惯是将OLMC及左侧的可编程与阵列合称一个逻辑宏单元,即标志PLD器件逻辑资源的最小单元,由此可以认为GAL16V8器件的逻辑资源是8个逻辑宏单元,而目前最大的FPGA的逻辑资源达数十万个逻辑宏单元。也有将逻辑门的数量作为衡量逻辑器件资源的最小单元,如某CPLD的资源约2000门等,但此类划分方法误差较大。

GAL的OLMC单元设有多种组态,可配置成专用组合输出、专用输入、组合输出双向口、寄存器输出、寄存器输出双向口等,为逻辑电路设计提供了极大的灵活性。由于具有结构重构和输出端的功能均可移到另一输出引脚上的功能,在一定程度上简化了电路板的布局布线,使系统的可靠性进一步提高。

图1-11中,GAL的输出逻辑宏单元中含有四个多路选择器,通过不同的选择方式可以产生多种输出结构,分别属于三种模式,一旦确定了某种模式,所有的OLMC都将工作在同一种模式下。图1-12即为其中一种输出模式所对应的结构。

图1-12 寄存器输出结构