FPGA/CPLD应用技术(Verilog语言版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 可编程逻辑器件

知识分部网络

1.2.1 什么是可编程逻辑器件

可编程逻辑器件(Programmable Logic Device,PLD)是20世纪70年代发展起来的一种新型逻辑器件,它不仅速度快、集成度高,还可以加密和重新编程,其编程次数最高可达1万次以上,因此可编程逻辑器件是目前EDA(Electronic Design Automation)技术中的硬件设计载体,也是数字系统设计的主要硬件基础,现已广泛应用于与电子设计相关的各个领域。

1.可编程逻辑器件发展历程

可编程逻辑器件从出现到今天,已经历了30多年的发展历史,随着大规模集成电路技术和EDA技术的迅猛发展,可编程逻辑器件从最初的可编程只读存储器(PROM)到现在的现场可编程门阵列(FPGA),其结构、工艺、集成度、速度等各项技术性能指标都在不断改进和提高。

按照时间顺序来看,可编程逻辑器件大致经历了以下几个发展阶段:

(1)可编程只读存储器PROM(Programmable Read Only Memory);

(2)可编程逻辑阵列PLA(Programmable Logic Array);

(3)可编程阵列逻辑PAL(Programmable Array Logic);

(4)通用阵列逻辑器件GAL(Generic Array Logic);

(5)可擦除可编程逻辑器件EPLD(Erasable Programmable Logic Device);

(6)复杂可编程逻辑器件CPLD(Complex Programmable Logic Device);

(7)现场可编程门阵列FPGA(Field Programmable Gate Array)。

小资料

可编程逻辑器件发展简介如表1.5所示。

表1.5 可编程逻辑器件的发展

2.可编程逻辑器件的分类

如前所述,可编程逻辑器件有很多种类,每种器件都有多种特征,目前没有严格的分类标准,常用的分类方法有以下三种:按集成度分类;按结构特点分类;按编程方式分类。

1)按集成度分类

可编程逻辑器件按照集成密度分类,可分为低密度可编程逻辑器件(LDPLD)和高密度可编程逻辑器件(HDPLD)。

通常,将较早发展起来的PROM、PLA、PAL和GAL这四种PLD产品划归为低密度可编程逻辑器件LDPLD,也称为简单可编程逻辑器件SPLD;而将 EPLD、CPLD和FPGA统称为高密度可编程逻辑器件HDPLD,如图1.41所示。

2)按结构特点分类

目前常用的可编程逻辑器件都是从“与或阵列”和“门阵列”两类基本结构发展起来的,所以从结构上将其分为两大类:“与或阵列”器件和“门阵列”器件。

图1.41 可编程逻辑器件按集成度分类

(1)“与或阵列”器件。目前所说的PLD器件一般指具有“与或阵列”的器件,包括PROM、PLA、PAL、GAL、EPLD和CPLD器件。PLD是较早的可编程逻辑器件,它的基本逻辑结构由“与阵列”和“或阵列”组成,能够有效地实现“积之和”形式的布尔逻辑函数。PLD主要通过修改具有固定内部电路的逻辑功能来编程。

(2)“门阵列”器件。早期的FPGA器件的基本结构为“门阵列”,目前已发展到逻辑单元(包含了门、触发器等)阵列,称为“门阵列”器件或FPGA器件。

FPGA是最近十年发展起来的另一种可编程逻辑器件,它的基本结构类似于门阵列,能够实现一些较大规模的复杂数字系统。FPGA主要通过改变内部连线的布线来编程。

3)按编程方式分类

可编程逻辑器件按照编程工艺划分,可以分为四类。

(1)一次性编程的熔丝(Fuse)或反熔丝(Antifuse)编程器件。PROM器件、Xilinx公司的XC5000系列器件和Actel的FPGA器件等采用这种编程工艺。

(2)紫外线擦除/电可编程U/EPROM编程器件。大多数的CPLD用这种方式编程。

