拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CMOS传输门异或门设计:从原理到版图实战

CMOS传输门异或门设计:从原理到版图实战

1. 为什么偏偏要用传输门搭异或门

1.1 从一次课堂演示翻车说起

几年前带数字电路实验课,我让学生在面包板上用74系列芯片搭一个半加器。结果一个学生举手说,老师,异或门芯片用完了,能不能用别的门凑一个。我当时随口说了一句,你试试用传输门。结果他回去折腾了一晚上,第二天拿过来的电路不仅能用,走线还比用四个与非门搭出来的方案干净得多。这件事让我重新审视了传输门在组合逻辑里的价值——它不只是教科书上那个用来做多路选择器的结构,在异或这种“可控反相”的逻辑里,传输门其实是最自然的实现方式。

CMOS传输门实现异或门,这个题目听起来像是数字电路教材里的一道习题,但真正动手做过的人都知道,里面藏着不少值得琢磨的细节。从晶体管级的开关行为,到逻辑表达式怎么映射成电路拓扑,再到版图上的匹配和寄生控制,每一层都有它自己的门道。这篇文章就是把这些年我在实验室和课堂上积累的关于这个电路的经验整理出来,适合正在学CMOS数字集成电路设计的学生、需要做版图练习的工程师,以及任何对“逻辑门到底怎么从晶体管长出来”这件事感到好奇的人。

1.2 异或门的逻辑本质:一个可控反相器

先把异或门的真值表摆出来,这是所有后续推导的起点。

ABY = A ⊕ B
000
011
101
110

盯着这张表看几秒钟,你会发现一个很有意思的规律:当A为0时,Y等于B;当A为1时,Y等于B的反。用一句话概括就是——A控制着B是否被反相。这个观察直接指向了传输门的核心功能:传输门本质上就是一个受控开关,控制信号决定它导通还是关断。如果把B和B的反相分别接到两个传输门的输入端,用A和A的反相去控制这两个门,输出端并在一起,异或逻辑就出来了。

这个思路之所以优雅,是因为它把“异或”这个在布尔代数里需要四个基本门才能拼出来的运算,简化成了两个开关加一个反相器。从晶体管数量的角度看,标准静态CMOS异或门需要至少8到10个晶体管,而传输门方案通常只需要6个晶体管加一个反相器(反相器本身2个晶体管),总共8个晶体管左右,在某些工艺下甚至能做到更少。更重要的是,传输门方案的逻辑深度更浅,信号从输入到输出只经过一级开关,延迟特性往往更好。

1.3 传输门的工作原理:互补开关的妙处

在深入电路之前,有必要把传输门本身讲清楚。很多初学者对传输门的理解停留在“一个NMOS和一个PMOS并联”这个层面,但为什么非要并联,单独用NMOS或PMOS行不行,这里面的道理值得展开。

NMOS晶体管在栅极电压高于源极电压一个阈值以上时导通,但它有一个致命问题:当它传输高电平时,源极电压升高会导致栅源电压差减小,最终当源极电压达到VDD减去阈值电压时,晶体管就截止了。也就是说,单个NMOS传输高电平,输出最高只能到VDD减Vth,损失了一个阈值电压。PMOS的情况正好相反,它传输低电平时,输出最低只能到Vth,无法拉到真正的零。

把NMOS和PMOS并联,栅极分别接互补的控制信号,就得到了一个全摆幅的开关。当控制信号C为高、C的反为低时,NMOS和PMOS同时导通,输入信号无论是高是低都能完整地传到输出端。当C为低时,两个管子都截止,输出端与输入端隔离。这个结构就是传输门,有时候也叫模拟开关,因为它在导通时对信号的传输几乎是线性的。

注意:传输门导通时存在导通电阻,这个电阻与晶体管的宽长比成反比。在驱动容性负载时,导通电阻和负载电容构成一个RC延迟,这是传输门电路速度的主要限制因素。设计时需要根据负载情况合理选择晶体管的尺寸。

