首页 百科知识 复杂可编程逻辑器件

复杂可编程逻辑器件

时间:2024-10-26 百科知识 版权反馈
【摘要】:复杂可编程逻辑器件是从PAL和GAL器件发展出来的器件,相对而言规模大、结构复杂,属于大规模集成电路范围。CPLD主要是由可编程逻辑宏单元即MC围绕中心的可编程互连矩阵单元组成的。为了弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,复杂可编程逻辑器件——CPLD问世。因此,可以把CPLD的基本结构看成是由逻辑阵列宏单元和I/O控制模块两部分组成的。根据编程选择,各模块可实现组合逻辑输出和寄存器输出两种方式。

2.2 复杂可编程逻辑器件

2.2.1 复杂可编程逻辑器件的基本结构

复杂可编程逻辑器件(complex programmable logic device,CPLD)是从PAL和GAL器件发展出来的器件,相对而言规模大、结构复杂,属于大规模集成电路范围。CPLD是一种用户能根据各自需要而自行构造逻辑功能的数字集成电路,其基本设计方法是:借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(在系统编程)将代码传送到目标芯片中,实现设计的数字系统。

CPLD主要是由可编程逻辑宏单元即MC(macro cell)围绕中心的可编程互连矩阵单元组成的。其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构不能完全预测时序的缺点。

20世纪70年代,最早的可编程逻辑器件——PLD的输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成(相当于房子盖好后人工设计局部室内结构),因而它的设计比纯硬件的数字电路具有更高的灵活性;但其过于简单的结构也使得它只能实现规模较小的电路。为了弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,复杂可编程逻辑器件——CPLD问世。目前它的应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面。

CPLD的结构与PAL、GAL的结构基本相同,即采用了可编程的“与”阵列和固定的“或”阵列结构。此外,它还加上了一个全局共享的可编程“与”阵列,把多个宏单元连接起来,并增加了I/O控制模块的数量和功能。因此,可以把CPLD的基本结构看成是由逻辑阵列宏单元和I/O控制模块两部分组成的。

1.逻辑阵列宏单元

在较早的CPLD中,由结构相同的逻辑阵列组成宏单元模块。一个逻辑阵列单元的基本结构如图2.2.1所示。

img68

图2.2.1 逻辑阵列单元的基本结构图

目前的CPLD在逻辑阵列单元结构方面做了很大的改进,下面讲述几种改进的结构形式。

1)乘积项数目不同的逻辑阵列单元

图2.2.2所示的是一个具有12个专用输入端和10个I/O端的CPLD,共有10个逻辑阵列单元,分成5个逻辑单元对,各对分别由不同数量的乘积项组成。

img69

图2.2.2 乘积项数目不同的逻辑阵列单元

2)具有两个“或”项输出的逻辑阵列单元

图2.2.3是具有两个固定积项和输出的CPLD的结构图。由该图可知,每个单元中含有2个“或”项输出,而每个“或”项均有固定的4个乘积项输入。

img70

图2.2.3 具有两个固定积项和输出的CPLD的结构图

3)功能更多、结构更复杂的逻辑阵列单元

随着集成规模和工艺水平的提高,大批结构复杂、功能更多的逻辑阵列单元形式出现了。

2.I/O控制模块

CPLD的I/O控制模块,根据器件的类型和功能不同,可有各种不同的结构形式,但基本上每个模块都由输出极性转换电路、触发器和输出三态缓冲器三部分,以及与它们相关的选择电路所组成。下面介绍在CPLD中广泛采用的几种I/O控制模块。

1)与PAL器件相兼容的I/O模块

如图2.2.4所示,可编程逻辑阵列中每个逻辑阵列逻辑单元的输出都通过一个独立的I/O控制模块接到I/O端,通过I/O控制模块的选择实现不同的输出方式。根据编程选择,各模块可实现组合逻辑输出和寄存器输出两种方式。

img71

图2.2.4 与PAL兼容的CPLD的I/O控制模块结构

2)与GAL器件相兼容的I/O模块——输出宏单元