(3)电擦除/电可编程E2PROM编程器件。GAL器件、ispLSI器件用这种方法编程。

(4)基于静态随机存储器SRAM编程器件。Xilinx公司的FPGA是这一类器件的代表。

小提示

以上四类可编程逻辑器件,第(1)类器件属于一次性编程器件,第(2)、(3)和(4)属于可多次编程器件。其中第(1)、(2)和(3)类器件的优点是系统断电后,编程信息不会丢失。而第(4)类基于SRAM的可编程器件,编程信息在系统断电后会丢失,是易失性器件。因此这类器件工作前需要从芯片外部加载配置数据。配置数据可以存储在片外的EPROM或者计算机上,设计人员可以控制加载过程,现场修改器件的逻辑功能。

1.2.2 简单可编程逻辑器件

PLD器件种类较多,不同厂商生产的PLD器件结构差别较大,此处不逐一介绍,本节介绍简单可编程逻辑器件的基本结构。简单可编程逻辑器件的基本结构包括输入缓冲电路、与阵列、或阵列、输出缓冲电路四部分,其中“与阵列”和“或阵列”是PLD器件的主体。

1.与或阵列

与或阵列是PLD器件中最基本的结构,通过编程改变“与阵列”和“或阵列”的内部连接,就可以实现不同的逻辑功能。依据可编程的部位简单可编程逻辑器件分为PROM、PLA、PAL和GAL等。

PROM中包含一个固定连接的“与阵列”和一个可编程连接的“或阵列”,如图1.42所示。

图1.42 PROM基本结构

图1.42所示的PROM有4个输入端I0I3、16个乘积项、4个输出端O0O3。其中“●”表示固定连接点,“×”表示可编程连接点。

PLA中包含一个可编程连接的“与阵列”和一个可编程连接的“或阵列”,如图1.43所示。

图1.43 PLA基本结构

PAL和GAL的基本门阵列部分的结构是相同的,即“与阵列”是可编程的,“或阵列”是固定连接的。它们之间的差异除了表现在输出结构上,还表现在PAL器件只能编程一次,而GAL器件则可以实现再次编程。

2.宏单元

与或阵列在PLD器件中只能实现组合电路的功能,PLD器件的时序电路功能则由包含触发器或寄存器的逻辑宏单元实现,宏单元也是PLD器件中的一个重要的基本结构。

通常来讲,逻辑宏单元结构具有以下几个作用:

① 提供时序电路需要的寄存器或触发器。

② 提供多种形式的输入/输出方式。

③ 提供内部信号反馈,控制输出逻辑极性。

④ 分配控制信号,如寄存器的时钟和复位信号,三态门的输出使能信号。

3.简单可编程逻辑器件的基本结构

简单可编程逻辑器件包括PROM、PLA、PAL和GAL,它们都是“与或阵列”结构器件,其基本结构如图1.44所示。

图1.44 简单可编程逻辑器件基本结构

“与阵列”和“或阵列”是简单PLD的主体,主要用来实现组合逻辑函数;输入电路由缓冲器组成,其作用是使输入信号具有足够的驱动能力并产生互补(原变量和反变量)输入信号;输出电路可以提供不同的输出方式,直接输出形成组合电路,或者通过寄存器输出形成时序电路,而且输出端口上一般带有三态门,通过三态门控制数据直接输出或反馈到输入端。

四种简单可编程逻辑器件的结构特点比较如表1.6所示。

表1.6 四种简单PLD电路的结构特点

注:TS(三态),OC(可熔极性)

1.2.3 高密度可编程逻辑器件

高密度可编程逻辑器件一般包括EPLD、CPLD和FPGA等,本节首先介绍三类器件的基本可编程资源,再分别以芯片实例介绍CPLD和FPGA的结构。

1.高密度可编程逻辑器件的基本可编程资源

