1、第2章 CPLD与FPGA 工作原理简介,PLD: Programmable Logic Device,可编程逻辑器件,是一种数字集成电路的半成品,在其芯片上按一定排列方式集成了大量的门和触发器等基本逻辑元件,使用者可利用某种开发工具对其进行加工,即按设计要求将片内元件连接起来(编程),引论,PLD的思想来自PROM,首先我们对数字电路进行剖析,1、数字电路分类,组合电路:,与时间无关,输出是输入的函数,时序电路:,与时间有关,输出与输入、输出的前一状态有关。,3、时序电路剖析,2、组合电路剖析:,由基本门构成:,与、或、非、异或门等,可由单一基本门构成,可化为“与-或”表达式,由组合电路和触
2、发器构成,=可编程电路结构,2.1 电路符号与简化符号,一、电路符号 :原理图输入用常用符号描述,二、结构介绍用的简化符号,PLD互补输入,互补等效,PLD四输入与门,四输入与门,PLD四输入或门,四输入或门,不连接 固定连接 编程连接,Programmable ROM 可编程只读存储器,2.2 PROM工作原理,1、地址译码器:,完成PROM存储阵列的行的选择,由与门组成。,其字线的逻辑函数是:,Wo=An-1Ai Ao,W1=An-1Ai Ao,Wn=An-1Ai Ao,2、存储矩阵,逻辑函数表示:,Fo=Mp-1,oWp-1+Ml,oW1+MooWo,F1=Mp-1,1Wp-1+M1,1
3、W1+Mo,1Wo,Fm-1=Mp-1,m-1Wp-1+M1,m-1W1+Mo,m-1Wo,其中:,对熔丝工艺,熔丝断相当于Mp-1,m-1=0;熔丝通相当于Mp-1,m-1=1 是一个可编程或阵列,P=2n,Mp-1,m-1是存储单元阵列第m-1列p-1行单元的值。,3、PROM的PLD框图,4、 PROM的阵列图,早期有人用ROM做数字电路。以4x2PROM为例,说明可将PROM当PLD使用。,例2-1:构造半加器:,0+0=0,0+1=1,1+0=1,1+1=10,S=AoAl =AoAl+AoA1,C=AoA1,阵列点文件,对PLD器件称为熔丝图文件(Fuse Map),对于PROM,
4、则为存储单元的编程数据文件,PROM只能用于组合电路,输入变量的增加会引起存储容量的增加,且按2的幂次方增加。原因:全译码,2.3 PLA,与阵列和或阵列都可编程。,例2-2:6x3PLA与8x3PROM的比较,两者在大部分实际应用中,可实现相同的逻辑功能。,优点:乘积项数量减少,门利用率高,缺点:算法复杂、器件的运行速度下降 。,与阵列不采用全译码的方式,标准的与或表达式已不适用,需要把逻辑函数化成最简的与或表达式,然后用可编程的与阵列构成与项,用可编程的或阵列构成与项的或运算。在有多个输出时,要尽量利用公共的与项,以提高阵列的利用率。,应用:全定制ASIC设计 ,手工化简,2.4 PAL,
5、与阵列可编程、或阵列固定,对于多个乘积项,PAL通过输出反馈和互连的方式解决,即允许输出端的信号再馈入下一个与阵列。,时序电路的实现:,时序电路由组合电路及存储单元构成(锁存器、触发器、RAM),组合电路部分的可编程问题已解决,只要加上锁存器、触发器即可。,例2-3:PALl6V8的部分结构图:输出反馈、D触发器,缺点:,1、为适应不同应用需要,PAL的输出IO结构很多,应用设计者在设计不同功能的电路时,要采用不同输出IO结构的PAL器件。带来使用、生产的不便。,2、PAL一般采用熔丝工艺生产一次可编程,修改不方便。,被GAL取代,2.5 GAL,1985年,Lattice,1、特点:,1)采
6、用EEPROM工艺,具有电可擦除重复编程的特点。,2)在“与或”阵列结构上沿用了PAL的与阵列可编程、或阵列固定的结构。,3)输出结构较大改进,增加了输出逻辑宏单元OLMC(Output Logic Macro Cell)。,2、OLMC单元的组态:,1)OLMC的结构:,OLMC中有4个多路选择器,通过不同的选择方式可以产生多种输出结构。,这些输出结构分别属于三种模式,一旦确定了某种模式,所有的OLMC都将工作在同一种模式下。,2)组态简介,组合输出,可配置成,组合输出双向口,寄存器输出,寄存器输出双向口,专用输入等。,优点:,设计极为灵活。,具有结构重构和输出端的任何功能均可移到另一输出引
7、脚上的功能,可简化电路板的布局布线,使系统的可靠性进一步地提高。,3)寄存器模式:有寄存器,三态门,A、寄存器输出结构:,B、寄存器模式组合输出双向口结构,4)复合模式:无寄存器,三态门可用,A、复合组合输出结构,B、组合输出双向口结构,3)简单模式:特点:三态门固定,A、反馈输入结构:,“与一或”阵列没输出功能,但可作为相邻单元信号反馈输入,该单元反馈输入端信号来自另一个相邻单元。,B、输出反馈结构,C、简单模式输出结构,编辑ABEL文本文件*.ABL,生成JED网表文件,简单PLD早期器件,规模小,只能实现通用数字逻辑电路(如74系列)的一些功能,由 “与一或”门阵列和输入输出单元组成。,
8、2.6 CPLD结构与工作原理,CPLD即Complex Programmable Logic Device复杂可编程逻辑器件。,典型产品Altera的MAX7000S。结构和工作原理,一、结构:,可编程与阵列,乘积项选择矩阵,固定或阵列,扩展乘积项,可编程寄存器,16个,宏单元,LAB,2/16个,芯片,二、宏单元:,1、可编程的“与”阵列,PIA:可编程连线阵programmable Interconnect Array,共享扩展乘积项:增加输入数,用于复杂电路设计。,每个宏单元提供一个单独的乘积项,通过一个非门取反后反馈到逻辑阵列中,可被LAB内任何一个或全部宏单元使用和共享。采用共享扩
9、展项后要增加一个短的延时,2、乘积项选择矩阵,输出:,寄存器:输入清0、置1、CLKCLK-EN,固定或阵列:组合电路,3、并行扩展乘积项,并联扩展项是宏单元中一些没有被使用的乘积项,可分配到邻近的宏单元去实现快速、复杂的逻辑函数。,允许最多20个乘积项直接送到宏单元的“或”逻辑,其中5个乘积项是由宏单元本身提供的,15个并联扩展项是从同一个LAB中邻近宏单元借用的。,当需要并联扩展时,“或”逻辑的输出通过一个选择分配器,送往下一个宏单元的并联扩展“或”逻辑输入端。,4、可配置寄存器:可单独编程为带有可编程时钟控制的D、T、JK或SR触发器,也可将寄存器旁路,实现组合逻辑方式。,每个寄存器支持
10、异步清零和异步置位功能乘积项选择矩阵分配乘积项来控制这些操作。此外,每一个寄存器的复位端可以由低电平有效的全局复位专用引脚GCLRn信号来驱动。,每个可编程寄存器可以按三种时钟输入模式工作:, 全局时钟信号:该模式能实现最快的时钟到输出(clock to Output)性能,这时全局时钟输入直接连向每一个寄存器的CLK端。, 全局时钟信号带时钟信号使能。由于仍使用全局时钟,输出较快, 用乘积项实现一个阵列时钟:宏单元或IO信号进行钟控,速度稍慢。,三、逻辑阵列块LAB,16个宏单元的阵列组成一个LAB,四、芯片,LAB,PIA(Programmable Interconnect Array)
11、可编程连线阵:LAB与全局总线连接,IO控制块:控制IO引脚,有输入、输出和双向方式,2.7 FPGA结构与工作原理,FPGA即现场可编程门阵列(Field Programmable Gate Array),一、FPGA结构框图: FLEX10K,由嵌入式阵列块EAB、逻辑阵列块LAB、Fast Track和I/O控制单元IOC四部分组成,. . .,IOC,IOC,. . .,IOC,IOC,. . .,IOC,IOC,. . .,IOC,IOC,. . .,IOC,IOC,. . .,IOC,IOC,FLEX 10K系列FPGA结构图,. . .,IOC,IOC,. . .,IOC,IOC
12、,. . .,IOC,IOC,. . .,IOC,IOC,. . .,IOC,IOC,. . .,IOC,IOC,EAB,EAB,嵌入式 阵列块,二、逻辑阵列块LAB(Logic Array Block),每个LAB包含八个逻辑单元LE、相联的进位链和级联链,LAB控制信号与LAB局部互连。,1、逻辑单元LE,Logic Element或LC:Logic Cell,是FLEX10K结构中的最小单元,实现逻辑功能。,每个LE包含一个4输入的LUT、一个带有同步使能的可编程触发器,一个进位链和一个级联链。,每个LE有两个输出可以分别驱动局部互连和快速通道Fast Track互连,,1)、查找表LU
13、T原理 Look Up Table,是FPGA的最小逻辑构成单元 大部分FPGA采用基于SRAM的查找表构造逻辑函数。 一个N输入LUT可实现N输入变量的任何逻辑功能,如 “与”、 “异或”等。,例24,N不可能很大,否则LUT的利用率很低,输入多于N个的逻辑函数、必须用几个查找表分开实现。,2)可编程触发器: 可设置成D、T、JK或SR触发器。该寄存器的时钟、清零和置位信号可由全局信号通用IO引脚或任何内部逻辑驱动。对于组合逻辑的实现,可将该触发器旁路。 3)进位链(Carry-In) 用来支持高速计数器和加法器,提供LE之间快速的向前进位功能。来自低位的进位信号经进位链向前送到高位,同时馈
14、入LUT和进位链的下一段这一特点使得FLEXIOK结构能够实现高速计数器、加法器和宽位的比较器。,进位链连通LAB中的所有LE,可实现快速加法器, 比较器和计数器,4)级联链 (Cascade-In): 可实现多输入(Wide-Input)逻辑函数。 相邻的LUT用来并行地完成部分逻辑功能,级联链把中间结果串接起来。级联链可以使用逻辑“与”或者逻辑“或”来连接相邻LE的输出(图3-37)每个附加的LE提供有效输入4个,其延迟会增加少许。,两种不同的级联方式,5)输出驱动: LE有两个输出驱动内部互连,一个驱动局部互连另一个驱动行或列的快速通道Fast Track的互连输出,这两个输出可以单独控
15、制可以实现在一个LE中,LUT驱动一个输出,而寄存器驱动另一个输出因而在个LUT中的触发器和LUT能够用来完成不相关的功能能够提高LE的资源利用率。,三、快速通道(Fast Track): 在FLEX10K结构中,Fast Track遍布于整个器件,可预测其延时性能。有些FPGA采用分段式连线结构,会使延时难以预测,从而降低了设计性能。Fast Track连接是由遍布整个器件的“行互连”和“列互线”组成的。每行的LAB有一个专用的“行互连”,“行互连”可以驱动IO引脚或馈送到器件中的其他LAB。“列互线”连接各行。也能驱动IO引脚。,连续布线 = 每次设计重复的可预测性和高性能,连续布线 (
16、Altera 基于查找表(LUT)的 FPGA ),LAB,LE,四、IO单元与专用输入端口IOC: FLEX10K的引脚由IOE驱动。IOE位于快速通道的行和列的末端,包含一个双向IO缓冲器和一个寄存器,这个寄存器可以用作需要快速建立时间的外部数据的输入寄存器,也可以作为要求快速“时钟到输出”性能的数据输出寄存器。IOE可以配置成输入、输出或双向口。,五、嵌入式阵列块EAB:Embedded Array Block 是在输入、输出口上带有寄存器的RAM块是由一系列的嵌入式RAM单元构成。当要实现有关存储器功能时,每个EAB提供2048个位。 EAB可以非常方便地实现一些规模不太大的RAM、ROM、FIFO或双口RAM等功能块的构造。 当EAB用来实现计数器、地址译码器、状态机、乘法器、微控制器以及DSP等复杂逻辑时,每个EAB可以贡献100到600个等效门。 EAB可以单独使用,也可以组合起来使用,EAB 的字长是可配置的,图3-40 用EAB构成不同结构的RAM和ROM,EAB 可以用来实现乘法器,