集成电路设计基础 王志功 东南大学 无线电系 2004年
第13章 CMOS动态恢复逻辑电路 13.1 C2MOS电路 13.2 预充电—放电逻辑 13.3 预充电技术的改进—多米诺逻辑 13.2 预充电—放电逻辑 13.3 预充电技术的改进—多米诺逻辑 13.4 多米诺逻辑的发展 13.5 逻辑树中的寄生现象 13.6 多输出多米诺逻辑
第13章 CMOS动态恢复逻辑电路 CMOS电路有许多优点。但一般认为,与NMOS相比有两大缺点: CMOS电路的速度比NMOS低。理由是根本性的。因为任何一级倒相器至少有两只管子,一只P管和一只N管,它们的栅极是连接在一起的,输入电容加倍,前级的充放电就慢多了。 CMOS电路所需的器件数多。一个倒相器要2只管子。一个逻辑电路需要设计两套逻辑函数,分别传送原函数和其补函数。因而,CMOS电路的逻辑冗余度较高。这不仅浪费了硅片面积,而且增加了不少互联任务,使性能降低。
第13章 CMOS动态恢复逻辑电路(续) 为了克服这两个缺点,人们作了很多研究。 伪NMOS电路就是在这个指导思想下产生的。它只采用一个P管作为上拉负载,以代替全互补标准CMOS电路中的P阵列逻辑。但它带来一些类似NMOS倒相器所具有的那些缺点。增加了静态功耗,提高了输出低电平,降低了噪声容限。 CVSL为CMOS电路的实现,提出了一些新的概念,P管可用N管来等效,利用反馈来转化。从而带来一些新的优点。如,整个逻辑树都是N阵列,可以发挥N—Well工艺的优势。利用差分逻辑可以简化电路。可以同时提供原量和非量两种输出。但也带来一些新的缺点,如,增加了功耗,降低了速度。
第13章 CMOS动态恢复逻辑电路(续) DSL电路在速度上有较大的改进,可以同NMOS电路相匹敌。然而功耗是增加了。 必须指出,上述分析与比较都是以静态CMOS电路为准的。从七十年代后期起,一批动态CMOS电路崛起,无论是面积、速度,还是功耗,都远比静态电路优越,因而获得广泛的应用。
13.1 C2MOS电路 日本人在计算器生产方面一直是领先的。七十年代后期,日本人想把他们拿手的计算器电路改造为SRAM电路,设计低功耗的CMOS SRAM。日本的CMOS研究中心是设在东芝公司的半导体部。东芝公司在研制CMOS SRAM芯片的过程中发现,在存储器芯片中,许多电路不是一直在工作的,如,行译码器,列译码器,读出放大器,I/O控制电路等等,都只需要在较短的时间间隔内工作,只需要在时钟控制下周期性工作。因而这些电路没有必要在不同期间消耗功率。为此,把这些电路的基本单元——倒相器,都加以时钟控制。在时钟有效期间,倒相器工作,允许消耗功率。在时钟期外,倒相器不工作,也不消耗电源。从而发明了时钟CMOS电路(Clocked CMOS),简称为C2MOS电路。
13.1 C2MOS电路(续) 图 13.1 图13.1 如图13.1所示:该电路是 在静态CMOS电路的基础上 加了2个由时钟控制的门.在 P阵列,由控制,在N阵列 由控制.这就意味着电源 电压Vdd和Vss并不是一直加 在逻辑电路上的。只有当 = 1, = 0时,N管与P管 全打开,把电源Vdd和Vss 加到组合逻辑电路上, 获得CMOS静态恢复逻辑。时序图指出,这个与非门的输出F仅仅在时钟时刻,即 = 1,才能反映出F = 。在 = 0时刻,P管和N管全截止,逻辑电路上没有电源,从而没有功耗。 图 13.1 图13.1
13.1 C2MOS电路(续) 东芝公司用这种C2MOS电路不仅研制了4K SRAM,8K SRAM,还设计了16bit p。 把芯片中不工作的部分,通过时钟将电源切断,这对p、RAM等这类芯片来讲,是有重大实用价值的。 利用C2MOS电路也可以用作三态门。 然而,发明C2MOS电路的意义在于,它开创了动态CMOS逻辑的新时代。一批高性能的动态CMOS电路出现并逐步主宰着整个CMOS电路。
13.2 预充电——放电逻辑 预充电——放电技术是动态逻辑电路中最重要的一种技术,已得到了广泛地使用。在讨论这项技术之前,有必要了解一些背景。 13.2.1 Bell Labs对动态电路的研究 把芯片中不使能的部分切除电源以节省功耗,这一种设计思想并不仅仅是东芝公司的。大约在七十年代中期,Bell Labs的专家们早已使用了这种概念。但东芝公司将这一概念落实到单元逻辑电路,门电路,因而产生了C2MOS门。 Bell Labs的权威B.T.Murphy认为,VLSI正向亚微米发展。在亚微米电路工艺可以实现的时候,人们应当有能力设计一种100MIPS的p器件。设计这样的器件,最大的限制因素是功耗。显然,先进的p应用CMOS电路来制造。故Bell Labs从七十年代中期开始,就致力于设计CMOS p。
13.2.2 预充电——放电逻辑(续) 支持用高级语言调用有效的编译器。 支持多种存储器组织方式。 13.2.2 预充电——放电逻辑(续) 1)1976年,Bell Labs研制了一种8/16位的p,定名为Bellmac-8。这是一种8位和16位兼容的p,是面向软件要求设计的,它有如下特点: 支持用高级语言调用有效的编译器。 支持多种存储器组织方式。 它含有8bit的ALU和16bit的AAU。 这种软件驱动设计方式,已在不少商用p芯片中体现出来。如,8086,80286等。 在设计这个8bit ALU时,Murphy发现ALU这种模块,平均扇入系数很高,采用全互补标准CMOS电路是划不来的。从而选择了伪NMOS电路来实现这种8bit ALU。可是,伪NMOS电路的接地点上,加了一个时钟开关,功耗的节省是非常可观的。
13.2.2 预充电——放电逻辑(续) 相反,16bit AAU的平均扇入较低。因为它是计算地址的,不象ALU,操作数种类多。显然,用标准CMOS电路来实现是合理的。 指针寄存器等也采用标准的CMOS电路。 控制器是复杂的。因为它有丰富的指令集,有很多种寻址方式,8bit和16bit多种数据类型。对于这种复杂的控制器,Bell Labs曾考虑过采用微程序设计。但是,为了实现这种复杂的控制功能,所需的ROM很大,速度很慢,只能放弃,最后选择了PLA技术。然而发现采用单个PLA也不合适,故选用了2个PLA流水线方式工作,一个作主控PLA,另一个当作ALU控制用。这两个PLA是用NOR—NOR方式实现的,标准CMOS电路。
13.2.2 预充电——放电逻辑(续) 含有4,8,12,16bit多种指令操作。 为双操作数指令的每一个操作数提供4种寻址方式。 13.2.2 预充电——放电逻辑(续) 2)1980年,Bell Labs推出了一种新的p,定名为Bellmac-4。实际上它是一种非常复杂的c。特点如下: 含有4,8,12,16bit多种指令操作。 为双操作数指令的每一个操作数提供4种寻址方式。 有片上RAM,ROM和I/O控制逻辑。 Bellmac-4的电路技术与Bellmac-8一样,但采用3.5双阱CMOS工艺。后改为2.5,门延迟达2~5ns,时钟为10MHz,功耗为100mW。
13.2.2 预充电——放电逻辑(续) 3)1981年,Bell Labs生产了一种全32bit CMOS p,定名为Bellmac-32。它是世界上第一片全32位p,且是采用无Latch-up的双阱CMOS工艺制造的。它的体系结构来自用户对硬件的看法和要求。 它支持C语言的有效编译,使得码空间有效,执行时间缩短。 它支持UNIX操作系统,支持虚拟存储管理能力。 它的指令集是正交的,使得任何操作码可以同任何操作数的描述子相容。 它可以处理多种数据类型,如32bit字,16bit半字,8bit字节,以及各种位段。
13.2.2 预充电——放电逻辑(续) 它支持丰富的寻址能力。 它支持数据块的操作。一条指令就能使一些数据块从存储器的某一地方转到另一地方。 13.2.2 预充电——放电逻辑(续) 它支持丰富的寻址能力。 它支持数据块的操作。一条指令就能使一些数据块从存储器的某一地方转到另一地方。 它支持将成批寄存器压入堆栈,或从堆栈弹出成批的寄存器。 支持面向进程的操作系统所需要的硬件界面和处理例外事件所需的界面。 支持四级特权。 提供一些指令,有能力从一个进程转到另一个进程。 它能够处理每个进程的地址空间。
13.2.2 预充电——放电逻辑(续) 不言而喻,Bellmac-32的体系结构是高度复杂的,其中某些已被80286和80386所引用。例如,把整个芯片划分为两个部分,取指令单元和执行单元。取指令单元控制着CPU与存储器的相互作用,与I/O的交互作用。它相当于Intel的总线接口。执行单元是控制着数据的处理与加工。而且芯片内的大部分寄存器都可以通过专用的内部访问码来检测与调试。 要实现这样一个芯片,困难是很多的。 首先,要工艺上有所突破。 主要是采用外延层,双阱工艺,从而减小Latch-up。 在I/O电路方面采用围环技术。即在P管周围用N+围环,N管周围用P+围环作为保护,使得寄生NPN管和PNP管很难工作。
13.2.2 预充电——放电逻辑(续) 其次,电路上要有突破。 大量采用动态电路,节省芯片面积。 充分利用P管特点,为电路设计提供灵活性。 13.2.2 预充电——放电逻辑(续) 其次,电路上要有突破。 大量采用动态电路,节省芯片面积。 充分利用P管特点,为电路设计提供灵活性。 在PLA阵列中,将P管加时钟,对Word Line进行予充电以完成逻辑功能。N管仅作接地开关。 发明了一种新的动态电路,Domino-CMOS,它的速度比常规CMOS快2倍。
13.2.2 预充电——放电逻辑(续) 最后,分阶段实现。 13.2.2 预充电——放电逻辑(续) 最后,分阶段实现。 第一阶段,先研制32bit的数据通道,包括ALU,AAU,32bit移位电路。17个32bit寄存器以及有一个门矩阵以实现指令队列。在电路上主要采用Domino-CMOS。 第二阶段,做一个完整的p,把32bit的数据通道与相应的控制逻辑做在一个硅的面包板上。所谓硅面包板是指,那个硅片上已做好PLA母片,多胞逻辑和予制好的32bit数据通道。然后进行布线以完成一个完整的p。当然,这样做成的p,面积偏大,速度偏慢。然而,它易于检查,易于模拟,易于试行软件。 第三阶段,采用Supercell或Microsystem方案,全定制电路。用2.5CMOS双阱工艺制造,内部时钟达32MHz。
13.2.2 预充电—放电逻辑 预充电技术是动态逻辑电路中最重要的一支。其基本思想如下:对每个门的输出节点最初都预充电到逻辑“1” ,而那些产生布尔表达式的组合网络是不使能的。待预充电完成后,该组合网络才被使能,进行有条件地放电,在输出节点上取出逻辑值。如图13.2所示。 图13.2
13.2.2 预充电—放电逻辑(续) 采用预充电技术的动态电路有如下特点: 它只含有一套逻辑功能块,一般放在N阵列,当然也可以放在P阵列。 13.2.2 预充电—放电逻辑(续) 采用预充电技术的动态电路有如下特点: 它只含有一套逻辑功能块,一般放在N阵列,当然也可以放在P阵列。 添加了一对时钟开关,P管开关放在Vdd侧,N管开关放在Vss侧(或Gnd)。 采用单相时钟,通常 = 0为预充电期, = 1为逻辑取值期。 1) 工作原理: 当 = 0时,开关P导通,N管截止。于是,Vdd通过P管向输出节点上的负载电容CL充电,充到Vdd为止,这时,节点Z的状态为“1” 。 如果后级也采用类似的动态CMOS电路,也承认 = 0属于预充电期这个约定,那么Z = 1对后级是不起作用的。
13.2.2 预充电——放电逻辑(续) 当 = 1时,N管时钟开关导通。如果这时N型组合逻辑块的逻辑为真,节点Z与地之间必有通路,CL就可以沿着这条通路,经过N管时钟开关,放电到地,且放完为止,这时Z = 0。因为这时P管是截止的,不再会有补充充电,故Z的状态为Z = 0,即0伏。 如果当 = 1时,逻辑块的逻辑为假,则节点Z到地之间就没有通路,CL就无法放电,于是Z仍等于Vdd,仍为“1”状态。因而在 = 1期间,输出节点Z的状态能够体现逻辑块的功能。 显然, = 1为逻辑取值期。
13.2.2 预充电——放电逻辑(续) 2) 讨论: 1.所谓动态逻辑是指,它的逻辑状态仅仅在时钟规定期间有效,如,这里规定 = 1为取值期,其它期间的输出状态是不作为逻辑状态计及的。 2.注意:在预充电技术中的时钟与C2MOS电路(如图13.3所示)中的时钟是不一样的。 图13.3 图 13.3
13.2.2 预充电——放电逻辑(续) C2MOS电路 在C2MOS电路中,P管加,N管加。 = 0时,P管和N管全截止,电路不工作,不计状态,也无功耗。 = 1时,P管和N管全导通,电路工作,输出逻辑状态,有功耗。
13.2.2 预充电——放电逻辑(续) 预充电——放电技术 13.2.2 预充电——放电逻辑(续) 预充电——放电技术 在预充电——放电技术中, P管与N管加同一个。 = 0时,P管导通,进行预充电,N管截止,对充电无影响。 = 1时,N管导通,逻辑取值,P管截止,对取值无影响,无静态功耗。 图 13.4
13.2.2 预充电——放电逻辑(续) C2MOS电路与预充电技术都是动态电路,都只在规定的时钟期限内给出有效的逻辑状态。在别的期间都不计及输出状态。但是,这两种电路完全不同,它们目的不同,原理不同,线路结构不同,特点完全不同。 东芝公司的C2MOS是在静态恢复逻辑的基础上,加一对时钟开关来控制电路使能,以减少功耗。这里的静态逻辑是全互补标准CMOS电路,N阵列有逻辑,P阵列也有同样的对偶逻辑,P管总数同N管总数相同,共为2k+2个。 Bell Labs的预充电技术只需要一组逻辑。通常放在N型阵列,P阵列无逻辑块。再加一对时钟开关,故总共需要k+2个器件。
13.2.2 预充电——放电逻辑(续) 将CL预充电到Vdd,即使Z = 1。 13.2.2 预充电——放电逻辑(续) ③ 在预充电技术中,任何时刻,P管与N管中都是一通一截止,故无静态功耗。 ④ 在 = 0,预充电期间,实际上做两件事: 将CL预充电到Vdd,即使Z = 1。 不许各路输入信号任意变化,建立稳定的信号。这些信号的变化不会立即引起输出的变化,因为 = 0,N管是封住的。到这些输入信号都已稳定建立,就等待取值时刻( = 1)的到来。
13.2.2 预充电——放电逻辑(续) ⑤ 在 = 1期间,CL放电,穿过与逻辑取值相应的路程,放电到地。若逻辑为真,则必有通路,若是假就无通路。要特别注意,在 = 1期间,不允许任何信号有任何变化。否则,逻辑取值就不是唯一的了。 总之,在预充电技术中,充电与逻辑网络的构造无关,与输入的各逻辑变量无关,任何电路都将充电到Vdd,Z = 1为止。 各输入变量间的逻辑关系控制了放电,故它是一种有条件的放电。通过放电求取逻辑值,当然在放电期间不准更改输入变量。 只要我们严格遵守充电——放电的约定,预充电与逻辑定值就有条不紊地运行着,完成着动态逻辑功能。它既节省了功率,又节省了器件个数,相当完美。但是,在级联时发生了问题。
13.2.2 预充电——放电逻辑(续) 3) 预充电技术的级联。 图 13.5
13.2.2 预充电——放电逻辑(续) ① 图13.5是预充电技术的直接级联,加同样的时钟。这样,必然造成各级同时预充电,同时逻辑定值,统一步调。表面上看,这是理想的,但实际上是行不通的。因为逻辑定值就是有条件地放电。放电需要时间,要有个过程。当前,后两级同时逻辑定值时,必然会出现这样一种情况,前级输出节点Z1的状态尚未稳定地建立,后级迫不及待地定值。这就说明了在后级定值期间 ( = 1),输入信号还在更改变化,这是不允许的。 显然,预充电技术采用同一个时钟直接级联是不适当的,客观上需要多相时钟。
13.2.2 预充电——放电逻辑(续) (2)图13.6是二相时钟方案 图 13.6
13.2.2 预充电——放电逻辑(续) 假定第一、第三、第奇数级用1相,第二、第四等偶数级用2相。这样前级定值时,后级正好处于预充电期,允许输入信号更改和变化。前级定值完毕,为后级准备好输入信号后,后级开始定值,工作似乎是正常的。可是,当后级进入定值期时,前级又进入了下一个周期的预充电,将其输出节点Z1充电到Vdd。这对后级的定值又带来影响,干扰了后级的正确定值。 看来二相时钟方案仍然是行不通的。这也说明了在预充电技术的级联时,需要去耦。
13.2.2 预充电——放电逻辑(续) ③ 传输门隔离技术。 图 13.7 13.2.2 预充电——放电逻辑(续) ③ 传输门隔离技术。 要去耦,最容易想到的是采用传输门来隔离。当然它必须由另一个时钟来控制。如图13.7所示。 图 13.7
13.2.2 预充电——放电逻辑(续) 这也意味着预充电方式的动态逻辑电路,其基本单元应当包括一个传输门,如图所示。添加了这个传输门后,预充电的结果仅仅是PZ = Vdd,或PZ状态为1。这时输出节点Z是什么状态则将取决于传输门是否打开。如果在某一适当时刻,传输门打开了,PZ = 1将被传输到Z = 1。如果门又关上了,Z就保持在原先状态。这样,当前级再次进入预充电时,只要传输门是关上的,它就不会干扰后级的正确定值。 在二相方案中,还有一个重大缺点。因为在二相方案中,前级定值时,后级正在预充电。后级定值时,前级预充电。总之,前级和后级决不会同时预充电的。如果存在某个输入变量需要同时加到第一级和第二级,这种情况是常有的。而且我们又约定只允许在预充电期内更改输入信号。那么,对于二相方案来说,第一级与第二级没有共同的预充电期,就不可能实现同一个输入变量同时加到前后两级。
13.2.2 预充电——放电逻辑(续) 相反,有了传输门隔离后,我们有办法使前后两级占有共同的预充电期间,克服这个缺点。 13.2.2 预充电——放电逻辑(续) 相反,有了传输门隔离后,我们有办法使前后两级占有共同的预充电期间,克服这个缺点。 从种种迹象来看,预充电技术的动态逻辑电路需要四相时钟,它既要有恰当的时刻进行预充电与定值,也需要在恰当的时刻打开或关闭这个隔离门。
13.2.2 预充电——放电逻辑(续) 图13.8 ④ 显然,预充电技术需要合适的时钟体制。 我们提出了如下要求: 13.2.2 预充电——放电逻辑(续) ④ 显然,预充电技术需要合适的时钟体制。 我们提出了如下要求: 前级的预充电不干扰后级定值。 前级定值应正好处在后级的预充电期内,以便设置后级的输入信号。 前、后两级应有共同的预充电期。 绝对防止竞争现象发生。 图13.8是动态逻辑电路序列的一般形式。 每一级的时钟信号分别为1,3,5,…奇数相。 每一个隔离门的控制信号分别为2,4,6,…偶数相。 根据上面提出的四条要求,可以推算出各相的要求。 图13.8
我们可以检查图13.9的时钟配置是否满足上述四条.
13.2.2 预充电——放电逻辑(续) 后级定值时,前面的传输门是不通的。所以,若前级进入预充电,对它无影响。 13.2.2 预充电——放电逻辑(续) 后级定值时,前面的传输门是不通的。所以,若前级进入预充电,对它无影响。 前级定值时,正好传输门是导通的,定值信号可以进入后级,而后级正好处于预充电期,允许设置输入变量。 前后两级确有共同的预充电期。 目前,还看不出有竞争现象。 由此可见,理想的时钟体制应是八相制。9与1相同,10与2相同。但是,从时序角度来看,可以归并为四相制,这是因为传输门的时钟应该同后一级一致。
13.2.2 预充电——放电逻辑(续) 如果时钟脉冲的宽度占有两个节拍,那么这种四相时钟将是错开一个节拍排列的。如图13.10所示。 图13.10 图13.10
13.2.2 预充电——放电逻辑(续) 在实际电路中,人们是产生四个单节拍时钟1,2,3,4,再形成所需要的时钟12,23,34,41。显然, 12 = 1+2 23 = 2+3 34 = 3+4 41 = 4+1 如图13.11所示。 图13.11 图13.11
13.2.2 预充电——放电逻辑(续) 把这些时钟代入动态逻辑电路序列的一般形式,即得四相动态逻辑电路。如图13.12所示。 13.2.2 预充电——放电逻辑(续) 把这些时钟代入动态逻辑电路序列的一般形式,即得四相动态逻辑电路。如图13.12所示。 这种电路的缺点是,每一级时钟不同,并且还必须按照一定的顺序。否则逻辑将出错。 从波形上看,34 = ,41 = ,故实际上只需形成两种时钟脉冲,原量与非量都要。
13.2.2 预充电——放电逻辑(续) ⑤ 四相电路的改进。 13.2.2 预充电——放电逻辑(续) ⑤ 四相电路的改进。 四相电路的另一个缺点是,它是四级一个循环,版图设计复杂。 为了简化版图,可以把时钟分布的步子跨大,即第一级用与23,第二级就用与41,这样,两级就形成一个循环。如图13.13所示。 但这时,前级与后级之间没有共同的预充电期,就不允许将相同的输入变量同时加到相邻的两级。如果所设计的模块并不需要把同一个变量加到相邻两级的话,可以采用这种方案,使版图得到简化。
13.2.2 预充电——放电逻辑(续) 四相电路还有一个缺点,每级要添加2个管子。因而有人把传输门合并到预充电、定值电路中去,只用一只N管来实施前、后级的隔离。当然,时钟设计必须恰当,否则不能完成隔离任务。 它用一个节拍1完成预充电,三个节拍来定值。然而,它只是PZ节点定值,不是Z节点定值,没有加到后级去。只有当12 = 1时,可以将PZ节点的状态传输给Z。但实际上只有一个节拍时间能将PZ传给Z。当12 = 0时,信息就保存在节点Z上,等候后级使用。如图13.14( 下图) 所示。
13.2.2 预充电——放电逻辑(续) 12与1重叠一个节拍是为了在预充电期间,让N树内的各寄生电容也都充到Vdd,定值时一起放掉,保证逻辑值是可靠的。必须指出,这种电路级联方便,且进一步节省了MOS管。 图13.14
13.2.2 预充电——放电逻辑(续) 图13.15是一种改进的四级预充电动态电路。该电路的时钟设计非常巧妙。第一级的预充电与定值是采用单节拍时钟,它的预充电期很短,仅一个节拍,但预定值期较长,占三个节拍。然而,真正的定值是由12打开的。第二级的预充电时钟用,保证在第二级预充电时可以接纳第一级的定值输出。保证第二级定值时也不会受到第一级的干扰,因为那时第一级处于保持状态,并没有进入下一次预充电。 图13.15
13.2.2 预充电——放电逻辑(续) 注意,第一级与第二级之间还有共同的预充电期。如图13.16所示。 图13.16
13.2.2 预充电——放电逻辑(续) 第三级是利用预充电的,它正巧落在第二级定值期内,第二级是没有传输门隔离的,正好将Z2传给第三级。第三级又需要传输门,由34控制。第四级又不需要传输门,以此类推。 这个改进的电路不仅性能良好,获得广泛应用,且又给人们提供了更多的启发。比如, 传输门开关可以串如在树内。 时钟不一定都是对称方波。 预充电与定值不一定互补。
13.2.2 预充电——放电逻辑(续) 有了这些思想,人们开发 图13.17 了一种新的CMOS单元电路, 如图13.17所示。 13.2.2 预充电——放电逻辑(续) 有了这些思想,人们开发 了一种新的CMOS单元电路, 如图13.17所示。 图中P是预充电时钟,H是 保持时钟,S是采样时钟。 这三个时钟可以独立设计, 以获得各种特性。这样的 模块适应性很强,可以事 先设计,而用户仅仅解决 连线就可以了。 图13.17
13.3 预充电技术的改进,多米诺逻辑(Domino Logic) C2MOS电路降低了功耗,但增加了MOS管数目,达2k+2个。 预充电技术只需一枝逻辑树,MOS管数降到k+2个,节省硅片面积,简化了连线,减少了寄生电容,提高了速度。但不能直接级联,需用传输门隔离,管子数增加,达k+4个或k+3个。最重要的缺点是,需要多相时钟,并以一定的顺序分布。这不仅增加了时钟发生器,且又增加了如何保持同步的难题。 这就意味着,动态电路需要改进。改进的目标是: 要求能够直接级联。 减少时钟的数目。
13.3 预充电技术的改进 多米诺逻辑(Domino Logic)(续) 改进的方法: Bell Labs在每个动态电路的输出口上配了一个静态缓冲器作为接口。初看起来,它与原来的预充电技术一模一样,仅仅把传输门隔离改为倒相器接口, 其实,如图13.18所示, 差别很大。 关键就在于有了这个倒相器。 为了说明这个倒相器的价值, 我们先假定没有倒相器。这 时,各级将同时预充电,把 输出节点Z全部充到Vdd。直 接级联后,前级的输出打开 了后级的逻辑树。一旦进入 定值阶段,各级将同时定值。 定值就是有条件地放电。 图13.18
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 如果前级的逻辑树内有内部延迟,定值慢了一点,输出节 点还来不及从“1”“0” ,后级却迫不及待地定值,造成后级不 正确地放电,逻辑出错
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 最典型的例子是,前级是与非门,后级是或非门。如图13.19所示。通常,与非门是两只MOS管串联,内阻高,时延大,反应要慢一点。而或非门则是两只MOS管并联,无论是两只一起导通,还是只有一只导通,内阻总是比较小的,反应较快。这样,一旦 = 1。两级同时进入定值阶段,由于前级反应慢,尚未完成定值,那时Z1仍等于1,打开了后级定值的放电通路,使Z2 = 0。这样,就屏蔽了后级输入变量A的作用,不管A是什么值,Z2恒为0,显然是错误的。等到前级定值稳定,可以提供正确的Z1时,它对后级已失去作用,因为后级已经定值结束,放电早已完成,不可能再次定值,换言之,在前级与后级的竞争中,前级失败,产生了错误输出。
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 图13.19
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 如果在前、后级之间插入一个倒相器作为接口,情况就大不一样了。因为预充电后,仅仅是节点PZ被预充电到Vdd,经倒相器后,输出节点Z都放电到0。这样,在级联后,前级的预充电不是打开了后级的逻辑树,而是封住了后级的逻辑树。一旦进入定值阶段, = 1,各级就不可能同时定值。只有当前级定值完成,从10,经倒相器后变为从01,释放了后级的逻辑树,后级才能放电定值。因此,这种电路可以级联任何级数,只要定值时间足够长,就象Domino骨牌一样,一块一块地倒下。
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 仔细分析多米诺逻辑,可以发现在多米诺逻辑电路中,前后级之间的相互隔离,并不依靠传输门这一类开关,而是依靠电路内在的连锁现象。如果前级尚未完成定值,放电未放完,PZ节点上的电位较高,倒相后Z节点上的电压就偏低,不可能释放后级的逻辑树,后级就不可能定值。多米诺逻辑的运行就象波浪前进一样,后浪推前浪,从第一级定值开始,逐级推动,一直推进到最后一级为止。显然,最后一级的定值完成所需要的时间等于前面各级延迟的总和。如果那时 = 1的定值期限还未结束,那么信号将顺利地通过这个逻辑链。
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 为此,人们在设计时钟信号时,提出定值期限应足够地长,以满足很长的逻辑链的需要。 故时钟脉冲是不对称的矩形波,充电期( = 0)短,定值期( = 1)长。如图13.20所示。 必须指出,充电期不能太短,它必须保证逻辑树内所有节点的寄生电容能及时充满,保证负载电容上的电荷能及时放完。同时,放电定值期也不能太长,因为MOS电路是漏电的,节点电容上充的电荷会自然地泄漏掉,也许尚未轮到该级定值放电,电荷已漏光了。因此,放电期限是有限制的,即最低时钟频率是有限制的。
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 在某种场合,若时钟频率较低,又拟采用Domino电路,Krambeck等建议,可添加一个P管来补充充电。如图13.21所示。 在预充电用的P管旁边,再做一个P管,其栅极是接地的,故该P管是一直导通的,不断地给寄生电容C0充电。若C0已充满到Vdd,则该P管就不再补充。如果低于Vdd,该P管必然导通,进行补充充电,使得PZ节点有足够高的预充电电压。 图13.21
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 然而,这个P管的存在影响放电定值和逻辑电平。为了减少这些影响,这个补充的P管应是低增益的“弱P管” ,它的W/L较小,保持有10A的补充电流,仅仅作为平衡漏电流的作用。采用了这个措施后,多米诺逻辑可以用到低频,甚至是静态逻辑。
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 也有人把这个补充P管的栅极不接地,而是接到输出端,利用正反馈进行锁存。如图 13.22所示。倒相器的输出是 输入的非量,因为它控制的 是P管,将加强输入端的驱 动能力,故是正反馈。比如, 若倒相器输入端为“1”电平, 则输出将是“0”电平,P管更 导通,将Vdd传进来,使输入 端为“1”。若输入端为“0”电平,则倒相器输出为“1”,使P管截止,以保证输入端为“0”电平。可见,这种正反馈对输入电平有锁存作用,保证PZ节点在充电期能有“1”电平,不会漏掉。在定值期,PZ放电到“0”时,Z就达到Vdd,将P管截止,不影响定值。 图13.22
13.3 预充电技术的改进, 多米诺逻辑(Domino Logic)(续) 采用二个P管并联进行预充电,是否有冗余度呢?能否省掉一个呢? 如果时钟周期足够长,那么原来那个预充电P管有可能可以省掉。因为这时仅仅依靠弱P管充电就够了。如图13.23所示。 注意,这时电路已变成 伪NMOS电路,不过是 动态的,称为 动态伪NMOS电路 (Dynamic-Pseudo-NMOS)。 图13.23
13.4 多米诺逻辑(Domino Logic)的发展 自从Bell Labs于1981年宣布,他们用多米诺逻辑成功地设计了全32bit CMOS p——Bellmac-32以来,人们对Domino电路抱有极大的兴趣,进行了广泛深入的研究,充分证明了Domino电路的优点,提出了各种各样的改进版本,克服了Domino电路的主要缺点,使得Domino电路以最小的代价(芯片面积)取得NMOS电路的速度和CMOS电路的功耗。 不过,Domino电路是有缺点的。 除了上一节解决了的低频时钟困难外,另一个大缺点是多了一个倒相器。它不仅增加了MOS管的数目,而且产生非量逻辑较为困难。这是因为,当各路输入信号同逻辑树相匹配时,逻辑值为真,只要定值期=1到来,0电平将被传送到预充电节点PZ上,产生非量逻辑值。可是,经过一个倒相器,又变回到逻辑表达式的原量。故产生非量逻辑较为困难。
13.4 多米诺逻辑(Domino Logic)的发展(续) 如图13.24所示。 特别是,产生异或更为困难。 这就意味着,采用Domino Logic来设计时,缺乏柔性。 对给定的逻辑函数需要较多 的MOS管。要想完全消除这 个缺点,唯一的办法是不用 倒相器。 图13.24
13.4 多米诺逻辑(Domino Logic)的发展(续) 但是,我们还必须达到前级封住后级这个目的。为此,人们想出了采用两类动态电路的办法,N型Domino和P型Domino交替级联。如图13.25所示。 图13.25
13.4 多米诺逻辑(Domino Logic)的发展(续) 注意:第一和第三级是采用N型逻辑树,即逻辑函数是由NMOS传输门完成的,预充电是由P管完成的。第二和第四级是采用P型逻辑树,即逻辑函数由PMOS管完成,而预充电则由N管完成。故输出的逻辑函数值是从“底部”输出的。第一、第三等奇数级采用时钟,第二、第四等偶数级采用 时钟。 其工作原理如下: =0时,第一级与第三级是通过P管充电的,节点Z1与Z3都充到Vdd。而这时, =1,第二级的N管是导通的,也进行预充电,实际上预放电,把Z2节点预放到0。Z1是加在第二级的P管逻辑上的,Z1= Vdd,必然把P管封住。Z2是加在第三级的N管逻辑上的,Z2=0,也必将N管封住。由此可见,在交替级联时,没有倒相器同样可以把各级逻辑树全部封住。
13.4 多米诺逻辑(Domino Logic)的发展(续) =1时,第一级与第三级都进入定值期。由于这时, =0,第二与第四级的P管也导通,也进入定值期。然而,只要第一级尚未完成定值,Z1还没有从Vdd0,第二级的P树逻辑就不可能被释放,第二级就不可能定值。只有当第一级定值完毕,Z10,第二级P树被释放,这时Vdd才通过P树向负载电容进行有条件充电,获得定值。显然,只要第二级定值未完成,未充满,第三级就不可能被释放定值。只有当第二级定值完成,Z21,则第三级的N树才被释放,允许第三级定值。以此类推,可见它同样是多米诺逻辑,只有前面那块牌倒下,后面的牌才会倒下。因此,只要定值时间足够长,整个N,P交替逻辑树序列将全部定值完毕,将逻辑信息传送到输出端。这种Domino电路的优点是明显的,它不需要倒相,可以较方便地设计非量逻辑,柔性较好。缺点也是明摆着的,由于采用了P型逻辑树,速度有所降低。
13.4 多米诺逻辑(Domino Logic)的发展(续) 不言而喻,N—P交替式多米诺逻辑的出现,为更加柔性地设计逻辑子系统提供了一个很通用的设计方法。如图13.26所示。 在每一级多米诺逻辑上都可以输出,凡是经倒相器的,可以接到同类多米诺逻辑上。凡是没有倒相器的,则可以接到异类多米诺逻辑上。
13.5 逻辑树中的寄生现象 逻辑树是实现给定布尔表达式的一组传输门。在分析它的逻辑功能时,总是先忽略各种寄生现象。然后,再考虑各种寄生现象的影响。 寄生现象主要是体效应和寄生电容的影响。 当然,这些寄生现象并不是多米诺逻辑所特有的,其它动态电路,甚至静态电路也有。然而,其它电路还有更重要的问题需要解决,相对来说,寄生现象就次要一点。当对多米诺逻辑而言,主要问题已逐一解决,因而寄生现象的影响开始突出。
13.5 逻辑树中的寄生现象(续) 1、体效应 体效应是由于源极没有接地,与衬底之间有电位差引起的。它造成了MOS器件的门限电压VT变化, 13.5 逻辑树中的寄生现象(续) 1、体效应 体效应是由于源极没有接地,与衬底之间有电位差引起的。它造成了MOS器件的门限电压VT变化, VT =VT0 式中VT0是衬底偏压Vsb=0时的门限电压。是常数,取决于衬底掺杂浓度N, 。正号用于NMOS器件,负号用于PMOS器件。 是Spice模型参数,具体数值与器件类型,工艺有关。举例: 2 NMOS工艺,增强型MOS管 = 0.065 0.12;耗尽型MOS管, = 0.1 0.2;零门限MOS管 = 0.056 0.0116。 2 CMOS,N-Well工艺,N管 = 0.16 0.3;P管 = 0.3 0.38。
13.5 逻辑树中的寄生现象(续) 体效应影响的大小与电路构造和运行状态有关。现以静态与非门为例来分析。如图13.27所示。 图13.27
13.5 逻辑树中的寄生现象(续) 在这个四输入的与非门中,P侧的4个管子是并联的,它们的源极直接连接到Vdd,与衬底(或阱)是同电位的。因而这4管是没有体效应的。然而在N侧,4个N管是串联的,显然B,C,D三个管子都有可能存在体效应。然而三个管子是否需要考虑体效应将取决于寄生电容C1,C2,C3。如果这些寄生电容很小或漏电时间常数相对于该门的运行速度来说可以忽略的话,那么在这些寄生电容上就没有电荷,这三个N管的源极电位实际上不等于地,故必须考虑体效应。但如果由于种种原因,比如版图设计,连线与有关工艺等使得这些寄生电容不可忽略或它们的漏电时间常数可以同器件开关速度相比较时,这些寄生电容上将会保留电荷,产生电位差,体效应是否存在就必须仔细考虑。
13.5 逻辑树中的寄生现象(续) 假定N侧的管子A,B,C,D最初是截止的。当D管突然导通时,寄生电容C1将充电,充到Vdd-VTn。 然后,D管又截止,这时C1上已保存着电压Vdd-VTn。显然在这样的运行情况下,D管的源极电位不等于衬底(或阱)的电位,有体效应,门限电压VTD升高,若再要导通,动作将缓慢。 假定紧接着将A,B,C,D一起加上激励。 <---图13.28
13.5 逻辑树中的寄生现象(续) 显然,A,B,C三管是可以导通的,而D管是不通的,或者导通很差。然而,随着A,B,C管的导通,C1上的电荷放掉,使得节点C1的电位降低,D管的体效应减轻,D的导通能力就逐步增加,最后,A,B,C,D全导通。 由此可见,由于寄生电容和体效应的作用,D管的动作要比瞬态计算结果慢很多。为了减少这些寄生效应,应该考虑到 1)在逻辑树内的“内部”节点电容应尽量小。 2)NOR结构比NAND结构好。 3)将加到逻辑树的各输入信号在时序上排队,把最迟到达的信号安置在靠近输出的地方;把先到的信号安置在靠近地的地方。这样,先到达的一些输入信号将能释放“内部”节点上存储的电荷,使得晚到的信号仍能及时打开开关,把体效应降到最低限度。
13.5 逻辑树中的寄生现象(续) 4)如果为了减少硅片面积而不得不采用扩散层到地,那么应当只使用于该门的输出端上,尽量不用于内部节点连接。内部节点的连接应当用金属线或多晶硅线,因为它的对地电容小。而且与晶体管连在一起的扩散引线应尽量短。
13.5 逻辑树中的寄生现象(续) 2、漏极电容。 影响CMOS电路速度的,除了“内部”节点的寄生电容和体效应之外,还有漏极电容的影响。因为CMOS电路对直流而言,P管与N管是串联的,但对信号而言,P管与N管是并联的。两个管子的漏极并联在一起。因此这两个管子的漏极结电容将与下一级的栅极电容(或输入电容)和一些连线电容组成了本级的负载电容CL。其实,在NOR和NAND门电路中,P侧或N侧并联的管子不少,将有许许多多漏极电容,对CL作出贡献,因此不得不考虑这个问题。
13.5 逻辑树中的寄生现象(续) 举例如下: 设有一2输入端的NOR门。如图13.29所示。 13.5 逻辑树中的寄生现象(续) 举例如下: 设有一2输入端的NOR门。如图13.29所示。 从线路上来看,输出端VO被连接到一个P管漏极和二个N管漏极,即有三个漏极电容对CL有贡献。但实际上,并非如此,因为它与具体的版图设计有关。
13.5 逻辑树中的寄生现象(续) 版图13.29是常规设计法。P侧是两管串联,故只有一个漏极有贡献。 N侧的两个管子是由一 13.5 逻辑树中的寄生现象(续) 版图13.29是常规设计法。P侧是两管串联,故只有一个漏极有贡献。 N侧的两个管子是由一 条金属线并联连接的,因而 这两个N管的漏极结电容并 联地对输出CL有贡献。其结 果与线路图分析一样。
13.5 逻辑树中的寄生现象(续) 图13.30 下图是另一种版图设计法。 在这种版图中,N侧的 两个N管共享一个漏极, 13.5 逻辑树中的寄生现象(续) 下图是另一种版图设计法。 在这种版图中,N侧的 两个N管共享一个漏极, 因而两个N管漏极之间 的连接线合并了。这样 总共只有二个漏极对CL 有贡献,其中一个在P侧, 另一个在N侧,明显地减 小了输出电容。故控制线 同电源线正交是有利的。 版图13.2 由此可见,版图设计方面是有潜力的,只要设计得当,可以减小输出电容,提高电路速度。 图13.30
13.5 逻辑树中的寄生现象(续) 再举一个例子。 设 。 要实现这个布尔方程,N侧的逻辑树将是如图13.31所示形式。 图13.31
13.5 逻辑树中的寄生现象(续) 逻辑树的端点1和2怎么连接?有两种方法:i)2接输出,1接地;ii)1接输出,2接地。它们的效果是不同的。从线路上看,第一种方案中将有三个漏极电容对F有贡献,两个P管,一个是N管。另外有5个漏极电容对“内部”节点有贡献,其中二个是P管的,三个是N管的。如图13.32所示。 图13.32
13.5 逻辑树中的寄生现象(续) 然而,如果版图设计合理,这些寄生电容可望减小。 图13.33
13.5 逻辑树中的寄生现象(续) 在上面的版图中,P管两条支路的漏极共享,因而只贡献一 个漏极电容。N侧只有一条支路。因而总共只有二个漏极电容对 CL有贡献。另外,有四个漏极电容对“内部”节点有贡献,其 中二个在P侧,另二个在N侧。显然,合理化版图设计后,寄生 电容的影响减小了。
13.5 逻辑树中的寄生现象(续) 图13.34 如果采用第二种方案,端点1接输出,2接地,则线路如图 13.34所示。 13.5 逻辑树中的寄生现象(续) 如果采用第二种方案,端点1接输出,2接地,则线路如图 13.34所示。 从线路上分析,将有5个漏 极电容对CL有贡献。其中两 个是P侧的,三个是N侧的。 另外,将有5个漏极电容对 “内部”节点电容有贡献,其 中二个在P侧,三个在N侧。 但如果合理地设计版图,这 些寄生电容可以减小。 图13.34
13.5 逻辑树中的寄生现象(续) 图13.35 根据右面的版图,可知, 将有4个电容对CL有 贡献。其中2个是P侧的, 13.5 逻辑树中的寄生现象(续) 根据右面的版图,可知, 将有4个电容对CL有 贡献。其中2个是P侧的, 另2个是N侧的。因为有 2个N管是共享漏极的。 另外,有4个电容对“内部” 节点贡献寄生电容。其中 有2个在P侧,另2个在N侧。 版图13.4 图13.35
13.5 逻辑树中的寄生现象(续) 显然,版图设计方面合理化是有潜力的。 13.5 逻辑树中的寄生现象(续) 显然,版图设计方面合理化是有潜力的。 两个方案比较结果是,第一方案好。故,在N侧逻辑树中应当把并联管子数目较多的端点放在地侧,把管子数少的或只有一个管子的放在输出侧。 其实,在 这样一个处理器中,信号D往往是最后到达的。故将D放在输出端上也是合理的。
13.5 逻辑树中的寄生现象(续) 3、电荷再分配现象。 这是影响动态电路正常工作的第四个因素。 13.5 逻辑树中的寄生现象(续) 3、电荷再分配现象。 这是影响动态电路正常工作的第四个因素。 现以C2MOS倒相器为例来分析电荷再分配问题。如图13.36所示。 图13.36
13.5 逻辑树中的寄生现象(续) 我们清楚在C2MOS电路中,没有时钟脉冲,1,倒相器是不工作的。倒相器输出电平不会发生变化的。但实际上,由于寄生电容的存在,输出电平会有变化。 假定时钟=1时,输入信号Vi正处于低电平,于是, 1)两个P管都导通,电源Vdd将通过两个P管向CL充电,将充到VO高电平Vdd。 2)同理,寄生电容Cb也将充到Vdd。 3)由于N侧的时钟开关导通,寄生电容Ca放电到0。
13.5 逻辑树中的寄生现象(续) 当时钟结束,=0时,倒相器不工作,输出电平保持不变。然而,如果输入信号突然变为高电平,于是, 13.5 逻辑树中的寄生现象(续) 当时钟结束,=0时,倒相器不工作,输出电平保持不变。然而,如果输入信号突然变为高电平,于是, 1)所有P管截止,对输出无影响。 2)N管导通,CL上的电荷将分配给寄生电容Ca。 因而,输出电平发生变化VoVo',变化的多少取决于电容比。如果寄生电容太大,那么电平变化可以大到影响下一级门的工作,产生错误的数据。
13.5 逻辑树中的寄生现象(续) 为了克服电荷共享、电荷再分配等寄生现象,人们想了种种办法: 1)仔细安排逻辑树,使这种效应降到最小。 13.5 逻辑树中的寄生现象(续) 为了克服电荷共享、电荷再分配等寄生现象,人们想了种种办法: 1)仔细安排逻辑树,使这种效应降到最小。 2)仔细设计版图,使这种效应降到最小。 3)要确保CL/Ca电容比达到10:1。这样,电平变化小于10%。 4)如果逻辑树很大,“内部”节点电容很多,都要共享电荷的话,那么就必须人为地增加输出电容CL。
13.5 逻辑树中的寄生现象(续) 5)必要时,在逻辑树内可以补充充电。如果补偿量不大,可以用自举法。如图13.37所示。 13.5 逻辑树中的寄生现象(续) 5)必要时,在逻辑树内可以补充充电。如果补偿量不大,可以用自举法。如图13.37所示。 把输出高电平锁存起来,然而反馈管的驱动能力有限,在电路快速工作时不能保证电荷共享节点获得足够的电, 使得电路工作不稳定,从而降低了电路工作速度。
13.5 逻辑树中的寄生现象(续) 另一个办法是将内部节点全部预充电。如图13.38所示。这样,电荷共享问题就根本不存在了,电路速度可以很快。日立公司就用这个电路设计32bit p的ALU。用1.3 CMOS工艺,延迟小于0.8ns/4-NAND。 图13.38
13.6 多输出多米诺逻辑 这是一种新的动态CMOS逻辑电路,称为Multiple-output Domino Logic(MODL)。在这种逻辑电路中,单个电路可以产生多种逻辑函数,因而器件总数可以节省2倍以上,它取决于电路中递归的次数。它比常规的Domino电路更加稳定。Bell Labs已经把这种电路用于新一代高性能的32bit的CMOS p。 下面介绍MODL电路的基本原理。
13.6 多输出多米诺逻辑(续) 在设计复杂的组合逻辑时,往往需要同时提供多种逻辑函数,如: G1=F1(X) G2=F1(X)F2(X) 13.6 多输出多米诺逻辑(续) 在设计复杂的组合逻辑时,往往需要同时提供多种逻辑函数,如: G1=F1(X) G2=F1(X)F2(X) G3=F1(X)F2(X)F3(X) . 等等一系列递归式的逻辑表达式。 如果采用静态逻辑,人们可以设想如图13.39所示的电路。 图13.39---->
13.6 多输出多米诺逻辑(续) 然而,若改为动态电路,困难就很多。因而,人们只能分立地提供多种逻辑函数。 13.6 多输出多米诺逻辑(续) 然而,若改为动态电路,困难就很多。因而,人们只能分立地提供多种逻辑函数。 图13.40是用常规的Domino动态逻辑来实现的两个逻辑函数。很明显,这两个Domino内部的逻辑树是重复的,其中一个是另一个的子函数。设法合并为一个Domino电路显然是人们所向往的。
13.6 多输出多米诺逻辑(续) 另一方面,随着逻辑树的构造日益复杂,内部节点越来越多,电荷共享、再分配问题日趋严重,也需要采用上节介绍的那种补充预充电的方法,将子函数也预充电。如图13.41所示。
13.6 多输出多米诺逻辑(续) 不言而喻,若再补充一个倒相器,我们又可以获得一个输出,就象静态逻辑一样,用“抽头”的办法,提供多种输出函数,消除了逻辑冗余度,而且由于有了补充预充电,电荷共享问题远比标准的Domino电路少,因而电路的稳定性良好。如图13.42所示。