概述
选择器和分配器是组合电路中十分重要的逻辑元件。选择器用于从多个输入数据中选择一个输出;而分配器则刚好做相反的工作,将多个输入端输出到指定的输出端。
按照惯例,本文首先介绍相应的应用背景,然后讲解选择器和分配器的工作原理。
背景
选择器和分配器是电路中不可或缺的两个器件。童鞋们都知道,CPU中存在数量有限的寄存器(MIPS结构中一般是32个),CPU的ALU计算时,从寄存器中取数据进行计算。所有的寄存器都与ALU有电路连接,当我们进行计算时,如:
addi $t2, $t1, $0 // 表示计算$t0和$t1寄存器中的数之和
怎么从32个寄存器中选择$t0, $t1和$t2???
答案:选择器
对应的图示如下:
另外,我们在写C语言中的if...else...分支结构时,程序计数器PC是加4(32位,一个字宽)顺序执行(if语句中的条件成立,执行if分支)还是加其它数(if语句中的条件不成立,执行else分支),也需要选择器来选择。
再想另一个场景,当两个计算机通讯时,假设通讯的位宽为1位,我们要传输一个字节,即8位,要保证两端的数据的时序(假设发送端A传送的数据为‘0101 1101’,接收端如何保证收到的也是‘0101 1101’)?(现实的场景更可能是:用64/32位宽的总线传输64N/32N位的数据,N为正整数)
答案:一位位宽一次只能传送一个二进制,分时传送,用选择器和分配器保证顺序
对应的图示如下:
选择器
选择器(通常用MUX表示)的抽象功能图如下所示:
一般情况下,选择器包括m个数据输入端、一个使能控制端,n个(地址)控制端,和一个输出端。图中也展示了输出与输入之间的关系,其中的mi对应的是n个控制端的最小项。熟悉译码器的童鞋应该能发现什么?如果令Di = 1 (0<= i <= m),可以发现什么?
列出真值表跟容易理解,下图显示了8选1选择器的真值表:
常见的8选1选择器74LS151的逻辑符号如下图所示:
这里要注意:74LS151提供了原变量输出和反变量输出两个输出
有了基本的8选1选择器,如何构造16选1选择器和32选1选择器?套路其实是一样的,重点是地址控制端,与译码器的级联一样,低位共享,高位控制使能端。下面将16选1和32选1的选择器电路图列出,童鞋们可以自己进行分析。
分配器
分配器(通常用DEMUX表示),其抽象图如下所示:
同样,如果我们令D=1,会有什么结论?
下面仅列出1-4分配器的真值表和电路图,具体原理就不再分析了。
总结
观察选择器和分配器,其实都和译码器有关系,如果我们将选择器和分配器控制地址端看成译码器的输入,输入数据令其为1,就可以得到一些有趣的结果。另外,在计算机组成中,分配器通常和选择器联合使用。
如有错误,请大家批评指正!谢谢!