1k likes | 1.17k Views
EDA 原理及应用. 何宾 2008.10. 第二章. 第 2 章. 可编程逻辑器件设计方法 - 本章概述. 根据产品的产量、设计周期等几个因素,一般将 IC ( Integrated Circuit )设计方法上分为 6 类: 1 、全定制法;如 ROM , RAM 或 PLA 等; 2 、定制法,通常包括标准单元法和通用单元法; 3 、半定制法,通常包括数字电路门阵列和线性阵列; 4 、模块编译法,对设计模块进行描述,然后通过编译直接得到电路掩膜版图; 5 、可编程逻辑器件法,通常是指 PAL 、 PLA 、 GAL 器件和 CPLD 器件;
E N D
EDA原理及应用 何宾 2008.10
第二章 第 2章 可编程逻辑器件设计方法-本章概述 根据产品的产量、设计周期等几个因素,一般将IC (Integrated Circuit)设计方法上分为6类: 1、全定制法;如ROM,RAM或PLA等; 2、定制法,通常包括标准单元法和通用单元法; 3、半定制法,通常包括数字电路门阵列和线性阵列; 4、模块编译法,对设计模块进行描述,然后通过编译直接得到电路掩膜版图; 5、可编程逻辑器件法,通常是指PAL、PLA、GAL器件和CPLD器件; 6、逻辑单元阵列法,通常是指现场可编程门阵列FPGA 器件;
第二章 第 2章 可编程逻辑器件设计方法-本章概述 其中的可编程逻辑器件法和逻辑单元阵列法是本书所要介绍的内容。本章首先介绍了可编程逻辑的基础知识;然后介绍了PLD芯片的制造工艺,在此基础上介绍了CPLD芯片和FPGA芯片的内部结构,最后对Xilinx的CPLD和FPGA芯片的特性进行了详细的介绍。
● 第二章 可编程逻辑器件设计方法 可编程逻辑器件概述 ●可编程逻辑器件(Programmable Logic Device,PLD)起源于20世纪70年代,是在专用集成电(ASIC)的基础上发展起来的一种新型逻辑器件,是当今数字系统设计的主要硬件平台。其主要特点: 1、由用户通过软件进行配置和编程,从而完成某 种特定的功能,且可以反复擦写; 2、在修改和升级PLD时,不需额外地改变PCB电路板,只是在计算机上修改和更新程序,使硬件设工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本。
● 第二章 可编程逻辑器件设计方法 可编程逻辑器件概述 ●可编程逻辑器件PLD包含两个基本部分:一是逻辑阵列,另一个是输出单元或宏单元。逻辑阵列是设计人员可以编程的部分。设计人员可以通过宏单元改变PLD的输出结构。输入信号通过“与”矩阵,产生输入信号的乘积项组合,然后通过“或”矩阵相加,在经过输出单元或宏单元输出。其实,根据数字电路可以知道任何逻辑功能均可以通过卡诺图和摩根定理化简得到“积之和”逻辑方程。
● 第二章 可编程逻辑器件设计方法 可编程逻辑器件概述 ● 以“与/或”阵列为基础的PLD器件包括4种基本类型: 1、编程只读存储器(Programmable Read Only Memory,PROM); 2、现场可编程逻辑阵列(Field Programmable Logic Array,FPLA); 3、可编程阵列逻辑(Programmable Array Logic,PAL); 4、通用阵列逻辑(Generic Array Logic,GAL);
● 第二章 可编程逻辑器件设计方法 PLD产品分类 ● 可编程逻辑器件按照颗粒度可以分为3类: • 小颗粒度(“门海(sea of gates)”架构) • 中等颗粒度(如:FPGA) • 大颗粒度(如:CPLD)
● 第二章 可编程逻辑器件设计方法 PLD产品分类 ● 按编程工艺可以分为四类: 熔丝(Fuse)和反熔丝(Antifuse)编程器件; 可擦除的可编程只读存储器(UEPROM)编程器件; 电信号可擦除的可编程只读存储器(EEPROM)编程器件(如:CPLD); SRAM编程器件(如:FPGA)。 ● 前3类为非易失性器件,编程后,配置数据保留在器件上;第4类为易失性器件,掉电后配置数据会丢失,因此在每次上电后需要重新进行数据配置。
● 第二章 可编程逻辑器件设计方法 可编程逻辑器件的发展历史 ● 可编程逻辑器件的发展可以划分为4个阶段,即从20世纪70年代初到70年代中为第1阶段,20世纪70年代中到80年代中为第2阶段,20世纪80年代到90年代末为第3阶段,20世纪90年代末到目前为第4阶段。
● 第二章 可编程逻辑器件设计方法 可编程逻辑器件的发展历史 1、第1阶段的可编程器件只有简单的可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦只读存储器(EEPROM)3种,由于结构的限制,它们只能完成简单的数字逻辑功能。 2、第2阶段出现了结构上稍微复杂的可编程阵列逻辑(PAL)和通用阵列逻辑(GAL)器件,正式被称为PLD,能够完成各种逻辑运算功能。典型的PLD由“与”、“非”阵列组成,用“与或”表达式来实现任意组合逻辑,所以PLD能以乘积和形式完成大量的逻辑组合。
● 第二章 可编程逻辑器件设计方法 可编程逻辑器件的发展历史 3、第3阶段Xilinx和Altera分别推出了与标准门阵列类似的FPGA和类似于PAL结构的扩展性CPLD,提高了逻辑运算的速度,具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点,兼容了PLD和通用门阵列的优点,能够实现超大规模的电路,编程方式也很灵活,成为产品原型设计和中小规模(一般小于10000)产品生产的首选。
● 第二章 可编程逻辑器件设计方法 可编程逻辑器件的发展历史 4、第4阶段出现了SOPC和SOC技术,是PLD和ASIC技术融合的结果,涵盖了实时化数字信号处理技术、高速数据收发器、复杂计算以及嵌入式系统设计技术的全部内容。
● 第二章 可编程逻辑器件设计方法 可编程逻辑器件的发展历史 Xilinx和Altera也推出了相应SOPC产品,制造工艺达到65nm/40nm,系统门数也超过百万门。并且,这一阶段的逻辑器件内嵌了硬核高速乘法器、Gbits差分串行接口、时钟频率高达500MHz的PowerPC微处理器、软核MicroBlaze、Picoblaze、Nios以及NiosII,不仅实现了软件需求和硬件设计的完美结合,还实现了高速与灵活性的完美结合,使其已超越了ASIC器件的性能和规模,也超越了传统意义上FPGA的概念,使PLD的应用范围从单片扩展到系统级。
● 第二章 逻辑1 逻辑1 a a & b b & 图2.1 熔丝未编程的结构 图2.2 熔丝未编程的结构 可编程逻辑器件设计方法 PLD芯片制造工艺 • 1、熔丝连接技术 最早的允许对器件进行编程的技术是熔丝连接技术。在这种技术的器件中,所有逻辑的连接都是靠熔丝连接的。熔丝器件是一次可编程的,一旦编程,永久不能改变。
● 第二章 可编程逻辑器件设计方法 PLD芯片制造工艺 图2.1给出了熔丝的编程原理。如果进行编程时,需要将熔丝烧断。如图2.2所示,编程完成后,相应的熔丝被烧断。
● 第二章 逻辑1 逻辑1 a a & & b b 图2.3 熔丝未编程的结构 图2.4 熔丝未编程的结构 可编程逻辑器件设计方法 PLD芯片制造工艺 2、反熔丝连接技术 反熔丝技术和熔丝技术相反,在未编程时,熔丝没有连接。如果编程后,熔丝将和逻辑单元连接。反熔丝开始是连接两个金属连接的微型非晶硅柱。未编程时,成高阻状态。编程结束后,形成连接。反熔丝器件是一次可编程的,一旦编程,永久不能改变。
● 第二章 可编程逻辑器件设计方法 PLD芯片制造工艺 图2.3给出了反熔丝的编程原理。如果进行编程时,需要将熔丝连接。如图2.4所示,编程完成后,相应的熔丝被连接。
● 第二章 可编程逻辑器件设计方法 PLD芯片制造工艺 3、SRAM技术 基于静态存储器SRAM的可编程器件,值被保存在SRAM中时,只要系统正常供电信息就不会丢失,否则信息将丢失。SRAM存储数据需要消耗大量的硅面积,且断电后数据丢失。但是这种器件可以反复的编程和修改。
● 第二章 可编程逻辑器件设计方法 PLD芯片制造工艺 4、掩膜技术 ROM是非易失性的,系统断电后,信息被保留在存储单元中。掩膜器件可以读出,但是不能写入信息。ROM单元保存了行和列数据,形成一个阵列,每一列有负载电阻使其保持逻辑1,每个行列的交叉有一个关联晶体管和一个掩膜连接。 这种技术代价比较高,基本上很少使用。
● 第二章 可编程逻辑器件设计方法 PLD芯片制造工艺 5、PROM技术 PROM是非易失性的,系统断电后,信息被保留在存储单元中。PROM器件可以编程一次,以后只能读数据而不能写入新的数据。PROM单元保存了行和列数据,形成一个阵列,每一列有负载电阻使其保持逻辑1,每个行列的交叉有一个关联晶体管和一个掩膜连接。 如果可以多次编程就成为EPROM,EEPROM技术。
● 第二章 可编程逻辑器件设计方法 PLD芯片制造工艺 6、FLASH技术 FLASH技术的芯片的檫除的速度比PROM技术要快的多。FLASH技术可采用多种结构,与PROM单元类似的具有一个浮置栅晶体管单元和PROM器件的薄氧化层特性。
● 第二章 可编程逻辑器件设计方法 PLD芯片内部结构 • CPLD 由完全可编程的与/或阵列以及宏单元库构成。与/或阵列是可重新编程的,可以实现多种逻辑功能。宏单元则是可实现组合或时序逻辑的功能模块,同时还提供了真值或补码输出和以不同的路径反馈等额外的灵活性。 下面给出了CPLD的内部结构图。
● 第二章 可编程逻辑器件设计方法 PLD芯片内部结构
● 第二章 可编程逻辑器件设计方法 PLD芯片内部结构 • CPLD主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块构成。 • 1、可编程I/O单元作用与FPGA的基本I/O口相同,但是CPLD应用范围局限性较大,I/O的性能和复杂度与FPGA相比有一定的差距,支撑的I/O标准较少,频率也较低。
● 第二章 可编程逻辑器件设计方法 PLD芯片内部结构 • 2.基本逻辑单元 CPLD中基本逻辑单元是宏单元。所谓宏单元就是由一些与、或阵列加上触发器构成的,其中“与或”阵列完成组合逻辑功能,触发器用以完成时序逻辑。 与CPLD基本逻辑单元相关的另外一个重要概念是乘积项。所谓乘积项就是宏单元中与阵列的输出,其数量标志了CPLD容量。
● 第二章 可编程逻辑器件设计方法 PLD芯片内部结构 • 乘积项阵列实际上就是一个“与或”阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑,在“与”阵列后一般还有一个“或”阵列,用以完成最小逻辑表达式中的“或”关系。
● 第二章 可编程逻辑器件设计方法 PLD芯片内部结构 • 3.布线池、布线矩阵 CPLD中的布线资源比FPGA的要简单的多,布线资源也相对有限,一般采用集中式布线池结构。所谓布线池其本质就是一个开关矩阵,通过打结点可以完成不同宏单元的输入与输出项之间的连接。由于CPLD器件内部互连资源比较缺乏,所以在某些情况下器件布线时会遇到一定的困难。
● 第二章 可编程逻辑器件设计方法 PLD芯片内部结构 • 由于CPLD的布线池结构固定,所以CPLD的输入脚到输出管脚的标准延时固定,被成为Pin to Pin延时,用Tpd表示,Tpd延时反映了CPLD器件可以实现的最高频率,也就清晰地表明了CPLD器件的速度等级。 • 4.其他辅助功能模块 如JTAG编程模块,一些全局时钟、全局使能、全局复位/置位单元等。
● 第二章 可编程逻辑器件设计方法 PLD芯片内部结构 目前主流的FPGA仍是基于查找表技术的,已经远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。 如图1所示(注:图1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构). FPGA芯片主要由6部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
● 第二章 可编程逻辑器件设计方法 Xilinx的VirtexII内部结构
● 第二章 可编程逻辑器件设计方法 可编程输入输出单元(IOB) 可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。 FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。
● 第二章 可编程逻辑器件设计方法 典型的IOB内部结构示意图
● 第二章 可编程逻辑器件设计方法 可编程输入输出单元(IOB) 外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。 为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。
● 第二章 可编程逻辑器件设计方法 可配置逻辑块(CLB) CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图1-3所示。 每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。
● 第二章 可编程逻辑器件设计方法 可配置逻辑块(CLB) • 图2-4 典型的CLB结构示意图
● 第二章 可编程逻辑器件设计方法 可配置逻辑块(CLB) ● Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图1-4所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。 ● 算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现2bit全加操作,专用与门用于提高乘法器的效率; ● 进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作; ●4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的两个输入函数为6输入,可以实现6输入LUT或64比特移位寄存器); ● 进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。
● 第二章 可编程逻辑器件设计方法 典型的4输入Slice结构示意图
● 第二章 可编程逻辑器件设计方法 典型的4输入Slice结构示意图
● 第二章 可编程逻辑器件设计方法 数字时钟管理模块DCM 业内大多数FPGA均提供数字时钟管(Xilinx的全部FPGA均具有这种特)。 Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。
● 第二章 可编程逻辑器件设计方法 数字时钟管理模块DCM
● 第二章 可编程逻辑器件设计方法 嵌入式块RAM 大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。 CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。
● 第二章 可编程逻辑器件设计方法 嵌入式块RAM 单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽 深度)不能大于18k比特;其次,位宽最大不能超过36比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。
● 第二章 可编程逻辑器件设计方法 嵌入式单端口块RAM
● 第二章 可编程逻辑器件设计方法 嵌入式单端口块RAM
● 第二章 可编程逻辑器件设计方法 丰富的布线资源 • 布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。 第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线; 第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线; 第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线; 第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。
● 第二章 可编程逻辑器件设计方法 丰富的布线资源 • 在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。
● 第二章 可编程逻辑器件设计方法 丰富的布线资源
● 第二章 可编程逻辑器件设计方法 底层内嵌功能单元 内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(Soft Core)。现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。 DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。PLL 和DLL可以通过IP核生成的工具方便地进行管理和配置。DLL的结构如图1-5所示。
● 第二章 可编程逻辑器件设计方法 内嵌专用硬核 内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。 例如:为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。
● 第二章 可编程逻辑器件设计方法 内嵌专用硬核 Xilinx公司的高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。