可编程逻辑器件提供了四种可编程资源,如图1.45所示,包括位于芯片中央的可编程功能单元;位于芯片四周的可编程I/O引脚;分布在芯片各处的可编程布线资源和片内存储块RAM。

(1)可编程功能单元。可编程逻辑器件有三种基本可编程功能单元:RAM查找表(Look-Up Table,LUT)、基于多路开关的功能单元和固定功能单元。

图1.45 高密度可编程器件可编程资源示意图

在RAM查找表结构中,RAM存储器中需预先存入所要实现函数的真值表数值,输入变量作为地址,用来从RAM存储器中选择相应的数值作为逻辑函数的输出值,这样就可以实现输入变量的所有可能的逻辑函数。

采用基于多路开关的功能单元只要在多路开关的输入端放置输入的变量、反变量、固定的0和1等相应的组合,两输入变量的所有函数就可以由单个2选1的多路开关来实现。

小提示

多路开关即多路数据选择器,其功能及实现方法参见任务2。

固定功能单元提供单个固定的功能。单个固定功能有单级简单和延时短的优点,其主要缺点是要有大量的功能单元才能实现用户设计的逻辑,而且相应功能单元的级联和布线的延时会导致整个器件性能的降低。

(2)可编程I/O引脚。可编程I/O引脚是器件内部逻辑和外部封装之间的接口,一般分布在芯片四周。随着半导体工艺的线宽不断缩小,从器件功耗的要求出发,器件的内核一般采用低电压供电。为了增强器件的兼容型,芯片外部引脚通常采用高电压供电,由于I/O块与内芯供电电压可能不同,这就要求I/O块的结构能够兼容多个电压标准,既能接收外部器件的高电压输入信号,又能驱动任何高电压的器件。

(3)可编程布线资源。布线资源是可编程逻辑器件中一种专用的内部互连结构,它主要用来提供高速可靠的内部连线,以保证信号在芯片内部的相邻功能单元之间、功能单元与I/O 块之间进行有效的传输。

小资料

可编程布线资源分类如表1.7所示。

表1.7 可编程布线资源分类

(4)片内RAM。片内RAM不仅可以简化系统的设计,提高系统的工作速度,而且可以减少数据存储的成本,使芯片内外数据信息的交换更可靠。设计数字信号处理器(DSP)、数据加密或数据压缩等复杂数字系统时,经常要用到存储器。可编程ASIC芯片内如果没有相应的中小规模存储模块(RAM或FIFO),将很难实现上述电路。

由于半导体工艺已进入到亚微米和深亚微米时代,器件的密度大大提高,所以新一代的FPGA都提供片内RAM。这种片内RAM的速度是很高的,读操作时间和组合逻辑延时一样,大约为5ns,写操作时间大约为8ns,比任何芯片外解决方式要快很多倍。

2.CPLD结构实例

这里以Altera公司的可编程逻辑器件MAX 7000系列器件为例介绍其结构。

MAX 7000系列芯片在结构上包含32256个宏单元。每16个宏单元组成一个逻辑阵列块(LAB)。每个宏单元有一个可编程的“与阵列”和一个固定的“或阵列”,以及一个寄存器,这个寄存器具有独立可编程的时钟、时钟使能、清除和置位等功能。为了能构成复杂的逻辑函数,每个宏单元可使用共享扩展乘积项和高速并行扩展乘积项,它们可向每个宏单元提供多达32个乘积项。

MAX 7000在结构上包括逻辑阵列块LAB(Logic Array Block)、宏单元(Macrocell)、扩展乘积项(Expender Product Term)——共享和并联、可编程连线阵列PIA(Programmable Interconnect Array)和I/O控制块(I/O Control Block),如图1.46所示。

图1.46 MAX 7000E和MAX 7000S的结构图

1)逻辑阵列块(LAB)

