ARTICLE DETAIL

资讯详情

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

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

CMOS传输门异或门设计:从原理到版图实战 1. 为什么偏偏要用传输门搭异或门1.1 从一次课堂演示翻车说起几年前带数字电路实验课我让学生在面包板上用74系列芯片搭一个半加器。结果一个学生举手说老师异或门芯片用完了能不能用别的门凑一个。我当时随口说了一句你试试用传输门。结果他回去折腾了一晚上第二天拿过来的电路不仅能用走线还比用四个与非门搭出来的方案干净得多。这件事让我重新审视了传输门在组合逻辑里的价值——它不只是教科书上那个用来做多路选择器的结构在异或这种“可控反相”的逻辑里传输门其实是最自然的实现方式。CMOS传输门实现异或门这个题目听起来像是数字电路教材里的一道习题但真正动手做过的人都知道里面藏着不少值得琢磨的细节。从晶体管级的开关行为到逻辑表达式怎么映射成电路拓扑再到版图上的匹配和寄生控制每一层都有它自己的门道。这篇文章就是把这些年我在实验室和课堂上积累的关于这个电路的经验整理出来适合正在学CMOS数字集成电路设计的学生、需要做版图练习的工程师以及任何对“逻辑门到底怎么从晶体管长出来”这件事感到好奇的人。1.2 异或门的逻辑本质一个可控反相器先把异或门的真值表摆出来这是所有后续推导的起点。ABY A ⊕ B000011101110盯着这张表看几秒钟你会发现一个很有意思的规律当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和一个NMOSPMOS的源极接VDDNMOS的源极接地两个栅极连在一起作为输入两个漏极连在一起作为输出。PMOS的衬底接VDDNMOS的衬底接地。第三步是搭建传输门。传输门就是PMOS和NMOS的源漏并联。具体来说NMOS的源极和PMOS的源极连在一起作为输入端NMOS的漏极和PMOS的漏极连在一起作为输出端。NMOS的栅极接控制信号CPMOS的栅极接C的反。注意这里NMOS和PMOS的源漏是可以互换的因为传输门是双向导通的。第四步是把两个传输门和反相器按照前面的拓扑连接起来。B输入接一个反相器产生B的反B和B的反分别接两个传输门的输入端。A输入接一个反相器产生A的反A和A的反分别接两个传输门的控制端。两个传输门的输出端连在一起接一个负载电容模拟下一级电路的输入电容。仿真设置方面我通常做直流扫描和瞬态分析。直流扫描是把A和B作为变量扫描所有四种组合验证真值表。瞬态分析是给A和B加上不同的波形观察输出的延迟和波形质量。电源电压根据工艺节点选择0.18微米工艺用1.8V0.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%的面积而且匹配性更好。当然具体能不能这样做还要看工艺的设计规则允不允许。
返回列表