CPLD相对于FPGA更适合实现时序逻辑较少而组合逻辑相对复杂的功能,比如复杂的状态机和译码电路等。CPLD的EEPROM编程技术不适合动态可重构的应用。本文针对CPLD的核心可编程结构:P-Term和可编程互连线,采用2.5V、0.25μmCMOS工艺设计了功能相近的基于SRAM编程技术的可重构电路结构。新的电路结构可以通过可编程方式有效控制功耗和速度的折衷,并且相对于传统的CPLD互联结构减少了50%的编程数据。在动态可重构系统中,采用上述新结构的PLD相对于FPGA可以更有效地实现可重构的复杂状态机和译码电路等应用。
八十年代中期,高密度可编程逻辑器件(Programmable Logic Device,简称PLD)的出现开辟了一种数字逻辑电路实现的新方式。高密度的PLD可以分成两大类:复杂可编程逻辑器件(Complex Programmable Logic Device,简称CPLD)和现场可编程门阵列(Field Programmable GateArray,简称FPGA),主要基于三种编程技术:有限编程次数(一般数百次到上万次)的EEPROM(电可擦除只读存储器)、无限编程次数的SRAM(静态随机存储器)和仅可编程一次的Antifuse(反熔丝)。当前,主流的CPLD都是采用基于EEPROM的乘积项(Product Term,简称P-Term)结构,而主流的FPGA则采用基于SRAM的查找表(Look-up Table,简称LUT)结构和基于Antifuse的多路开关单元结构。其中,基于SRAM的FPGA由于可以在系统中重构甚至动态重构,所以应用灵活性最大。
近十年来兴起的可重构技术起源于FPGA可编程结构的思想。该技术在应用中可以获得很好的速度和灵活性之间的折衷,填补了传统的软、硬件应用实现方案之间的空白。可重构技术是指利用具有硬件可重构结构的电路构建系统来满足较宽范围应用的实现技术。采用FPGA作为重构系统的核心既可以大大缩短系统开发时间,又可以获得很高的灵活性以节约资源。FPGA中含有大量的触发器(多达上千个)和结构灵活的LUT,适合实现细颗粒度的且基于流水线的通用计算。对于可重构多总线控制和网络中数据包相关的不同协议处理等应用,需要时时变换的译码和控制。重构系统在完成上述应用时,需要可以动态重构的复杂状态机和译码电路。由于这些电路中组合逻辑复杂且输入数目大而触发器很少,因此,用FPGA实现会造成单元中触发器大量浪费,而且利用多个LUT的级连实现大输入的组合逻辑,会使性能大大降低,难以满足速度上的要求。
CPLD的结构非常适于实现上述逻辑功能。但是,CPLD的EEPROM编程速度低且编程次数有限又不适合要求快速频繁重构的动态重构系统的应用。
显然,设计基于SRAM编程技术的CPLD可以很好解决上述应用问题。CPLD的设计和实现的关键问题是核心可编程电路结构的实现。因此,本文主要探讨针对CPLD的核心可编程结构,如何设计具有相似功能且基于SRAM编程技术的电路结构,从而更好满足动态重构系统中实现复杂状态机和译码电路的应用。
CPLD的核心可编程结构介绍
CPLD由若干宏单元和可编程互连线构成。每个宏单元包括5个乘积项、1个异或门、1个5输入或门和1个触发器。乘积项是宏单元的核心可编程结构,可以灵活实现大输入数目宽与门功能。如图1a所示,P-Term是一个由EEPROM晶体管构成的阵列。该阵列中每个EEPROM晶体管相当于一个可编程开关,编程之后,处于“开”状态的EEP2ROM晶体管同普通晶体管一样,受栅极输入控制充当宽与门的下拉开关,而处于“关”状态的EEP2ROM晶体管是断路,栅极的输入对宽与门无贡献。这样,P-Term所实现的逻辑功能可由式(1)给出:
(a)基于EEPROM的可编程宽与门结构
(b)MAX7000中的PIA可编程结构
图1电路结构图
式(1)中,C1~Cn对应图1(a)中的n个EEPROM晶体管编程后所处的状态。当第i(i=1~n)个位置的EEPROM晶体管开时,Ci为0,反之,Ci为1。当前,主流的CPLD全部采用这种结构,比如Altera公司的MAX7000系列和MAX9000系列、Xilinx公司的XC9500系列以及Lattice公司的ispLSI系列等。
可编程互连线是CPLD中另一个核心可编程结构。该结构是包含大量可编程开关的互连网络,提供芯片的I/O引脚和宏单元的输入输出之间的灵活互连。具有固定的延时是CPLD中可编程互连线的最显著特点。不同于FPGA的分段式可编程互连方式,CPLD结构采用全局式的可编程互连网络来集中分配互连线资源,这样可以使连线路径的起点到终点延时固定。而FPGA中连线路径的起点到终点之间经过的分段连线数目不固定,因此延时也是不固定的。相比之下,CPLD在实现较复杂的组合逻辑时可以消除信号之间的歪斜,更容易消除竞争冒险现象。目前,主流的CPLD全部采用连续式互连线结构,比如MAX7000中的PIA结构和XC9500中的FastCONNECT结构。图1(b)给出了MAX7000中PIA的逻辑结构。该结构中,每个编程节点的EEPROM晶体管控制2输入与门的1个输入端来决定另一输入端信号的取舍。
综上所述,CPLD的核心可编程结构是P-Term和具有固定延时的可编程互连线结构。
基于SRAM编程技术的PLD电路结构设计
针对CPLD的核心可编程结构——P-Term和具有固定延时的可编程互连线,设计了基于SRAM编程技术的新电路结构,下面做详细介绍。
SRAM编程单元的电路结构设计
基于SRAM的编程技术是将PLD的每一位配置数据相应存储在SRAM单元中。如图2a所示,
(a)SRAM编程单元结构
(b)SRAM单元的Hspice仿真结果
图2电路结构与仿真结果图
本设计采用5管单元的SRAM结构。该结构由2个CMOS反向器组成环路形成双稳态。不同于普通的SRAM,PLD的SRAM编程单元不需要读出功能,仅需写入的字线和位线。图2(a)中的输出信号Q和Qn直接控制晶体管开或关来完成可编程的功能。这种结构设计的关键之处在于选择适当的晶体管尺寸以保证当字线选通位线时,data信号的正常逻辑值可以改变单元的状态。因此,本设计确定字线控制的晶体管和反向器A具有较强的驱动能力,而反向器B的驱动能力较弱,适当调节晶体管的宽长比,以保证编程数据的快速写入。图2(b)给出了本设计中SRAM单元的Hspice仿真结果(基于2.5V、0.25μmCMOS工艺库的模型参数,后面的仿真结果都是基于这个工艺库),图中a和b两条曲线分别代表信号Q和Qn。图2(b)中的(1)和(2)图分别表示Q和Qn在写入高电平(单元中存储的是低电平)和低电平(单元中存储的是高电平)时的变化情况。从图中可以看出,写入的最大延时约为650ps,发生在写入高电平时。这样,该结构完全可以满足高速重构的配置速度要求。
基于SRAM编程技术的P-Term电路结构设计
基于SRAM的P-Term结构的设计核心是可编程宽与门的结构设计,即设计能够实现式(1)功能的结构。理论上,实现式(1)功能的结构有很多,比如采用静态CMOS逻辑门或传输门构成的逻辑,但是P-Term的输入数目巨大,可达88个输入,这样,采用上述结构在电路面积和性能上根本无法接受。而采用类NMOS电路结构在面积和性能上可以获得很好的效果,但是这种电路在输出低电平时存在电源到地的直流通路,存在静态功耗,而且输出低电平不是0,而决定于上拉和下拉倒通电阻的分压比。可见,这种电路的设计重点在于上拉结构的设计。本文设计的基于SRAM的可编程宽与门电路结构就是以类NMOS结构为基础的,采用可编程上拉结构控制功耗和性能的折衷。
本文设计的电路结构如图3(a)所示,输入个数n=88。采用NMOS晶体管构成下拉网络,对应每一个输入的下拉结构是输入控制的NMOS管串联SRAM控制的NMOS管。SRAM中的编程数据控制对应晶体管的开关来决定相应的与门输入的取舍。输出采用2个反向器构成缓冲,解决类NMOS电路输出低电平不是0的问题。可编程的上拉结构由a、b、c三个PMOS管并联构成,其中PMOS管c常通,a和b受SRAM编程控制开或关。这样,该结构在SRAMa和SRAMb的编程控制下,具有三种不同的速度和功耗模式:高速高功耗(PMOS管a和b都通)、中速而功耗中等(a通而b不通)和低速低功耗(a、b都不通)。由于三个PMOS管的导通电阻要比下拉NMOS管的大很多,本结构的关键路径是图中虚线表示的高电平充电路径。
在上述三种工作模式下,关键路径的Hspice仿真结果如图3(b)所示,其中(1)、(2)和(3)图分别表示三种模式下,输入信号由高电平到低电平的变化导致输出Pout由低电平到高电平的变化情况,曲线a为输入信号,b为输出信号Pout。在高速模式下,关键路径延时约为1 .2ns,但电源到地的静态电流也达到了56μA;在中速模式下,关键路径延时约为2.2ns,静态电流为29μA;在低功耗模式下,关键路径延时约为4ns,静态电流仅为14μA。
(a)基于SRAM的可编程宽与门电路结构
(b)宽与门关键路径的Hspice仿真结果
图3电路结构与仿真结果图
基于SRAM编程技术的可编程互连线电路结构设计
CPLD中可编程互连线的作用是集中分配输入信号以固定延时输出到宏单元的输入端(P- Term的输入端)。本文所设计的可编程互连线是由结构完全相同的可编程连线单元组成的二维阵列。可编程连线单元之间不存在互连关系,每个单元的输入信号直接来自于输入总线,输出信号直接到宏单元,这样可以保证延时固定。因此,这种结构的设计实质上是可编程连线单元的结构设计。
本文设计的基于SRAM的可编程连线单元结构如图4(a)所示。该结构的作用是在8条输入线中选择1条或者都不选而仅选择低电平输出,然后将选择的输出变成正反两个信号输出到宏单元中P-Term的输入端。核心结构是SRAM控制的多路选择器,其中的SRAM编程控制位SRAM1~SRAM3
(a)基于SRAM的可编程互连单元电路结构
(b)可编程互连单元关键路径的Hspice仿真结果
图4电路结构与仿真结果图
控制多路选择器实现8选1的连线状态,而SRAM4控制开关管实现输出低电平。本设计仅用单NMOS管构成多路选择器,相对于采用传输门的情况,每个开关减少了1个晶体管。但是,NMOS传送高电平存在阈值损耗,因此,在选择适当晶体管尺寸的同时,在第3、4级开关处分别加了反向器A和B,保证输出高电平的幅值和足够的驱动能力。可编程互连线延时对PLD的速度起决定性作用。图4 (a)中的虚线是本结构的关键路径,图4(b)给出了关键路径的Hspice仿真结果,(1)和(2)图分别为输入信号上升和下降引起输出的变化情况,a、b和c三条曲线分别表示输入总线信号、输出的正反信号OUT和OUTn。仿真结果表明,本结构的最大延时仅为300ps。
特别指出,本结构仅用了4bitSRAM编程就实现了MAX7000的PIA单元中1组开关的功能,而图1(b)中的结构需要8bitEEPROM。这样,本结构同基于EEPROM的结构相比,减少了4bit编程数据,从而使基于本结构的可编程互连线的编程数据减少了50%。编程数据的减少,可以缩短器件配置的时间,提高在重构系统应用中动态重构的效率。
结论
本文针对传统CPLD的核心可编程结构——P-Term和可编程互连线,采用2.5V、0.25μmCMOS工艺设计了新的、基于SRAM的可重构电路结构。本设计中的P-Term结构具有可编程的3种工作模式,可以根据需要获得较好的速度和功耗折衷。基于SRAM的、延时固定的可编程互连线仅有300ps的延时时间,可以获得很高的速度,而且同基于EEPROM的互连线相比编程数据减少了50%,可获得更短的配置时间,更适合动态重构应用。采用上述新结构构成的PLD比FPGA更适合在可重构系统中实现复杂状态机和译码电路。