《数字电路与系统设计第5章》由会员分享,可在线阅读,更多相关《数字电路与系统设计第5章(159页珍藏版)》请在金锄头文库上搜索。
1、第5章 可编程逻辑器件第第5 5章章 可编程逻辑器件可编程逻辑器件5.1 可编程逻辑器件概述可编程逻辑器件概述5.2 简单可编程逻辑器件简单可编程逻辑器件5.3 高密度可编程逻辑器件高密度可编程逻辑器件HDPLD5.4 PLD 的编程与测试的编程与测试第5章 可编程逻辑器件 在数字系统的设计中, 主要有三类基本器件可供选用, 它们是: 中、小规模标准逻辑模块, 如在前面章节中介绍的74系列及其改进系列、 CD4000系列、74HC系列等。 微处理器(Microprocessor)。 专用集成电路ASIC(Application Specific Integrated Circuit)。 第5章
2、 可编程逻辑器件5.1 可编程逻辑器件概述可编程逻辑器件概述5.1.1 PLD的发展简史的发展简史 20世纪70年代,熔丝编程的PROM(Programmable Read Only Memory)和PLA(Programmable Logic Array)是最早出现的可编程逻辑器件。 20世纪70年代末, AMD公司推出了PAL(Programmable Array Logic)器件。 20世纪80年代初, Lattice公司首先生产出了可电擦写的、 比PAL使用更灵活的GAL(Generic Array Logic)器件。 第5章 可编程逻辑器件 20世纪80年代中期, Xilinx公司提
3、出了现场可编程的概念, 同时生产出了世界上第一片FPGA(Field Programmable Gate Array)器件。 同一时期, Altera公司推出了EPLD(Erasable PLD),它比GAL具有更高的集成度, 可以用紫外线或电擦除。 20世纪80年代末, Lattice公司又提出了在系统可编程ISP(InSystem Programmability)的概念,并推出了一系列具有在系统可编程能力的CPLD(Complex PLD)器件。此后,其它PLD生产厂家都相继采用了ISP技术。 第5章 可编程逻辑器件 进入20世纪90年代后,可编程逻辑器件的发展十分迅速。 主要表现为三个方
4、面: 一是规模越来越大; 二是速度越来越高; 三是电路结构越来越灵活, 电路资源更加丰富。目前已经有集成度在300万门以上、系统频率为100MHz以上的PLD供用户使用, 在有些可编程逻辑器件中还集成了微处理器、数字信号处理单元和存储器等。这样,一个完整的数字系统甚至仅用一片可编程逻辑器件就可实现,即所谓的片上系统SOC(System On Chip)。 第5章 可编程逻辑器件5.1.2 PLD的分类的分类 1 按集成度分类按集成度分类 集成度是集成电路一项很重要的指标, 按照集成度可以将可编程逻辑器件分为两类: 低密度可编程逻辑器件LDPLD(LowDensity PLD)。 高密度可编程逻
5、辑器件HDPLD(HighDensity PLD)。 一般以芯片GAL22V10的容量来区分LDPLD和HDPLD。不同制造厂家生产的GAL22V10的密度略有差别,大致在500750门之间。如果按照这个标准,PROM、PLA、PAL和GAL器件属于LDPLD,EPLD、CPLD和FPGA器件则属于HDPLD。 第5章 可编程逻辑器件 2 按基本结构分类按基本结构分类 目前常用的可编程逻辑器件都是从与-或阵列和门阵列两种基本结构发展起来的,所以可以从结构上将其分成两大类器件:PLD器件和FPGA器件。 这种分类方法将基本结构为与-或阵列的器件称为PLD器件, 将基本结构为门阵列的器件称为FPG
6、A器件。 LDPLD(PROM、 PLA、 PAL、 GAL)、 EPLD、 CPLD的基本结构都是与-或阵列, FPGA则是一种门阵列结构。第5章 可编程逻辑器件 3 按编程工艺分类按编程工艺分类 所谓编程工艺, 是指在可编程逻辑器件中可编程元件的类型。 按照这个标准,可编程逻辑器件又可分成五类: 熔丝(Fuse)或反熔丝(AntiFuse)编程器件。 PROM、 Xilinx的XC8100系列FPGA和Actel的FPGA等采用熔丝或反熔丝作为编程元件。 UVEPROM编程器件, 即紫外线擦除/电气编程器件。 Altera的Classic系列和MAX5000系列EPLD采用的就是这种编程工
7、艺。 第5章 可编程逻辑器件 E2PROM编程器件,即电可擦写编程器件。Altera的MAX7000系列和MAX9000系列以及Lattice的GAL器件、 ispLSI系列CPLD都属于这一类器件。 Flash Memory(闪速存储器)编程器件。 Atmel的部分低密度PLD、 Xilinx的XC9500系列CPLD采用这种编程工艺。 SRAM编程器件。如: Xilinx的FPGA(除XC8100系列)和Altera的FPGA(FLEX系列、APEX系列)均采用这种编程工艺。 第5章 可编程逻辑器件 对于第类可编程逻辑器件, 它们在编程后, 编程数据就保持在器件上,故将它们称为非易失性器件
8、; 而对于第类可编程逻辑器件, 存储在SRAM中的配置数据在掉电后会丢失, 在每次上电后都要重新进行配置, 因此将这类器件称为易失性器件。由于熔丝或反熔丝编程器件只能编程一次, 所以又将这类器件称为一次性编程器件, 即OTP(One Time Programmable)器件, 其它各类器件均可以多次编程。 第5章 可编程逻辑器件 除以上三种分类方法外, 可编程逻辑器件还有其它的一些分类方法。如:按照制造工艺,可分为双极型和MOS型;还有人把可编程逻辑器件分为简单可编程逻辑器件SPLD(Simple PLD)和复杂可编程逻辑器件CPLD, 将FPGA也归于CPLD中。 原则上,各种分类方法之间是
9、相互联系、并行不悖的。在各类可编程逻辑器件中,目前大量生产和广泛应用的是以CPLD和FPGA为代表的HDPLD, 它们都采用CMOS制造工艺, 编程工艺大多采用SRAM或E2PROM。第5章 可编程逻辑器件5.1.3 PLD电路的表示方法电路的表示方法1 PLD连接的表示法连接的表示法图 5 - 1 PLD连接的表示方法 (a) 固定连接; (b) 编程连接; (c) 不连接第5章 可编程逻辑器件2 基本逻辑门的基本逻辑门的PLD表示法表示法1) 缓冲器图 5-2 基本逻辑门的PLD表示法第5章 可编程逻辑器件 2) 与门 图5-2(d)表示的是一个三输入的与门, 根据连接关系可知, 与门输出
10、P=AC; 当一个与门的所有输入变量都连接时, 可以像图5-2(e)那样表示, 这时, P=ABC。 3) 或门 图52(f)表示的是一个三输入的或门, 或门输出P=ABC。 第5章 可编程逻辑器件 4) 与-或阵列图 与-或阵列是用多个与门和或门构成的一种阵列结构, 原则上任意组合逻辑电路都可以表示成与-或阵列的形式。图53(a)清楚地表明了一个不可编程的与阵列和一个可编程的或阵列。 不难写出输出变量的逻辑表达式为: F1(A,B)=m(0,1,3)F2(A,B)=m(0,2,3) 有时为了方便,可以将阵列中的逻辑门省略掉,简化成图5-3(b)的形式。 第5章 可编程逻辑器件图 5-3 与-
11、或阵列图第5章 可编程逻辑器件5.2 简单可编程逻辑器件简单可编程逻辑器件SPLD图 5-4 SPLD的基本结构第5章 可编程逻辑器件 电路由输入电路、与阵列、 或阵列和输出电路四部分组成。其中,与阵列和或阵列是PLD的主体部分, 逻辑函数主要靠它们来实现。与阵列的每一个输入端(包括内部反馈输入)都有输入缓冲电路, 从而使输入信号具有足够的驱动能力, 并且产生原变量和反变量两个互补信号;有些PLD的输入电路还含有锁存器, 甚至是一些可以组态的输入宏单元(Micro Cell),可以实现对输入信号的预处理。 PLD有多种输出方式, 可以由或阵列直接输出(组合方式), 也可以通过寄存器输出(时序方
12、式); 输出可以是高电平有效, 也可以是低电平有效;无论采用哪种输出方式, 输出信号一般最后都是经过三态(TS)结构或集电极开路(OC)结构的输出缓冲器送到PLD的输出引脚; 输出信号还可以通过内部通路反馈到与阵列的输入端。 较新的PLD都将输出电路做成了输出宏单元,使用者可根据需要方便地通过编程选择各种输出方式。 第5章 可编程逻辑器件 众所周知, 任何组合逻辑函数都可以写成“与-或”表达式, 从而用“与门-或门”这种二级电路来实现; 而任何时序电路又都是由组合电路加上存储器件(触发器)构成的。因此SPLD的这种结构对实现数字电路具有普遍意义。 依据可编程的电路资源,SPLD又可分成PROM
13、、PLA、 PAL和GAL四种, 它们的结构特点如表5-1所示。 第5章 可编程逻辑器件表表5-1 四种四种SPLD的结构特点的结构特点器件名与阵列或阵列输出电路PROM固定可编程固定PLA可编程可编程固定PAL可编程固定固定GAL可编程固定可编程第5章 可编程逻辑器件5.2.1 只读存储器只读存储器ROM 1 ROM的结构的结构 ROM的主体是一个不可编程的与阵列和一个可编程的或阵列,如图5-(a)所示。 图中,An-1A0是n个输入变量,经与阵列后产生由n个输入变量构成的2n个不同的最小项m2n1m0, Fm1F0是对或阵列编程后产生的m个输出函数。 ROM的输出电路是三态结构或OC结构的
14、输出缓冲器。 第5章 可编程逻辑器件图 5-5 ROM的电路结构 (a) 与-或阵列结构图; (b) 存储器结构图第5章 可编程逻辑器件图 5-5 ROM的电路结构 (a) 与-或阵列结构图; (b) 存储器结构图第5章 可编程逻辑器件图 5-6 ROM结构图 (a) 与-或阵列结构图; (b) 存储器示意图第5章 可编程逻辑器件图 5-6 ROM结构图 (a) 与-或阵列结构图; (b) 存储器示意图第5章 可编程逻辑器件 任何组合逻辑函数都可以写成最小项之积的标准形式。因此,只要合理地对或阵列进行编程, ROM的这种结构可以实现任意n个输入变量的m个函数,所以ROM是一种可编程逻辑器件。
15、例如,图5-(a)给出的是一个22(2个输入)2(2个输出)ROM在对其或阵列编程后的阵列图,不难看出:显然,该ROM实现了2个2变量的逻辑函数, 第5章 可编程逻辑器件 如果从存储器的角度观察ROM的电路结构,将图5-(a)所示的ROM的输入变量A1、A0看作地址,不难发现ROM中的与阵列实际上是一个高电平输出有效的地址全译码器。当地址A1A0=01时,m1有效,输出F1F0=10;同理,当地址A1A0分别等于00、10和11时,读出的内容为11、01和11。由此看来,ROM中的或阵列又可以被看作一个存储阵列,m0m3是存储阵列的字线, F1、F0是存储阵列的位线。所以,ROM的电路结构又可
16、以被表示成5-(b)所示的形式。一般用存储阵列所能够存储的二进制信息的位数2nm(字线与位线的乘积)来表示ROM的存储容量, 它也恰好等同于作为PLD的与门数和或门数的乘积。 第5章 可编程逻辑器件 2 ROM的分类的分类 从制造工艺上可以将ROM分成双极型和MOS型, 鉴于MOS型电路(尤其是CMOS电路)具有功耗低、 集成度高的优点, 所以目前大容量的ROM都是采用MOS工艺制造的。 另外,从编程工艺和擦除方法上又可以将ROM分为: 固定只读存储器、可编程只读存储器PROM(Programmable Read Only Memory)、紫外线擦除可编程只读存储器UVEPROM(UltraV
17、iolet Erasable Programmable Read Only Memory)、 电擦除可编程只读存储器E2PROM(Electric Erasable Programmable Read Only Memory)和闪速存储器(Flash Memory)。 第5章 可编程逻辑器件 1) 固定只读存储器 固定ROM又称为掩膜ROM,一般简称为ROM。在这种ROM的制造过程中, 生产者通过最后一道工序掩膜, 将用户要求的数据“写入”存储器, 因而有时也将这种方法称为掩膜编程。 掩膜ROM中的数据在出厂后再也不能被修改, 对用户而言掩膜ROM是不可编程的,一般用来作为字符发生器, 或者用
18、来存储数学用表(如三角函数表、 指数函数表等)以及一些很成熟且用量很大的通用程序。 ROM中的存储单元可以是二极管, 也可以是双极型三极管或MOS管。第5章 可编程逻辑器件 图5-是一个44位二极管ROM电路的示意图。电路中,地址译码器输出高电平有效, 它的存储单元使用二极管构成, 字线与位线交叉点上接有二极管表示该位存储“1”,无二极管表示该位存储“0”。 显然该电路表示固定存储了4个字,每个字有4位, 它们分别是1010、 1001、 0101和1111。 第5章 可编程逻辑器件图 5-7 44位二极管ROM第5章 可编程逻辑器件 在图5存储阵列中, 用N沟道增强型MOS管代替了图5中的二
19、极管。 字线与位线交叉点上接有MOS管表示该位存储“1”, 无MOS管表示该位存储“0”。 假设经过地址译码后, W0W3中的某一位字线为高电平, 则使得与这根字线相连的MOS管导通, 并使与这些MOS管漏极相连的位线为低电平, 经输出缓冲器反相后,输出为1。图5-存储的内容与图5-的相同。 第5章 可编程逻辑器件图 5-8 44位MOS管ROM第5章 可编程逻辑器件2) 可编程只读存储器(PROM)图 5-9 44位二极管PROM存储阵列第5章 可编程逻辑器件 为了克服熔丝的缺点,又出现了反熔丝, 它通过击穿介质达到连通线路的目的。Actel公司的可编程低阻电路元件PLICE(Program
20、mable Low Impedance Circuit Element)反熔丝的结构如图510所示, PLICE反熔丝是位于n+扩散和多晶硅之间的介质, 是和CMOS以及其它工艺(如双极型、 BiMOS等)相兼容的。 在未编程状态下,反熔丝呈现十分高的阻抗(100 M);当18 V的编程电压加在其上时, 介质被击穿, 两层导电材料连在一起, 接通电阻小于1 k。反熔丝占用的硅片面积非常小,十分适宜于作集成度很高的可编程器件的编程元件。 第5章 可编程逻辑器件图 5-10 PLICE反熔丝结构图第5章 可编程逻辑器件 3) 可擦除可编程只读存储器(EPROM) EPROM包括UVEPROM、E2
21、PROM和Flash Memory, 它们与前面讲过的PROM在结构上并无太大区别,只是采用了不同的存储元件和编程工艺。 UVEPROM通常简称为EPROM, 它采用叠栅注入MOS管(Stackedgate Injection MetalOxideSemiconductor, 即SIMOS管),其结构示意图和符号如图5-11(a)、(b)所示。 第5章 可编程逻辑器件图 5-11 SIMOS管的结构、 符号及其构成的存储单元(a) SIMOS管的结构; (b) SIMOS管的符号; (c) 存储单元第5章 可编程逻辑器件 SIMOS管本身是一个N沟道增强型MOS管,与普通MOS管的区别在于它有
22、两个重叠的栅极控制栅Gc和浮栅Gf。上面的控制栅用于控制读/写操作;下面的浮栅被包围在绝缘材料SiO2中,用于长期保存注入的电荷。当浮栅上没有电荷时,给控制栅加上正常的高电平(由字线输入)能够使MOS管导通;而在浮栅上注入负电荷以后,则衬底表面感应的是正电荷,这使得MOS管的开启电压变高,正常的高电平不会使MOS管导通。 由此可见, PROM是利用SIMOS管的浮栅上有无负电荷来存储二进制数据的, 有负电荷表示存储的是1,无负电荷表示存储的是0,如图5-11(c)所示。 第5章 可编程逻辑器件 在写入数据之前, 浮栅上都是不带电荷的, 相当于存储的信息全部为0。 在写入数据时, 用户通过编程器
23、在SIMOS管的漏极源极间加以较高的电压(2025 V), 使之发生雪崩击穿现象。 如果此时再在控制栅上加以高压脉冲, 就会有一些电子在高压电场的作用下穿过SiO2层,被浮栅俘获,从而实现了电荷注入, 也就是向存储单元写入了1。 在断电后,浮栅上的电子没有放电回路, 所以信息可以长久保存。 第5章 可编程逻辑器件 在紫外线的照射下,SiO2层中会产生电子-空穴对, 为浮栅上的电荷提供放电通路,使之放电, 这个过程称为擦除。擦除时间大约为2030分钟,在所有的数据都被擦除后又可以重新写入数据。UVEPROM器件外壳上的玻璃窗就是为紫外线擦除数据而设置的。在编程完毕后,通常用不透明的胶带将玻璃窗遮
24、住,以防数据丢失。 第5章 可编程逻辑器件 E2PROM和Flash Memory采用的也是浮栅编程工艺,用MOS管的浮栅上有无电荷来表示存储信息,只不过构成它们的存储单元的MOS管的结构略有区别。 E2PROM和Flash Memory不但可以用编程器反复编程,而且还可以用电擦除, 这大大提高了擦除速度。E2PROM中数据的擦除和写入是同时进行的, 以字为单位, 一个字的改写时间一般为ms级;Flash Memory的擦除和读写速度更快, 数据的擦除和写入是分开进行的,擦除方式类似UVEPROM那样整片擦除或分块擦除。 第5章 可编程逻辑器件 3 ROM在组合逻辑设计中的应用在组合逻辑设计中
25、的应用 【例5-1】用适当容量的PROM实现22快速乘法器。 解解 22快速乘法器的输入是两个2位二进制数,输出的结果是4位二进制数。可以设被乘数为(A1A0)2,乘数为(B1B0)2,则(A1A0)2(B1B0)2 =(D3D2D1D0)2。只要将A1A0B1B0按顺序作为PROM的地址,把它们的乘积存放在相应的存储单元, 即可实现两个2位二进制数的快速乘法。PROM的PLD阵列图如图5-12所示, 它的容量为164位。如果要实现mn快速乘法器, PROM的容量至少为2m+n(mn)位。第5章 可编程逻辑器件图 5-12 用PROM实现22快速乘法器第5章 可编程逻辑器件 【例【例5-2】
26、试用PROM实现字符发生器(或字符译码器)。 构成字符发生器是ROM的一个比较重要的用途。 字符发生器在采用发光二极管阵列作字符显示器或使用大屏幕光栅显示的场合下用于字符显示器的驱动控制。常见的字符显示规格有75、77和97三种点阵。例如,若采用75点阵,则每一个字符都由7个5位的字构成。图5-13中给出了一个75LED点阵示意图, 图中的每个小方格代表一个LED;每一行LED的阴极连在一起, 分别受3线-8线译码器74138的输出W0W6的控制; 每一列LED的阳极连在一起,分别受PROM的输出D4D0的控制;将模7二进制加法计数器的状态(000110)作为PROM的地址。这样,由于人的视觉
27、有一定的暂留时间,只要按照一定的速率不断地循环读出PROM的各个字,在LED点阵上就能得到一个稳定的字符显示。显示的字符与PROM中存储的内容是一一对应的,显然图5-13所示电路显示的字符为R。 若要产生更多的字符,可以扩大PROM的容量。第5章 可编程逻辑器件图 5-13 字符R的显示电路第5章 可编程逻辑器件 用可编程ROM来实现组合逻辑函数的最大不足之处在于对芯片的利用率不高,这是因为ROM中的与阵列是一个固定的全译码阵列, 每一个乘积项都是一个最小项,只能实现组合逻辑函数的最小项表达式,不能进行化简,而且实际上大多数的组合逻辑函数也并不需要所有的最小项。因此,ROM在绝大多数场合还是被
28、作为存储器使用。第5章 可编程逻辑器件5.2.2 可编程逻辑阵列可编程逻辑阵列PLA 1 PLA的结构的结构 为了提高对芯片的利用率,在PROM的基础上又开发出了一种与阵列、 或阵列都可以编程的PLD可编程逻辑阵列PLA。 这样, 与阵列输出的乘积项不必一定是最小项,在采用PLA实现组合逻辑函数时可以运用逻辑函数经过化简后的最简与-或式; 而且与阵列输出的乘积项的个数也可以小于2n(n为输入变量的个数),从而减小了与阵列的规模。 第5章 可编程逻辑器件 PLA的规模通常用输入变量数、乘积项的个数和或阵列输出信号数这三者的乘积来表示。例如一个16488的PLA,就表示它有16个输入变量,与阵列可
29、以产生48个乘积项,或阵列有8个输出端。 按照输出方式, PLA可以分成两类:一类PLA以时序方式输出,在这类PLA的输出电路中除了输出缓冲器以外还有触发器, 适用于实现时序逻辑, 称为时序逻辑PLA;另一类PLA以组合方式输出,在这类PLA中不含有触发器, 适用于实现组合逻辑, 称为组合逻辑PLA。PLA的输出电路一般是不可编程的,但有些型号的PLA器件在每一个或门的输出端增加了一个可编程的异或门, 以便于对输出信号的极性进行控制,如图514所示。当编程单元为1时,或阵列输出S与经过异或门以后的输出Y同相;当编程单元为0时,S与Y反相。第5章 可编程逻辑器件图 5-14 PLA的异或输出结构
30、第5章 可编程逻辑器件2 PLA的应用的应用 【例5-3】 试用组合逻辑PLA实现从四位自然二进制代码到格雷码的转换。 解解 四位自然二进制代码转换为格雷码的真值表如表5-2所示。第5章 可编程逻辑器件表表5-2 四位自然二进制代码和格雷码的转换表四位自然二进制代码和格雷码的转换表第5章 可编程逻辑器件 采用PLA实现组合逻辑函数时,必须先对逻辑函数进行化简, 以提高对芯片的利用率。对多输出逻辑函数进行化简时要注意合理使用逻辑函数之间的公共项,使乘积项的总数最小。经过逻辑函数化简, 可以得到第5章 可编程逻辑器件图 5-15 例53的PLA阵列第5章 可编程逻辑器件图 5-16 时序逻辑PLA
31、的结构框图第5章 可编程逻辑器件 2) PLA在时序逻辑设计中的应用 时序逻辑PLA中,在或阵列的输出和与阵列的输入之间增加了由触发器组成的反馈通路,其结构框图如图5-16所示, 因而它可以实现时序逻辑。若采用组合逻辑PLA来实现时序电路, 则需要外接触发器单元。 采用PLA设计时序电路的方法与在第4章中讨论的时序电路设计方法相似。 首先由逻辑功能导出三组方程(输出方程组、 激励方程组和次态方程组),然后选择适当规模的PLA器件来实现电路。 第5章 可编程逻辑器件 【例【例5-4】试用时序逻辑PLA实现具有异步清零和同步置数功能的3位移位寄存器。 解解 设异步清零信号为 ,低电平有效;同步置数
32、信号为LD,高电平有效;串行输入信号为Din;并行输入信号为A、B、C; 时钟信号为CP。 若触发器为D触发器,则次态方程和激励方程分别为: 次态方程:激励方程:第5章 可编程逻辑器件 由上面可知,该电路共有7个输入信号、6个乘积项、 三个输出信号和3个触发器,可以根据这些数据来选择合适的PLA器件。 该电路的PLA阵列图如图5-17所示。 PLA的这种结构有利于提高对芯片的利用率,在ASIC设计中应用得较多。 但由于PLA器件的制造工艺复杂,又一直缺乏高质量的开发工具,因而其使用并不广泛。第5章 可编程逻辑器件5-17 例5-4的PLA阵列 第5章 可编程逻辑器件5.2.3 可编程阵列逻辑可
33、编程阵列逻辑PAL 可编程阵列逻辑PAL的主要部分仍然是与-或阵列,其中与阵列可根据需要进行编程,一般采用熔丝编程工艺,而或阵列是固定的。与阵列的可编程性保证了与门输入变量的灵活性, 而或阵列固定使器件得以简化, 进一步提高了对芯片的利用率。 与PLA相比, PAL是一种更加有效的PLD结构, 它被后来发展起来的许多PLD所采用。 第5章 可编程逻辑器件【例55】 用PAL实现逻辑函数解解 首先对上述逻辑函数进行化简后可得第5章 可编程逻辑器件图 5-18 例5-的PAL阵列第5章 可编程逻辑器件 在目前常见的PAL器件中, 输入变量最多可达到20个,与阵列输出的乘积项最多的有80个, 或阵列
34、的输出端最多有10个, 每个或门的输入端最多的达到16个。 PAL器件的输出电路一般是不可编程的, 为了扩展器件的功能并增加使用的灵活性,在不同型号的PAL中采用了不同结构的输出电路, 这些结构主要有以下几类。 第5章 可编程逻辑器件 1) 专用输出结构 专用输出结构的共同特点是输出端只能用作输出信号, 因为下面将会看到在另外一种输出结构中,输出端在一定条件下可以作为输入使用。 专用输出结构的PAL中不含有触发器,只能用来实现组合电路,其输出电路是一个或门,或者是一个或非门,还有的PAL采用互补输出的或门。图5-19所示为一个采用或非门的专用输出结构。 第5章 可编程逻辑器件图 5-19 PA
35、L的专用输出结构第5章 可编程逻辑器件 目前常见的PAL主要有PAL10H8、 PAL14H4、 PAL10L8、 PAL14L4和PAL16C1。其中,PAL10H8和PAL14H4为或门输出结构, PAL10L8和PAL14L4为或非门输出结构。在PAL的型号中,第一个数字代表输入变量的个数,第二个数字代表输出端的个数;两个数字之间的字母H、L和C分别表示高电平输出有效、 低电平输出有效和互补输出。 第5章 可编程逻辑器件 2) 可编程可编程I/O(输入输入/输出)结构输出)结构 在可编程I/O结构中,器件端口的工作状态(输入或者输出)是可以控制的。图5-20所示的是一个可编程I/O结构的
36、输出电路, 它包括一个三态输出缓冲器和一个将端口上的信号送到与阵列上的互补输出缓冲器。不难发现,三态输出缓冲器的使能信号来自于与阵列的输出,是可编程的。在图520所示的编程情况下,当I1= I0= 0时,使能信号OE= 1,端口处于输出状态; 否则,OE = 0, 三态缓冲器输出为高阻抗,端口处于输入状态。 第5章 可编程逻辑器件图 5-20 PAL的可编程I/O结构第5章 可编程逻辑器件 在有些可编程I/O结构的PAL中, 在或阵列与输出缓冲器之间还设有图5-14中所示的可编程异或门,这样就可以通过编程来控制输出信号的极性。 目前具有可编程I/O结构的PAL主要有PAL16L8、 PAL20
37、L10等。第5章 可编程逻辑器件3) 寄存器输出结构图 5-21 PAL的寄存器输出结构第5章 可编程逻辑器件 4) 异或输出结构 图5-22所示的输出结构与寄存器输出结构类似,只不过在或阵列输出与触发器之间又设置了异或门,这种结构被称为异或输出结构。属于异或输出结构的PAL主要有PAL20X4、PAL20X8、 PAL20X10等。图图 5-22 PAL的异或输出结构的异或输出结构第5章 可编程逻辑器件 与SSI、MSI标准产品相比,PAL的出现提高了设计的灵活性,有效减少了设计所用器件的数量。通常一片PAL可代替412片SSI或24片MSI。 但是PAL一般采用熔丝编程工艺, 只能编程一次
38、,所以使用者仍要承担一定的风险; 另外由于不同型号的芯片的输出结构各不相同,这也给使用者在选择器件时带来一些不便。 一般而言, PAL只能用来实现一些规模不大的组合电路和简单的时序电路(如计数器、 移位寄存器等)。第5章 可编程逻辑器件5.2.4 通用阵列逻辑通用阵列逻辑GAL 通用阵列逻辑GAL是在PAL的基础上发展起来的, 它继承了PAL的与-或阵列结构,与PAL完全兼容。它与PAL最大的不同是用输出逻辑宏单元OLMC取代了或门和输出电路,可以通过编程将OLMC组态成多种输出结构,大大增强了芯片的通用性和灵活性。另外,GAL采用E2PROM编程工艺,可以用电擦除并重复编程。 GAL器件的命
39、名规则与PAL相同,GAL22V10中的22表示与阵列的输入变量数,10表示输出端的个数,V则是输出方式可以改变的意思。目前常见的GAL器件主要有GAL16V8、GAL20V8、GAL22V10、GAL39V8和ispGAL16Z8等,其中GAL39V8中的或阵列也可编程,对ispGAL16Z8编程时则不需要专门的编程器, 可在系统编程。 第5章 可编程逻辑器件 1 GAL的基本结构的基本结构 图5-23是GAL16V8的电路结构图。 它主要由5部分组成: 8个输入缓冲器(引脚29作为固定输入端口); 8个三态结构的输出缓冲器(引脚1219作为I/O端口); 8个OLMC(OLMC12OLMC
40、19); 与阵列和OLMC之间的8个反馈缓冲器; 一个规模为3264位的可编程与阵列, 它共有32个输入和64个乘积项, 这64个乘积项平均分配给8个OLMC。第5章 可编程逻辑器件图 5-23 GAL16V8的电路结构图第5章 可编程逻辑器件 除了以上5个部分以外,GAL16V8还有一个专用时钟输入端CK(引脚1)、全局输出使能信号OE输入端(引脚11)、 一个工作电源端UCC(引脚20, 一般UCC=5 V)和一个接地端GND(引脚10)。 在对GAL16V8进行编程时,需要用到以下几个引脚:引脚1为编程时钟输入端SCLK;引脚11为编程电压输入端PRLD;引脚9被作为编程数据串行输入端S
41、DI;引脚12为编程数据串行输出端SDO; 电源端UCC(引脚20)和接地端GND(引脚10)。第5章 可编程逻辑器件2 GAL编程单元的行地址映射图编程单元的行地址映射图 图5-24是GAL16V8的编程单元行地址映射图,它表明了在GAL16V8中编程单元的地址分配和功能划分。 编程是逐行进行的。 编程数据在编程系统的控制下串行输入到64位移位寄存器中,每装满一次就向编程单元写入一行数据。 第031行是与阵列的编程单元, 每行有64位, 编程后可以产生64个乘积项。 第32行为芯片的电子标签,也有64位。用户可以在这里存放器件的编号、电路编号、编程日期、版本号等信息,以备查询。 第5章 可编
42、程逻辑器件 第3359行是生产厂家保留的空间,用户不能使用。 第60行是一个82位的结构控制字, 用于控制OLMC的工作模式和乘积项的禁止。 第61行是一位加密单元,加密单元被编程后,与阵列中的编程数据不能被更改或读出,从而使设计成果得以保护。 只有当整个芯片的编程数据被擦除时,加密单元才同时被擦除。但是电子标签不受加密单元的保护。 第62行是一位保留位。 第63行是一个整体擦除位,编程系统对这一位进行擦除将导致整个芯片中所有的编程单元都被擦掉。 第5章 可编程逻辑器件图 5-24 GAL16V8编程单元的地址分配第5章 可编程逻辑器件 3GAL的输出逻辑宏单元的输出逻辑宏单元OLMC图 5-
43、25 GAL16V8的OLMC结构框图和结构控制字组成(a) OLMC结构框图; (b) 结构控制字第5章 可编程逻辑器件图 5-25 GAL16V8的OLMC结构框图和结构控制字组成(a) OLMC结构框图; (b) 结构控制字第5章 可编程逻辑器件 GAL器件的每一个输出端都有一个OLMC, OLMC被组态成哪一种输出结构取决于对结构控制字的编程。图525给出了GAL16V8的OLMC结构图和控制字示意图。 由图525(a)可知,OLMC主要包括以下四个部分。 (1) 一个8输入的或门:或门的7个输入是直接来自于与阵列输出的乘积项, 第8个输入来自于乘积项数据选择器的输出。 (2) 一个可
44、编程的异或门:通过对控制位XOR(n)(括号中的n是OLMC的编号)的编程,可改变输出信号的极性。当XOR(n) = 0时, 低电平输出有效;当XOR(n) = 1时,高电平输出有效。 第5章 可编程逻辑器件 (3) 一个D触发器: D触发器用于实现时序逻辑的场合。 (4) 四个数据选择器: 乘积项数据选择器(PTMUX)。 它是一个二选一数据选择器, 受控制位AC0和AC1(n)控制(AC0是所有OLMC公用的控制位)。当AC0 = 0或AC1(n) = 0时, 来自于与阵列的第8个乘积项被接入到或门的第8个输入端; 当AC0 = AC1(n) = 1时, 接入到或门的第8个输入端的信号为0
45、。 第5章 可编程逻辑器件 输出数据选择器(OMUX)。 它也是一个受控制位AC0和AC1(n)控制的二选一数据选择器。当AC0 = 0或AC1(n) = 1时, 该OLMC采用组合输出方式; 当AC0 = 1且AC1(n) = 0时,该OLMC为寄存器同步输出。 三态数据选择器(STMUX)。它是一个受控制位AC0和AC1(n)控制的四选一数据选择器,用于选择输出三态缓冲器的使能信号。当AC0 = AC1(n) = 0时,选择UCC作为使能信号,输出三态缓冲器处于常通状态;当AC0 = 0且AC1(n) = 1时,选择地电平作为使能信号,输出三态缓冲器处于高阻状态,引脚作为输入引脚使用; 当
46、AC0 = 1且AC1(n) = 0时,输出三态缓冲器受全局输出使能信号OE控制;当AC0 = 1且AC1(n) = 1时,选择来自于与阵列的第8个乘积项作为使能信号。 第5章 可编程逻辑器件 反馈数据选择器(FMUX)。它是一个受本单元控制位AC0、AC1(n)和相邻单元控制位AC1(m)控制的四选一数据选择器, 用于选择由OLMC反馈回与阵列的信号。当AC0 = AC1(m) = 0时,反馈信号为0; 当AC0 = 0且AC1(m) = 1时, 反馈信号为相邻OLMC的输出;当AC0 = 1且AC1(n) = 0时, 反馈信号取自本单元寄存器的 Q 端;当AC0 = 1且AC1(n) =
47、1时,反馈信号取自本单元的输出端。 第5章 可编程逻辑器件 除了以上提到的控制位外,在GAL16V8中还有一个同步位SYN和64个乘积项禁止位。同步位SYN用于控制GAL是否有寄存器输出能力: 当SYN = 1时, GAL不具备寄存器输出能力;当SYN = 0时,GAL具备寄存器输出能力。另外, 在GAL16V8的OLMC19和OLMC12中, AC0和AC1(m)分别被SYN和SYN所代替。64个乘积项禁止位分别用于控制与阵列输出的64个乘积项。当某一个禁止位为0时,则相应的乘积项恒为0,表明在逻辑中不需要这个乘积项。 第5章 可编程逻辑器件 根据以上所述,不难归纳出OLMC的4种工作模式(
48、或组态): 当AC0 = 0且AC1(n) = 0时, OLMC为专用组合输出模式, 如图5-26(a)所示; 当AC0 = 0且AC1(n) = 1时, OLMC为专用输入模式, 如图5-26(b)所示; 当AC0 = 1且AC1(n) = 0且SYN = 0时, OLMC为寄存器输出模式, 如图5-26(c)所示; 当AC0 = 1且AC1(n) = 1时, OLMC为组合输入/输出模式, 如图5-26(d)所示。第5章 可编程逻辑器件图 5-26 OLMC的4种工作模式(a) 专用组合输出; (b) 专用输入; (c) 寄存器输出; (d) 组合输入/输出第5章 可编程逻辑器件 4 GA
49、L器件的优、器件的优、 缺点缺点 在SPLD中, GAL是应用最广泛的一种, 它主要有以下一些优点: 与中、小规模标准器件相比, 减少了设计中所用的芯片数量。 由于引入了OLMC这种结构, 提高了器件的通用性。 由于采用E2PROM编程工艺, 器件可以用电擦除并重复编程, 编程次数一般都在100次以上, 将设计风险降到最低。 采用CMOS制造工艺, 速度高、功耗小。第5章 可编程逻辑器件 具有上电复位和寄存器同步预置功能。上电后,GAL的内部电路会产生一个异步复位信号, 将所有的寄存器都清0, 使得器件在上电后处在一个确定的状态,有利于时序电路的设计。 寄存器同步预置功能是指可以将寄存器预置成
50、任何一个特定的状态,以实现对电路的100%测试。 具有加密功能, 可在一定程度上防止非法复制。第5章 可编程逻辑器件 但是GAL也有明显的不足之处: 电路的结构还不够灵活。 例如, 在GAL中, 所有的寄存器的时钟端都连在一起,使用由外部引脚输入的统一时钟, 这样单片GAL就不能实现异步时序电路。 GAL仍属于低密度PLD器件,而且正是由于电路的规模较小,所以人们不需要读取编程信息,就可以通过测试等方法分析出某个GAL实现的逻辑功能, 使得GAL可加密的优点不能完全发挥。 事实上, 目前市场上已有多种GAL解密软件。第5章 可编程逻辑器件5.3 高密度可编程逻辑器件高密度可编程逻辑器件HDPL
51、D HDPLD包括EPLD、CPLD和FPGA三种,大致可以分为两类: 一类是与标准门阵列结构类似的单元型HDPLDFPGA; 另一类是基于与-或阵列结构(或称为乘积项结构)的阵列扩展型HDPLDEPLD和CPLD, 其中CPLD是EPLD的改进型器件。 经过十几年的发展, 目前市场上HDPLD产品型号繁多, 电路结构也千差万别。 其中最具有代表性的还是Xilinx公司的FPGA器件和Altera公司的CPLD器件, 它们开发得较早, 占据了大部分的PLD市场。 当然还有其它许多著名厂商的器件, 如:Lattice, Vantis, Actel, Quicklogic, Lucent等。 第5
52、章 可编程逻辑器件部分HDPLD产品及其主要性能如表5-3所示。 表表5-3 部分部分HDPLD产品的性能表产品的性能表第5章 可编程逻辑器件5.3.1 复杂可编程逻辑器件复杂可编程逻辑器件CPLD 目前生产CPLD的厂家有很多,各种型号的CPLD在结构上也都有各自的特点和长处,但概括起来,它们都是由三大部分组成的,即可编程逻辑块(构成CPLD的主体部分)、输入/输出块和可编程互连资源(用于逻辑块之间以及逻辑块与输入/输出块之间的连接),如图5-27所示。 第5章 可编程逻辑器件图 5-27 CPLD的一般结构第5章 可编程逻辑器件 CPLD的这种结构是在GAL的基础上扩展、改进而成的, 尽管
53、它的规模比GAL大得多,功能也强得多,但它的主体部分可编程逻辑块仍然是基于乘积项(即: 与-或阵列)的结构,因而将其称为阵列扩展型HDPLD。 扩展的方法并不是简单地增大与阵列的规模,因为这样做势必导致芯片的利用率下降和电路的传输时延增加,所以CPLD采用了分区结构, 即将整个芯片划分成多个逻辑块和输入/输出块,每个逻辑块都有各自的与阵列、 逻辑宏单元、 输入和输出等,相当于一个独立的SPLD,再通过一定方式的全局性互连资源将这些SPLD和输入/输出块连接起来,构成更大规模的CPLD。 简单地讲,CPLD就是将多个SPLD集成到一块芯片上,并通过可编程连线实现它们之间的连接。 第5章 可编程逻
54、辑器件 就编程工艺而言,多数的CPLD采用E2PROM编程工艺, 也有采用Flash Memory编程工艺的。 下面以Altera公司生产的MAX7000系列为例, 介绍CPLD的电路结构及其工作原理。MAX7000在Altera公司生产的CPLD中是速度最快的一个系列,包括MAX7000E、MAX7000S、 MAX7000A三种器件,集成度为6005000个可用门、 32256个宏单元和36155个可用I/O引脚。 它采用CMOS制造工艺和E2PROM编程工艺, 并可以进行在系统编程。 第5章 可编程逻辑器件 图5-28所示为MAX7000A的电路结构,它主要由逻辑阵列块LAB(Logic
55、 Array Block)、I/O控制块和可编程互连阵列PIA(Programmable Interconnect Array)三个部分构成。 另外, MAX7000A结构中还包括4个专用输入, 它们既可以作为通用逻辑输入,也可以作为高速的全局控制信号(1个时钟信号、 1个清零信号和两个输出使能信号)。 第5章 可编程逻辑器件图 5-28 MAX7000A的电路结构图第5章 可编程逻辑器件 1 逻辑阵列块逻辑阵列块LAB MAX7000A的主体是通过可编程互连阵列PIA连接在一起的、 高性能的、 灵活的逻辑阵列块。每个LAB由16个宏单元组成, 输入到每个LAB的有如下信号: 来自于PIA的3
56、6个通用逻辑输入; 全局控制信号(时钟信号、 清零信号); 从I/O引脚到寄存器的直接输入通道, 用于实现MAX7000A的最短建立时间。LAB的输出信号可以同时馈入PIA和I/O控制块。 第5章 可编程逻辑器件 2 宏单元宏单元Macrocell MAX7000A的宏单元如图5-29所示,它包括与阵列、乘积项选择阵列以及由一个或门、 一个异或门、一个触发器和4个多路选择器构成的OLMC。 不难看出, 每一个宏单元就相当于一片GAL。 1) 与阵列、 乘积项选择矩阵 与阵列用于实现组合逻辑, 每个宏单元的与阵列可以提供5个乘积项。 乘积项选择矩阵分配这些乘积项作为“或门”或“异或门”的输入(以
57、实现组合逻辑函数),或者作为触发器的控制信号(清零、 置位、 使能和时钟)。第5章 可编程逻辑器件图5-29 MAX7000A的宏单元第5章 可编程逻辑器件 2) 扩展乘积项 尽管大多数逻辑函数可以用一个宏单元的5个乘积项来实现, 但在某些复杂的函数中需要用到更多的乘积项,这样就必须利用另外的宏单元。 虽然多个宏单元也可以通过PIA连接,但AX7000A允许利用扩展乘积项, 从而保证用尽可能少的逻辑资源实现尽可能快的工作速度。 扩展乘积项有两种: 共享扩展项和并联扩展项。 在每一个宏单元的与阵列所提供的5个乘积项中,都可以有一个乘积项经反相后反馈回与阵列,这个乘积项就被称为共享扩展项。 这样每
58、个LAB最多可以有16个共享扩展项被本LAB的任何一个宏单元所使用。图5-30(a)表明了共享扩展项是如何馈送到多个宏单元的。 第5章 可编程逻辑器件图 5-30 MX7000A的扩展乘积项(a) 共享扩展项;第5章 可编程逻辑器件 并联扩展项是指在一些宏单元中没有被使用的乘积项, 并且可以被直接馈送到相邻的宏单元的或逻辑以实现复杂的逻辑函数。 在使用并联扩展项时,或门最多允许20个乘积项直接输入, 其中5个乘积项由本宏单元提供, 另外15个乘积项是由本LAB中相邻的宏单元提供的并联扩展项。 在MAX7000A的LAB中,16个宏单元被分成两组, 每组有8个宏单元(即一组为18, 另一组为91
59、6), 从而在LAB中形成两条独立的并联扩展项借出/借入链。一个宏单元可以从与之相邻的较小编号的宏单元中借入并联扩展项,而第1、 9个宏单元只能借出并联扩展项,第8、16个宏单元只能借入并联扩展项。图5-30(b)表明了并联扩展项是如何从相邻宏单元借用的。 第5章 可编程逻辑器件图 5-30 MX7000A的扩展乘积项(b) 并联扩展项第5章 可编程逻辑器件 3) 输出逻辑宏单元OLMC MAX7000A所有宏单元的OLMC都能单独地被配置成组合逻辑工作方式或时序逻辑工作方式。 在组合逻辑工作方式下,触发器被旁路; 在时序逻辑工作方式下, 触发器的控制信号(清零、 置位、 时钟和使能)可以通过
60、编程选择, 触发器的输入可以来自本单元的组合输出, 也可以直接来自于I/O引脚。 另外, 宏单元输出信号的极性也可通过编程控制。 第5章 可编程逻辑器件 3 输入输入/输出控制块输出控制块 输入/输出控制块(I/O Control Block)的结构如图5-31所示。 I/O控制块允许每一个I/O引脚单独地配置成输入、 输出或双向工作方式。所有的I/O引脚都有一个三态输出缓冲器, 可以从610个全局输出使能信号中选择一个信号作为其控制信号, 也可以选择集电极开路输出。输入信号可以馈入PIA, 也可以通过快速通道直接送到宏单元的触发器。 第5章 可编程逻辑器件图 5-31 MAX7000A的I/
61、O控制块结构第5章 可编程逻辑器件 4 可编程互连阵列可编程互连阵列PIA 通过可编程互连阵列可以将多个LAB和I/O控制块连接起来构成所需要的逻辑。 MAX7000A中的PIA是一组可编程的全局总线, 它可以将馈入它的任何信号源送到整个芯片的各个地方。 图532表明了馈入到PIA的信号是如何送到LAB的。 每个可编程单元控制一个2输入的与门, 以从PIA选择馈入LAB的信号。 多数CPLD中的互连资源都有类似于MAX7000A的PIA的这种结构,这种连接线最大的特点是能够提供具有固定时延的通路, 也就是说信号在芯片中的传输时延是固定的、可以预测的, 所以将这种连接线称为确定型连接线。 第5章
62、 可编程逻辑器件图 5-32 MAX7000A的PIA第5章 可编程逻辑器件5.3.2 现场可编程门阵列现场可编程门阵列FPGA 与前面介绍过的几种PLD器件不同, 现场可编程门阵列FPGA的主体不再是与-或阵列,而是由多个可编程的基本逻辑单元组成的一个二维矩阵。 围绕该矩阵设有I/O单元,逻辑单元之间以及逻辑单元与I/O单元之间通过可编程连线进行连接。因此, FPGA被称为单元型HDPLD。而由于基本逻辑单元的排列方式与掩膜可编程的门阵列GA类似,所以沿用了门阵列这个名称。 就编程工艺而言, 多数的FPGA采用SRAM编程工艺, 也有少数的FPGA采用反熔丝编程工艺。 第5章 可编程逻辑器件
63、 下面主要以Xilinx公司的第三代FPGA产品XC4000系列为例,介绍FPGA的电路结构和工作原理。 Xilinx公司FPGA的基本结构如图5-33所示, 它主要由三部分组成: 可配置逻辑块CLB(Configurable Logic Block)、 可编程输入/输出块IOB(Input/Output Block)和可编程互连PI(Programmable Interconnect)。 整个芯片的逻辑功能是通过对芯片内部的SRAM编程确定的。 第5章 可编程逻辑器件图 5-33 FPGA的结构示意图第5章 可编程逻辑器件 1 可配置逻辑块可配置逻辑块CLB CLB是FPGA实现各种逻辑功能
64、的基本单元。图5-34为XC4000E中CLB的简化结构框图,它主要由快速进位逻辑、 3个逻辑函数发生器、 2个D触发器、 多个可编程数据选择器以及其它控制电路组成。 CLB共有13个输入和4个输出。 在13个输入中, G1G4、F1F4为8个组合逻辑输入,K为时钟信号,C1C4是4个控制信号,它们通过可编程数据选择器分配给触发器时钟使能信号EC、触发器置位/复位信号SR/H0、直接输入信号DIN/H2及信号H1;在4个输出中, X、Y为组合输出, XQ、YQ为寄存器/控制信号输出。 第5章 可编程逻辑器件图 5-34 简化的CLB结构框图第5章 可编程逻辑器件 1) 逻辑函数发生器 这里所谓
65、的逻辑函数发生器, 在物理结构上实际就是一个2n1位的SRAM, 它可以实现任何一个n变量的组合逻辑函数。因为只要将n个输入变量作为SRAM的地址,把2n个函数值存到相应的SRAM单元中, 那么SRAM的输出就是逻辑函数。 通常将逻辑函数发生器的这种结构称为查找表LUT(LookUp Table)。 第5章 可编程逻辑器件 在XC4000E系列的CLB中共有3个函数发生器, 它们构成一个二级电路。在第一级中是两个独立的4变量函数发生器,它们的输入分别为G1G4和F1F4,输出分别为G和F,在第二级中是一个3变量的函数发生器,它的输出为H,其中一个输入为H1,另外两个输入可以从SR/H0和G、
66、DIN/H2和F中各选一个信号; 组合逻辑函数G或H可以从Y直接输出, F或H可以从X直接输出。 这样, 一个CLB可以实现高达9个变量的逻辑函数。 第5章 可编程逻辑器件 2) 触发器 在XC4000E系列的CLB中有两个边沿触发的D触发器, 它们与逻辑函数发生器配合可以实现各种时序逻辑电路。 触发器的激励信号可以通过可编程数据选择器从DIN、G 、 F和H中选择。对于两个触发器共用时钟K和时钟使能信号EC来说, 任何一个触发器都可以选择在时钟的上升沿或下降沿触发,也可以单独选择时钟使能为EC或1(即永久时钟使能)。 两个触发器还有一个共用信号置位/复位信号SR, 它可以被编程为对每个触发器
67、独立的复位或置位信号。另外,每个触发器还有一个全局的复位/置位信号(图5-34中未画出),用来在上电或配置时将所有的触发器置位或清除。 第5章 可编程逻辑器件 3) 快速进位逻辑 为了提高FPGA的运算速度, 在CLB的两个逻辑函数发生器G和F之前还设计了快速进位逻辑电路,如图5-35所示。 例如, 函数发生器G和F可以被配置成2位带进位输入和进位输出的二进制数加法器。如果将多个CLB通过进位输入/输出级连起来, 还可以扩展到任意长度。为了连接方便,在XC4000E系列的快速进位逻辑中设计了两组进位输入/输出,使用时只选择其中的一组, 这样在FPGA的CLB之间就形成了一个独立于可编程连接线的
68、进位/借位链。 第5章 可编程逻辑器件图 5-35 快速进位逻辑电路第5章 可编程逻辑器件 4) 逻辑函数发生器用作片内RAM 逻辑函数发生器G和F除了能够实现一般的组合逻辑函数以外, 它们各自的16个可编程数据存储单元还可以被用作片内RAM。 片内RAM的速度非常快,读操作时间与逻辑时延一样, 写操作时间只比读操作稍慢一点,整个读/写速度要比片外RAM快许多,因为片内RAM避免了输入/输出端的延时。 如表5-4所示, 逻辑函数发生器被用作片内RAM时有多种配置模式。 表表5-4 片内片内RAM的配置模式的配置模式161162321边沿触发电平触发单口RAM双口RAM第5章 可编程逻辑器件 就
69、容量而言,CLB中的逻辑函数发生器可以被配置成2个独立的161位RAM、1个162位RAM或1个321位RAM, 也可以只将逻辑函数发生器G或F配置成1个161位RAM,而其余的逻辑函数发生器仍然可以实现最多为5个变量的逻辑函数。 另外, 片内RAM有两种写操作方式,一种是边沿触发(同步方式), 即在CLB时钟信号的边沿将数据写入RAM,而写信号则被作为时钟使能; 另一种是电平触发(异步方式),即直接用外部的写信号作为RAM的写脉冲。 按照读/写端口模式,片内RAM可以被配置成单口RAM或双口RAM。所谓单口RAM,就是读、写操作共用一个地址端口,所以读、写不能同时进行; 而双口RAM的读、写
70、操作地址端口相互独立,两种操作可以同时进行, 互不影响。 第5章 可编程逻辑器件 片内RAM的各种配置模式的原理框图如图5-36、 图5-37、 图5-38、 图5-39和图5-40所示。 图中, WE为外部的写信号,D0和D1是RAM的数据输入端,G1G4和F1F4为读/写地址,A4为第5位读地址,G、 F和H为RAM的数据输出端。第5章 可编程逻辑器件图 5-36 321同步单元RAM原理框图第5章 可编程逻辑器件图 5-37 162(或161)同步单口RAM原理框图第5章 可编程逻辑器件图 5-38 162(或161)异步单口RAM原理框图第5章 可编程逻辑器件图 5-39 321异步单
71、口RAM原理框图第5章 可编程逻辑器件图 5-40 161双口RAM原理框图第5章 可编程逻辑器件2可编程输入可编程输入/输出块输出块IOB图图 5-41 简化的简化的IOB原理框图原理框图第5章 可编程逻辑器件 IOB中有输入、输出两条通路。当引脚用作输入时, 外部引脚上的信号经过输入缓冲器,可以直接由I1或I2进入内部逻辑, 也可以经过触发器后再进入内部逻辑;当引脚用作输出时,内部逻辑中的信号可以先经过触发器,再由输出三态缓冲器送到外部引脚上,也可以直接通过三态缓冲器输出。 通过编程, 可以选择三态缓冲器的使能信号为高电平或低电平有效,还可以选择它的摆率(电压变化的速率)为快速或慢速。 快
72、速方式适合于频率较高的信号输出, 慢速方式则有利于减小噪声、 降低功耗。 对于未用的引脚,还可以通过上拉电阻接电源或通过下拉电阻接地, 避免受到其它信号的干扰。输入通路中的触发器和输出通路的触发器共用一个时钟使能信号, 而它们的时钟信号是独立的, 都可以选择上升沿或下降沿触发。 第5章 可编程逻辑器件 3 可编程互连可编程互连PI 可编程互连PI资源分布于CLB和IOB之间, 多种不同长度的金属线通过可编程开关点或可编程开关矩阵PSM(Programmable Switch Matrix)相互连接, 从而构成所需要的信号通路。 在XC4000E系列的FPGA中, PI资源主要有可编程开关点、
73、可编程开关矩阵、可编程连接线、进位/借位链和全局信号线。可编程连接线又分为三种类型: 单长线(SingleLength Lines)、双长线(DoubleLength Lines)和长线(Long Lines)。 图5-42是XC4000E系列的PI资源示意图(图中未标出进位/借位链和全局信号线)。第5章 可编程逻辑器件图 5-42 可编程互连资源示意图第5章 可编程逻辑器件 1) 可编程开关矩阵PSM和可编程开关点 垂直和水平方向上的各条连接线(单长线、 双长线、 全局时钟线)可以在可编程开关矩阵中或可编程开关点上实现连接。 可编程开关点就是一个通过编程可以控制其通断的开关晶体管; 可编程开
74、关矩阵由多个垂直与水平方向上的单长线和双长线的交叉点组成,每个交叉点上有6个开关晶体管, 如图5-43所示。 例如,一个从开关矩阵右侧输入的信号,可以被连接到另外三个方向中的任何一个或多个方向来输出。第5章 可编程逻辑器件图 5-43 可编程开关矩阵第5章 可编程逻辑器件 2) 单长线 如图5-42所示, 单长线是指相邻PSM之间的垂直或水平连接线,其长度也就是两个相邻PSM之间的距离,它们在PSM中实现互连。单长线通常用来在局部区域内传输信号和产生分支电路, 这种连接线可以提供最大的互连灵活性和相邻功能块之间的快速布线。但由于单长线的长度较小,信号每通过一个开关矩阵都会增加一次时延,所以单长
75、线不适合需要长距离传输的信号。 第5章 可编程逻辑器件 3) 双长线 如图5-42所示,双长线的长度是单长线的两倍。也就是说, 一个双长线要经过两个CLB后,再进入开关矩阵。双长线以两根为一组, 在不降低互连灵活性的前提下,可以实现不相邻的CLB之间更快的连接。 第5章 可编程逻辑器件 4) 长线 如图5-42所示,长线是指在垂直或水平方向上穿越整个阵列的连接线。长线不经过开关矩阵,减少了信号的延时,通常用于高扇出信号、 对时间要求苛刻的信号或在很长距离上都有分支的信号的传输。XC4000E系列长线的中点处都有一个可编程的分离开关,可以将一根长线一分为二为两个独立的布线通路。 长线与单长线是通
76、过线与线交叉点处的可编程开关点来控制的,双长线不与其它类型的线相连。 第5章 可编程逻辑器件 5) 全局信号线(Global Lines) 除以上介绍的通用连接线外,XC4000E系列的PI资源中还有一些专用的全局信号线(Global Lines)。 这些专用的全局信号线在结构上与长线类似, 所不同的是, 它们都是垂直方向的, 专门用于传输全局时钟信号和高扇出的控制信号。 图5-44所示为与XC4000E系列CLB相关的PI资源(未画出进位/借位链)。由图可以看出,CLB的输入、输出分布在它的四周, 以提供最大的布线灵活性。可以通过可编程开关点将CLB的输入、 输出连到其周围的长线、 单长线、
77、 双长线或全局信号线上。 图中的阴影部分为可编程开关矩阵。在表5-5中列出了XC4000E系列中一个CLB的各类连线资源。第5章 可编程逻辑器件图 5-44 与XC4000E系列CLB相关的PI详图第5章 可编程逻辑器件表表5-5 XC4000E系列系列CLB的连线资源的连线资源单长线双长线长线全局信号线进位/借位链合计垂直线8464224水平线8460018第5章 可编程逻辑器件 综上所述,与CPLD的确定型连线结构相比, XC4000E系列FPGA的这种互连结构有多种不同长度的连接线, 相对比较复杂。 它的优点是具有很高的布线灵活性, 布线通过率高; 缺点是信号在芯片内的传输时延不可预测,
78、 两次布线之间同一信号的延时不一定相同。通常将这种结构的连接线称为统计型连接线。 第5章 可编程逻辑器件5.4 PLD的编程与测试的编程与测试5.4.1 PLD的开发过程的开发过程 1 PLD开发所需的设备开发所需的设备 用PLD来实现数字电路或系统, 必须要具备以下设备: 计算机; PLD的开发软件包、 专用的硬件描述语言; PLD的编程器或编程电缆。第5章 可编程逻辑器件 2 PLD的开发流程的开发流程 不同的软件包对PLD的开发流程不尽相同, 但大致上都可归为三个过程, 如图5-45所示。 图5-45第5章 可编程逻辑器件 1) 设计输入 设计输入主要是指设计者以一定的方式对器件的逻辑功
79、能进行描述, 并形成符合开发软件要求的设计源文件。目前多数的开发软件都支持原理图和硬件描述语言两种描述方式。 例如,用硬件描述语言VHDL对一些基本逻辑函数的描述如下: ENTITY basic-logic IS -实体(ENTITY)说明部分开始, basic-logic是实体名 PORT( a ,b : IN BIT; -定义输入信号, 均为1位逻辑量 f1 ,f2 ,f3 ,f4 ,f5 ,f6 ,f7 : OUT BIT );-定义输出信号, 均为1位逻辑量 END ENTITY basic_logic; -实体说明部分结束第5章 可编程逻辑器件ARCHITECTURE arch OF
80、 basic_logic IS -结构体说明,arch是结构体BEGIN -结构体开始-信号赋值语句 f1 =a AND b; f2 = a OR b; f3 = NOT a;- f1= ab f2= a+b f3= a f4 = a NAND b; f5 = a NOR b; - f4= ab f5= a+b f6 = a XOR b; f7 = a XNOR b; - f5= ab f6= ab END ARCHITECTURE arch; -结构体结束第5章 可编程逻辑器件 2) 设计处理 开发软件可以自动完成对设计源文件的处理, 包括综合、 优化、 布局、 布线等过程,最后生成可编程逻
81、辑器件的编程文件。 设计者也可以通过在开发软件中设置一些参数,对设计处理过程进行控制; 在处理过程中,还可以用仿真工具对设计结果进行验证, 如果不满足设计要求,则需要修改设计。 第5章 可编程逻辑器件 3) 器件编程 器件编程就是用编程软件, 通过编程器或编程电缆将设计处理产生的编程数据下载到可编程逻辑器件中, 这样可编程逻辑器件就具备了预定的逻辑功能。 4) 器件测试 器件测试就是用实验的方法, 验证器件的实际性能。 第5章 可编程逻辑器件5.4.2 PLD的编程技术的编程技术 1 ISP编程技术编程技术 ISP技术彻底摆脱了编程器, 打破了PLD芯片必须先编程再装配的传统做法,可以通过芯片
82、的JTAG接口直接对已经装配在系统中或电路板上的PLD芯片直接进行编程,甚至在设计的系统成为正式产品后,仍然可以对其进行编程。具有ISP特性的PLD均采用E2PROM编程工艺,编程信息存放在E2PROM中,可以反复改写, 而且在系统掉电时其编程信息也不会丢失。 第5章 可编程逻辑器件 对ISP器件的编程非常容易,只需要一台PC机、 一根简单的编程电缆和编程软件就可以了,如图5-46所示。编程电缆的一端接PC机的并行口, 另一端待编程器件的编程引脚上。ISP编程引脚与JTAG引脚复用,如表56所示。在ISP编程期间,芯片的I/O引脚呈高阻状态, 从而使正在进行编程的器件与周围电路脱离。 当然,也
83、可以考虑将编程数据存放在非易失性存储器中,用嵌入在电路中的微控制器实现对器件的在系统编程,只要能够产生正确的编程时序即可。 第5章 可编程逻辑器件图 5-46 用PC机对ISP器件进行编程第5章 可编程逻辑器件表表5-6 JTAG引脚说明引脚说明第5章 可编程逻辑器件图 5-47 多个ISP器件的菊花链连接第5章 可编程逻辑器件 2 ICR编程技术编程技术 在电路可再配置ICR与ISP类似, 所不同的是, 具有ICR特性的可编程逻辑器件均采用SRAM编程工艺。 这种编程工艺的特点是编程速度较快,但在器件掉电时SRAM中的编程数据会丢掉。 所以, 电路在每次接通电源后都要重新向SRAM中写入编程
84、数据, 通常将这个过程称为配置。 若要改变器件的逻辑功能, 则可以对器件重新配置新的编程数据,称为再配置。 与ISP相同,再配置也是直接对已经装配到电路板上的器件进行的, 所以称为在电路可再配置。 第5章 可编程逻辑器件 在电路可再配置有两类配置方式: 主动配置方式和被动配置方式。 所谓主动配置方式,就是在电路上电后由可编程逻辑器件主导配置操作过程, 将存放在外部非易失性存储器中的编程数据读到可编程逻辑器件的SRAM中; 而被动配置方式则是在PC机或微控制器的控制下将存放在外部非易失性存储器中的编程数据写到可编程逻辑器件的SRAM中。另外,按照编程数据的传输方式,又有同步与异步、串行与并行之分
85、。 具有ICR特性的可编程逻辑器件在配置过程中, I/O引脚呈高阻抗状态, 与外电路脱离。利用ICR技术也可以一次对多个器件实现配置, 电路连接与具体的器件有关 。 第5章 可编程逻辑器件 由上述可见, ISP和ICR这两种编程技术的出现, 使得可编程逻辑器件的编程变得非常方便, 解决了传统的编程方法很难解决的问题, 如多个器件同时进行编程、 对引脚很密的器件的编程、 由于反复插拔而造成的芯片引脚损坏等, 更重要的是, 它们对系统的设计、制造、 维护以及升级都产生了重大的影响。 可以说, 这两种编程技术的出现开创了可编程逻辑器件的一个新的时代。 目前, 大多数的可编程逻辑器件都具有ISP或IC
86、R特性。 第5章 可编程逻辑器件 5.4.3 边界扫描测试技术边界扫描测试技术 随着芯片集成度的不断提高、 表面封装技术和印制电路板制造技术的不断发展,芯片的引脚越来越密,印制电路板变得越来越小、越来越复杂,因此,对芯片和电路的全面测试也变得越来越重要。如果仍然沿用传统的测试方法(如用外部探针或“针床”测试装置),则很难达到这个要求, 并且测试成本也会大大增加。 为了解决高密度引脚器件和高密度电路板上的器件的测试问题,在20世纪80年代,联合测试行动小组JTAG(Joint Test Action Group)开发出了一种用于边界扫描测试的技术规范,后来该规范成为IEEE1149.11990标
87、准。 第5章 可编程逻辑器件 根据IEEE1149.11990测试规范, 标准的边界扫描测试只需要用45根信号线(如表56所示)就能对电路板上所有支持边界扫描的芯片逻辑和边界引脚进行测试。图5-48说明了边界扫描测试技术的概念。边界扫描单元既可以将测试信号强加到芯片引脚上, 也可以在芯片正常工作时从芯片引脚或核心逻辑信号上捕获数据。测试数据或测试命令从TDI串行移入边界扫描单元, 捕获的数据从TDO串行输出,并在芯片外部与预期的结果相比较。 当芯片不处于边界扫描工作状态时, JTAG引脚又可以作为普通的I/O端口或编程端口使用。 边界扫描测试技术有着广阔的发展前景,目前绝大多数的HDPLD芯片都支持边界扫描测试。第5章 可编程逻辑器件图 5-48 JTAG边界扫描测试法