README数字逻辑电路笔记📒半加器全加器集成全加器乘法器多位二进制的加法器编码器的概念二进制编码器优先编码器与非门RS触发器
关于数字逻辑电路笔记,我决定全部塞在一片文章。✍️
半加器
输入:两个1位的二进制数
输出:进位+本位
特点:不考虑低位的进位。
规定符号:
- 本位和 –
S
- 半加进位 –
C
因为是1
位,所以输入只有1
或0
两种可能。那么总共就只有三种可能性:0+0=0
,0+1=1
,1+1=2
,其中1+1=2
产生了进位,本位就是0
进位是1
。
可以列出真值表(A、B为输入,S、C为输出):
A | B | S | C |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
也可以写出逻辑表达式:
S=A \oplus B
C=AB
对应的逻辑图:
平常主要是用的是半加器的逻辑符号:
全加器
全加器与半加器唯一的区别就是考虑了低位的进位,所以输入也增加了一个:低位的进位。
规定的符号:
- 低位的进位:C_{i-1}
- 向高位的进位:C_i
- 本位:S_i
对应的真值表如下:
逻辑表达式:
S_i=A_i\oplus B_i\oplus C_{i-1}
C_i=(A_i\oplus B_i)C_{i-1}+A_iB_i
全加器对应的逻辑符号:
集成全加器
集成全加器有两种,TTL的全加器和CMOS的C661全加器
- TTl:74LS183
- CMOS:C661
需要说明的是,这里的两个集成全加器各自都有两个管角是空的,这代表这几个管角没有任何功能,不用管它。
至于原因,是为了匹配插座特意设计出来的,常用的管角数量为14、16,偏偏就是没有12管角的,所以如果设计成12个管角,很可能找不到对应的插座,于是便多出来了两个管角。
集成全加器的仿真:
可以在Multism中搭建如图所示的电路来仿真全加器,在你拖拽出74LS183
集成电路的时候,你会发现系统会让你选择A|B
,这里的A和B就是74LS183
上的两个全加器,你可以选择其中的一个进行放置。
乘法器
二进制的所有运算皆基于二进制的加法器,以两位二进制相加为例。
形式如:
01*11
、11*11
这种。
所以就可以写出表达式(这里的A就是10这种两位二进制数,里面的每一位就是A_1和A_2:
A=A_1A_0
B=B_1B_0
我们假设,A*B=P
那么P=A_1A_0 * B_1B_0
类比十进制中两位数的加法可以写出这样的式子:
P_0=A_0B_0
P_1=A_1B_0+A_0B_1
因为P_1中可能携带进位,所以P_2=A_1B_1+C_1这里的C_1就是P_1=A_1B_0+A_0B_1中可能的进位。
P_3=C_2这里的C_2是P_2=A_1B_1+C_1中可能的进位。
通过这样的式字,我们可以发现两位二进制的乘法就被转化成了加法和与运算,也就是说使用全加器和与门就可以实现一个乘法器☝️🤓。
这样我们就可以写出对应的逻辑电路图(只用到了与门和加法器)。
可以在Multism中设计仿真电路图:
多位二进制的加法器
前面说到的加法器都仅限于一位的二进制之间的加法,然而对于多位二进制的加法有两种。
- 串行进位加法器
- 超前进位加法器(并行进位加法器)
- 串行进位加法器:
可以看出这种加法器就是把全加器串在了一起,每个全加器都要等待上一个全加器的高位进位输出作为自己的输入,所以会导致一个结果☝️:不能做到同时执行加法器,运行速度缓慢。
总结一下串行进位加法器的特点:
- 电路简单,容易连接
- 速度低
- 并行进位加法器
同样的,有下面的特点:
- 内部电路复杂
- 运行速度快(同时执行)
编码器的概念
编码的概念:将二进制转成十进制称之为解码,将十进制转换成二进制称之为编码。
编码器:将十进制转换成二进制的电路称之为编码器,简单来说就是将我们熟悉的十进制编译成计算机认识的二进制代码,所以叫做编码。
编码器的分类:
- 二进制编码器
- 二-十进制编码器
- 优先编码器
我们知道,一位二进制可以表示两种信息,两位二进制可以表示四种信息,三位则可以表示八种信息。也就是说,n位二进制可以表示2^n种信息。那么我们如果想要表示一个十进制,就需要二进制能表示的信息数量大于等于这个十进制的值。
也就是,2^n >= N,这里的N表示十进制的值,n则是二进制的位数。如果我们的二进制位数刚好用完了,就叫做全编码;反之,没有利用完,就叫做部分编码。
- 2^n = N – 全编码
- 2^n > N – 部分编码
二进制编码器
例如:设计一个能将I_0,I_1,I_2,…,I_7八个输入信号编成二进制代码输出的编码器,用与非门实现。
设计如下真值表:
然后写出对应的表达式:
例:Y_2=\overline{I_7}·\overline{I_6} · \overline{I_5} · I_4+\overline{I_7}·\overline{I_6}·I_5+\overline{I_7}·I_6+I_7,然后利用A+\overline{A}·B=A+B进行化简得到全部的逻辑表达式:
得到逻辑图:
这里I_0被省略不画了,只要除了I_0以外的输入都为0,就相当于输入了I_0。
优先编码器
功能:输入多个十进制数,根据优先级高低,优先取优先级最高的数字其余不看。
例如:给定优先级规则为数字越大优先级越高,那么输入多个十进制优先取数字大的作为输入,其余不看,也就是输入8、7、3这三个数,直接取8作为输入其余不看。所以下方的真值表中有八叉X
,代表输入什么都无所谓,因为比他大的树字会被优先取。
真值表:
可以写出对应的逻辑表达式:
注意这里也是根据A+\overline{A}·B=AB规则来华化简后的结果。
8线 – 3线优先编码器 74LS48:
- \overline{I_0} – \overline{I_7}:信号输入端
- \overline{Y_2}、\overline{Y_1}、\overline{Y_0}:编码输出端
- \overline{ST}:选通输入端
- Y_s:选通输出端
- \overline{Y_{ES}}:优先扩展输出端
这里加了非号,表示将所有输入和输出取非,也就是说输入从之前的1有效变成了 0 才有效。
对应的真值表:
这里的\overline{ST}这个整体是0的时候表示,ST的值是1,也就是芯片正常工作,而\overline{ST}这个整体为1的时候,也就是ST为0,就表示芯片不工作。
- Y_s:编码器工作,但是无编码请求为低电平,对应第二行。
- \overline{Y_{ES}}编码器工作,并且有编码请求时为低电平,和Y_s是互斥的。
- 在上面所有的输入中,\overline{Y_7}的优先级最高;\overline{Y_0}最低。
Multism仿真电路设计:
与非门RS触发器
一、电路组成:
这里的\overline{S_D}为置1端,称为Set;\overline{R_D}称为置零端,称为Reset。并且需要注意,\overline{Q}、Q是两个相反的输出。
只要看到输入输出为取非的符号,就需要知道这里是低电平有效。
- Q=1,\overline{Q}=0时称为触发器的1状态,即为Q=1.
- Q=0,\overline{Q}=1时称为触发器的0状态,即为Q=0.
二、逻辑功能(不考虑现态和次态)
这张图告诉我们,Set有效(置0)的时候,将Q设置为有效(置1);Reset有效时将Q设置为无效。当Set和Reset都无效就相当于输入没有更新状态不做改变,当Reset和Set都有效是一种不合理的情况,需要避免并且在逻辑上是不被允许的。
对于RS触发器,不需要死记真值表,理解Reset和Set的概念就算学会了。
三、特性表
在上述RS触发器的基础上增加了下一次的状态Q_{n+1}的真值表。
- 现态Q_n:触发器接收输入信号之前的状态。
- 次态Q_{n+1}:触发器接收到输入信号之后的状态。
现态和次态是两个相邻时间里触发器输出端的状态。
真值表:
注意⚠️:低电平(置零)有效。
约束条件:\overline{R_D}+\overline{R_S}=1,因为当两者都是零的时候触发器不允许,满足约束条件意味着有效输入。
四、特性方程
由于上面这张真值表有重复信息(Q_n和Q_{n+1}重复,没必要都写),我们可以将其化简后得到特性方程。
用卡诺图表示出来:
得到特性方程:
- Q^{n+1}=S_D+\overline{R_D}·Q^n
- 约束条件:\overline{R_{D}}+\overline{S_D}=1
五、状态转换图
X
表示0或者1两种情况。
六、驱动表
根据输出来判定输入的情况的真值表叫做驱动表。
[例1]:设触发器初始状态为0,试对应输入波形画出Q和\overline{Q}的波形。
这里\overline{Q}省略,将Q取反即可。
[例2]:信号的分时撤销和同时撤销。
上面提到,当Reset和Set同时有效也就是违反约束条件的情况,这时需要将信号调整成正常的情况,那么就会出现信号的分时撤销和延时撤销。
我们知道0为有效电平,当\overline{S_D}和\overline{R_D}都为0时同时有效,信号撤销就是:(0 -> 1)。
分时撤销:
分时撤销取决于后撤销的信号,跟正常状态相同的分析。
例如,上图中\overline{S_D}最先变成了1,就是先撤信号,那么\overline{R_D}就是后撤信号,由后撤信号决定波形,所以属于正常情况中的Reset有效的情况,结果是Q=0;见下图。
同时撤销:
同时撤销根据电路内部的延时状态等复杂情况决定谁先起作用,状态不定(竞态)。
事实证明Wordpress对Markdown中的Latex语法支持巨差,本文章阅读起来强差人意。
由于Wordpress对MD语法支持太弱,完整版移动到了Gitee仓库: https://gitee.com/CCCCOOH/logism-notes
这是嵌入式?