电路的三态机制——以MUX为例
电路中一个输出连接多个输入,需要提高输出门的驱动能力;若多个输出连接一个输入,则需要引入高阻态保证逻辑的正确性。一般 CMOS 的逻辑门单元理想状态下同一时刻总有一个连通,是无法输出高阻态的。输入高阻态需要特殊的器件,在 PDK 中一般以传输门或者三态buf方式实现。
MUX: 逻辑实现
NUX 是最常见汇聚电路的信号元件,即可以使用三态也可以使用逻辑门实现。如图,MUX 拥有
想要将逻辑实现方式和 tri-state 方式比较,就要进一步量化实现所用开销。Mask 和 tree 分别使用了
从布尔运算结果看, decode 的每个输出都是 N 个变量进行与,如
输出有很多信号可以共用,并不需要重复生成,这边是综合编译中的 Resource Sharing[1]。比如
考虑如图的一种 resource sharing 方式,其中每个红色基础单元输入 2k 个信号,输出
Simple 是满足
当然这种树结构要求输入信号必须是 2 的指数,所以实际结构应当是介于红色虚线和绿色实线之间的某条曲线。
综上,decode 一共需要
MUX:三态实现
如图是 MUX-4 的 schematic,控制传输门的信号连线没有画出来。通过传输门和来汇聚信号,同时tree的每级之间插入了非门以提高驱动能力。和逻辑门相比,传输门不需要经过mask,而选择信号也可以直接输入到多级tree中进行控制。该实现一共包括
相比逻辑实现,三态实现减少了一半的晶体管数量。
设计中的三态
除了 MUX 中使用高阻态汇聚信号,时序逻辑中也广泛涉及三态电路。比如触发器的标准单元实现并非是教材中常见的将两个门连成反馈构成时序状态,而是通过时钟控制的传输门控制信号的流动。
CMOS 电路一般而言是不提供高阻态状态的,要提供高阻状态就得有特殊的电路安排,可是那样就使芯片上的电路单元不规整划一了……对于像这样的电路的实现,现在采用的策略是将其做成标准件供程序员选用,但不向程序员开放高阻状态,以免滥用——《香山源码剖析》5.1 组合电路
本文是读到以上文字才发觉自己根本不了解实际 Mux 的实现,但我现在仍有俩个疑惑:
- 为何高阻态会使得电路单元不规整划一?也许这要从 layout 的角度学习,像传输门这种连接方式也许会使得布局布线带来额外困难
- 初读以为“不开放高阻”是将高阻包装在标准元件里,输入输出端都是二态信号,但实际上 PDK 中也有提供高阻输出的 buf 标准单元,而 verilog 中高阻态实现的总线也能正常经过 VCS 和 DC 仿真。这里不开放究竟所指何物?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)