数据选择器
结构图
在结构图中,数据选择器的符号是一个等腰梯形,其中较长的底上为数个输入引脚,较短的底上为一个输出引脚。右图即为一个2选1数据选择器的结构图和其等效简化图。Sel引脚可以选择需要的信号。
此外,在很多数据选择器里,还有一个“使能”引脚用于控制器件的有效或者无效 。
数字电路中的应用
在数字电路设计中,选择端的输入信号是数字信号。在2选1数据选择器的例子中,选择端输入低电平0,则输出引脚会输出 I 0 {\displaystyle \scriptstyle I_{0}} 上的输入信号;反之,当选择端输入高电平1,则输出引脚会输出 I 1 {\displaystyle \scriptstyle I_{1}} 上的输入信号。当输入引脚的数目更多时,情况与上面类似,不过所需的选择端引脚数目变为 ⌈ log 2 --> ( n ) ⌉ {\displaystyle \scriptstyle \left\lceil \log _{2}(n)\right\rceil } 个,这里 n {\displaystyle \scriptstyle n} 是输入引脚的个数。
一个2选1数据选择器,A,B,S和Z分别表示两个输入信号、选择信号和输出信号。
一个2选1数据选择器有如下的布尔函数, A {\displaystyle \scriptstyle A} 和 B {\displaystyle \scriptstyle B} 分别表示两个输入信号, S {\displaystyle \scriptstyle S} 为选择信号, Z {\displaystyle \scriptstyle Z} 为输出信号,则有
注意,并非所有的逻辑函数直接具有以上的形式,但是所有的逻辑函数都可以使用香农展开(Shannon"s expansion)的方法将它变换为上面这种形式。逻辑函数 Z {\displaystyle Z} 可以用下面的真值表表示:
这个真值表显示,当 S = 0 {\displaystyle \scriptstyle S=0} ,那么 Z = A {\displaystyle \scriptstyle Z=A} ;而当 S = 1 {\displaystyle \scriptstyle S=1} ,则 Z = B {\displaystyle \scriptstyle Z=B} 。在具体的电路中,实现一个这样的2选1数据选择器需要2个与门、一个或门和一个非门。
更大型的数据选择器也较常见,而且正如上面描述的, n {\displaystyle n} 个输入引脚需要 ⌈ log 2 --> ( n ) ⌉ {\displaystyle \scriptstyle \left\lceil \log _{2}(n)\right\rceil } 个选择引脚。其他常见的类型有4选1、8选1和16选1等。由于数字逻辑采用二进制的数字信号,输入引脚的个数通常是2的幂。
4选1数据选择器
8选1数据选择器
16选1数据选择器
4选1数据选择器的布尔函数如下:
这样的数据选择器可以由如下的电路实现:
芯片的级联
大型的数据选择器可以由较小的数据选择器级联来实现 。例如,一个8选1数据选择器可以由两个4选1数据选择器组成,一个4选1数据选择器可以由两个2选1数据选择器组成。在前者中,两个4选1选择器的输出端连接到2选1选择器,并且两个4选1选择器和一个2选1选择器的选择端的引脚平行地接出,视为“8选1数据选择器”的“3个选择引脚”。
数据选择集成芯片
7400系列有若干种集成电路具有数据选择器功能,列表如下 :
数据选择器作为可编程逻辑器件
数据选择器同样可被用作可编程逻辑器件。通过指定输入信号的排列,用户可以创建一个定制的逻辑电路。选择引脚充当了逻辑输入的功能。当生产成本和模块化有限的时候,这种方式十分有用。
在硬件描述语言中,可以采用数据流或者行为语句对数据选择器进行描述。例如,在Verilog中,可以使用条件运算符 条件?表达式1:表达式2 或者使用 if 条件结构或 case 选择结构来实现数据选择器。
参考文献
M. Morris Mano; Charles R. Kime. Logic and Computer Design Fundamentals 4. Prentice Hall. 2008. ISBN 013198926X (英语) .
相关内容
数字用户线接入复用设备
多路复用
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值
24小时热门
推荐阅读
知识互答
关于我们
APP下载

{{item.time}} {{item.replyListShow ? '收起' : '展开'}}评论 {{curReplyId == item.id ? '取消回复' : '回复'}}