MAX 7000系列主要是由逻辑阵列块(LAB)以及它们之间的连线构成的。每个LAB由16个宏单元组成,多个LAB通过可编程连线阵列PIA和全局总线连接在一起,全局总线包括所有的专用输入、I/O引脚和宏单元馈入信号组成。

每个LAB的输入信号包括:来自PIA的36个信号、全局控制信号(用于宏单元内的寄存器实现辅助功能)和从I/O引脚到寄存器的直接输入信号。

2)宏单元(Macrocell)

每个宏单元由3个功能块组成:逻辑阵列、乘积项选择矩阵和可编程触发器。宏单元的结构框图如图1.47所示。

逻辑阵列实现组合逻辑功能,它可给每个宏单元提供5个乘积项。“乘积项选择矩阵”分配这些乘积项作为到“或”门和“异或”门的主要逻辑输入,以实现组合逻辑函数;每个宏单元的一个乘积项可以反相后回送到逻辑阵列。这个“可共享”的乘积项能够连到同一个LAB中任何其他乘积项上。

每个宏单元的寄存器可以单独地编程为具有可编程时钟控制的D、JK或SR触发器工作方式。如果需要,也可将寄存器旁路,以实现纯组合逻辑的输出。

宏单元的寄存器支持异步清除、异步置位功能。乘积项选择矩阵分配乘积项来控制这些操作。每个寄存器的复位功能可以由低电平有效的、专用的全局复位信号来驱动。

图1.47 宏单元结构框图

3)扩展乘积项(Expender Product Terms)

尽管大多逻辑函数能够用每个宏单元中的5个乘积项实现,但某些逻辑函数比较复杂,要实现它们则需要附加乘积项。为提供所需要的逻辑资源,利用了MAX 7000结构中具有的共享和并联扩展乘积项,而不是利用另一个宏单元。这两种扩展项作为附加的乘积项直接送到本LAB的任意宏单元中。利用扩展项可保证在实现逻辑综合时,用尽可能少的逻辑资源,得到尽可能快的工作速度。

4)可编程连线阵列

可编程连线阵列(PIA)是将各LAB相互连接,构成所需的逻辑布线通道。它能够把器件中任何信号源连到其目的地。所有MAX 7000的专用输入、I/O引脚和宏单元输出均馈送到PIA,PIA可把这些信号送到整个器件内的各个地方,如图1.48所示为PIA结构。

在掩膜或现场可编程门阵列(FPGA)中,基于通道布线方案的布线延时是累加的、可变的和与路径有关的;而MAX 7000的PIA有固定的延时。因此,PIA消除了信号之间的时间偏移,使得时间性能容易预测。

5)I/O控制块

I/O控制块允许每个I/O引脚单独地配置为输入、输出和双向工作方式。所有I/O引脚都有一个三态缓冲器,其使能端可以由全局输出使能信号中的一个控制,也可以直接连到地(GND)或电源(VCC)上。I/O控制块有两个全局输出使能信号,它们由两个专用的、低电平有效的输出使能引脚OE1和OE2来驱动。如图1.49所示为I/O控制块的结构图。

当三态缓冲器的控制端连到地GND时,其输出为高阻态,并且I/O引脚可作为专用输入引脚使用。当三态缓冲器的控制端连到电源VCC时,输出被使能。

6)可编程速度/功率控制

MAX 7000器件提供节省功率的工作逻辑模式,可使用户定义的信号路径或整个器件工作在低功耗状态。由于许多应用的所有门中,只有小部分逻辑门工作在高频率,所以在这种模式下工作,可使整个器件总功耗下降到原来的50%或更低。

图1.48 PIA结构

图1.49 I/O控制块的结构图

设计者可以对器件中的每个独立的宏单元编程为高速(接通)或者低速(关闭),这样可使设计中影响速度的关键路径工作在高速、高功耗状态,而器件的其他部分仍工作于低速、低功耗状态,从而降低整个器件的功耗。

7)设计加密

