解复用器与译码器应用:一路数据怎么分发,译码器怎么当通用逻辑块
更新时间:2026-09-12。本文是「集成电路大类 · 芯片设计」入门层(beginner)数字逻辑基础第三十篇。编码器、译码器与 MUX 认识了译码器/选择器的基本长相,这一篇专门把译码器和解复用器用透:它们不仅是「翻译地址」,还是实现任意逻辑、扩展片选、驱动扫描显示的万能积木。
本文要回答的问题
- 解复用器(demux)和译码器为什么本质上是同一块电路?
- 1-to-4、3-to-8 译码器内部是什么结构,使能端怎么用来级联扩展?
- 地址译码怎么选中一个存储单元或一个外设寄存器?什么是片选(chip select)?
- 为什么说「译码器 + 一个或门」能实现任意逻辑函数?这和 ROM、FPGA 的 LUT 有什么关系?
- 数码管位选、LED 阵列扫描为什么是解复用思想?
一、从译码器到解复用器:只差一个「数据输入」
回顾 n-to-2ⁿ 译码器:n 位地址输入,2ⁿ 根输出,任一时刻恰有一根对应地址的线有效(其余无效)。给它加一个使能 EN:EN=0 时所有输出都无效,EN=1 才正常译码。
只要把这个使能端改接一路输入数据 D,电路就变成了解复用器(demultiplexer,demux):被地址选中的那一路输出 = D,其余路 = 无效电平。也就是说——
**demux 就是「带使能的译码器」,数据从使能端送进去。**译码器是 demux 把数据输入固定接 1 的特例。
D ──►(EN) 3-to-8 译码/解复用
A2 A1 A0 ──►(地址) ─────────────────► Y0
► Y1
地址选中哪一路,那一路就等于 D ...
► Y7MUX 是「多入一出、地址选谁进来」,demux 正好相反:「一入多出、地址选送到哪去」。两者配对就是通信里的收发路选:发送端 MUX 把多路并成一路,接收端 demux 再按同一组地址拆回多路(这也是「时分复用」的硬件直觉)。
二、内部结构与使能级联:以 3-to-8 为例
3-to-8 译码器每根输出是地址的一个最小项,例如 Y5 = A2·A1̄·A0(地址 101 时 Y5 有效,低有效则取反)。用 3 输入与非门阵列即可搭出。经典器件 74x138 是低有效输出 + 三个使能(两个低有效、一个高有效,必须同时满足)。
多个使能端的价值在级联扩展。用「使能」把高位地址译成片选,就能用小译码器拼出更大的:
| 需求 | 做法 |
|---|---|
| 2-to-4 扩 3-to-8 | 最高位 A2 接到两片 2-to-4 的使能:A2=0 使能第 0 片(Y0–Y3),A2=1 使能第 1 片(Y4–Y7) |
| 3-to-8 扩 4-to-16 | 用一个 2-to-4 译高 2 位产生 4 个片选,分别使能 4 片 3-to-8 |
| 分块选外设 | 高位地址译码产生若干 cs_n,低位地址在各块内部再译 |
级联时「使能到输出」会多一级延迟,高位宽地址译码常用树形并行或让综合器优化,避免使能串成一条长链。
三、地址译码与片选:选中「这一个」外设
芯片里 CPU 发出一个地址,要决定这次访问的是哪个寄存器/哪块存储。做法就是高位地址进译码器,输出当片选(chip select, cs):
- 一块外设/存储器通常占一段地址(如 4KB),高位地址决定「哪一块」(片选),低位地址在块内决定「哪个单元」(块内译码);
- 地址落在区间内时对应
cs有效,配合读/写使能,只有被选中的器件响应,其它器件高阻/静默——这与三态总线「同一时刻只准一个发送方」是同一纪律; - RTL 里最常见的写法是
assign cs = (addr[31:12] == BASE_HI),本质就是一个相等比较器,综合出 XNOR 归约 + 与,等价于译码器的一根输出。
四、关键技巧:译码器是「最小项发生器」,能实现任意函数
这是本篇最重要的概念。n-to-2ⁿ 译码器的 2ⁿ 根输出,恰好是 n 个输入的全部最小项(m0…m_{2ⁿ−1})。而任何一个 n 变量逻辑函数,都能写成「它等于 1 的那些最小项之和」(标准 SOP)。于是:
把需要的那几根译码输出接到一个或门(或多输出时用与非-与非),就实现了任意 n 变量组合函数。
- 要改函数?不改任何门,只改「接哪几根输出」(或把那张真值表换一下);
- 这正是 ROM 实现逻辑:地址=输入,存储阵列里在「函数=1」的最小项位置存 1;
- 也是 FPGA 查找表 LUT 的原理:一个 6 输入 LUT 就是 64 bit 的小存储/译码阵列,组合数据通路讲过的「MUX 当函数发生器」与此互为一体两面;
- 对比用 MUX 实现逻辑:MUX 从输入端「选」,译码器从输出端「或」,都以真值表为中心。
代价是 n 个输入要 2ⁿ 根线,输入一多就指数膨胀,所以只适合少变量函数;大函数靠多级逻辑/共享,交给综合器做。
五、显示与阵列扫描:解复用的工程舞台
- 数码管位选:多位七段数码管不要每位一套驱动,用「段信号共享 + 位选用 demux/译码器轮流选通」,高频轮流点亮,利用视觉暂留看起来常亮(动态扫描);
- LED/键盘矩阵:行用 demux 逐行驱动、列读回,用少量 IO 扫描 N×M 个点/键;
- 存储字线:行地址译码产生字线选中一行单元,是译码器规模最大的应用,详见片上存储。
与现有篇目的衔接
总结
一句话总结:解复用器就是「带使能的译码器」——数据从使能端进去,地址选中哪一路,那一路就等于数据,MUX 与 demux 配对即收发路选;n-to-2ⁿ 译码器内部是一棵输出全部最小项的与门阵列,多个使能端可级联(高位译成片选、低位块内再译)扩展到任意路数,代价是多一级使能延迟;地址译码产生片选、只让一个器件响应,与三态总线「同一时刻一个发送方」纪律一致;而译码器最深刻的用途是当「最小项发生器」——把函数等于 1 的最小项输出或起来就能实现任意 n 变量逻辑函数,改函数只改接线/真值表,这正是 ROM 实现逻辑与 FPGA LUT 的原理(代价是 2ⁿ 指数膨胀,只适合少输入函数);数码管位选、行列矩阵扫描、存储器字线则是 demux 思想在工程里最常见的三个舞台。