首页 > 其他分享 >深入 MUX 的三态机制

深入 MUX 的三态机制

时间:2024-10-04 10:49:13浏览次数:1  
标签:逻辑 bar MUX times 深入 信号 三态

电路中一个输出连接多个输入,需要提高输出门的驱动能力;若多个输出连接一个输入,则需要引入高阻态保证逻辑的正确性。一般 CMOS 的逻辑门单元理想状态下同一时刻总有一个连通,是无法输出高阻态的。输入高阻态需要特殊的器件,在 PDK 中一般以传输门或者三态buf方式实现。

MUX: 逻辑实现

NUX 是最常见汇聚电路的信号元件,即可以使用三态也可以使用逻辑门实现。如图,MUX 拥有 \(N\) 位选择信号,\(2^N\) 待选择信号以及一位输出。实现上先用解码器将 \(N\) 位信号解码成 \(2^N\) 位,然后与待选择信号进行mask,最后通过或逻辑 tree 结构将信号汇聚。

MUX

想要将逻辑实现方式和 tri-state 方式比较,就要进一步量化实现所用开销。Mask 和 tree 分别使用了 \(2^N\) 和 \(2^N-1\) 个逻辑门,但一般量化 decode 的开销暂时还没有查询到相关资料,可能实践中这和 PDK 设计以及具体 EDA 过程高度相关。但无妨本文中先假设提出一个泛化的实现笼统感受开销差距。

从布尔运算结果看, decode 的每个输出都是 N 个变量进行与,如 \(ABC\bar{D}\)。所以每个输出都可以用 \(N-1\) 个与门构成,附之生成取反的非门,一共是 \(N\) 个非门以及 \(2^N\times (N-1)\) 个与门。

但若观察输出,发现有很多信号可以共用,并不需要重复生成。比如 \(ABC\bar{D}\) 和 \(AB\bar{C}D\),就可以共用 \(AB\) 信号。

decode

最终化简是如图的一种结构,其中每个红色基础单元输入 2k 个信号,输出 \(k^2\) 个信号,比如 k = 4 输入 \(AB\), \(\bar{A}B\), \(A\bar{B}\), \(\bar{A}\bar{B}\),\(CD\), \(\bar{C}D\), \(C\bar{D}\), \(\bar{C}\bar{D}\) 八个信号,即输入 A、B 与项以及 C、D 与项,输出 A、B、C、D 的与项一共 16 个。基础单元所用到的逻辑门数量等同输出信号个数 \(k^2\) 个。总体通过类似树结构连接。列举出求和公式后发现并不好得到解析解,这里运用数值方法求和。

function

Simple 是满足 \(2^N \times N\) 的函数关系,蓝色点则是数值求和结果,近似符合 \(2^N\) 的红色虚线,所以这部分红色单元的开销大致在 \(2^N\) 个与门这个量级。

当然这种树结构要求输入信号必须是 2 的指数,所以实际结构应当是介于红色虚线和绿色实线之间的某条曲线。

综上,decode 一共需要 \(N\) 个非门,\(2^N\) 个与门。逻辑实现的 MUX 需要大致 \(N\) 个非门和 \(3\times 2^N\) 个与门, 即 \(2N+12\times 2^N\approx 12 \times 2^N\) 个晶体管。

MUX:三态实现

如图是 MUX-4 的 schematic,控制传输门的信号连线没有画出来。通过传输门和来汇聚信号,同时tree的每级之间插入了非门以提高驱动能力。和逻辑门相比,传输门不需要经过mask,而选择信号也可以直接输入到多级tree中进行控制。该实现一共包括 \(N+2^{N}-1\) 以及 \(2^{N+1}-2\) 个传输门,总计是 \(2N+6 \times 2^N -6\approx 6 \times 2^N\) 个晶体管。

MUX-4

相比逻辑实现,三态实现减少了一半的晶体管数量。

设计中的三态

除了 MUX 中使用高阻态汇聚信号,时序逻辑中也广泛涉及三态电路。比如触发器的标准单元实现并非是教材中常见的将两个门连成反馈构成时序状态,而是通过时钟控制的传输门控制信号的流动。

CMOS 电路一般而言是不提供高阻态状态的,要提供高阻状态就得有特殊的电路安排,可是那样就使芯片上的电路单元不规整划一了……对于像这样的电路的实现,现在采用的策略是将其做成标准件供程序员选用,但不向程序员开放高阻状态,以免滥用——《香山源码剖析》5.1 组合电路