所有MAX 7000 CPLD都包含一个可编程的保密位,该保密位控制能否读出器件内的配置数据。当保密位被编程时,器件内的设计不能被复制和读出。由于在E2PROM内的编程数据是看不见的,故利用保密位可实现高级的设计保密。当CPLD被擦除时,保密位则和所有其他的编程数据一起被擦除。

8)在系统编程(ISP)

MAX 7000A、MAX 7000S系列芯片支持在系统编程和支持JTAG边界扫描测试的功能。我们只要通过一根下载电缆连接到目标板上,就可以非常方便地实现多次重复编程,大大方便了我们调试电路的工作。

小问答

问:可编程逻辑器件的基本资源有以下四部分:功能单元、可编程I/O引脚、布线资源和片内RAM,上面介绍的MAX 7000系列器件中是否包含了这四种基本资源呢?

答:MAX 7000系列器件中包含了三种基本资源:功能单元、可编程I/O引脚和布线资源,没有片内RAM。在其后开发的Altera公司的FLEX 10K系列器件才首次集成了嵌入式存储器块。

MAX 7000系列器件的功能单元包括逻辑阵列块(LAB)、宏单元(Macrocell)以及扩展乘积项等。

可编程I/O引脚的控制部分是其I/O控制块。

布线资源即对应其可编程连线阵列。

3.FPGA结构实例

这里以Altera公司的可编程逻辑器件APEX系列器件为例介绍FPGA结构。

APEX 20K系列器件是具有多核结构的PLD器件,“多核”是指该器件不但有查找表(LUT),还有乘积项(Product Term)与嵌入式存储器(Memory)。APEX 20K系列芯片多核结构使其同时具备了MAX系列、FLEX系列等器件的高速、高密度的优点,过去应用中需用乘积项结构、查找表结构和存储器等器件实现的电路,现在可以用一个APEX 20K实现。

1)APEX 20K系列器件基本结构

APEX 20K系列器件基本结构框图如图1.50所示。

图1.50 APEX 20K系列器件基本结构框图

APEX 20K系列器件把LUT(查找表)、Product Term(乘积项)和Memory(存储器)结合于同一器件内,其互连信号是由一系列快速、连续、横向、纵向贯穿于整个器件的行列通道组成的快速通道(Fast Track)互连提供的。

APEX 20K系列器件为每个I/O引脚配有一个I/O单元,它位于每个快速通道行或列的末端。每个I/O单元包含一个双向I/O缓冲器和一个寄存器,它既可以用于输入或输出寄存器,也可双向应用,当被用做一个专用时钟引脚时,这些缓冲器提供附加特性。

APEX 20K系列器件的嵌入式系统块ESB能实现各种存储功能,包括CAM、RAM、双端口RAM、ROM以及FIFO。与分布式内存结构相比,ESB直接把存储器嵌入到死区以提高性能,减少死区。同时,大量的可级联ESB确保了APEX 20K系列器件在高集成度设计时,能获得更多更广的存储块。ESB的高速性能使得它在读/写小存储块时不必损失任何速度代价,其丰富的ESB资源可保证设计者能处理系统所要求的任意大小的存储块。

APEX 20K系列器件可提供2个专用时钟引脚和4个用于驱动寄存器输入控制的专用输入引脚。这些信号使用了具有极短延时和极低失真的专用布线通道以确保有效分配高速低失真控制信号。四个全局信号可由4个专用输入信号驱动,也可以由内部逻辑产生的信号驱动。这一特性用于产生具有多扇出的异步清除和时钟驱动信号。APEX 20K系列器件提供两个附加的专用时钟引脚,同时具有时钟锁定和时钟自举管理电路。

这里主要介绍APEX 20K的以下几部分结构:MegaLAB结构、逻辑阵列块(LAB)、逻辑单元(LE)、进位链与级联链、快速通道(Fast Track)互连、嵌入式系统块(ESB)和I/O单元(IOE)。

2)MegaLAB结构