如图2.2.5所示,从逻辑阵列单元输出的积项和首先送到输出宏单元(output macro cell,OMC)的输出极性选择电路,由EPROM单元构成的可编程控制位来选择该输出极性(原码或它的补码)。每个OMC中还有由EPROM单元构成的两个结构控制位,根据构形单元表,OMC可实现如图2.2.6所示的4种不同的工作方式

img72

图2.2.5 OMC结构图

img73

图2.2.6 OMC的4种不同的工作方式

3)触发器可编程的I/O控制模块

为了进一步改善I/O控制模块的功能,可将I/O模块中的触发器电路进行改进并由EPROM单元进行编程,从而实现不同类型的触发器结构,即形成D、T、JK、RS等类型的触发器,如图2.2.7所示。

img74

图2.2.7 触发器可编程的I/O控制模块结构

4)具有两路积项和输入与两个触发器的I/O控制模块

如图2.2.8所示,模块中两个触发器可独立地反馈回逻辑阵列。

img75

图2.2.8 具有两路积项和输入与两个触发器的I/O控制模块结构

5)具有三路积项和输入与两个触发器的I/O控制模块

如图2.2.9所示,每个I/O模块可接受三路积项和输入,每路各有4个乘积项。利用EPROM控制单元的编程,可实现下列功能。

img76

图2.2.9 具有三路积项和输入与两个触发器的I/O控制模块结构

(1)一路积项和的输出直接馈送到I/O端,而另两路积项和的输出则分别馈送到两个触发器的输入端D1和D2,它们的输出均可采用“内藏”工作方式,通过编程控制反馈到逻辑阵列总线中去。

(2)在实现组合逻辑输出或寄存器方式输出之前,三路和项还可以通过编程组合在一起,以实现高达12个积项和的组合逻辑输出或寄存器输出。

(3)在组合逻辑输出方式中,编程控制可实现4、8或12个积项和的组合逻辑输出,而模块中的中、下两路和项仍可分别馈送到两个触发器的D1和D2端,它们的输出Q1和Q2为“内藏”工作方式,通过编程反馈到逻辑阵列总线中去。

(4)在寄存器输出方式中,上、中两路组合成8个积项和自动馈送到触发器D1输入端,而下路的和项除馈送到触发器D2输入端且为“内藏”工作方式外,还可与D1共享。

(5)两个触发器均可有各自的异步复位和时钟信号,即AR1、CLK1和AR2、CLK2,它们由编程逻辑阵列中的4条积项线提供。

(6)输出三态缓冲器的控制信号由来自编程逻辑阵列的一条积项线提供。

(7)当I/O端作输入端使用或I/O模块的输出反馈到逻辑阵列总线中去时,它们均通过同一个反馈缓冲器输出它们的同相和反相两路信号,并将信号馈送到逻辑阵列总线中去,而两个触发器的输出Q1和Q2则通过各自的反馈缓冲器,将它们的信号(同相及反相信号)馈送到逻辑阵列总线中去。

3.CPLD的使用

CPLD是一种用户可根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是:借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。

这里以抢答器为例来讲它的设计过程,即芯片的设计流程。CPLD的工作大部分是在电脑上完成的。打开集成开发软件(Altera公司的MAX+PLUS II)→画原理图、写硬件描述语言(VHDL,Verilog HDL)→编译→给出逻辑电路的输入激励信号,进行仿真,查看逻辑输出结果是否正确→进行管脚输入、输出锁定(7128的64个输入、输出管脚可根据需要设定)→生成代码→通过下载电缆将代码传送并存储在CPLD芯片中。7128这块芯片各管脚已引出,将数码管、抢答开关、指示灯、蜂鸣器用导线分别接到芯片板上,通电测试,当抢答开关按下,对应位的指示灯亮启,答对以后,裁判给加分,看此时数码显示加分结果是否正确,如发现有问题,可重新修改原理图或硬件描述语言,完善设计。设计好后,如批量生产,可直接复制其他CPLD芯片,即写入代码即可。如果要对芯片进行其他设计,比如进行交通灯设计,则要重新画原理图,或写硬件描述语言,重复以上工作过程,完成设计。这种修改设计相当于对房屋进行了重新装修,这种装修对于CPLD来说可进行上万次。

2.2.2 Altera公司的器件产品

Altera公司的产品在我国有较多的用户,如EP220、EP224、EP6010、EP1810等经典产品应用颇广。

