组合逻辑电路的设计

逻辑表达式

因为需要同时满足4个条件,因此逻辑表达式为4个条件相与,即:

[latexpage]
\begin{equation} \label{eq:main}
L=\textcircled{1} \cdot\textcircled{2}\cdot\textcircled{3}\cdot\textcircled{4}
\end{equation}
分别列些四个条件的逻辑表达式:
\begin{equation}
\textcircled{1} =(\bar{A}B+A\bar{B}+AB)=\overline{\bar{A}\bar{B}}
\end{equation}
\begin{equation}
\textcircled{2} =(\bar{A}D+A\bar{D}+\bar{A}\bar{D})=\overline{AD}
\end{equation}
\begin{equation}
\textcircled{3} =(\overline{C}D+C\overline{D})=C\odot D
\end{equation}
\begin{equation}
\textcircled{4} =(BC+\bar{B}\bar{C})=B\oplus C
\end{equation}
将上述4式代入(\ref{eq:main}),并整理可得最终结果:
\begin{equation}
L =BC\overline{D}
\end{equation}

设计译码器

译码器

功能:

输出编码对应的信号

一片74138译码器可以实现3—8线译码,也就是把3位二进制数码译成对应的(十进制)数字。

其他例题分析:

译码器——组合逻辑电路

译码器——数据分配器例题

同理,4—16线意味着把4位二进制数码译成对应的(十进制)数字,范围扩大为之前的2倍。

一片74138译码器具有8个输出端口,两片则具有16个输出端口,满足需求。

思路

用A3A2A1A0表示输入二进制码的高位到低位,将A2A1A0分别对应两片74138译码器的输入端口,此时只需要用A3来控制两片的使能端,就可将前8位与后8位分离。

最终结果

更新:思考如何不使用反相器实现电路功能

设计地址译码器

由于输入地址A0-A7与译码器中的输入地址A0-A1重复,我们用a0-a2表示译码器上的输入。

思路提示我们,A0-A7做为8根输入地址线的信号输入。

而译码器的工作原理是将输入端a0-a2所代表的数值输出到对应的端口Y0-Y7

例如:

当使能端E全部满足工作条件(有效)时,a2a1a0=010,对应的数值为2,因此输出端Y2=1有效,其他输出的皆为无效电平。

所以可以译出的码数应当是8个,而题目的要求正是译出地址段98H-9FH,总共为8个码。

因此,我们需要实现的:

  1. 当输入地址段为98H-9FH时,使译码器工作,通过控制使能端实现
  2. 分别将98H-9FH译出到相应位置

观察地址

列出需要转换的地址的数码展开:

可以预知,这8个连续地址的二进制数A0-A7应该只有末尾3位是不同的,也是上图所表现出来的A0-A2

这个真值表其实就指向了我们需要做的事情:

  1. 用A3-A7的逻辑组合控制使能端
  2. 将A0-A2传入a0-a2做为输入信号

1. 控制使能端

通过真值表可知,A3-A7为11001,也就是如下所示,当符合上述情况时,控制使能端E3有效,译码器开始工作

2. 传送输入信号

列出地址分别对应A0-A2的真值表,发现它们的顺序刚好符合0-7的规律,也就是符合译码器的工作规律。

我们只需要将A0-A2直接对应到译码器的输入端a0-a2即可。

最终结果

奇校验器


全加器

功能:

接受进位CI,将A,B,Ci相加输出到S与C0(C0是进位)

观察真值表可以直观看出,当没有进位时,输出S就反映出了A和B的奇偶性。

思路

用4个全加器接受输入信号,并通过级联的方式,继续处理输出信号并得到结果。

初步结果

不足

现在虽然解决了问题,但可以看出,目前进位端都没有利用,并且使用的全加器较多,所以可以继续改进

改进

其实通过观察可知,全加器的3个输入端的地位是一样的:都代表当前位置的1的大小,所以可以直接将输入分别送至3个全加器的8个端口上,最终结果如图:

最终结果

逻辑函数

74LS151为数据选择器:

数据选择器

功能:

通过选择,将多路数据中的一路传递到输出信号

这个集成的数据选择器的具体功能就是:通过S2S1S0控制选择,将表示的数字对应的D0-D7中某一路的数据传递到输出Y去

思路

通常来讲一片74151的输入端口只有3个:S2S1S0,因此我们需要增加第4个输入端口

首先想到增加使能端E,但一旦使能端E无效,输出就无效,不能进一步处理逻辑函数。

但我们可以直接将第4位做为输入

过程

1. 将逻辑函数分为两部分

2. 用最高位将两部分分开

ABCD从高到低对应二进制数码,那么将BCD传入输入端口S2S1S0,用A分离两部分

分析两部分并合并结果为:

最终结果

设计全加器

之前分别提到了数据选择器74151,译码器74138全加器,下面我们就开始电路设计。

思路

其实全加器的工作原理就是实现特定的组合逻辑电路

过程

通过全加器的真值表,可以得到输出S与C0的逻辑函数表达式分别为:

(注:这个latex公式对bar的渲染有些发育不良,请放大,再放大,能看到它们真的不全是ABC……)

[latexpage]
\begin{equation}
S=A\bar{B}\bar{C}+\bar{A}B\bar{C}+ABC+\bar{A}\bar{B}C
\end{equation}
\begin{equation}
C_{0}=AB\bar{C}+A\bar{B}C+\bar{A}BC+ABC
\end{equation}

即:


1. 数据选择器实现

最终结果

2. 译码器实现

可以参考文章:译码器——组合逻辑电路

最终结果

2 comments

Leave a comment

Your email address will not be published. Required fields are marked *