可编程逻辑器件原理与应用电子通信工程系第1章学习使用可编程逻辑器件开发环境1.1.1认识可编程逻辑器件数字集成电路通用集成电路专用集成电路优点:成本低缺点:难以满足复杂电路要求优点:针对专门用途经过优化缺点:开发周期长、成本高风险大1.1.1认识可编程逻辑器件•2可编程逻辑器件的发展概况图1-6可编程逻辑器件发展概况时间可编程逻辑器件类型或技术功能特点20世纪70年代初至70年代中期PROMEPROME2PROM受结构的限制只能完成简单的数字逻辑功能。20世纪70年代中期至80年代PLA、PAL、GALEPLD在结构上较PROM复杂,基于“与或阵列”实现大量的逻辑组合功能。EPLD是改进的GAL,集成度更高。20世纪80年代中至90年代末CPLDFPGA提高了逻辑运算的速度,体系结构和逻辑单元灵活,集成度高,编程方式灵活。20世纪90年代末至今SOPCSOC由于内嵌了复杂的功能模块可实现系统级电路设计。1.1.1认识可编程逻辑器件1.6可编程逻辑器件与FPGA输出电路与阵列输入电路或阵列。。。。。。。。输入输出输入项乘积项或项简单PLD的基本结构1.1.1.2简单PLD的结构PLD中或阵列表示阵列线连接表示简单PLD的逻辑表示PLD的互补缓冲器PLD的互补输入PLD中与阵列表示1.1.1.2简单PLD的结构1.1.1.2简单PLD的结构•1.逻辑阵列:由与或阵列和反相器组成。•在与或阵列中每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑,在“与”阵列后一般还有一个“或”阵列,用以完成最小逻辑表达式中的“或”关系。•另外,通过反相器可以得到信号的反变量,这样通过可编程与或阵列可以实现任意组合逻辑。图1-8与或阵列示意图PROM阵列图与阵列(固定)或阵列(可编程)0A1A1A1A0A0A1F0F1.1.1.2简单PLD的结构PLA阵列图与阵列(可编程)或阵列(可编程)0A1A1A1A0A0A1F0FProgrammableLogicArray1.1.1.2简单PLD的结构PAL阵列图ProgrammableArrayLogic1.1.1.2简单PLD的结构输出逻辑宏单元输入/输出口输入口时钟信号输入三态控制可编程与阵列固定或阵列GAL阵列图1.1.1.2简单PLD的结构GAL和PAL最大的差别在于GAL有一种灵活的、可编程的输出结构,它只有几种基本型号,却可以代替数十种PAL器件,因而称为通用可编程逻辑器件。GAL的可编程输出结构称为输出逻辑宏单元OLMC(OutputLogicMacroCell)1.1.1.2简单PLD的结构GAL的OLMCS1S2=00时,低电平有效寄存器输出;S1S2=01时,高电平有效寄存器输出;S1S2=10时,低电平有效组合I/O输出;S1S2=11时,高电平有效组合I/O输出。其中4选1MUX用来选择输出方式和输出极性;2选1MUX用来选择反馈信号(寄存器/组合反馈)。可编程特征码S1、S2则控制着数据选择器的工作状态。1.1.1.2简单PLD的结构•PROM、PLA、PAL、GAL的主要区别在于哪个矩阵可编程以及输出结构的形式,见表1-1。器件类型“与”阵列“或”阵列输出PROM固定可编程PLA可编程可编程PAL可编程固定IO可编程GAL可编程固定宏单元表1-1简单可编程逻辑器件可编程与或阵列和输出结构表1.1.1.2简单PLD的结构LogicArrayBlock可编程连线阵列1.1.1.3CPLD的结构I/O控制块(I/OB)Altera公司MAX7000系列CPLD器件内部结构1.1.1.3CPLD的结构MAX7000系列单个宏单元结构来自其它宏单元的乘积项来自本宏单元的乘积项时钟选择可编程的内部连线阵列1.1.1.3CPLD的结构左侧为乘积项阵列,实际就是一个与阵列,每个交叉点都是一个可编程点。通过“与阵列”产生乘积项(最小项)。后面的或门把乘积项“加”起来,得到输出逻辑函数。1.1.1.3CPLD的结构右侧是一个可编程D触发器,它的时钟、清零输入都可以编程选择,可以使用专用的全局清零和全局时钟。1.1.1.4FPGA的结构图1-13FPGA芯片结构示意图FPGA芯片主要由可编程输入输出单元IOB、基本可编程逻辑单元CLB、时钟管理模块DCM、嵌入块式RAM以及布线资源等组成。查找表单元内部结构(LUT)查找表LUT输入1输入2输入3输入4输出1.1.1.4FPGA的结构实际逻辑电路LUT的实现方式a,b,c,d输入逻辑输出地址RAM中存储的内容00000000000001000010....0...011111111111.1.1.4FPGA的结构1.1.1.4FPGA的结构•Altera公司FPGA芯片的命名规则为:工艺+型号+封装+管脚+温度+芯片速度+(可选后缀)。图1-16Altera公司FPGA器件型号命名示意1.1.2CPLD/FPGA开发语言和开发流程•1.1.2.1硬件描述语言•1.1.2.2基本开发流程•1.1.2.3编程方式1.1.2.1硬件描述语言•HDL硬件描述语言是一种用文本形式的方法来描述数字电路和系统的语言。VDHL和VerilogHDL两种HDL语言广泛应用。•HDL(HardwareDescriptionLanguage)语言包括VHDL、VerilogHDL语言、ABEL-HDL和AHDL等。•VHDL(VeryHighSpeedIntegratedCircuit)1982年美国国防部为军事研发,1987年形成IEEE标准版本。•VerilogHDL语言在1983年由GDA公司的PhilMoorby首创。1995年形成了IEEE标准版本。1.1.2.2基本开发流程•对可编程逻辑器件的设计方法包括硬件设计和软件设计两部分。•硬件包括CPLD/FPGA芯片电路、存储器、输入输出接口电路以及其它外围设备,软件是相应的HDL程序或嵌入式C程序。•对于CPLD/FPGA设计一般采用自顶向下,按照层次化、结构化的设计方法,从系统级到功能模块的软、硬件协同设计,达到软、硬件的无缝结合。图1-17CPLD/FPGA典型设计流程1.1.2.2基本开发流程•配置(configuration)是对FPGA的内容进行编程的过程。•每次上电后都需要进行配置是基于SRAM工艺FPGA的一个特点,也可以说是一个缺点。FPGA配置过程如下:1.1.2.3编程方式1.1.2.3编程方式根据FPGA在配置电路中的角色,可以将配置方式分为三类:1.FPGA主动串行(AS----ActiveSerial)方式2.JTAG方式3.FPGA被动(Passive)方式1.1.3QuartusII开发环境及应用