本文是读到以上文字才发觉自己根本不了解实际 Mux 的实现,但我现在仍有俩个疑惑:

  • 为何高阻态会使得电路单元不规整划一?也许这要从 layout 的角度学习,像传输门这种连接方式也许会使得布局布线带来额外困难
  • 初读以为“不开放高阻”是将高阻包装在标准元件里,输入输出端都是二态信号,但实际上 PDK 中也有提供高阻输出的 buf 标准单元,而 verilog 中高阻态实现的总线也能正常经过 VCS 和 DC 仿真。这里不开放究竟所指何物?

标签:逻辑,bar,MUX,times,深入,信号,三态
From: https://www.cnblogs.com/devil-sx/p/18446423

相关文章

  • 深入理解扩散模型的去噪过程与反向转移核
    在现代生成模型中,扩散模型(DiffusionModels,DM)已经成为一种非常强大的方法。它的基本思路是通过逐步向数据中注入噪声,使得数据逐渐变为高斯噪声分布。而在生成任务中,扩散模型通过反向扩散过程,从高斯噪声中逐步去除噪声,恢复原始数据。本文将详细介绍扩散模型的去噪过程、反向转移......
  • tmux指令记录
    tmux除了终端复用外,还有个作用是当远程ssh之后,如果要临时退出,可以通过tmux保持当前会话进程。特别是需要较长时间的下载或者cmake的时候可用。以下内容来源于AI:tmux是一个终端复用器,它允许用户在一个终端窗口中创建多个会话,并且每个会话可以包含多个窗口和窗格(pane)。这使得你可......
  • 深入理解写屏障:原理与实际应用
    在现代编程语言中,垃圾回收器(GarbageCollector,GC)是内存管理的重要工具,它帮助开发者自动回收不再使用的内存对象。然而,随着并发编程的广泛应用,程序在运行过程中会不断修改对象的引用关系,这对垃圾回收器提出了新的挑战。为了解决这一问题,写屏障(WriteBarrier)应运而生。本文将详细......
  • 深入理解扩散模型中的高斯分布参数化
    在机器学习领域,扩散模型(DiffusionModels,DM)是近年来非常热门的生成模型之一。其背后的核心思想是通过逐步向数据中注入噪声,使得数据从原始的有序状态转变为完全无序的状态(通常为标准高斯分布)。这一过程为后续的反向扩散过程(去噪)提供了基础,帮助模型从噪声中恢复出原始数据。本......
  • 63_索引管理_内核级知识点:深入探秘type底层数据结构
    type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立、分词器field的value,在底层的lucene中建立索引的时候,全部是opaquebytes类型,不区分类型的lucene是没有type的概念的,在document中,实际上将type作为一个document的field来......
  • 64_索引管理_mapping root object深入剖析
    课程大纲1、rootobject就是某个type对应的mappingjson,包括了properties,metadata(_id,_source,_type),settings(analyzer),其他settings(比如include_in_all)PUT/my_index{"mappings":{"my_type":{"properties":{}}}}2、propertiestype,index,an......
  • 理解C语言之深入理解指针(四)
    目录1.回调函数是什么?2.qsort使⽤举例2.1使⽤qsort函数排序整型数据2.2使⽤qsort排序结构数据3.qsort函数的模拟实现1.回调函数是什么?        回调函数就是⼀个通过函数指针调⽤的函数。        如果你把函数的指针(地址)作为参数传递给另⼀个......
  • 34_初识搜索引擎_search结果深入解析(search timeout机制揭秘)
    课程大纲1、我们如果发出一个搜索请求的话,会拿到一堆搜索结果,本节课,我们来讲解一下,这个搜索结果里的各种数据,都代表了什么含义2、我们来讲解一下,搜索的timeout机制,底层的原理,画图讲解GET/_search{"took":6,"timed_out":false,"_shards":{"total":6,"successful":6,......
  • 31_分布式文档系统_图解写一致性原理以及quorum机制深入剖析
    (1)consistency,one(primaryshard),all(allshard),quorum(default)我们在发送任何一个增删改操作的时候,比如说put/index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么?put/index/type/id?consistency=quorumone:要求我们这个写操作,只要有一个primaryshard是activ......
  • .Net 依赖注入深入探索,做一个DI拓展,实现一个简易灵活的 自动依赖注入框架xy
    合集-.Net框架探索(2)1..NetWeb项目中,实现轻量级本地事件总线框架09-27:悠兔机场2..Net依赖注入深入探索,做一个DI拓展,实现一个简易灵活的自动依赖注入框架09-30收起一、依赖注入相关知识1.1、依赖注入的原理和优点依赖注入(DI),是IOC控制反转思想的实现。由一个DI容器,去......