补充EDA教程FPGA.ppt
电子设计自动化技术,第二讲 可重构(编程)技术,重要观点,现代VLSI技术的核心是存储器技术-CPU技术是存储器技术的应用(现在的SOC设计不是围绕CPU而是围绕存储器的设计)CPLD/FPGA将大幅挤占传统IC市场-大量的微电子技术和IC设计专业毕业生将从事CPLD/FPGA设计(而不是传统意义的IC设计)将CPLD/FPGA设计结果转化成IC设计结果的方法将推广应用 IC设计变得日益“可爱”(以前或到目前为止,有些“可怕”),有三种类型的可重构(编程)技术对当今工程师开发电子产品的方式造成了巨大影响。分别是(1)微处理器和微控制器;(2)可编程逻辑;(3)可编程模拟阵列(PAA)本课程讨论数字可编程逻辑技术,概述,许氏(木村)定理,许氏(木村)定理,半导体的硅周期率 硅集成电路产品形态大约以十年为一代 在通用与专用IC的此消彼长中,波浪向上发展 设计内容(对象)二十年为一代 1958-1978-电路设计 手工计算时代:大量的布尔代数,卡诺图化简 1978-1998-逻辑设计(软件编程)CAD时代:MCU/CPU指令编码,二进制码或高级语言编程 1998-2018-软件设计(硬件编程)(软硬件双编程)EDA时代:VHDL/VERILOG硬件描述语言编码(98-2008)C+与HDL混合编码(2008-2018),许氏(木村)定理,从1998年(第五波)起,“可重构(可编程)”特点己成为硅集成电路芯片产品特征目前我们正处于第五波(1998-2008),可编程逻辑器件正在兴起。正好发生了“When will FPGA kill ASIC?”的争论,要点可编程逻辑器件的概念理解什么是CPLD及CPLD架构理解什么是FPGA及FPGA架构理解CPLD和FPGA的区别与联系了解常用的CPLD和FPGA型号,脉冲与数字电路课程的回顾,布尔函数数字系统数学基础(卡诺图)数字电路设计的基本方法组合电路设计问题逻辑关系真值表化简逻辑图时序电路设计列出原始状态转移图和表状态优化状态分配触发器选型求解方程式逻辑图,脉冲与数字电路课程的回顾,使用中、小规模器件设计电路(74、54系列)编码器(74LS148)译码器(74LS154)比较器(74LS85)计数器(74LS193)移位寄存器(74LS194),脉冲与数字电路课程的回顾,设计方法的局限卡诺图只适用于输入比较少的函数的化简。采用“搭积木”的方法的方法进行设计。必须熟悉各种中小规模芯片的使用方法,从中挑选最合适的器件,缺乏灵活性。设计系统所需要的芯片种类多,且数量很大。,脉冲与数字电路课程的回顾,采用中小规模器件的局限电路板面积很大,芯片数量很多,功耗很大,可靠性低提高芯片的集成度设计比较困难能方便地发现设计错误电路修改很麻烦提供方便的修改手段PLD器件的出现改变了这一切,可编程逻辑器件的定义,逻辑器件:用来实现某种特定逻辑功能的电子器件,最简单的逻辑器件是与、或、非门(74LS00,74LS04等),在此基础上可实现复杂的时序和组合逻辑功能。可编程逻辑器件(PLDProgrammable Logic Device):器件的功能不是固定不变的,而是可根据用户的需要而进行改变,即由编程的方法来实现器件的逻辑功能。,PLD出现的背景,电路集成度不断提高SSIMSILSIVLSI计算机技术的发展使EDA技术得到广泛应用设计方法的发展自下而上自上而下用户需要设计自己需要的专用电路专用集成电路(ASICApplication Specific Integrated Circuits)开发周期长,投入大,风险大可编程器件PLD:开发周期短,投入小,风险小,PLD器件的优点,集成度高,可以替代多至几千块通用IC芯片极大减小电路的面积,降低功耗,提高可靠性具有完善先进的开发工具提供语言、图形等设计方法,十分灵活通过仿真工具来验证设计的正确性可以反复地擦除、编程,方便设计的修改和升级灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间保密性好,可重构技术的国际先进水平,到90年代,PLD得到了迅速发展,不仅具有电擦除特性,而且拥有了边界扫描扫描及在线编程ISP(In-System Programmability)等特性。比较常用的有XILINX公司的FPGA和ALTERA及LATTICE公司的CPLD。1992年LATTICE公司率先推出ISP(In-System Programmability),并推出ISP_LSI1000系列高密度ISP器件。2000年出现了产品集成度200万门的FPGA产品。同期Xilinx推出XC95288 CPLD拥有288个宏单元。,可重构技术的国际先进水平,目前,国际上著名的几家FPGA厂家都在加紧研发下一代工艺的产品。Xilinx已经生产了 65纳米的可编程门阵列处理器(FPGA)芯片。随着VlSI工艺的不断提高,PLD芯片的规模也越来越大,其单片逻辑门数已达到上千万门以上,它所能实现的功能也越来越强,目前,单片可编程系统SoPC(System on a Programmable Chip)己经成为了现实。如:Xilinx 2002年推出的Pro系列FPGA产品,嵌入了32位CPU和大量乘法器、接口等功能。,可重构技术的国内水平,国内目前在国家863计划SOC专项支持下2003年1月-2003年12月,由电子科技大学与成都华微电子系统有限公司联合开展CPLD的研究,研制出具有72个宏单元的CPLD VLSI芯片(国外目前最大的CPLD具有288个宏单元),填补了国内空白,打破了美国公司对这一技术的垄断。在国家863计划SOC专项支持下2003年1月-2003年12月,复旦大学开展了对FPGA的研究,研制出10万门FPGA芯片。2009年10月,电子科技大学与成都华微电子系统有限公司联合研制成功100万门FPGA芯片。,研究可重构单片系统的重要意义,研究可重构单片系统对于解决我国电子工业缺“芯”问题具有重要意义。我国电子工业缺“芯”是不争的事实。从手机、电视机、DVD/VCD、电脑、家用电器到各种通信设备、仪器仪表,其核心芯片均从国外进口,核心技术都在外国人手中。这种局面形成的技术上的原因之一是:我们不得不用国外的芯片来设计我们的电子系统,所以,我们的电子产品不得不用国外的芯片。,研究可重构单片系统的重要意义,掌握PLD/SoPC技术,则可以从根本上打破上述的怪圈。在设计数字电路与系统时不依据国外己有芯片,而是依据数字电子系统需求,用硬件描述语言(HDL)设计。由国产的PLD/SoPC实现数字电子系统,则可从根本上摆脱对国外芯片的依赖。PLD/SoPC技术的出现,对于我国数字整机的自主创新提供了一个历史机遇。,管脚数目:208个电源:3.3V(I/O)2.5V(内核)速度250MHz内部资源4992个逻辑单元10万个逻辑门49152 bit的RAM,PLD的发展趋势,向高集成度、高速度方向进一步发展最高集成度已超过千万门向低电压和低功耗方向发展,5V3.3V2.5V1.8V更低内嵌多种功能模块RAM,ROM,FIFO,DSP,CPU向数、模混合可编程方向发展,大的PLD生产厂家,最大的PLD供应商之一FPGA的发明者,最大的PLD供应商之一ISP技术的发明者提供军品及宇航级产品,PLD器件的分类按集成度,低密度PROM,EPROM,EEPROM,PAL,PLA,GAL只能完成较小规模的逻辑电路高密度,已经有超过千万门的器件EPLD,CPLD,FPGA可用于设计大规模的数字系统集成度高,甚至可以做到SOC(System On a Chip),PLD器件的分类按结构特点,基于与或阵列结构的器件阵列型PROM,EEPROM,PAL,GAL,CPLDCPLD的代表芯片如:Altera的MAX系列基于门阵列结构的器件单元型FPGA,PLD器件的分类按编程工艺,熔丝或反熔丝编程器件Actel的FPGA器件体积小,集成度高,速度高,易加密,抗干扰,耐高温只能一次编程,在设计初期阶段不灵活SRAM大多数公司的FPGA器件可反复编程,实现系统功能的动态重构每次上电需重新下载,实际应用时需外挂EEPROM用于保存程序EEPROM大多数CPLD器件可反复编程不用每次上电重新下载,但相对速度慢,功耗较大,可编程逻辑器件(PLD)及其重构手段,PROM-光刻版PAL-EPROM、E2PROMGAL-EPROM、E2PROMGA-光刻版CPLD(Complex Programmable Logic Device)-EPROM、E2PROMFPGA(Field Programmable Gate Array)-SRAM,可编程逻辑器件(PLD)及其重构手段,EPLD(Electrical Programmable Logic Device)-PAL、GAL、CPLD-EPROM、E2PROM,数字电路的基本组成,任何组合电路都可表示为其所有输入信号的最小项的和或者最大项的积的形式。时序电路包含可记忆器件(触发器),其反馈信号和输入信号通过逻辑关系再决定输出信号。,PLD的逻辑符号表示方法,与门,乘积项,PROM结构,与阵列为全译码阵列,器件的规模将随着输入信号数量n的增加成2n指数级增长。因此PROM一般只用于数据存储器,不适于实现逻辑函数。EPROM和EEPROM,用PROM实现组合逻辑电路功能,实现的函数为:,固定连接点(与),编程连接点(或),PAL结构,与阵列可编程使输入项增多,或阵列固定使器件简化。或阵列固定明显影响了器件编程的灵活性,PLA结构,PLA的内部结构在简单PLD中有最高的灵活性。,AnBnCn,AnBn,AnCn,BnCn,用PAL实现全加器,GAL结构,GAL器件与PAL器件的区别在于用可编程的输出逻辑宏单元(OLMC)代替固定的或阵列。可以实现时序电路。,逻辑宏单元,OLMC,GAL器件的OLMC,每个OLMC包含或阵列中的一个或门组成:异或门:控制输出信号的极性D触发器:适合设计时序电路4个多路选择器,输出使能选择,反馈信号选择,或门控制选择,输出选择,CPLD和FPGA,目前PLD主要是指CPLD和FPGA器件,并被应用在不同的高科技研发领域,如数字电路设计、微处理器系统、DSP、电信、可重构计算机及ASIC设计。由于可编程逻辑器件以EEPROM、SRAM或Flash工艺为基础,用户可以通过计算机对芯片进行编程,大大降低成本和缩短开发时间。,CPLD,复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)是由PAL或GAL发展来的。规模大,结构复杂,属于大规模集成电路范围。CPLD主要是由可编程逻辑宏单元(LMC,Logic Macro Cell)、可编程互连距阵单元(PIA)及I/O控制块组成。CPLD利用VLSI的密度产生更通用的能实现PCB板上几个简单PAL互连功能的器件,是PAL/PROM这类范例的扩展。CPLD为PAL构造。,CPLD特点,CPLD是粗颗粒的PLD 乘积项可以很大,可以实现十分复杂的逻辑电路CPLD名称的来历相对FPGA的细颗粒来说,CPLD逻辑块规模大,功能强,完成复杂逻辑只需较少的功能块和内部连线,因而能获得较好的性能。优点:有利于控制密集型系统Pin to Pin延时固定Pin 到宏单元延时固定,CPLD特点适合处理并行控制逻辑CPLD适合高速DSPCPLD缺点:功耗大,CPLD特点,CPLD,逻辑阵列模块,连线资源,I/O单元,宏单元内部结构,乘积项逻辑阵列,乘积项选择矩阵,可编程触发器,乘积项结构PLD逻辑实现原理,以一个简单的电路为例,具体说明PLD是如何利用以上结构实现逻辑的假设组合逻辑的输出(AND3的输出)为f,则f=(A+B)*C*(!D)=A*C*!D+B*C*!D,PLD将以下面的方式来实现组合逻辑f,乘积项结构PLD逻辑实现原理,A,B,C,D由PLD芯片的管脚输入后进入可编程连线阵列(PIA),在内部会产生A,A反,B,B反,C,C反,D,D反8个输出。图中每一个叉表示相连(可编程熔丝导通),所以得到:f=f1+f2=(A*C*!D)+(B*C*!D)。,乘积项结构PLD逻辑实现原理,电路中D触发器的实现比较简单,直接利用宏单元中的可编程D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的全局时钟专用通道,直接连接到可编程触发器的时钟端。可编程触发器的输出与I/O脚相连,把结果输出到芯片管脚。,乘积项结构PLD逻辑实现原理,一个很简单的电路,只需要一个宏单元就可以完成。但对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再做为另一个宏单元的输入。这样PLD就可以实现更复杂逻辑。,乘积项结构PLD逻辑实现原理,基于乘积项的PLD基本都是由EEPROM和Flash工艺制造的,一上电就可以工作,无需其他芯片配合。,乘积项结构PLD逻辑实现原理,可编程的I/O单元,能兼容TTL和CMOS多种接口和电压标准可配置为输入、输出、双向、集电极开路和三态等形式能提供适当的驱动电流降低功耗,防止过冲和减少电源噪声支持多种接口电压(降低功耗)1.20.5um,5V0.35um,3.3V0.25um,internal 2.5V,I/O3.3V0.18um,internal 1.8V,I/O2.5V and 3.3V,可编程连线阵列,在各个逻辑宏单元之间以及逻辑宏单元与I/O单元之间提供信号连接的网络CPLD中一般采用固定长度的线段来进行连接,因此信号传输的延时是固定的,使得时间性能容易预测。,FPGA,FPGA是系统设计者自己编程的芯片。IC芯片制造厂生产一些还没有连接的FPGA,用户可进行设计输入和仿真。利用专用软件产生一串二进制位,描述需要完成设计的外加连接 配置文件。将计算机连接到FPGA上对其进行编程,按照配置文件完成必要的连接。FPGA没有任何定制掩模层,可作为标准产品大量生产。,FPGA,FPGA的结构可分为三部份:可编程的逻辑功能块CLB(Configurable Logic Blocks):是实现用户功能的基本单元,它们通常排列成一个阵列,散布于整个芯片;可编程的输入输出块IOB(Input/Output Blocks):完成芯片上逻辑与外部封装脚的接口,常围绕着阵列于芯片四周;可编程的互连资源ICR:它们将各个可编程逻辑块或I/O块连接起来,构成特定功能的电路。,FPGA结构原理图,IOB,CLB包含多个逻辑单元,PIC,可编程互联资源(PIC),FPGA结构特点,FPGA结构-查找表型查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。,FPGA优点,FPGA结构灵活,功能完善,能为用户提供最大的设计灵活性;高集成度,多寄存器,多I/O脚。用户现场可编程,可擦除复用。FPGA为ASIC提供原型设计。,LE内部结构,查找表的基本原理,N个输入的逻辑函数需要2的N次方的容量的SRAM来实现,一般多个输入的查找表采用多个逻辑块级连的方式,查找表结构的FPGA逻辑实现原理,A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出。,该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。,查找表结构的FPGA逻辑实现原理,对于一个很简单的电路,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。,查找表结构的FPGA逻辑实现原理,由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。,查找表结构的FPGA逻辑实现原理,FPGA中的嵌入式阵列(EAB),可灵活配置的RAM块用途实现比较复杂的函数的查找表,如正弦、余弦等。可实现多种存储器功能,如RAM,ROM,双口RAM,FIFO,Stack等灵活配置方法:2568,也可配成5124,内部晶体震荡器,高速反向放大器用于和外部晶体相接,形成内部晶体振荡器。提供将振荡波形二分频成对称方波的功能。,CPLD与FPGA的区别,FPGA与CPLD的区别,FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失。因此,需在FPGA外加EPROM,将配置数据写入其中,系统每次上电自动将数据引入SRAM中。CPLD器件一般采用EEPROM存储技术,可重复编程,并且系统掉电后,EEPROM中的数据不会丢失,适于数据的保密。,FPGA与CPLD的区别,FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果要求实现较复杂的组合电路则需要几个CLB结合起来实现。CPLD的与或阵列结构,使其适于实现大规模的组合功能,但触发器资源相对较少。,FPGA为细粒度结构,CPLD为粗粒度结构。FPGA内部有丰富连线资源,CLB分块较小,芯片的利用率较高。CPLD的宏单元的与或阵列较大,通常不能完全被应用,且宏单元之间主要通过高速数据通道连接,其容量有限,限制了器件的灵活布线,因此CPLD利用率较FPGA器件低。,FPGA与CPLD的区别,FPGA为非连续式布线,CPLD为连续式布线。FPGA器件在每次编程时实现的逻辑功能一样,但走的路线不同,因此延时不易控制,要求开发软件允许工程师对关键的路线给予限制。CPLD每次布线路径一样,CPLD的连续式互连结构利用具有同样长度的一些金属线实现逻辑单元之间的互连。连续式互连结构消除了分段式互连结构在定时上的差异,并在逻辑单元之间提供快速且具有固定延时的通路。CPLD的延时较小。,FPGA与CPLD的区别,选择PLD还是FPGA?,PLD分解组合逻辑的功能很强,一个宏单元就可以分解十几个甚至2030多个组合逻辑输入。而FPGA的一个LUT只能处理4输入的组合逻辑,因此,PLD适合用于设计译码等复杂组合逻辑。FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于PLD。,选择PLD还是FPGA?,所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑或数据通路,那么使用FPGA就是一个很好选择。同时PLD拥有上电即可工作的特性,而大部分FPGA需要一个加载过程,所以,如果系统要可编程逻辑器件上电就要工作,那么就应该选择PLD。,PLD器件的命名与选型,EPM7 128 S L C 8410EPM7:产品系列为EPM7000系列128:有128个逻辑宏单元S:电压为5V,AE为3.3V,B为2.5VL:封装为PLCC,Q代表PQFP等C:商业级(Commercial)070度,I:工业级(Industry),4085度M:军品级(Military),55125度84:管脚数目10:速度级别,管脚的定义,特殊功能的管脚电源脚VCC和GND,VCC一般分为VCCINT和VCCIO两种JTAG管脚:实现在线编程和边界扫描配置管脚(FPGA):用于由EEPROM配置芯片信号管脚专用输入管脚:全局时钟、复位、置位可随意配置其功能为:输入、输出、双向、三态,PLD的设计步骤,设计输入,原理图输入使用元件符号和连线等描述比较直观,但设计大规模的数字系统时则显得繁琐HDL语言输入逻辑描述功能强成为国际标准,便于移植原理图与HDL的关系与高级语言与汇编语言类似,设计处理,综合和优化优化:将逻辑化简,去除冗余项,减少设计所耗用的资源综合:将模块化层次化设计的多个文件合并为一个网表,使设计层次平面化映射把设计分为多个适合特定器件内部逻辑资源实现的逻辑小块的形式布局与布线将已分割的逻辑小块放到器件内部逻辑资源的具体位置并利用布线资源完成各功能块之间的连接生成编程文件生成可供器件编程使用的数据文件,模拟仿真,功能仿真不考虑信号传输和器件的延时时序仿真不同器件的内部延时不一样,不同的布局、布线延时也会有比较大的不同在线验证利用实现手段测试器件最终功能和性能指标,在系统编程技术ISPIn System Program,对PLD的逻辑功能可随时进行修改。由Lattice公司率先发明优点:方便硬件的调试方便硬件版本的升级,类似于软件升级,在系统编程技术ISPIn System Program,边界扫描测试技术BSTBoundary Scan Test,据IEEE1149.1标准JTAG,用于解决大规模集成电路的测试问题。现在新开发的可编程器件都支持边界扫描技术,并将其作为ISP接口。在DSP开发和嵌入式处理器的开发中应用得非常广泛。,CPLD常用型号,Altera公司 MAX5000,MAX7000,MAX7000E,MAX7000S,系列 等Xilinx公司 XC9500系列Lattice公司 ispLS1000,ispLS2000,ispLS3000,ispLS6000系列等,FPGA常用型号,Xilinx:XC2000,XC4000,Spartan,Spartan2,Spartan3,Virtex系列等Altera:FLEX8000,FLEX10K,ACEX,MERCURY,CYCLONE,STRATIX系列等Lattice:EC,ECP系列,