理解了传输门的这个特性,再回头看异或门的实现,思路就非常清晰了。我们需要两个传输门,一个传输B,一个传输B的反,控制信号A决定哪个门导通。当A为0时,传输B的门导通,输出等于B;当A为1时,传输B反的门导通,输出等于B的反。两个传输门的输出端连在一起,就完成了异或运算。

2. 电路拓扑与晶体管级设计细节

2.1 完整电路结构拆解

把上一节的思路画成电路,需要以下几个部分。首先是输入B的反相器,产生B的反信号。这个反相器就是标准的CMOS反相器,一个PMOS和一个NMOS串联,栅极接B,漏极连在一起作为输出。然后是第一个传输门TG1,输入端接B,控制端接A和A的反。第二个传输门TG2,输入端接B的反,控制端接A的反和A。两个传输门的输出端短接,作为异或门的输出Y。

这里有一个细节需要特别注意:控制信号A需要同时提供原信号和反信号。如果A是从外部输入的,那么还需要一个反相器来产生A的反。但如果这个异或门是某个更大电路的一部分,A的反可能已经在别处产生了,可以直接拿来用。在实际设计中,这个反相器的开销需要考虑进去。

从晶体管计数来看,B的反相器用2个晶体管,A的反相器用2个晶体管,两个传输门各用2个晶体管,总共8个晶体管。如果A的反信号可以共享,那就只需要6个晶体管。相比之下,用与非门搭异或门至少需要3个与非门(每个4个晶体管)加1个与门或反相器,晶体管数量在14个以上。传输门方案在面积上的优势非常明显。

2.2 晶体管尺寸的选择逻辑

尺寸选择是电路设计里最容易被忽视但又最影响性能的环节。很多初学者做仿真时随便填一个W/L,结果发现电路要么速度不够,要么功耗超标。对于传输门异或门,尺寸选择有几个基本原则。

传输门的NMOS和PMOS需要满足导通电阻的要求。导通电阻的表达式是:

R_on = 1 / (μ * C_ox * (W/L) * (V_gs - V_th))

其中μ是载流子迁移率,C_ox是栅氧电容,W/L是宽长比,V_gs是栅源电压,V_th是阈值电压。NMOS的迁移率大约是PMOS的两到三倍,所以为了获得相同的导通电阻,PMOS的宽度通常需要是NMOS的两到三倍。这就是为什么在标准单元库里,PMOS的宽度往往比NMOS大。

对于传输门,还有一个额外的考虑:当传输门传输高电平时,NMOS的栅源电压会随着输出电平的升高而减小,导通电阻增大;PMOS则相反,传输高电平时栅源电压充足,导通电阻小。两者并联后,总导通电阻在整个输入范围内相对平坦。但如果尺寸选择不当,比如PMOS太小,那么在传输高电平时总电阻会偏大,影响上升沿。

我的经验是,对于0.18微米及以下的工艺,传输门的NMOS取最小尺寸的2到4倍,PMOS取NMOS的2到3倍,通常能获得比较好的折中。如果驱动能力要求高,可以等比例放大。反相器的尺寸则根据它驱动的负载来定,如果A的反信号要驱动两个传输门的栅极,那么A反相器的尺寸需要足够大,保证控制信号的边沿足够陡。

2.3 衬底连接与体效应的影响

在CMOS工艺中,NMOS的衬底通常接最低电位,PMOS的衬底接最高电位。但对于传输门中的NMOS,如果输入端信号不是固定在最低电位,那么源极和衬底之间就会存在电位差,产生体效应,导致阈值电压升高,导通电阻增大。

这个问题在传输门传输低电平时尤为明显。当NMOS传输低电平时,源极接近零电位,衬底也接零电位,体效应很小。但当NMOS传输高电平时,源极电位升高,衬底仍接零电位,体效应显著,阈值电压升高,导通能力下降。这也是为什么传输门需要PMOS并联的原因之一——PMOS在传输高电平时没有体效应问题。