下面主要讲解FLEX10K系列器件。

FLEX10K系列器件是高密度阵列嵌入式可编程逻辑器件系列。这类器件最大可达10万个典型门,5 392个寄存器;采用0.5μm CMOS SRAM工艺制造;具有在系统可配置特性;在所有I/O端口中有输入/输出寄存器;3.3V或5.0V工作模式;由Altera公司的MAX+PLUS II开发系统提供软件支持,可在PC机或工作站上运行。

为了增加逻辑系统要求的集成度,可编程逻辑不仅要增加密度,而且要有效地实现大量的逻辑电路。FLEX10K系列以工业上最大的PLD(达到10万门)为特征,包括嵌入式阵列、多组低延时时钟和内部三态总线等结构特性,提供了复杂逻辑设计所需的性能。FLEX10K系列器件可理想地用于复杂门阵列的各种场合,其特性如表2.2.1所示。

表2.2.1 FLEX10K(EPF10K10~EPF10K100)系列器件的特性

img77

FLEX10K系列器件的结构类似于嵌入式门阵列。由于有标准的门阵列,故嵌入式门阵列在通用的门海结构中只实现一般逻辑。除此之外,嵌入式门阵列有专门的芯片面积以实现大的专用功能。

每个FLEX10K器件包含一个实现存储和专用逻辑功能的嵌入阵列和一个实现一般逻辑的逻辑阵列。嵌入阵列和逻辑阵列的结合提供了嵌入式门阵列的高性能和高密度,设计者可以在某个器件上实现一个完整的系统。

嵌入阵列由一系列嵌入阵列块(即EAB)构成。实现存储功能时,每个EAB提供2 048b,可以用来完成RAM、ROM、双口RAM或者FIFO功能。

逻辑阵列由逻辑块(即LAB)构成。每个LAB包含8个逻辑单元和1个局部连接。每个逻辑单元有一个4输入查找表、一个可编程触发器和一个实现进位和级联功能的专用信号路径。

每个I/O管脚由位于快速互连通道的每个行、列两端的I/O单元(即IOE)输入。FLEX10K系列器件在上电时通过保存在Altera串行配置EPROM中的数据或系统控制器提供的数据进行配置。

图2.2.10为FLEX10K的结构框图。每组LE连接到LAB上,LAB被分成行和列,每行包含一个EAB。LAB和EAB由快速通道互相连接。IOE位于行通道和列通道的两端。

img78

图2.2.10 FLEX10K的结构框图

FLEX10K系列器件提供了6个专用输入引脚,驱动触发器的控制输入,以保证高速、低摆率控制信号的有效分配。这些信号使用专用布线通道,这些专用布线通道比快速通道延时小、摆率低。4个全局信号可由4个专用输入引脚驱动,也可由内部逻辑驱动,后者可以提供分频信号或内部异步清零信号。

1)嵌入阵列块

嵌入阵列块(EAB)是一种在输入、输出端口上带有寄存器的灵活RAM电路,用来实现一般门阵列的宏功能,适合实现乘法器、矢量标量、纠错电路等功能的容量的元件。因为它很大也很灵活,所以还可应用于数字滤波和微控制器等领域。

EAB为驱动和控制时钟信号提供灵活的选择,如图2.2.11所示。EAB的输入和输出可以用不同的时钟。寄存器可以独立地运用在数据输入、EAB输出或地址写使能信号上。全局信号和EAB的局部互连都可以驱动写使能信号。全局信号、专用时钟引脚和EAB的局部互连能够驱动EAB时钟信号。由于逻辑单元可驱动EAB局部互连,所以可以用来控制写信号或EAB时钟信号。

img79

图2.2.11 FLEX10K的EAB

2)逻辑阵列块

FLEX10K的逻辑阵列块(LAB)包括8个逻辑单元、相关的进位链和级联链、LAB控制信号及LAB局部互连线,如图2.2.12所示。LAB构成了FLEX10K结构的“粗粒度”构造,可以有效地布线,并使器件的利用率和性能提高。

3)逻辑单元

