《数字逻辑电路》期末复习
Readme
部分参考了Clever Jimmy的笔记
数电基本不考细节,考熟练度,考前我十分担心能否写完😥
感觉考试题还是比平时作业简单一点点,也或许是有了一遍复习的buff加成,对知识点以及做题技巧更加熟悉
2023年期末考了全加器的画法,2024年期末居然又考了全加器的画法,而我完全没怎么准备这方面的内容……
不管怎样,应该比我之前设想的刚刚及格或者甚至会挂科的结果要好一点点吧…
第1章 数码与编码
Tips:
- 余三码(形式上)= 8421码 + (0011)_2,实际上值与8421码一样。如十进制数1用8421码表示:0001,用余三码表示:0100
- 两个余三码相加,若没有进位(即和≤9),则相加后的数要减3。若有进位,则相加后的数要加3.进位指超过了4位数,比如相加后由4位变成了5位数
- 由8421码转换为格雷码:
第2章 逻辑代数及逻辑函数的化简
2.1 公式法化简
重要公式:
Tips:
- 一般将其他形式的表达式转换为与或式,再进行化简。或与式可以先用对偶规则转换为与或式,化简后再用对偶规则转化为或与式。
- 化简的要求:“与”项(即乘积项)的个数最少;在满足上述条件的情况下,每个乘积项的变量数最少。
- 在公式法化简中,常出现循环对称式,而这种已是最简形式:
- 8421码转为典型格雷码:
2.2 卡诺图化简
卡诺图:
卡诺图化简:
- 画图
- 填数:在函数最小项对应的小方块填1,其他填0
- 合并:合并填1的小方块,两个方块消1个变量,4个方块消2个变量,8个方块消3个变量(4个小方块可以是田字格,也可以是长条)
- 先大后小:先找大圈合并
- 不要漏,不冗余:每一个最小项至少被合并包含过一次;每个合并的圈中,至少有一个1没有被圈过,否则这个圈就是多余的
卡诺图求反函数:
改为合并填0的小方块即可
卡诺图中根据0化简出的函数是原函数的反函数
包含无关项的逻辑函数的化简:
无关项:这一部分最小项既可以取0,也可以取1
合并的时候可以将某些无关项取为1来消除更多的变量
这种情况下求函数的反函数的时候也可能将某些无关项取为0来消除更多的变量
Tips:
- 最小项是与项,如ABC,A为低位,C为高位
- 对于所有的i,相同i的最大项与最小项互补,如M_i = 非m_i,m_i = 非M_i
- 对于所有的i,所有m_i的和与所有M_i的积互为对偶式
- 卡诺图用的是最小项。
- 不是只有边上的方格可以和另一边的方格合并,事实上,只要两个对应的行或列的码只有一个数不一样即可(注意五变量卡诺图横列上的码的对称性)。如下面这幅图中绿色的和紫色的:
- 四变量的卡诺图四个角上的数也可以成一个圈!
第3章 集成门电路与触发器
3.1 门电路的基本知识
略
3.2 TTL典型与非门电路结构
不考
3.3 TTL与非门电路的外部特性与级连
3.3.1 与非门电路的外部特性
传输延迟
定义:从输入传输到输出所需要的时间
最大和最小值的中间50%点作为时间参考点
转移特性
定义:门电路中输出电压随输入电压的变化特性
在曲线上,VOUT急剧下降时的VIN称为阈值电压VT,或称门槛电压
直流参数
3.3.2 与非门电路的级联
门电路级联:前一个器件的输出是后一个器件的输入,后一个器件是前一个器件的负载,两者相互影响
负载能力的计算(利用前一个器件的输出是后一个器件的输入即可):
I_{OH} = N * I_{IH}
I_{OL} = N * I_{IL}
当负载数量超过理论值时,门电路进入非正常工作状态。负载大于与非门承受能力时,低电平变高,高电平变低。
3.4 集电极开路(OC)与非门
线与:将两个及以上的输出直接连在一起
普通与非门的输出不能直接线与在一起,因为 Totem 输出结构的电路,当一门电路的输出为H,另一为L时,有大电流从H端流向L端,电流太大,会烧坏与非门
逻辑设计中遇到“线与”——>使用集电极开路输出(OC)的门电路:
缺点:由于 OC 门输出不是 Totem 结构,电路的上升延迟很大。
- T5 退饱和很慢。
- 对输出负载的充电电流只能通过外接的R_L来提供。因此,输出波形的上升沿时间很大。
- 采用 OC 门只适合速度较慢的电路,对于速度要求较快(例如 CPU 的数据总线),就不能使用 OC 门。
OC 门不可以和普通与非门实现线与,因为OC门在某种状态下也会发送两个普通门接在一起的情况。
3.5 三态门
引入了高阻态Z
三态门电路既保留了 Totem 输出结构,又具有 OC 门输出可以“线与”的特点
两个三态门与总线相连(线与)
若存在状态转换,则有一段时间两个三态门均位于高阻态。因为若这一小段时间两个三态门都位于正常态,则可能会有很大的电流从而破坏总线
1位双向总线驱动器(收发器)
4位双向总线驱动器
数据与电流
整体的规律是:
- 首先判断哪个三态门是输入的工作端(正常态)
- 然后判断总线是高电平还是低电平
- 如果是高电平(1态),除了正常态的输入的三态门,其余(包括高阻态)电流都朝外
- 如果是低电平(0态),除了正常态的输入的三态门,其余(包括高阻态)电流都朝里
- 电流符号
- 输入端(指输入到总线的那端,它们是三态门的输出)
- 如果是正常态的三态门,则为I_{OH}或I_{OL}
- 如果是高阻态的三态门,则为I_{OZ}
- 输出端
- 如果是正常态的三态门,则为I_{IH}或I_{IL}
- 如果是高阻态的三态门,则为I_{IZ}
- 输入端(指输入到总线的那端,它们是三态门的输出)
Tips:
环形振荡电路的工作原理:
第4章 组合逻辑电路
4.1 译码器
因为译码器输出的数中只有一个为0,所以可以根据这个性质将译码器和其他器件的使能端连接起来
功能分类
- 变量译码器:输入N位,输出2^N位
- 码制译码器:如8421码变换为循环码等
- 显示译码器:控制数码管显示
2-4变量译码器
输入2位:A为低位,B为高位
输出4位:Y_i = 0,其余的为1 当且仅当 (BA)_2 = i
输入缓冲部分:可以给输入增加一个与非门来增加缓冲,这样使得对外的负载只有一个,减轻上一级电路的负担
使能端:
当$$\overline{E}$$= 0,译码器使能(正常输出),反之禁止(输出端全为1)
译码器使能端的作用:①灵活:用于扩展;②可靠:用于连通
作用一:用于多片扩展。
- 例如用两片带使能端的2-4译码器组成3-8译码器
- 用5片带使能端的2-4译码器组成4-16译码器(四片的输出为输出,还有一片的输出来控制其他四片译码器的输入使能端)
- 32-2^32译码器怎么搭建:32片用来输出,8片用来控制使能端
作用二:使能端用作选通
针对门电路的传输延迟造成的竞争、冒险问题提出的
- 尖峰:由于缓冲与非门有延迟
- 零重叠:由于有延迟,会出现同时有两个输出端处于正常状态的情况
如果输入端的两个信号不是同时来的,即存在便宜Skew,则会导致尖峰信号更宽
可以用使能端消除延迟产生的尖峰和零重叠:加一个能覆盖输入变化的正脉冲,在输入变化期间强制输出均为1。
作用三:用作数据分配器
(?)
多级译码
为了减少负载,如二级译码:
码制译码器
定义:将一种编码转换为另一种编码的逻辑电路
BCD编码:十进制数的二进制编码(将二进制码转为十进制码)
- 不完全译码的BCD译码器
- 当ABCD = 0101-1111时,Y_{0-9}均为任意值
- 怎么由卡诺图得到Y_i的表达式:将i的位置填上1,其他非无关项的地方填上0
- 完全译码的BCD译码器
- 前面的无关项改为1,即当ABCD为0101-1111时,Y_{0-9}均为1
- 此时可以直接写表达式
显示译码器
当a=0时,a段亮;a=1时,a段灭。其他段同理
显示译码器本质上是一个 BCD 码到一个特殊的七进制数码管编码的码制译码器:
4.2 数据选择器
定义:在选择控制的信号作用下,能从多个输入数据中选择一个或多个作为输出。
4选1数据选择器
4输入,1输出,2个选择控制
注意输出Y的表达式:$$Y=\overline{S_0}\overline{S_1}D_0+S_0\overline{S_1}D_1+\overline{S_0}S_1D_2+S_0S_1D_3$$,通过与或表达式来表示选择
数据选择器的扩展
- 用双4选1选择器(无使能端)扩展成16选1选择器:
上面两个双4选1选择器选了4个数出来,下面的双4选1选择器实际上只用了左边的部分,从上面选出的4个数中选出最终的那一个数:
- 用双4选1选择器(有使能端)扩展成16选1选择器:
通过使能端直接从四个小的数据选择器中选了一个。再通过低位控制端选择最终的那个:
译码器与数据选择器实现逻辑函数
- 用译码器实现
译码器可以看作N个输入变量组成的$$2^N$$个最小项,然后从这些最小项中选择需要的用与非门等连接起来即可。如:
- 用数据选择器实现
利用卡诺图,看哪些最小项为1,哪些为0,然后通过两条总线输入输入端。如:
此外,8 选 1 数据选择器也可以实现 4 变量函数,四个变量,其中三个用在选择端,第 4 个变量放在数据输入端。将输入端变量的值代入原式,看需要输入的D_i到底是什么。如:
4.3 编码器
功能:将译码器反过来,对应输入的每一个状态,输出一个编码
常用编码器:
- 4-2编码:将输入的 4 个状态,编成 2 位二进制数码
- 8-3编码:将输入的 8 个状态,编成 3 位二进制数码
- BCD编码:将 10 个输入编成 BCD 码
4-2编码器
8421编码器
功能:将输入信号编码成8421码
输入:X_0 - X_9
输出:Y_0 - Y_3
8-3优先编码器
上述编码器存在的问题:当I1和I2同时中断(同时为0),代入表达式得A0=1, A1=1。
——>只有在互斥输入时,才使用这种编码器。即在任一时刻所有输入线中最多只允许有一个为0(4-2 编码器)或1(8421 码编码器)
——>采用优先编码器
定义:当两条或两条以上的线为0时,优先按照输入编号大的编码,称为优先编码器
注意:输入为数字(按键),输出为A_0 A_1 A_2…,且输出是反码输出(所以扩展时如果禁止高位允许低位,则A_3 = 1)
将8-3优先编码器扩展为16-4优先编码器:
应用:
- 设备按照优先等级编码,便于中断响应
- 用于键盘输入的读取
4.4 数据比较器
功能:比较A B两数,判断A>B、A<B、A=B
从高位开始逐位比较
输入:A和B的四位数字
输出:三种情况(用0表示没发生,用1表示发生)A>B A<B A=B
分段比较:分段比较是多片比较器构成更长位数的方法。比较器不仅输出比较结果,还要能接受其它片输出的结果。
4.5 奇偶校验器
奇偶校验器通过检测数据中包含奇数个1还是偶数个1,来检查数据传输后和数码记录中是否有错误的一种电路.
通过异或门构造!(也可以采用异或非门来简化线路和提高速度)
4.7 运算器(算数逻辑单元ALU)
加法器
- 一位加法器
一位半加器:不考虑低位进位输入和高位的进位输出
一位全加器:将Xn、Yn以及低位进位$$C_{n-1}$$相加,并将进位输出$$C_{n}$$
四种形式的全加器:
A. 不化简,通过真值表“1”的行直接写出$$F_{n}$$和$$C_{n}$$的逻辑表达式,全为最小项,需要三级门延迟
B. 通过真值表“0”的行直接写出$$\overline{F_n}$$和$$C_{n}$$的逻辑表达式,用卡诺图化简并得到$$\overline{C_n}$$的逻辑表达式,再求一次非得到$$F_{n}$$和$$C_{n}$$,均只用两级门延迟
C和D都是分析规律,先按照上述方式写出$$C_{n}$$的化简式子,再用$$C_{n}$$来表示$$F_{n}$$:
$$F_{n}$$为1的条件:
- $$Xn、Yn、C_{n-1}$$均为1
- 或者,$$Xn、Yn、C_{n-1}$$至少有一个为1,且$$C_n$$为0
C. $$F_{n}$$的形成需要三级门延迟,$$C_{n}$$的形成需要二级门延迟
D. $$F_{n}$$的形成需要三级门延迟,$$C_{n}$$的形成需要二级门延迟(和C的区别是从0的那行写的,再求非)
- 四位串行进位加法器
就是前一个一位全加器的进位输出是下一个全加器的低位输入
使用哪种一位全加器 | F4 | C4 |
---|---|---|
(a) | 12 | 12 |
(b) | 8 | 8 |
(c) | 9 | 8 |
(d) | 9 | 8 |
(c)(d)交叉串联更快:
- 四位并行加法器
并行加法器(超前进位加法器)各位的进位不是由前一级全加器的进位输出来提供的,而是由专门的进位门来提供的。
进位输入是由专门的“进位门”综合所有低位的加数、被加数及最低位进入输入(即C0)后提供的
(这个好麻烦TT)
引入进位传递函数$$P_i = X_i + Y_i$$和进位产生函数$$G_i = X_iY_i$$
$$C_i$$的延迟级数与位数无关,都是2级(相对与0级的C0而言)
$$F_i$$仅F1是2级,其余均为3级
- 16位加法器
A. 用4片四位并行加法器组成16位快速加法器
B. 16位并行进位加法器
四位并行加法器的输出提供$$P_m、G_m$$需要2级延迟,F需要3级延迟
则产生$$C_4 C_8 C_{12} C_{16}$$的延迟各是3级(在P_m和G_m的基础上加了一个与或非门)
F1-F4:3级
F5-F8:6级
F9-F12:9级
F13-F16:12级
算术运算逻辑单元
4位ALU的核心是4位并行加法器
第五章 同步时序电路
5.1 触发器
基本R-S触发器
R对应Q,S对应Q非
R0 S1 Q1 置1(置位Set)
R1 S0 Q0 置0(复位Reset)
R1 S1 Q 保持
R0 S0 Q1 Q非1 异常
RS由00变为11,Q和非Q下一状态不定
电位触发方式的触发器
- 电位型RS触发器
在R-S基本触发器的基础上,对输入加以控制(增加控制端E)
一、用或门增加控制端
R仍然对应Q,S仍然对应Q非
功能表除了增加E外没有变化
二、用与非门增加控制端
R对应Q非,S对应Q
功能表R0S0和R1S1的情况相对于原来的来说是相反的
E=0时,保持触发器稳定状态不被破坏
但是在E=1 R=1 S=1时,同样存在不定状态
- 电位型D触发器(也叫锁存器)
将RS的两个输入改成一个输入(这个输入用非门得到一个非的输入),并且将原来的两级与非门改成一级与或非门
D对应Q非
E:1 D:1 则Q:D Q非:D非 置数(排除了RS=00或11,消除了不定状态)
E:0 D:any 则Q:Q Q非:Q非 保持
边沿触发方式的触发器
接收时钟脉冲CP某一跳变来到时,输出才变化为输入的值
- 正边沿的D触发器:CP正跳变时,才接收输入数据
时钟正边沿跳变后,在CP=1时,输出的状态不受D变化的影响,正边沿触发器状态保持
- 负边沿的JK触发器
异步与时钟无关,同步与时钟有关
负边沿J-K触发器是利用触发器内部门电路的延迟时间不同来实现负沿触发的
需要满足t_{pd与非门} > 2*t_{pd与或非门}
J对应Q对应S_d非,K对应Q非对应R_d非
当R_d非和S_d非均为1时,置数功能Q的输出与J的输入一致
T触发器
不设置数据输入端,只要来一个时钟脉冲,触发器就翻转一次
T触发器可由D触发器和J-K触发器等构成,一般是边沿触发器
触发器的功能互换
方法:将类型A触发器转换为类型B触发器,即外部接口变为了类型B触发器的输入,所以需要用类型B触发器的输入表示类型A触发器的输入。利用卡诺图,变量为Q_n和类型B触发器的输入,填上的0/1是Q_{n+1}的值,然后化简就可以得到用类型B触发器输入表示的Q_{n+1}的表达式,再找Q_{n+1}与类型A触发器输入的关系。
正边沿D触发器的开关特性
数据建立时间t_{su}
数据保持时间t_{hold}
传输延迟参数t_{pd}:从时钟的约定时钟跳变开始,到Q发生变化为止所需的平均延迟时间(必须在时钟的高电平期间)
多个触发器组成的电路最高时钟频率:
5.2 同步时序电路的分析与设计方法
概念
- 功能表:输入输出的关系
- 激励表:从现态$$Q_n$$转变到次态$$Q_{n+1}$$,对触发器激励的要求(激励,即输入)
- 状态表与状态图:反映输入与状态转换的关系(状态Q为节点,边上为输入的值)
- 状态方程:状态转换的表达式($$Q_{n+1}$$关于$$Q_n$$的表达式)
触发器的功能表、激励表、状态表、状态图与状态方程
同步时序电路的分析
Tip: 一般使用了异或是用于加法器或者奇偶检测
分析步骤:
- 根据电路图列出触发器激励函数表达式和电路输出函数(分析由于触发器输入的变化而引起次态的变化以及输出的变化,所以必须要明确触发器的输入变化);
- 根据电路输入和触发器激励函数建立次态表达式和状态表(分析触发器状态的变化规律);
- 画出状态图和时序图(能够更直观分析状态的变化规律);
- 分析输出序列和输入序列的关系,说明时序电路的逻辑功能。
即:
- 写$$Q_{n+1}=f(输入变量, Q_n)$$,$$Z=f(输入变量, Q_n)$$
- 写出状态表,横栏为:输入变量 $$Q_n$$| $$Q_{n+1}$$ Z (或者直接为$$Q_n$$| $$Q_{n+1}$$,这个常见于有多个触发器串联且有多个Q的情况)
- 根据状态表画出状态图,边上数字的含义是:输入变量值的组合/输出变量的值
- 根据状态表和状态图画出时序图,其中一个时钟周期内变量的值是不变的。根据一个时钟周期内A B Q_n的值确定下一个时钟周期内Q_{n+1}的值和本时钟周期内Z的值
同步时序电路的设计
步骤:
- 确定输入变量和输出变量,即上图中的X_i和Z_i
- 作原始状态表:根据给定的电路设计条件构成原始状态表。
- 状态化简:原始状态表通常不是最小化状态表,它一般包含多余的状态,因此要对原始状态表进行化简。
- 使用类似 DFA 最小化的方法进行化简
- 定义对应输出不同的状态是可区分的
- 然后检测后继是否为可区分的,来判断当前状态对是否是可区分的
- 状态分配:给简化后的状态用一个二进制数来编码。
- 求出激励函数(即上图中记忆电路的输入)和输出函数(即上图中的Z_i):根据选用的触发器激励表和电路的状态表,综合出电路中各个触发器的激励函数和电路的输出函数。(找出现态Q_n、输入变量X_i与激励函数如D_i和输出函数Z_i的真值关系)
- 画逻辑图
求函数可以用卡诺图!填入的数是要求的变量在卡诺图横栏竖栏变量输入的情况下的输出情况
举例:
这个表中X是输入变量,Z是输出变量。Q_{2n}、Q_{1n}的值以及到Q_{2n+1}、Q_{1n+1}的转换是根据第三步第四步来的。激励函数是J_2 K_2 J_1 K_1,它们的值是根据Q_n到Q_{n+1}的转换而来的(借助JK触发器的激励表)。然后求J_i、K_i、Z关于X、Q_2n、Q_1n的逻辑函数可以利用观察法或者卡诺图
5.3 计数器
D 触发器实现的 4 位二进制计数器
J-K 触发器实现的 4 位二进制计数器
可逆计数器
主要增加了进位/借位信号Z:
X=1,正向技术,计满1111时,进位Z=1
X=0,逆向计数,计满0000时,借位Z=1
基本结构为$$Q_1 = XF^- + \overline{X}F^+$$
集成化的 4 位二进制计数器
用负边沿 D 触发器构成的 4 位二进制计数器:
懒得整理了,直接照搬
- CLK
- L
- T
此时的问题是片间进位信号是通过RC串行逐片传递的,这会导致计数频率不能很高
- P
此时的问题是最高位的 RC 为高电平并不表示整体进位!此时各个位的 RC 全部与起来,如果为高电平,才表示整体进位
设计计数器时要注意的问题
若要将不能自启动的计数器改为可以自启动的计数器,可以修改计数循环之外的状态,让它们也进入计数循环
5.4 寄存器
第七章 可编程逻辑电路
ROM
- 输入地址与存储信息一一对应
- 与阵列是译码器,包括全部最小项,信息表完全
存储体可以画为:或阵列
地址译码:与阵列
与阵列固定(按照00,01,10,11这样的编码,因为实际上就是译码)
或阵列可编程(要对着码表画,只画有1的地方)
码表即输入输出对应的真值表
PLA
进行了逻辑压缩,与阵列不一定产生所有的最小项,只需产生逻辑函数所需的乘积项即可
所以与或阵列均可编程!
步骤:
- 写出输出Gi基于输入Bi的逻辑表达式
- 将表达式中每个不同的与项用乘积项Pi表示,这样就转化为Gi = f(Pi)
- P项用与阵列实现,G项用或阵列实现
PLA容量表示:(输入数2N)×(P项数)×(输出数M)
PAL
与阵列可编程,或阵列固定