组合逻辑⚓︎
组合逻辑器件⚓︎
加法器(Adders)⚓︎
加法器分为半加器(The Half-Adder)和全加器(The Full-Adder)。
半加器⚓︎
对于半加法器,其接受两个输入\(A\)和\(B\),其有两个输出\(\Sigma\)和\(C\textrm{out}\)表示算数结果和进位结果。其逻辑表达式为
全加器⚓︎
对于全加器,其具有三个输入,其中还包含一个接受是否进位的输入\(C_\textrm{in}\)。其逻辑表达式为
如何理解
进位条件是:输入信号\(A\)和\(B\)都是高电平,或者只有一个为高电平但进位信号为高电平。
并行加法器(Parallel Adders)⚓︎
可以使用\(n\)个全加器实现多位加法的运算器。但需要注意,个位数字的加法器的\(C_\textrm{in}\)端要接地以保证输入低电平。
由这种方法构成的加法器存在延迟:假设单个全加器从信号输入到进位信号输出的时间间隔为\(t_p\),则\(n\)位加法器的延时为
超前进位加法器(The Look-Ahead Carry Adder)⚓︎
假设第\(i\)位运算的输入为\(A_i\)和\(B_i\),输出为\(\Sigma _i\)和\(C_i\),则:
如果\(A_iB_i=1\),则不论前一位输出\(C_{i-1}\)的值如何,输出\(C_i=1\)必然成立;又若\(A\oplus B=1\),则不论前一位输出\(C_{i-1}\)的值如何,输出\(C_i=C_{i-1}\)必然成立。
我们称前一种情况为Carry Generation,后一种情况为Carry Propagation。我们定义:
则超前进位加法器的运算可以由下面的逻辑表达式表示:
如图所示为四位超前进位加法器的一种型号,其中,\(1\)对应输入的LSB,\(4\)对应输入的MSB.
比较器(Comparators)⚓︎
上述是比较器的示意图,当且仅当\(A=B\)时,输出\(X=0\)。
对于多位数的比较器实现,可以将多个比较器的输出结果取非后进行与运算,即
输出为\(X=1\)时,证明多位数相等。
另一种比较器带有三个输出端口,他们的逻辑表达式分别是:
运用这种比较器比较多位数时,遵从先比较高位数的原则。
编码器(Encoder)⚓︎
将一系列信号转换成二进制代码。对于\(n\)位二进制代码,其有\(2^n\)中不同的组合方式。以下介绍 16-line-to-4-line 的编码器。
上图中,
-
\(EI\)为输入使能端,当其有效时(图中表现为低电平),输出端才有可能有效;
-
\(EO\)为输出使能端,当\(EI\)有效且其余输入口都无效时,其输出有效值;
-
\(GS\)端当且仅当\(EI\)端有效且所有其余输入口都有效时,其才输出有效值。
使用多片74F148实现大于8的数字编码器可以采用如下的连接方式。
解释
当高于\(7\)的数字\(n\)被按下时,右侧的\(EO\)输出无效,于是得到了数字\(n-8\)的二进制表示,此时只要在最高位\(A_3\)输出有效值即可。当按下的数字\(n\leqslant 7\)时,\(EO\)输出有效值,因此此时的输出就是\(n\)的二进制表示。注意,由于或门输出端为高电平有效,因此此处输出了原码。
除了上面的型号外,还有74HC147,是一种 Decimal-to-BCD 编码器。
由于逻辑表达式组成的原因,有时没有零对应的输入端。但这不影响结果。
为什么不影响结果
根据真值表不难得到逻辑表达式:
上面从未出现\(X_0\),因此是不影响结果的。
这种编码器常用于键盘的设计。
解码器(Decoder)⚓︎
将比特位的信号转化为数字的电路模块叫做解码器,又称译码器。图示是一种3bit解码器。
根据真值表,我们不难得出:
因此,这种解码器又称为最小项发生器。
对于输入信号与输出信号之间的关系,我们称之为解码函数。
上图是一种三位转八位解码器的实现。其中,当且仅当\(S_1,S_2,S_3\)都有效时输出端才会有输出。
利用上面的解码器,我们可以将之拓展为4转16解码器,其结构如下。
为什么可以?
对于相同的\(D_2,D_1,D_0\)输入,当\(D_3\)不同时,两种结果相差\(8\)。于是当\(D_3\)有效时,可以使左边模块不工作,通过右边模块输出\((D_2D_1D_0)_{(2)}+8_{(10)}\);当\(D_3\)输入无效时,直接在左边模块输出\((D_2D_1D_0)_{(2)}\),即可。
继续扩展,还可以得到如下的模块。
后续扩展方法类似。
十进制解码器如下图。由于BCD转十进制时存在伪码(即之前提到过的"Don't Care" Conditions),当输入是伪码时,输出均为无效。
创建日期: March 12, 2023