APEX 20K系列器件由一系列的MegaLAB组成,每个MegaLAB包含一定数量的LAB(Logic Array Block)、一个ESB以及负责在MegaLAB内部传输信号的MegaLAB内部互连通道。APEX 20K系列器件MegaLAB结构如图1.51所示。

图1.51 APEX 20K系列器件MegaLAB结构

3)逻辑阵列块(LAB)

每个LAB包含了10个LE以及与LE有关的进位链和级联链、LAB控制信号、局部互连通道。局部互连在同一LAB、IOE或ESB之间或相邻的LAB、IOE或ESB之间传送信号。APEX 20K 系列器件的逻辑阵列块(LAB)结构如图1.52所示。

APEX 20K器件使用互连LAB结构,此结构允许LE驱动两个局部互连部分,这个特征使得MegaLAB与FastTrack之间的互连减少到最低程度,从而提供了高性能和灵活性。每个LE通过快速局部互连可驱动另外29个逻辑单元。

每个LAB可使用两个时钟信号与两个时钟使能信号,具有相同的时钟但时钟使能不同的逻辑单元或者使用同一个时钟信号,或者被置于不同的LAB中。

4)逻辑单元(LE)

LE是APEX 20K器件内部最小的逻辑单元。每个LE包含一个4输入的LUT,每个LUT都是一个函数发生器,可以实现任何4变量的逻辑功能。此外,每个LE包含一个可编程的寄存器与进位链、级联链。每个LE可驱动一个局部互连、MegaLAB互连以及FastTrack互连布线结构。APEX 20K的LE结构如图1.53所示。

每个LE的可编程寄存器均可配置为D、T、JK或SR触发器来操作,寄存器的时钟和清除控制信号可由全局信号、通用I/O引脚或任何内部逻辑驱动。实现组合逻辑功能时,寄存器被旁路,且由LUT的输出驱动LE的输出。

图1.52 APEX 20K系列器件的逻辑阵列块(LAB)结构

图1.53 APEX 20K的LE结构

每个LE有两个输出,用来驱动局部互连、MegaLAB互连或Fast Track互连,每个输出均可被LUT输出或寄存器输出独立驱动。例如,当寄存器驱动其他输出时,LUT可以驱动另一个输出,这种特性称为寄存器打包(Register Packing)。它使寄存器和LUT可被用于实现互不相关的逻辑功能,因而改善了器件的使用状况。

APEX 20K系列器件结构提供两种专用高速数据通道,通过这两种数据通道,相邻的LE之间的相连可不用局部互连。这两种专用高速数据通道即进位链和级联链。进位链支持诸如计数器和累加器等的高速算术运算,而级联链则用来实现位数较宽的逻辑功能,如实现最小延迟的高宽度比较器。进位链和级联链与同一LAB的10个LE以及同一个MegaLAB的所有LAB相连。

5)进位链与级联链

进位链(Carry Chain)提供LE之间非常快的超前进位功能。进位信号通过超前进位链从低序号LE向高序号LE进位,同时进位到LUT和进位链的下一级。这种结构特性使得APEX 20K系列器件能够实现高速计数器、加法器和任意宽度的比较器功能。进位链的长度可使用工具软件QuartusⅡ的编译器自动建立或手工(设定有关参数)建立。

QuartusⅡ编译器通过链接LAB来自动创建长于10个LE的进位链。在MegaLAB结构中,一条长进位链交替跨接LAB。也就是说,长度超过一个LAB的进位链,要么从偶序号LAB跨接到偶序号LAB,要么从奇序号LAB跨接到奇序号LAB。

级联链(Cascade Chain)为逻辑电路提供了更宽的输入宽度。利用级联链,APEX 20K系列器件可以实现扇入很多的逻辑功能。相邻的LUT用来并行计算逻辑功能的各部分,级联链依次串接这些中间值。级联链可使用“与逻辑”或者“或逻辑”来连接相邻的LE的输出。每增加一个LE,可增加4位输入宽度,而延时却增加很小。

