Part1可编程逻辑器件的基本原理•PLD和EDA的发展概况•PLD的分类•基于“PT”的PLD——PLD•基于“LUT”的PLD——FPGA1.1PLD发展概况1.数字IC的发展过程:SSI\MSI\LSI\VLSI2.ASIC家族(数字部分):全定制、半定制门阵列:含基本门、触发器、连线区标准单元:设计成熟的逻辑块、常用的单元线路PLD:CPLD、FPGA3.PLD的发展:70年代初:PROM70年代中:PLA70年代末:PAL(AMD公司首推)80年代初:GAL(Lattice公司首推)80年代中:EPLD(Altera)、FPGA(Xilinx)80年代末:ISP(Lattice公司首推)90年代初:CPLD90年代中:SOPC(内嵌CPU核,DSP核等复杂功能模块的系统级芯片)1.CAD(20世纪60年代中期至80年代初期)特点:针对产品的设计、分析至生产、测试的每个阶段研制不同的软件工具,每个软件只能完成其中的一项具体工作,只能解决局部问题不足:存在软件衔接问题,缺乏系统级设计的考虑。2.CAE(20世纪80年代初期至90年代初期)实现将产品的开发、生产各个阶段使用的各个工具集成为一个系统,能实现由RTL级开始,从设计到版图输出的全程设计自动化。3.EDA(20世纪90年代以来)支持高级语言描述、系统级仿真和综合主要特征:高层综合:设计层次由RTL级提高到系统级(行为级),并推出了相应的行为级综合优化工具。高层描述:用HDL语言取代原理图,使复杂IC的描述规范化,便于传递、交流、保存和修改。平面规划:对逻辑综合和物理版图设计进行联合管理。可测性综合设计:利于测试,减少时间和费用。为带有嵌入µP核的ASIC设计提供软、硬件协同设计工具。建立并行设计工程框架结构的集成化设计环境,允许若干个相关的设计小组共享数据库和知识库,同时并行地进行设计。1.2EDA发展概况•现代EDA技术覆盖了从系统级、电路级、芯片级到版图级四个设计层次:–系统级软件:如SystemView与Simulink等动态系统仿真软件•SystemView与Simulink都是图形化的系统建模及仿真分析工具,提供了丰富的库模块资源,用户无需编写代码,只需要使用所提供的模块搭建待仿真的系统并设置好参数即可,使用方便,并且两者都有强大的数据分析及结果的图形显示功能,可以快捷直观地得到系统的各种参数及图形。•SystemView是美国公司推出的主要面向通信、数字信号处理、射频/模拟系统等领域的图形化动态系统设计与仿真分析平台。•Simulink是MATLAB的重要组成部分,是实现动态系统建模、仿真的一个工作平台,是用来模拟线性或非线性的,以及连续的、离散的或两者混合的动态系统的系统级仿真工具,而且系统可以是多进程和多采样率的,既系统中可以存在多个进程并行运行,系统的不同部分可以拥有不同的采样率。•MATLAB是MatrixLaboratory的简写,意为“矩阵实验室”,是Mathworks公司为满足数学计算的需要,于1984年推出的一种功能强大的综合性实时工程计算软件。MATLAB及其产品家族具备数值计算、符号计算、数据分析和可视化、复杂动态系统建模仿真等功能。现代EDA技术–电路级软件:如EWB和Protel99SE等软件•EWB(ElectronicsWorkBench)是一种比较常用的电路仿真分析软件,具有界面友好、操作方便、仿真分析的数据结果显示直观等优点。它允许设计者在EWB上进行各种虚拟的电路实验,就象拥有一个属于自己的专业实验室,既解决了购买设备、仪器以及大量元件的资金投入之难,又避免了仪器、设备等损坏带来的损失。并且设计者可以用EWB对设计的电路进行各种仿真分析,从而优化电路参数与结构,对电路进行改进,并可输出多种格式的网表用于后面的印刷电路板设计。•Protel99SE是一套比较常用的印刷电路板设计软件,在其上可以绘制电路原理图,进行一定的仿真分析,并昀终进行印刷电路板设计。它的自动布局布线工具可以在一定程度上减轻印刷电路板设计的工作量。–芯片级软件:如MAX+PLUSII和Foundation等PLD开发工具现代EDA技术1.3PLD的分类一、按集成密度分:1.低密度PLD(LDPLD):1000门/片,(如:PROM、PLA、PAL和GAL)2.高密度PLD(HDPLD):1000门/片,(如:EPLD、CPLD和FPGA)二、按编程方式分:1.一次性编程器件(OTP):采用熔丝或反熔丝元件2.可多次编程器件:紫外线擦除、电可编程:EPROM、UVCMOS电擦除、电可编程:E2PROM、FLASHMEMORY基于SRAM结构(可擦除无数次并可在线重配置ICR)三、按结构特点分:1.基于“PT”的PLD(阵列型PLD):由与阵列和或阵列组成。2.基于“LUT”的PLD(现场可编程门阵列FPGA或单元型PLD):具有门阵列的结构形式,由许多可编程逻辑单元(或称逻辑功能块)排成阵列组成。四、其它分类法:简单PLD、复杂PLD和FPGA1.4阵列型可编程逻辑器件PLD电路的表示方法:4.缺省状态与悬浮“1”状态的表示:AAA1.缓冲器:A2.与门:3.或门:XXBCDYAXXBCDYY=ABDY=A+B+DAXXBYXXYYY=0Y=1Y=0缺省状态悬浮“1”状态固定连接,不可更改可改写的编程点阵列图AXXBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCDEFGHIY0Y1Y2Y3与阵列(可编程连接)或阵列(固定连接)结构框图:阵列类型与阵列或阵列PROM固定可编程TS、OCPLA可编程可编程TS、OCPAL可编程固定TS、I/O、寄存器GAL可编程固定用户定义输出方式输入缓冲电路输出缓冲电路与功能电路或功能电路逻辑变量与项与或式输入数据输出数据各种简单PLD电路的结构特点:简单PLD的结构GAL16V8逻辑图GAL输出逻辑宏单元OLMC1.可程编逻辑宏单元(PLMC):多触发器结构和“隐埋”触发器结构乘积项共享结构:共享乘积项、并联扩展项异步时钟和时钟选择3.可编程I/O单元(IOC):便于充分利用I/O脚资源2.可编程连线阵列(PIA):加强灵活性,甚至允许在引脚分配不变的情况下修改内部设计。EPLD和CPLD的基本结构内含16个PLMCI/O引脚特殊用途的专用输入引脚LABaLABbLABcLABdIOCIOCIOCIOCPIAMAX7000S/E器件结构4.EPLD与CPLD在LMC上的差别:EPLD与GAL器件相似,其LMC同I/O做在一起,构成OLMC,而CPLD的LMC在内部(称内部逻辑宏单元),须通过I/O才能与外部引脚相连。如:GCLKGCLROE等ispLSI1016的IOC电路结构1.5现场可编程门阵列FPGACLBIOBCLBCLBCLBCLBCLBCLBCLBCLBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOBIOB可编程逻辑块CLBCLB是实现逻辑功能的基本单元以规则的阵列形式散布于整个芯片中由逻辑函数发生器、触发器、数据选择器等组成输入/输出模块IOBIOB排列在芯片四周,实现内部逻辑与外部封装引脚的连接由输入缓冲器/触发器、输出缓冲器/触发器和数选器等组成可编程互连资源IRIR实现芯片内部CLB与CLB之间或CLB与IOB之间的连接由各种长度的金属连线和一些可编程开关组成FPGA的基本结构:FPGA的分类按逻辑功能块大小分:细粒度FPGA:逻辑功能块较小优点:功能块资源易充分利用。缺点:实现复杂功能时速度慢。粗粒度FPGA:逻辑块规模大优点:功能强,使用块数少,内部连线少,易得高性能。缺点:功能块资源不易充分利用。按互连结构分:分段互连型:优点:走线灵活,方案较多。缺点:走线时延无法预测。连续互连型:按编程特性分:一次编程型:可重复编程型:FLEX10K器件的逻辑结构•FLEX10K系列FLEX器件,是Altera公司生产的CMOS型,具有SRAM结构的FPGA器件,是基于LUT的HDPLD(超过100000门),它主要由LE、EAB、FTI和IOE组成,其中每8个LE被分为一组,与局部互联一起构成一个LAB(FLEX10K的“粗粒度”结构)。FLEX10K器件结构嵌入式阵列块EABEAB用作RAM时,每个EAB能配置成256x8、512x4、1024x2、2048x1等尺寸。更大的RAM可由多个EAB组合在一起组成,如:两个256x8的RAM块可组成一个256x16的RAM,等,此外,器件中所有的EAB亦可级联成一个单一的RAM,形成多达2048字的RAM块而不影响时序。EAB是一个固定的RAM块,在它的输入输出端都有触发器。它既可以作为RAM存储数据,又可以通过数据输入端对EAB进行只读模式的编程,产生一个大的LUT以实现其逻辑功能,存储诸如乘法器、状态机等结果,这样,一些组合逻辑功能可以通过查找表来完成,而不必通过计算得到。EAB逻辑结构逻辑阵列块LAB•LAB是由8个相邻的LE、一条CarryChain和一条CascadeChain、局部互连和LAB控制信号构成。它构成了的粗粒度结构,有利于软件进行布局布线,优化器件的利用,提高性能。LAB逻辑结构图LE驱动行列互连逻辑单元LELE是FLEX10K器件的昀小逻辑单元,每个LE由一个4输入LUT,一个PREG,一个CarryChain和一个CascadeChain组成。PREG的clk、R(clr)、P(prn)可由专用input、普通I/O或任何内部逻辑提供。从内部快速互联来的电路输入信号经对LUT查找,产生输出信号,该信号既可经PREG输出(时序型输出),也可旁路PREG直接输出。CarryChain和CascadeChain是FLEX内部的两条高速数据通道,用来连接相邻的LE。LE电路结构LE的寄存器打包•LE有两个驱动互连通道的输出信号:一个驱动局部互连,另一个驱动行或列互连,这两个输出信号能够单独控制。如:用LUT驱动一个输出而用寄存器驱动另一个输出,这种特性称为寄存器打包。•寄存器打包时,寄存器和LUT可以分别用作互不相关的功能,所以这一特性能够提高LE的利用率。进位链CarryChain•进位链为器件提供高速计数器和加法器功能。它连接了一个LAB中的所有LE,也连接了同一行的所有LAB。•为易于布线,提高适配率,长度超过一个LAB的进位链只能在同行LAB中交替跨接(即在偶序号LAB或奇序号LAB中交替跨接),且不能越过行中心,因为每行中心是EAB的位置。通过进位链在n+1个LE中完成一个n位全加器的功能级连链CascadeChain•为易于布线,提高适配率,长度超过一个LAB的级连链只能在同行LAB中交替跨接(即在偶序号LAB或奇序号LAB中交替跨接),且不能越过行中心,因为每行中心是EAB的位置。•级连链为器件提供很宽的扇入逻辑功能,而相邻的LUT被用来完成并行计算的功能。•进位链和级连链的大量使用会限制逻辑布线的灵活性,导致资源的浪费,建议仅在速度方面有高要求的地方才使用。快速互连FTI•内部快速互连用来提供LE和管脚之间的联系通道,它由一系列连续的行互连、列互连和局部互连构成,其中行、列互连贯穿了整个芯片,这种布线结构为系统设计提供了可预知的延迟时间。输入/输出单元IOE•IOE是一个双向口,每个IOE有一个寄存器,可以作为数据输入或输出所需的寄存器。用作输出口时,从内部快速互连来的输出数据通过寄存器输出或旁路寄存器快速输出。用作输入口时,可通过寄存器输入或