逻辑单元(LE)是FLEX10K结构里的最小逻辑单位,它很紧凑,能有效地实现逻辑功能。每个LE含有一个4输入的LUT、一个可编程的具有同步使能的触发器、进位链和级联链,如图2.2.13所示。LUT是一种函数发生器,它能快速计算4个变量的任意函数。每个LE可驱动局部的及快速通道的互连。

LE中的可编程触发器可设置成D、T、JK或RS触发器。

LE有两个驱动互连通道的输出引脚:一个驱动局部互连通道,另外一个驱动行或列快速互连通道。这两个输出可被独立控制。

img80

图2.2.12 FLEX10K的LAB

img81

图2.2.13 FLEX10K的LE

FLEX10K的结构提供了两条专用高速通路,即进位链和级联链,它们连接相邻的LE但不占用通用互连通路。

进位链提供LE之间非常快(0.2ns)的进位功能。

利用级联链,FLEX10K可以实现扇入很多的逻辑函数。

4)快速通道互连

在FLEX10K的结构中,快速通道互连提供LE和I/O引脚的连接,它是一系列贯穿整个器件的水平或垂直布线通道。这个全局布线结构即使在复杂的设计中也可预知性能;而在FPGA中的分段布线却需要用开关矩阵连接一系列变化的布线路径,这就增加了逻辑资源之间的延时并降低了性能。

快速通道互连由跨越整个器件的行、列互连通道构成。LAB的每一行由一个专用行连线带传递。行互连能够驱动I/O引脚,反馈给器件中的其他LAB。列连线带连接行与行之间的信号,并驱动I/O引脚。一个行通道可由一个LE或三个列通道之一来驱动。LAB的每列由专用列连接带服务。

行、列通道的进入可以由相邻的LAB对其中的LE进行转换。例如,一个LAB中,一个LE可以驱动由行中相邻的LAB的某个特别的LE正常驱动的行、列通道。这种灵活的布线使得布线资源得到更有效的利用,如图2.2.14所示。

img82

图2.2.14 LAB的行或列互连

图2.2.15所示表示了FLEX10K的互连资源。其中,LAB的位置标号表示其所在位置,位置标号由表示行的字母和表示列的数字组成。例如,LAB B3位于B行3列。

5)I/O单元

一个I/O单元(即IOE)包含一个双向的I/O缓冲器和一个寄存器。寄存器可作输入寄存器使用,这是一种需要快速建立时间的外部数据的输入寄存器。IOE的寄存器也可当做需要快速“时钟到输出”性能的数据输出寄存器使用。在有些场合,用LE寄存器作为输入寄存器会比用IOE寄存器产生更快的建立时间。IOE可用做输入/输出或双向引脚。Quartus II 6.0编译器利用可编程的反相选项,在需要时可以自动将来自行、列连线带的信号反相。图2.2.16所示的表示了FLEX10K的I/O单元。

img83

图2.2.15 FLEX10K的互连资源

I/O控制信号网络,也称外围控制总线,从每个IOE中选择时钟、清除、输出使能控制信号。外围控制总线利用高速驱动器使器件中电压摆率达到最小。它可以提供多达18个外围控制信号:8个输出使能信号;6个时钟使能信号;2个时钟信号;2个清除信号。

(1)行到IOE的连接。当IOE用做输入信号时,它可以驱动两个独立的行通道。该行中的所有LE都可访问这个信号。IOE作为输出信号时,其输出信号由一个从行通道实现信号选择的多路选择器驱动。连接每一行通道的每个边的IOE可达8个,如图2.2.17所示。

(2)列到IOE的连接。当IOE作为输入信号时,它可驱动两个独立的列通道;当IOE作为输出信号时,其输出信号由一个对列通道进行选择的多路选择器驱动。两个IOE连接列通道的每个边。每个IOE可由通过多路选择器的列通道驱动,每个IOE可访问的列通道的设置是不同的,如图2.2.18所示。

FLEX10K系列器件为每个I/O引脚提供了一个可选的开漏输出(等效于集电极开路)。开漏输出使得器件能够提供系统级的控制信号(例如中断和写信号)。

img84

图2.2.16 FLEX10K的I/O单元(IOE)

img85

图2.2.17 FLEX10K的行到IOE的连接

img86

图2.2.18 FLEX10K的列到IOE的连接

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