级联链可由Quartus编译器在编译时自动生成,也可以由设计人员在设计输入时手工创建。

6)快速互连通道(Fast Track)

APEX 20K的LE、I/O、ESB之间的连接是通过Fast Track快速互连通道实现的。Fast Track是一系列遍布器件的连续的垂直和水平的连线,采用这种全局连线的优点是可以预测器件的性能参数。APEX 20K器件的内部互连结构如图1.54所示。

7)嵌入式系统块(ESB)

多内核结构中,ESB可以被配置成基于ESB到ESB的宏单元块。每个ESB都有来自相邻局部互连的32个输入端,因此它可以被MegaLAB互连或相邻的LAB驱动。当相邻的LE直接驱动ESB时,即实现快速存储器通道。9个ESB宏单元也可以通过局部互连,反馈回ESB而获得更好的性能。ESB控制信号由专用时钟引脚、全局信号及来自局部互连的附加输入驱动。ESB的输出驱动MegaLAB和FastTrack互连。

(1)乘积项逻辑。在乘积项模式下,每个ESB包含16个宏单元。每个宏单元由两个乘积项和一个可编程寄存器组成。APEX 20K器件ESB中的乘积项结构如图1.55所示。

APEX 20K系列器件中的宏单元可被配置为组合逻辑与时序逻辑。若要实现组合逻辑,乘积项选择矩阵首先选择乘积项,并配合或门、异或门(决定或门输出是否取反)实现组合逻辑功能。若要实现时序逻辑操作,用到寄存器时,寄存器可根据设计者的需要编程为D、T、JK或SR寄存器。APEX 20K器件中的宏单元结构如图1.56所示。

图1.54 APEX 20K器件的内部互连结构

图1.55 APEX 20K器件ESB中的乘积项结构

(2)实现各种RAM。ESB可以用来实现各种类型的存储器,包括双口RAM、ROM、FIFO与CAM。ESB含有输入寄存器和输出寄存器,输入寄存器可同步写,而输出寄存器可设计为流水线以改善系统性能。ESB提供了双端口模式,可以按不同的时钟频率同时进行读/写操作。

图1.56 APEX 20K器件中的宏单元结构

ESB实现存储器时,每个ESB可以被配置为:128×16bits,256×8bits,512×4bits,1024×2bits和2048×1bits。多个ESB联合使用可以组成位数更宽、容量更大的存储器。如图1.57所示,给出了ESB实现的双端口模式时的外部信号。

在超级APEX 20K器件APEX 20KE中,还可以用ESB来实现内容可寻址存储器(Content-Addressable Memory,CAM),这里不再详述,可参考相关资料。

8)I/O结构

APEX 20K的IOE包含一个双向的I/O缓冲器和一个寄存器,它们可以作为输入寄存器处理需要快速建立时间的外部数据,也可以作为输出寄存器处理需要快速CLOCK-TO-OUTPUT功能的数据。因此,IOE可以作为输入引脚、输出引脚以及双向引脚使用。此外,开发工具QuartusⅡ的编译器将根据需要在适当的地方对行、列互连送来的信号进行取反。

APEX 20K的IOE包含可编程延时,利用它能保证零保持时间、最小的时钟到输出时延、核心(core)寄存器与输入IOE寄存器之间互相传送的时延。

APEX 20K提供了一种称为专用快速I/O(FAST1FAST4)的双向引脚,用来处理需要高扇出(如PCI控制信号)的情况。这些引脚除了可作为快速时钟、清除信号外,还能驱动输出,它们的输出数据与三态控制信号来自局部互连和MegaLAB局部互连。如图1.58所示,给出了APEX 20K的快速I/O结构。

图1.57 ESB实现的双端口模式时的外部信号

图1.58 APEX 20K的快速I/O结构

小问答

