CPLD将简单PLD(PAL,GAL等)的概念做了进一步的扩展,并提高了器件的集成度。和简单的PLD相比,CPLD允许有更多的输入信号、更多的乘积项和更多的宏单元,CPLD器件内部含有多个逻辑单元块,每个逻辑块就相当于一个GAL器件,这些逻辑块之间可以使用可编程内部连线实现相互连接。目前,生产CPLD器件的著名公司有多家,尽管各个公司的器件结构千差万别,但它们仍有相同之处,图1给出了通用的CPLD器件的结构框图。
图1 通用的CPLD器件的结构框图
2、集总布线区GRP ( Global Roating Pool)
下面以LATTICE公司生产的在系统可编程大规模集成逻辑器件ispLSI1016为例,介绍CPLD的电路结构及其工作原理。这种器件的最大特点是“在系统可编程”特性。所谓在系统可编程是指未编程的ISP器件可以直接焊接在印刷电路板上,然后通过计算机的并行口和专用的编程电缆对焊接在电路板上的ISP器件直接多次编程,从而使器件具有所需要的逻辑功能。这种编程不需要使用专用的编程器,原来属于编程器的编程电路及升压电路已被集成在ISP器件内部了。ISP技术使得调试过程不需要反复拔插芯片,从而不会产生引脚弯曲变形现象,提高了可靠性,而且可以随时对焊接在电路板上的ISP器件的逻辑功能进行修改,因而加快了数字系统的调试过程。
IspLSI1016的结构如图2所示。它由16个相同的通用逻辑块GLB(A0-A7、B0-B7)、32个相同的输入、输出单元(I/O0-I/O31)、可编程的集总布线区GRP、时钟分配网络CDN以及在系统编程控制电路等部分组成(图中未画出编程控制电路)。在GRP的左边和右边各形成一个宏模块。每个宏模块包括:8个GLB、16个I/O单元、两个专用输入引脚(SDI/IN0 SD0/IN1或MODE/IN2,IN3)、一个输出布线区OPR以及16位的输入总线。
图2 ispLSI 1016的结构框图
3、通用逻辑块GLB(Generic Logic Block)的结构 GLB是由与阵列、乘积项共享阵列、输出逻辑宏单元OLMC和功能控制4部分组成。它可实现类似GAL的功能。简化的GLB逻辑图如图3所示。
图3 ispLSI 1016器件通用逻辑块(GLB)的结构
1.与阵列
与阵列有18个输入,其中有16个来自集总布线区GRP(它们可以是来自I/O引脚的信号、也可以是GLB的反馈信号),另外两个来自专用输入引脚,它们经过输入缓冲器后,都产生互补信号。通过对与阵列编程,可以产生20个乘积项(0~19)。
2.乘积项共享阵列
这一阵列可以把20个乘积项分组送到4个或门,其输出经过乘积项共享阵列的编程,可以按需要连至GLB的任何一个输出。乘积项共享阵列具有“线或”功能,如果输出函数需要的乘积项多于7个,可将两个或两个以上的或门输出的乘积项再次相或,最多可以实现20个乘积项的输出。这种同一个的乘积项可以被多个输出宏单元使用的情况,称为乘积项共享。 乘积项共享阵列可以灵活地配置以满足用户不同的需要,同一个GLB中的4个输出可以采用相同的配置形式,也可以采用不同的配置形式(混合配置),图4采用的是混合配置。图中,O3配置为异或模式,第一个或门输出的3个乘积项与第三个或门输出的4个乘积项进行“线或”组成7个乘积项,然后再与第0个乘积项“异或”,“异或”的结果送到属于O3的D触发器输入端。O2配置为高速旁路模式,第二个或门的输出直接送到OLMC。O1配置为单乘积项旁路模式,可以获得最快的信号传输速度。00的配置为共享下面两个或门的11个乘积项,实现11个乘积项相或的运算。
图4 ispLSI 1016器件通用逻辑模块(GLB)的配置
3.输出逻辑宏单元OLMC
4.功能控制
寄存器的时钟信号分为同步时钟和异步时钟信号两种。同步时钟信号由时钟分配网络供给,它可以在CLK0、CLD1及CLK2中选择一个;异步时钟信号由GLB中的第12乘积项提供。寄存器的复位信号由全局复位引脚或GLB中的第12或19乘积项提供。另外,第19乘积项还可以作为输出三态门的输出使能控制信号。因此,若在设计中使用第12或第19乘积项作为控制信号,那么这一乘积项就不能用于实现其他逻辑功能。乘积项时钟是通过输入项相“与”产生的时钟,也是ispLSI器件最有特色的性质之一。