在一些先进工艺中,可以采用双阱工艺,把传输门中的NMOS做在独立的P阱里,P阱接源极电位,从而消除体效应。但这种做法会增加工艺复杂度和面积。对于大多数数字电路应用,体效应带来的性能下降是可以接受的,不需要特殊处理。

实操心得:在做版图时,传输门的NMOS和PMOS通常放在同一个阱区附近,但要注意阱区的连接。如果NMOS的衬底接的是全局地,而源极电位在变化,体效应就无法避免。如果对速度要求极高,可以考虑用独立的阱并动态控制阱电位,但这属于比较高级的技巧,初学者可以先跳过。

3. 从原理图到版图:实操过程全记录

3.1 在LTspice中搭建仿真电路

理论分析再透彻,不仿真一下心里还是不踏实。我习惯用LTspice做前期验证,因为它免费、轻量,而且模型库比较全。下面是我搭建传输门异或门仿真电路的具体步骤。

第一步是选择工艺模型。LTspice自带了一些CMOS模型,比如CMOSN和CMOSP,但这些都是理想化的模型,没有包含短沟道效应。如果要做更真实的仿真,可以导入BSIM模型。对于教学和初步验证,自带的模型够用了。

第二步是搭建反相器。在LTspice里,一个CMOS反相器就是一个PMOS和一个NMOS,PMOS的源极接VDD,NMOS的源极接地,两个栅极连在一起作为输入,两个漏极连在一起作为输出。PMOS的衬底接VDD,NMOS的衬底接地。

第三步是搭建传输门。传输门就是PMOS和NMOS的源漏并联。具体来说,NMOS的源极和PMOS的源极连在一起作为输入端,NMOS的漏极和PMOS的漏极连在一起作为输出端。NMOS的栅极接控制信号C,PMOS的栅极接C的反。注意这里NMOS和PMOS的源漏是可以互换的,因为传输门是双向导通的。

第四步是把两个传输门和反相器按照前面的拓扑连接起来。B输入接一个反相器产生B的反,B和B的反分别接两个传输门的输入端。A输入接一个反相器产生A的反,A和A的反分别接两个传输门的控制端。两个传输门的输出端连在一起,接一个负载电容,模拟下一级电路的输入电容。

仿真设置方面,我通常做直流扫描和瞬态分析。直流扫描是把A和B作为变量,扫描所有四种组合,验证真值表。瞬态分析是给A和B加上不同的波形,观察输出的延迟和波形质量。电源电压根据工艺节点选择,0.18微米工艺用1.8V,0.13微米用1.2V,更先进的节点用1V或更低。

3.2 关键仿真结果解读

仿真跑出来之后,有几组数据需要重点看。第一是直流传输特性,也就是当A固定时,输出随B变化的曲线。当A为0时,输出应该跟随B,曲线是一条斜率为1的直线;当A为1时,输出应该跟随B的反,曲线是一条斜率为-1的直线。如果曲线在两端有平坦区域,说明传输门在高电平或低电平处导通不充分,需要调整尺寸。

第二是瞬态波形。给A和B加上不同频率的方波,观察输出Y的波形。重点看上升沿和下降沿的延迟是否对称,有没有明显的毛刺。传输门电路的一个潜在问题是,当A发生变化时,两个传输门可能同时导通或同时关断的瞬间,输出端可能出现竞争。如果A和A的反信号到达传输门栅极的时间不一致,就会在输出端产生毛刺。解决方法是确保A反相器的延迟与A信号路径的延迟匹配,或者在后级加一个小滤波电容。

第三是功耗分析。传输门异或门是纯CMOS结构,静态功耗理论上为零,只有漏电流。动态功耗主要来自对负载电容的充放电和控制信号对栅极电容的充放电。在低频应用中,功耗不是问题;在高频应用中,需要优化尺寸来降低功耗。

仿真项目观察指标合格标准常见问题
直流扫描输出高低电平高电平>0.9VDD,低电平<0.1VDD高电平损失,传输门尺寸不足
瞬态分析传播延迟上升下降延迟差<20%延迟不对称,PMOS太弱
瞬态分析输出毛刺毛刺幅度<0.1VDD控制信号时序不匹配
功耗分析动态功耗与负载电容成正比尺寸过大导致功耗超标

