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

1.7 CPLD的结构与可编程原理

CPLD即复杂可编程逻辑器件(Complex Programmable Logic Device)。早期CPLD是从GAL的结构扩展而来的,但针对GAL的缺点进行了改进。在流行的CPLD中,Altera的MAX7000S系列器件具有一定典型性,在这里以此为例介绍CPLD的结构和工作原理,其中的许多结构,如I/O结构,与FPGA也类似,望读者关注,并注意比较。

相比于FPGA,CPLD的逻辑资源要小得多。MAX7000S系列器件包含32~256个逻辑宏单元(即LC,Logic Cell),其单个逻辑宏单元结构如图1-13所示。每16个逻辑宏单元组成一个逻辑阵列块(LAB,Logic Array Block)。与GAL类似,每个逻辑宏单元含有一个可编程的“与”阵列和固定的“或”阵列,以及一个可配置寄存器,每个宏单元共享扩展乘积项和高速并联扩展乘积项,它们可向每个逻辑宏单元提供多达32个乘积项,以构成复杂的逻辑函数。MAX7000结构中包含有五个主要部分,即:逻辑阵列块、逻辑宏单元、扩展乘积项(共享和并联)、可编程连线阵列、I/O控制块。以下简要介绍相关模块。

图1-13 MAX7000系列的单个逻辑宏单元结构

1.逻辑阵列块

一个LAB由16个逻辑宏单元的阵列组成。MAX7000结构主要是由多个LAB组成的阵列以及它们之间的连线构成。多个LAB通过可编程连线阵(PIA,Programmable Interconnect Array)和全局总线连接在一起(图1-14),全局总线从所有的专用输入、I/O引脚和宏单元馈入信号。对于每个LAB,输入信号来自3部分:(1)来自作为通用逻辑输入的PIA的36个信号;(2)来自全局控制信号,用于寄存器辅助功能;(3)从I/O引脚到寄存器的直接输入通道。

图1-14 MAX7128S的结构

2.逻辑宏单元

MAX7000系列中的逻辑宏单元由三个功能块组成:逻辑阵列、乘积项选择矩阵和可编程寄存器,它们可以被单独地配置为时序逻辑和组合逻辑工作方式。其中逻辑阵列实现组合逻辑,可以给每个逻辑宏单元提供五个乘积项。“乘积项选择矩阵”分配这些乘积项作为到“或”门和“异或”门的主要逻辑输入,以实现组合逻辑函数;或者把这些乘积项作为宏单元中寄存器的辅助输入:清零(clear)、置位(Preset)、时钟(clock)和时钟使能控制(clock enable)。

每个逻辑宏单元中有一个“共享扩展”乘积项经非门后回馈到逻辑阵列中,逻辑宏单元中还存在“并行扩展”乘积项,从邻近逻辑宏单元借位而来。

逻辑宏单元中的可配置寄存器可以单独地被配置为带有可编程时钟控制的D、T、JK或SR触发器工作方式,也可以将寄存器旁路掉,以实现组合逻辑工作方式。

每个可编程寄存器可以按三种时钟输入模式工作:

  • 全局时钟信号。该模式能实现最快的时钟到输出(Clock to Output)性能,这时全局时钟输入直接连向每一个寄存器的CLK端。
  • 全局时钟信号由高电平有效的时钟信号使能。这种模式提供每个触发器的时钟使能信号,由于仍使用全局时钟,输出速度较快。
  • 用乘积项实现一个阵列时钟。在这种模式下,触发器由来自隐埋的逻辑宏单元或I/O引脚的信号进行钟控,其速度稍慢。

每个寄存器也支持异步清零和异步置位功能。乘积项选择矩阵负责分配和控制这些操作。虽然乘积项驱动寄存器的置位和复位信号是高电平有效,但在逻辑阵列中将信号取反可得到低电平有效的效果。此外,每一个寄存器的复位端可以由低电平有效的全局复位专用引脚GCLRn信号来驱动。

3.可编程连线阵列

不同的LAB通过在可编程连线阵列(PIA)上布线,以相互连接构成所需的逻辑。这个全局总线是一种可编程的通道,可以把器件中任何信号连接到用户希望的目的地。所有MAX7000S器件的专用输入、I/O引脚和逻辑宏单元输出都连接到PIA,而PIA可把这些信号送到整个器件内的各个地方。只有每个LAB需要的信号才布置从PIA到该LAB的连线。由图1-15可看出PIA信号布线到LAB的方式。

图1-15显示,通过EEPROM单元控制与门的一个输入端,以便选择驱动LAB的PIA信号。由于MAX7000S的PIA有固定的延时,因此使得器件延时性能容易预测。

图1-15 PIA信号布线到LAB的方式

4.I/O控制块

I/O控制块允许每个I/O引脚单独被配置为输入、输出和双向三种工作方式。所有I/O引脚都有一个三态缓冲器,它的控制端信号来自一个多路选择器,可以选择用全局输出使能信号其中之一进行控制,或者直接连到地(GND)或电源(VCC)上。图1-16表示的是EPM7128S器件的I/O控制块,它共有6个全局输出使能信号。这6个使能信号可来自:两个输出使能信号(OE1、OE2)、I/O引脚的子集或I/O宏单元的子集,并且也可以是这些信号取反后的信号。当三态缓冲器的控制端接地(GND)时,其输出为高阻态,这时I/O引脚可作为专用输入引脚使用。当三态缓冲器控制端接电源VCC时,输出被一直使能,用做普通输出引脚。MAX7000S结构提供双I/O反馈,其逻辑宏单元和I/O引脚的反馈是独立的。当I/O引脚被配置成输入引脚时,与其相联的宏单元可以作为隐埋逻辑使用。

对于I/O工作电压,MAX7000S(S系列)器件有多种不同特性的系列,其中E、S系列为5.0V工作电压;A和AE系列为3.3V工作电压;B系列为2.5V工作电压。

图1-16 EPM7128S器件的I/O控制块