问:尽管FPGA和CPLD都是可编程逻辑器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点,两者在应用上的区别是什么?

答:两者在应用上的区别如表1.8所示。

表1.8 FPGA与CPLD的区别

1.2.4 可编程逻辑器件主要厂商

目前,世界上知名的可编程逻辑器件厂商除了前面介绍的Altera公司之外,还有以下著名厂商:

美国的Xilinx公司,网址是:www.xilinx.com;

美国的Lattice公司,网址是:www.lattice.com;

美国的Actel公司,网址是:www.actel.com。

1.Altera公司

Altera公司是20世纪90年代以来发展较快的PLD生产厂家。在激烈的市场竞争中,Altera公司凭借其雄厚的技术实力,独特的设计构思和功能齐全的芯片系列,跻身于世界最大的可编程逻辑器件供应商之列。

Altera产品的基本构造块是逻辑单元。它的内部连线均采用集总式互联通路结构,即利用同样长度的一些连线实现逻辑之间的互连。在Classic、MAX 3000A、MAX 5000、MAX 7000、MAX 9000系列中,逻辑单元称为宏单元(Macrocell),宏单元由可编程的“与阵列”和固定的“或阵列”构成;FLEX 8000、FLEX 6000、FLEX 10K、APEX 20K、ACEX 1K等系列的逻辑单元(LE)则采用查找表LUT结构来构成。

2.Xilinx公司

Xilinx公司成立于1984年,Xilinx首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,并于1985年首次推出商业化产品。目前Xilinx满足了全世界对FPGA产品一半以上的需求。

除了FPGA,Xilinx产品线还包括复杂可编程逻辑器件(CPLD)。在某些控制应用方面,CPLD通常比FPGA速度快,但其提供的逻辑资源较少。Xilinx可编程逻辑解决方案缩短了电子设备制造商开发产品的时间并加快了产品面市的速度,从而减小了制造商的风险。与采用传统方法如固定逻辑门阵列相比,利用Xilinx可编程器件,客户可以更快地设计和验证他们的电路。而且,由于Xilinx器件是只需要进行编程的标准部件,客户不需要像采用固定逻辑芯片时那样等待样品或者付出巨额成本。Xilinx产品已经被广泛应用于从无线电话基站到DVD播放机的数字电子应用技术中。

Xilinx公司生产的CPLD产品包括XC9500系列和Cool Runner系列。XC9500系列产品包括XC9500、XC9500XL和XC9500XV三种类型。Cool Runner系列产品包括Cool Runner XPLA和Cool Runner-Ⅱ两种类型。

Xilinx的主流FPGA分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如Spartan系列;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如Virtex系列,用户可以根据自己实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。

3.Lattice公司

Lattice公司是较早利用E2CMOS技术制造可编程逻辑器件的公司之一,也是世界上第一片GAL的研制者。近年来,该公司在CPLD的研制方面取得了很大进展,特别是20世纪90年代以来,Lattice公司将E2CMOS与在系统可编程ISP(In-System Programming)技术结合在一起,推出了9个系列的在系统可编程逻辑芯片。

Lattice公司的可编程逻辑器件主要包括高密度可编程逻辑器件ispLSI及MACH、低密度可编程逻辑器件ispGAL、信号开关/接口器件ispGDX/ispGDS和可编程模拟电路ispPAC等系列产品。

4.Actel公司

Actel 公司1985年在美国加利福尼亚州组建,是现场可编程门阵列器件(FPGA)的专业制造商。Actel 公司1988年推出第一个抗熔断FPGA产品,它的FPGA产品被广泛应用于通信、计算机、工业控制、军事、航空和其他电子系统。由于采用了独特的抗熔丝硅体系结构,Actel公司的FPGA产品具有可靠性高、抗辐射强、能够在极端环境条件下使用等特点,因而被美国宇航局的太空飞船、哈勃望远镜修复、火星探测器、国际空间站等项目所采用。