3.3 版图设计中的匹配与寄生控制

从原理图到版图,是另一个维度的挑战。传输门异或门的版图不算复杂,但有几个地方需要特别注意。

首先是晶体管的匹配。两个传输门在电路中是对称的,它们的尺寸应该完全一致,版图上也应该尽量对称放置。如果两个传输门的导通电阻不一致,会导致输出波形在A为0和A为1时的延迟不同,影响电路的时序。在版图上,可以把两个传输门做成镜像对称的结构,共用源极或漏极区域,既节省面积又保证匹配。

其次是寄生电容的控制。传输门的输出端连接了两个晶体管的漏极,这个节点的寄生电容直接影响电路的延迟。在版图上,应该尽量减小这个节点的面积,走线尽量短而宽,降低电阻和电容。如果输出端还要连接到下一级电路,走线长度也要控制。

第三是阱区的处理。NMOS和PMOS需要放在不同的阱区里,阱区之间要有足够的间距,避免闩锁效应。在先进工艺中,阱区的设计规则非常严格,需要仔细查阅设计手册。对于传输门,由于NMOS的源极电位会变化,如果条件允许,可以考虑把NMOS放在独立的P阱里,P阱接源极,消除体效应。

注意:版图设计完成后必须做DRC和LVS验证。DRC检查设计规则,LVS检查版图与原理图的一致性。传输门电路容易出现的LVS错误是源漏混淆,因为传输门的源漏是对称的,版图提取工具可能无法正确识别。解决方法是在原理图中明确标注源漏方向,或者在版图中采用不对称结构。

4. 常见问题排查与设计避坑指南

4.1 输出电平不完整怎么办

这是传输门电路最常见的问题。表现是输出高电平达不到VDD,或者低电平降不到零。原因通常有几个:传输门的PMOS太弱,导致高电平传输时导通电阻过大;或者NMOS太弱,导致低电平传输时导通电阻过大;或者控制信号的电压摆幅不够,导致传输门没有完全导通。

排查方法是先看直流扫描曲线。如果高电平处有平坦区域,说明PMOS需要加大宽度。如果低电平处有平坦区域,说明NMOS需要加大宽度。如果两端都有问题,可能是控制信号的摆幅不够,检查A和A的反信号是否达到了满摆幅。在有些电路中,A信号可能来自前一级的传输门,本身就有电平损失,这时候需要在A信号后面加一个反相器来恢复摆幅。

另一个可能的原因是体效应。如果NMOS的衬底接的是全局地,而源极电位升高,阈值电压升高,导通能力下降。这种情况下,即使加大NMOS的宽度,效果也有限。可以考虑把NMOS放在独立的阱里,或者接受一定的电平损失,在后级加一个反相器来整形。

4.2 输出毛刺与竞争冒险

传输门异或门在A信号切换时容易出现毛刺。原因是A和A的反信号经过的路径不同,延迟不同,导致两个传输门在切换瞬间可能同时导通。如果此时B信号正在变化,输出端就会出现一个短脉冲。

解决毛刺的方法有几种。第一种是确保A和A的反信号延迟匹配,可以在A反相器的输出端加一个与A信号路径相同的缓冲器,让两个信号的延迟一致。第二种是在输出端加一个小电容,滤掉高频毛刺,但这会增加延迟。第三种是采用先断后通的策略,在控制信号上做文章,确保一个传输门完全关断后另一个才导通。这种方法需要额外的时序控制电路,适合对毛刺要求极高的场合。

在实际设计中,如果后级电路对毛刺不敏感,比如后级是一个触发器,毛刺只要不在时钟边沿附近出现就不会有问题,那么可以不做特殊处理。但如果后级是组合逻辑,毛刺可能会传播并导致错误,就需要认真对待。

4.3 仿真与实测不一致的排查思路

