1EDA技术与VHDL2第2章PLD硬件特性与编程技术本章主要介绍几类常用的大规模可编程逻辑器件的结构和工作原理,并对CPLD的乘积项原理和FPGA的查找表原理分别进行剖析,最后介绍相关的编程技术。32.1PLD概述数字电路系统与门或门非门传输门基本门组合电路时序电路与门或门锁存器触发器42.1PLD概述图2-1基本PLD器件的原理结构图输入缓冲电路与阵列或阵列输出缓冲电路输入输出……可编程的电路结构“与-或”结构较简单查找表结构52.1.1PLD的发展历程熔丝编程的PROM和PLA器件AMD公司推出PAL器件Lattice公司GAL器件Xilinx公司FPGA器件Lattice公司CPLD器件内嵌复杂功能模块的SoPC20世纪70年代20世纪70年代末20世纪80年代初20世纪80年代中期20世纪80年代末进入20世纪90年代后2.1PLD概述62.1.2PLD的分类可编程逻辑器件(PLD)简单PLD复杂PLDPROMPALPLAGALCPLDFPGA2.1PLD概述(1)按集成度分类高集成度芯片低集成度芯片2.1.2PLD的分类2.1PLD概述72.1.2PLD的分类2.1PLD概述(2)从结构上分类乘积项结构器件——基本结构为“与-或”阵列查找表结构器件——由简单的查找表组成可编程门,再构成阵列形式(门阵列)82.1.2PLD的分类1.熔丝(Fuse)型器件。一次性可编程2.反熔丝(Anti-fuse)型器件。3.EPROM型。紫外线擦除电可编程逻辑器件4.EEPROM型。电可擦写编程器件5.SRAM型。掉电后丢失编程信息6.Flash型。多次可编程,掉电后不需要重新配置2.1PLD概述(3)从编程工艺上划分:92.2低密度PLD可编程原理低密度PLD器件的特点:逻辑规模较小,只能实现通用数字逻辑电路(如74系列)的一些功能,在结构上是由简单的“与-或”门阵列和输入输出单元组成。如:PROM,PLA,PAL,GAL等。102.2低密度PLD可编程原理2.2.1电路符号表示图2-3常用逻辑门符号与现有国标符号的对照112.2.1电路符号表示输入缓冲器电路:PLD的互补缓冲器等效结构122.2.1电路符号表示与阵列的简化图形:或阵列的简化图形:132.2.1电路符号表示阵列线连接表示142.2.2PROM(可编程只读存储器)图2-9PROM基本结构地址译码器存储单元阵列………0A1A1nA0W1W1pW0F1F1mFnp22.2低密度PLD可编程原理152.2.2PROM0111201110110...AAAWAAAWAAAWnnnnPROM中的地址译码器是完成PROM存储阵列的行的选择,其逻辑函数是:2.2低密度PLD可编程原理地址译码器可看成是一个“与阵列”16对存储单元的阵列输出:行单元的值列是存储单元阵列第而,其中1121,1pmMpmpn2.2低密度PLD可编程原理01,011,111,1101,011,111,1100,010,110,10WMWMWMFWMWMWMFWMWMWMFmmpmpmpppp……...…且Mx,y可编程可看成是一个“或阵列”17PROM的结构可表示为:与阵列(不可编程)或阵列(可编程)………0A1A1nA0W1W1pW0F1F1mFnp2图2-10PROM的逻辑阵列结构2.2低密度PLD可编程原理182.2.2PROM4×2PROM表示的PLD阵列图与阵列(固定)或阵列(可编程)0A1A1A1A0A0A1F0F2.2低密度PLD可编程原理1010AACAAS以半加器为例:192.2.2PROM图2-12用PROM完成半加器逻辑阵列01110100AAFAAAAF与阵列(固定)或阵列(可编程)0A1A1A1A0A0A1F0F2.2低密度PLD可编程原理202.2.2PROM2.2低密度PLD可编程原理PROM特点:只能用于组合电路的可编程。其与阵列是全译码器,产生了全部的最小项。(输入变量的增加会引起存储容量的增加。而实际应用时,并不需要产生全部最小项)PROM的或阵列可编程,与阵列不可编程。212.2.3PLA(可编程逻辑阵列)图2-13PLA逻辑阵列示意图与阵列(可编程)或阵列(可编程)0A1A1A1A0A0A1F0F2.2低密度PLD可编程原理与阵列,或阵列都可编程222.2.3PLA图2-14PLA与PROM的比较0A1A1F0F2A2F0A1A1F0F2A2F2.2低密度PLD可编程原理规模变小算法复杂运算速度下降232.2.4PAL(可编程阵列逻辑)图2-15PAL结构图2-16PAL的常用表示0A1A1F0F0A1A1F0F2.2低密度PLD可编程原理与阵列可编程或阵列固定简化了算法,运算速度提高242.2.5GAL(通用阵列逻辑器件)2.2低密度PLD可编程原理(1)首次采用了EEPROM工艺,使得GAL具有电可擦除重复编程的特点。(2)在“与-或”阵列结构上沿用了PAL的与阵列可编程、或阵列固定的结构。(3)在GAL的输出部分增加了输出逻辑宏单元OLMC(OutputMacroCell),使GAL的输出具有多种组态,提高了灵活性。2526272.3CPLD的结构与可编程原理CPLD(ComplexProgrammableLogicDevice)复杂可编程逻辑器件,从GAL的结构扩展而来。以Altera公司的Max7000系列器件为例,介绍CPLD的结构和工作原理。282.3CPLD的结构与可编程原理以Max7000系列为例(结构)逻辑阵列块宏单元扩展乘积项可编程连线阵列I/O控制块291.逻辑阵列块(LAB,LogicArrayBlock)2.3CPLD的结构与可编程原理一个LAB由16个宏单元的阵列组成。MAX7000结构主要是由多个LAB组成的阵列以及它们之间的连线构成。包含有32~256个宏单元。多个LAB通过可编程连线阵(ProgrammableInterconnectArray,PIA)和全局总线连接在一起。302.3CPLD的结构与可编程原理312.宏单元2.3CPLD的结构与可编程原理逻辑阵列MAX7000系列中的宏单元乘积项选择矩阵可编程寄存器Max7000系列器件包含32~256个宏单元可单独配置为时序逻辑和组合逻辑工作方式。32图2-18MAX7000系列的单个宏单元结构332.3CPLD的结构与可编程原理(2)乘积项选择矩阵:分配这些乘积项作为到或门和异或门的主要逻辑输入;或把这些乘积项作为宏单元中寄存器的辅助输入:清零、置位、时钟和时钟使能控制。(1)逻辑阵列:包含一个可编程的“与”阵列和固定的“或”阵列,实现组合逻辑,给每个宏单元提供5个乘积项。342.3CPLD的结构与可编程原理(3)可配置寄存器:可以单独的被配置为带有可编程时钟控制的D、T、JK或RS触发器工作方式,也可以将寄存器旁路掉,以实现组合逻辑工作方式。353.扩展乘积项2.3CPLD的结构与可编程原理对复杂的逻辑函数需要附加乘积项。共享扩展乘积项并联扩展乘积项作为附加的乘积项直接送到本LAB的任意一个宏单元中。用尽可能少的资源,得到尽可能快的工作速度。362.3CPLD的结构与可编程原理局部连线共享扩展项提供的“与非”乘积项宏单元的乘积项逻辑宏单元的乘积项逻辑共享扩展乘积项结构373.扩展乘积项并联扩展项馈送方式38共享扩展项:由每个宏单元提供一个单独的乘积项,通过一个非门取反后反馈到逻辑阵列中,可被LAB内任何一个或全部宏单元使用。并联扩展项:是宏单元中一些没有被使用的乘积项,可分配到邻近的宏单元去实现快速、复杂的逻辑函数。当需要并联扩展时,“或”逻辑的输出通过一个选择分配器,送往下一个宏单元的并联扩展“或”逻辑输入端。2.3CPLD的结构与可编程原理392.3CPLD的结构与可编程原理4、可编程连线阵列(ProgrammableInterconnectArray,PIA)不同的LAB通过在可编程连线阵列PIA上布线,以相互连接构成所需的逻辑。这个全局总线是一种可编程的通道,可把器件中任何信号连接到其目的地。40图2-22PIA信号布线到LAB的方式2.3CPLD的结构与可编程原理编程节点412.3CPLD的结构与可编程原理5.I/O控制块允许每个I/O引脚单独的被配置为:输入、输出和双向工作方式。所有I/O引脚都有一个三态缓冲器,它的控制端信号来自一个多路选择器,可以选择用全局输出使能信号其中之一进行控制,或直接连到地(GND)或电源(VCC)上。425.I/O控制块EPM7128S器件的I/O控制块432.3CPLD的结构与可编程原理CPLD结构逻辑阵列块宏单元扩展乘积项可编程连线阵列I/O控制块小结:442.4.1查找表逻辑结构(LookUpTable,LUT)2.4FPGA的结构与工作原理可编程逻辑器件的结构基于乘积项的可编程结构可编程的查找表(LUT)结构LUT是可编程的最小逻辑构成单元452.4FPGA的结构与工作原理大部分FPGA采用基于SRAM(静态随机存储器)的查找表逻辑形成结构,即用SRAM来构成逻辑函数发生器。一个N输入查找表可以实现N个输入变量的任何逻辑功能,如N输入“与”、N输入“异或”等。因此,一个N输入的查找表,需要SRAM存储N个输入构成的真值表,需要2N个存储单元。。2.4.1查找表逻辑结构(LookUpTable,LUT)46图2-244输入查找表单元查找表LUT输入1输入2输入3输入4输出2.4.1查找表逻辑结构(LookUpTable,LUT)2.4FPGA的结构与工作原理474输入查找表单元内部结构类似16选1多路开关482.4FPGA的结构与工作原理2.4.2Cyclone系列器件的结构与原理目前,Altera有3个系列的Cyclone器件,即Cyclone,CycloneII,CycloneIII。它们都是低成本,高性价比的FPGA。它们的结构和工作原理在FPGA器件中具有典型性。492.4.2Cyclone系列器件的结构与原理2.4FPGA的结构与工作原理Cyclone器件主要由逻辑阵列块(LAB)、嵌入式存储器块、I/O单元和PLL等模块构成,在各个模块之间存在着丰富的互连线和时钟网络。Cyclone器件的可编程资源主要来自逻辑阵列块(LAB),而每个LAB都是由多个逻辑单元(LE,LogicElement)构成。LE是CycloneFPGA器件的最基本可编程单元。50图2-26CycloneLE结构图512.4.2Cyclone系列器件的结构与原理2.4FPGA的结构与工作原理每个逻辑单元(LE)主要由一个4输入的查找表、进位链逻辑和一个可编程的寄存器构成。进位链逻辑——带有进位选择,可灵活的构成1位加法或减法逻辑。4输入的LUT——完成所有的4输入、1输出的组合逻辑功能。522.4.2Cyclone系列器件的结构与原理2.4FPGA的结构与工作原理可编程寄存器——可以被配置为D、T、JK和SR触发器模式。具有数据、异步数据装载、时钟、时钟使能、清零和异步置位/复位输入信号。若只需要组合逻辑,可将触发器旁路,LUT的输出作为LE的输出。布线资源——每个LE输出都可以连接到局部布线、行列、LUT链、寄存器链等布线资源。532.4.2Cyclone系列器件的结构与原理2.4FPGA的结构与工作原理LE可以工作在两种操作模式下:普通模式和动态算术模式。普通模式下的LE适合通用逻辑应用和组合逻辑的实现。而在动态算术模式下,可以更好的实现加法器、计数器、累加器和比较器。542.4.2Cyclone系列器件的结构与原理2.4FPGA的结构与工作原理逻辑阵列块(LAB)是由一系列的相邻LE构成的。每个LAB包含10个LE,LE进位链和级联链、LAB控制信号等。在Cyclone器件里面存在大量的LAB。55LE1LE2LE3LE4LE5LE6LE7LE8LE10LE9LE1LE2LE3LE4LE5LE6LE7LE8L