仿真跑通了,流片回来一测发现不对,这是最让人头疼的情况。根据我的经验,仿真与实测不一致通常有以下几个原因。

第一是模型不准。LTspice自带的模型是理想化的,没有包含工艺角、温度、电压变化的影响。流片后的实际晶体管参数可能与模型有偏差。解决方法是在仿真时做蒙特卡洛分析,考虑工艺波动,或者使用代工厂提供的精确模型。

第二是寄生参数没提取。原理图仿真没有包含版图上的寄生电阻和电容。流片后,这些寄生参数会影响电路的延迟和功耗。解决方法是在版图完成后做寄生提取,把提取出的寄生参数反标到仿真电路中,做后仿真。

第三是测试方法有问题。比如探头的电容影响了电路的工作,或者电源不够干净,或者输入信号的上升沿太慢。排查时可以先测直流特性,确认逻辑功能正确,再测瞬态特性,逐步定位问题。

问题现象可能原因排查方法解决方案
输出高电平不足PMOS太弱或体效应直流扫描看高电平加大PMOS宽度或独立阱
输出低电平不足NMOS太弱直流扫描看低电平加大NMOS宽度
输出有毛刺控制信号延迟不匹配瞬态分析看A和A反加缓冲器匹配延迟
延迟过大导通电阻大或负载重测传播延迟加大尺寸或减小负载
功耗超标尺寸过大或频率过高测动态电流优化尺寸或降低频率

4.4 从异或门扩展到其他逻辑功能

传输门异或门只是一个起点。理解了传输门如何实现“可控反相”之后,可以扩展到很多其他逻辑功能。比如同或门,只需要把两个传输门的输入交换一下,或者把输出取反。再比如多路选择器,用多个传输门并联,控制信号译码后选择其中一个导通,就是标准的多路选择器结构。

更进一步,传输门在时序电路里也有广泛应用。锁存器和触发器中的核心结构就是传输门加反相器构成的环路。理解了传输门异或门,再去看这些电路,会发现它们的设计思路是一脉相承的。

我在实际项目中用过传输门做低功耗的多路选择器,相比静态CMOS方案,面积小了将近一半,功耗也有明显优势。但传输门方案的缺点是驱动能力弱,不适合驱动大负载,而且对控制信号的时序要求高。选不选传输门,取决于具体的应用场景和设计约束。

5. 写在最后的一些个人体会

这个电路我前后做过好几版,从最初在面包板上用4000系列芯片搭,到后来在Cadence里画版图,再到流片测试,每一版都有新的收获。最大的体会是,数字电路设计不能只停留在逻辑表达式层面,晶体管级的思考方式会让你对电路的理解深入一个层次。传输门异或门这个电路,逻辑表达式简单到一行就能写完,但真正把它做好,需要考虑尺寸、匹配、寄生、时序、功耗等一系列问题。

如果你正在学CMOS设计,我建议你亲手把这个电路从原理图到版图完整走一遍。不用追求先进工艺,0.18微米甚至1微米工艺都可以,关键是走通流程,理解每个步骤背后的原因。仿真通过之后,如果有条件,可以参加多项目晶圆流片,实测一下自己的设计。实测和仿真的差距,会让你学到书本上学不到的东西。

另外,传输门电路的一个容易被忽视的优势是它在低电压下的表现。随着电源电压降低,静态CMOS门的堆叠晶体管效应越来越严重,而传输门方案由于没有堆叠的晶体管,在低电压下反而更有优势。这也是为什么在很多低功耗设计中,传输门逻辑仍然有一席之地。

最后分享一个我在版图上的小技巧:传输门的两个晶体管可以共用源极或漏极区域,这样不仅节省面积,还能保证两个晶体管的源漏电阻对称。具体做法是把NMOS和PMOS的源极区域合并,输入信号从合并的区域进入,两个晶体管的漏极分别引出再合并作为输出。这种布局在0.18微米工艺下可以节省大约30%的面积,而且匹配性更好。当然,具体能不能这样做,还要看工艺的设计规则允不允许。

返回列表