本科目所用教材为《逻辑设计基础》(第七版),所用编程语言为Verilog。

课程Overview

(。・∀・)ノ总的来看,本科目的学习大体分为两部分,也就是组合逻辑和时序逻辑。以下是窝工的课程安排:

组合逻辑的内容主要有

  1. 布尔代数等基础知识
  2. 逻辑表达式及其化简
  3. 设计二级门、多级门电路
  4. 冒险和时序图的画法
  5. 组合逻辑的应用:多路选择器,encoder,decode,奇偶校验器,可编程逻辑器件等

时序逻辑的内容主要有:

  1. 锁存器和触发器
  2. 触发器类型转换及触发器应用
  3. 寄存器与计数器
  4. 时序逻辑电路分析
  5. 利用触发器设计同步时序逻辑电路
  6. 利用中规模寄存器芯片设计

数字系统 Big Picture

数字系统与模拟系统的差异:数字系统有更高的精确度和可靠性,数字系统是离散量,而模拟系统是连续量,数字系统在设计范围内无误差,而模拟系统会有精度导致的误差,且数字系统可以重新设计以适应要求,比如处理更多数字位数,而模拟系统在精度方面改进是几乎不可能的。

数字系统设计大体分为3个部分:系统设计,逻辑设计,电路设计。

系统设计:涉及将整个系统划分成若干子系统并确定每个子系统的特性。

逻辑设计:涉及如何将基本的逻辑功能块互连起来以实现特定的功能。ep:将逻辑门和触发器互连形成二进制加法器。

电路设计:涉及如何确定特定部件之间的连接。ep:连接寄存器,二极管和晶体管形成门电路。

数字系统中的许多子系统以开关电路形式出现,开关电路具有一个或多个输入端,一个或多个输出端,输入端和输出端都取离散值。

本课程将学习两种类型开关电路:组合电路和时序电路。

组合电路类似于Markov性质,输出值仅与当前的输入值有关,而时序电路和历史的值也有关。

构成组合电路的基本功能块是逻辑门,具体而言,组合逻辑电路的涉及如下:

  1. 推导出一个真值表或代数化的逻辑等式,该真值表或逻辑等式可以把电路输出描述为电路输入的一个函数(布尔代数理论数学化)
  2. 为了经济地实现此电路,利用各种方法进行化简(代数化简,卡诺图化简等)
  3. 利用几种门电路实现化简过的逻辑等式

构成时序电路的基本存储元件是触发器,这些触发器与门电路经过互连后可以形成计数器和及寄存器

时序逻辑电路涉及:

  1. 时序逻辑分析所用的时序图、状态图、状态表等方法
  2. 设计时序电路的方法:第一步是构造用于描述输入输出序列之间关系的状态图
  3. 第二步是由状态表或状态图得到由逻辑门和触发器组成的电路

如果是完整的课程的话,还将涉及用Verilog来实现,这部分内容可能会再开一个专题介绍总结一下,毕竟明年的CPU涉及也是要迭代使用的。

第一章 数制系统与转换

数制系统与转换

原码和反码的表示范围是,而补码只是用正0表示0,所以数的表示范围是

主要是两个数制系统转化

  1. k进制和m进制间的互换(包括小数)
  2. 2进制,4进制,8进制,16进制间的快速互换

第一种常采取k进制->10进制->m进制的方法,详见P6,7。

第二种就是划分合并(从小数点开始向左右,注意补位) or 拆分。

二进制乘法和除法 P9,10

二进制利用补码进行加减法 P12

二进制编码:BCD码(有权码),余3码(无权码),格雷码(无权码)

二进制编码的转换

8421BCD码就是每四位对应一个十进制数,2421BCD码也是每四位,2421BCD表示最高位的权值不是8而是2,如同这个名字一样2421BCD,自高到低权值依次为2421。同理4221BCD码最高位权值是4,然后是权值依次是2,2,1,也就是4221。

余3码就是8421BCD码每四位减去3得到的。

二进制码转换为格雷码的方法就是保留最高位,然后依次每两位比较,进行异或运算,相同取0,不同取1。

格雷码转换成二进制类似,只是变成异或。

img

题目:

image-20211225204500841

分析:B其实是8421BCD码,而不是二进制数,还是需要再进一步转换为二进制数的。

image-20211225210218395

第二&三章 布尔代数

🦄布尔运算和集合运算相似的原因:就运算而言,集合蕴含的信息是 某个元素是否存在,对于每个元素,只能是存在or不存在,对应于位向量的0,1,因此位向量所含的信息也可以理解为 某个元素是否存在。

OverView

整体来说一下布尔代数,逻辑表达式、真值表的内在逻辑。

我们在数逻中讨论的布尔代数其实是二值布尔代数,也成为开关代数。有三种基本运算,分别为与、或、非,然后都是对应着开关器件的,也就是逻辑门,基于这三种运算,很容易推出布尔代数的基本定理和运算律(因为是Discrete and Finite,直接穷举分析真值表就能得到结论),不仅仅是数学上的成立,实际逻辑电路也是成立的。接下来由这些基本定理和定律,能得到化简定理。

我们使用这样的布尔变量来表示开关电路的输入和输出,当把基本布尔运算运用在一个或多个变量或常量上时,俺们就得到了布尔表达式,也就是逻辑表达式。布尔代数特殊之处也在于,一个布尔表达式是对应一个逻辑门电路的(定义来的),所以对于逻辑表达式,我们不单单把它看成一个关于输入的函数,还要把它看成由输入信号和逻辑门连接的电路,最后输出一个信号结果。

运用化简定理的时候,只是表达式的形式在变,其对应的电路在变,但是真值表是不变的,也就是输入和输出的对应关系是不变的,也就是逻辑表达式是唯一对应一个真值表的。

对于一个特定的真值表如何用逻辑表达式去表示呢,其实只要用一个逻辑表达式描述相同的输入和输出的关系就可以了,focus on ‘1’ 的话,也就是把输出为1的所有可能输入组合用或门连起来,因为不同的组合之间都是互斥的,每次只能有唯一确定的一种输入,整体又是穷尽的,所有这样得到的结果是正确的,这样去做的本质其实是香农展开定理,相当于把真值表展开了。

因式分解及展开

和之积与积之和之间转换。

普通分配定律说明了与运算可以分布与或运算上,而第二分配定律则说明了或运算可以分布于与运算上。

因式分解及展开的方法:

  1. 第二分配率:

  2. 正反项定理(本质是展开+消除蕴含项):

因式分解时,应该在使用第二分配律前先使用普通分配律。然后找这种的进行因式分解。

展开时,也是看看有无

Example P49

异或与同或运算

异或:XNOR,同或:XOR

一个重要的等式:

image-20211227203000536

这题可以利用取反来看。

蕴含定理

应用蕴含定理得到的结果取决于项被删除的先后顺序。

有时无法简单地通过删除项直接将某个表达式化简,可以考虑先用蕴含定理增加一个项,然后利用这个项删除其他项,

多变量降维:香农展开定理

对于一个逻辑表达式,每个变量的取值只有0 or 1两者可能,那么就可以对原逻辑表达式进行基本的决策分类,也就是时,得到相应的余函数,用与运算把余函数和条件结合,然后因为是穷尽且互斥的,就用或运算把两个不同情况结合到一起即可。

可能这样看会更直观一点,不考虑二值,现在来考虑有三种可能取值0,1,2,因为对于一个变量来说,不同取值是互斥的,那么可以拆成$F=(X_i==0) \cdot F_{X_i = 0} +(X_i==1) \cdot F_{X_i = 1} +(X_i==2) \cdot F_{X_i = 2} $,说白了就是离散的函数的表达形式而已。

化简技巧

合并项:存在符合这种的。

消除项:利用消去律和蕴含律。

消除因子:可以先提取公因式,然后对于剩下的因子进行消去操作,ep :

一个比较常见的模型是这种,除了公共项外,是满足消去律形式。

添加蕴含项:这个是当表达式用基本方法化简不了的时候,可以把所有可能的蕴含项写出来,然后逐个加一下康康能不能消去更多,比较经典的题目:$F=AB+A\bar C+\bar B C +B\bar C +\bar B D +B\bar D + ADE(F+G) $,这种异或形式的蕴含项添加化简。添加蕴含项化简基本都是加一个消两个这种,对应卡诺图上大概是L L I这种阶梯型。

拆项& 这种可以选择拆项然后化简,或者直接用定律,也是就,然后得到化简结果,其实这题也可以用添加蕴含项。

其实这些代数化简对应卡诺图的化简操作可以自己画出来看看,还有为啥添加不同蕴含项结果不一样的原因,都能从卡诺图中找出本质。卡诺图含的信息量是远超过代数表达式的,一般而言,肯定是最好用卡诺图化简,才知道是不是最简表达式,但是对于一般的简单情况,代数法可能会更迅速。

考试的话建议先画图,然后找到基本首要蕴含项,得到最简,然后把这一过程代数化即可,代数化和卡诺图实际操作的对应关系可以看课本106页。

等式成立的证明

布尔代数的等式证明和普通代数不同,因为布尔代数没有定义除法和减法,因此等式两边乘项和加项都是不可逆转的,所以不能这么做。

可取的方法是从等式一边化简得到另一边,或者从两边化简到一个式子。

ps:证明展开式相同也可以利用扩展至最小项

第四章 布尔代数的应用、最小项与最大项展开式

一个逻辑表达式对应唯一的真值表,代数化简不改变表达式对应的真值表,可互相化简的代数表达式具有相同的真值表,而对于最小项和最大项展开式,其实就是把真值表中出现的情况完全穷尽了,从而构造一个具有相应真值表的表达式,进而可以化简得到最简表达式。

最小项与最大项展开式

指的是什么?

是说当输入为的二进制时输出为1的乘积项组合,是说当输入为的二进制时输出为0的和项组合。

两个不同的最小项之积恒等于0,两个不同最大项之和恒等于1。

For any input combinations, there is at most one minterm will be 1, there is at most one maxterm will be 0.

原因:不同的最小项or最大项,只是有一位是不同的,这就导致了取值是互斥的。

给定一个

一个逻辑表达式的最小项和最大项的系数是互补的:

原因:若成立,由此可知,若不在最小项展开式中,那么一定在最大项展开式中。

逻辑表达式取反后的最小项和最大项:

原因:

逻辑表达式取对偶后的最小项和最大项:

原因:对偶相当于取反后每个元素再取反,所以得到的是互补项

标准最小项和最大项展开式

对于n个变量的函数,其真值表共有行,因为每行的可取,所以共有种含有n个变量的可能函数。

先从3变量最小项开始

其中的取值为

最大项为

推广得到

两个函数最小项展开式乘法

乘积为

由于交叉项乘积为0,也就是

非完全给定函数

就是真值表有无关项,然后就单独把无关项列出来就行了。例如:

二进制加法器和减法器设计

加法器:半加器与全加器

半加器就是不带进位,只对两个1位二进制数执行相加运算,通过真值表不难得到,和是异或,进位是与。全加器可由两个半加器组成,也就是多了进位的处理。

串行加法器就是必须一位一位地算,速度很慢,并行加法器利用数学推导,得出了每一位进位和其余进位的关系,也就是说一次就可以算出其余的,然后延迟的话就是两个门,因为的逻辑函数可以用二级门电路实现。

减法器也是完全类似的,

image-20211227204731998

第五章 卡诺图

OverView

卡诺图的本质是用所有或一部分输入变量的所有排列组合来把逻辑表达式以格雷码表的形式表现出来,其实就是优化的枚举。格雷码的相邻性保证了可化简、降维等一系列优良性质,信息量利用充分,而不像真值表那种基本毫无联系的线性枚举。

对应表格中填的值,是把表中对应输入变量的取值带入逻辑表达式中得到的值,可能是0/1,也可能是其他输入变量。

开关函数的最简形式

函数的最简积之和表达式定义为乘积项的和,并且满足:

  1. 乘积项的数目最少
  2. 在所有具有最少数目乘积项的表达式中,其包含的因子最少

最简积之和式or最简和之积式(是要互相比较一下的,具体的原因看第七章),更简的那个直接对应一个最简二级门电路,满足:

  1. 具有最小数目的门
  2. 具有最小数目的门输入

值得注意的是,与函数的最小展开式不同,最简积之和式并不是唯一的。

用基本首要蕴含项确定最简表达式

原理:卡诺图的化简原理是利用相邻项的合并律。相邻项由于是格雷码分布,所以只有一个变量不同,可以进行合并化简。

蕴含项:任何在函数的卡诺图上的单个1或者一组可以合并在一起的1都代表一个乘积项,该乘积项成为的蕴含项。

首要蕴含项代表乘积项的一个蕴含项如果不能和其他项合并消除一个变量,那么它称为首要蕴含项,也就是说,如果单个1在图上不和其他任何1相邻。则表示一个首要蕴含项,如果两个相邻的1在图上不被包含在4个一组的1中,那么它们也形成一个首要蕴含项,以此类推。

基本首要蕴含项:如果最小项仅被一个首要蕴含项涵盖,那么该首要蕴含项就是基本的,它肯定含在最简积之和式内,但是值得注意的是,最简积之和式可能除了基本首要蕴含项外还由其他的项构成。

通过基本首要蕴含项能确定出最简表达式,因此要研究如何得到基本首要蕴含项。

这里提供两种方法:

  1. 当卡诺图比较简单时,可以先得到所有首要蕴含项,然后找仅有一个首要蕴含项涵盖的1,那么这一项就是基本首要蕴含项。
  2. 系统的方法是,判断某个最小项是否仅被一个首要蕴含项所涵盖是,检查所有和该最小项相邻的方格,如果该最小项和与之邻近的1(无关项X也要考虑,视为1)都被一个项涵盖了,那么这个项就是基本首要蕴含项。P112的流程图很直观。

对于最简和之积式,可以先求的最简积之和,然后取反即可。

原因:可以这么看,作为所有可能表达式的取反而已,而的最简积之和式的最少项数,最小因数的积之和表达式,直接对应的最小项数,最少因数和之积表达式。

或者是直接去找0写,但是要注意和积之和不一样在于变量取值为0时,应该用表示而非

卡诺图计算:

image-20211227201758875

五变量卡诺图

康康书上的介绍,其实就是分层处理 P113

第六章 奎因-麦克拉斯基法

(挖坑)

第七章 多级门电路/与非门和或非门

电路设计可以从三方面考虑,电路级数输出数扇入数

也就是二级和多级门电路单一输出和多输出电路,以及扇入受限的电路(输入受限)

常讨论的有 二级单输出多级单输出(扇入受限)二级多输出多级多输出(扇入受限)

Overview:

既然已经掌握了化简的方法,数逻的学习始终是代数电路结合,那么接下来就到了设计电路了。那么设计电路,就要考虑一些优化问题的约束,以及不同形式的转换。本章就是来说如何设计这样的电路的。

总体可以这样分类:首先看单输出还是多输出

  1. 如果是单输出,那么是二级就能解决还是输入受限的需要多级。

    二级单输出最简电路可以先从最简与或式or最简或与式入手,对比得出最简二级与或电路,然后再转换为与非/或非门。但是如果扇入受限了,就需要合并因子、因式分解来减少扇入,但同时增加级数,也就会把二级电路增加到多级,得到对应最简多级电路后,转换为与非/或非门时要注意添加反相器的问题。

  2. 如果是多输出,也看是二级的还是输入受限需要多级。

    多输出的情况首先还是要整出来每个函数的最简二级表达式,然后就是要考虑公共项,像多输出二级这种简单情况可以从卡诺图看看,多输出多级的话就是代数法,需要对每个函数单独化简,然后对所得到的二级表达式接着合并公因式、因式分解,引入公共项。

补充:

对于或非门、最大项的设计,其实都可以转换为对于其反函数最小项的设计,然后最后取反,包括输入受限的情况,也可以利用这种思路,课本P178有例子说明。

对于二级多输出卡诺图的看法,虽然有点玄学,但是也是有些技巧的,可以这样想,既然是二级的,那么门数其实就和项数有关,而项数在卡诺图上体现为一个圈,对于目前的分别函数最简卡诺图来看,如果拆开其中的一个大项,会增加门,但是看其他函数有没有公共的部分,能减去更多门,如果有,那么就考虑可以拆项,对应代数的分解。课本P167有图可以对着理解。

一般题目对于输入受限的问题都会加上一个限制,就是门数最少,其实这个意思就是等同于要求最简形式了,没其他意思。

ps:门的数目其实是和输入数和合并公因式等有关的。

多级门电路

电路输入与输出之间串联的门的最大数值就是门的级数。所以,积之和式,和之积式的函数直接对应一个两级门电路。

与或电路的级数通常随着对推导出该电路积之和式进行因式分解而增加,但是通过提取公共项,是可以减少输入数的。

减少门数的方法可以通过合并输入得到,如P150(d),而且似乎通过因式分解之类的方法减少不了门的数目。

一般来说,为了得到最简结果,必须找出与门输出和或门输出的两种结果。(P156)

原因:例如对于二级门电路来说,逻辑函数有最大项和最小项表达式,无论是最大项还是最小项,每一项都对应一个门,最后再用与门or或门进行输出。但是化简过后两种表示门的个数可能不同ep :,或者即使是门的数量一样,输入的数量也可能有差异,如课本上的例子,这就导致了要两种情况都要找出来比较后,才能得到最简的二级门电路,三级门也是同理。

与非门和或非门

和与门、或门相比,通常与非门和或非门速度更快、需要的元件更少。

如果任何布尔函数都可以用一组逻辑运算来描述,那么就称这组逻辑运算是功能完善的。与运算、或运算、非运算显然是功能完善的,因为任何函数都可写成积之和式,由于或门可以由与门和非门实现(P157),因此与门和非门也是功能完善的,进而也可以证明与非门是功能完善的。(P158)

两级与非门、或非门电路和与或非门设计

原理:对表达式两次运用,可以得到或非表达式,对表达式运用两次,可以得到与非表达式

因此与或门(最小项)组成的二级电路通过两次取定律,就很容易转换为由与非门电路或非-或门电路或与门组成的二级电路通过两次取定律,就很容易转换为由或非门电路与非-与门电路

设计最简两级与非-与非电路的步骤:

  1. 找出函数的最简积之和式
  2. 画出对应的两级与-或电路
  3. 用与非门代替所有的门,并保留原有门的相互连接不变。如果输出门有任何作为输入的单个变量,那么将这些变量取反

以积之和式为例,与或非门其实就是先套一个非,得到和之积式,然后展开得到积之和式,然后再套一个非,得到最终的与或非表达式。

多级与非门和或非门电路设计

见课本P161

用门的替代符号转换电路

PPT中的正逻辑和负逻辑其实对应了这里的添加和消除反相器的原理。

利用定律,可以得到与非门和或非门的等效替代符号。与非门的话就是和或门输入取反是等价的,这样可以方便进行分析和设计,上一个小节的原理其实就是可以由本节推出(奇数级取反的原因)。如果是或门-或门相连or与门-与门相连(扇入受限,不然的话其实是可以合并输入的),则根据等价转换是要添加反相器保证成立。

对于扇入受限的电路,往往采取多级电路设计,因为多级电路的一个优点是可以降低门的扇入数,也就是可以通过因式分解减少输入数。对于积之和式,因式分解后如果不存在像(AB)C这种同种门相连的情况(扇入受限),是可以直接转换为与非门,而不增加电路级数的(P165)
如果扇入不受限,那么积之和式是可以直接转换为二级与非门电路的。

Example: 7.6、7.7

二级、多输出电路的设计

上面几个小节讨论的都是单一输出,这里开始多输出电路设 计学习。

核心问题还是确定一个最简的两级多输出电路,有代数法和卡诺图法。

代数法

  1. 展开积之和项进行化简得到公共项,然后对于一个逻辑函数如果展开其中一项来说,是会多一个项,但是通常多的那个项是可以消除的,因此对于两个逻辑函数,分别展开一项后,经过消除,也其实只有公共项了,这样就做到了化简的目的,减少了一个门。
  2. 直接展开表达式的项得到公共项。

Example: 7.9

卡诺图法

  1. 确定基本首要蕴含项:当检查每个卡诺图上的1是否仅被一个首要蕴含项所涵盖时。应该只需要那些没有再其他函数的卡诺图上出现的1。
  2. 选择剩余项来构成最简结果

ps:这其实不是通用方法,而是针对一些简单情况有效,详见P168

而且对于多级多输出这种方法也不是很有效。

总结

P177 8.1

第8章 用门电路设计和模拟组合电路

使用扇入受限的门设计电路

在设计二级以上的多输出电路时,通常最好对每个函数单独化简,所得到的二级表达式必须接着因式分解,以增加电路的级数,因式分解的方法就是再尽可能的情况下去引入公共项,而且因式分解的时候要注意,如果题目要求说用与非or或非实现。

门延迟和时序图

当改变逻辑电路的输入时,输出并不会立刻发生改变,这样就产生了门延迟。

时序图经常用来分析时序电路。

时序图的画法可以借鉴一下课本的图,其实就是画方格,后面也会提到具体的做法。

组合逻辑的冒险

输入信号发生一次变化只引起一个错误信号脉冲称为静态冒险

输入信号发生一次变化引起多个错误信号脉冲称为动态冒险。ps:常发生在多级电路,不同的路径有不同的传输延迟。

冒险是电路自身的特性,与电路中存在的延迟无关。如果只是不同变量的作为输入,每一个逻辑门的输入端都是不同的变量组合,这样的电路有延迟,但是不会出现冒险。但是如果一个逻辑门的两个输入端的信号存在同时向相反方向变化,则会出现竞争,将导致冒险。

冒险是延迟引起的(✔)

image-20211225210834784

三个点:发现冒险,消除冒险,画时序图

发现冒险的方法:

  1. 代数法:看表达式中同时存在原变量和反变量的变量,然后就是将其余值依次01遍历,看函数表达式的结果,如果存在的情况,就说明存在险象。
  2. 卡诺图法:找相切的圈,画切线,切线两侧的1构成的项就是险象(取最小项值对应输入值的时候)。
image-20211227153059152

消除冒险的方法:

  1. 代数法:添加冗余项
  2. 卡诺图法:在切点处添加卡诺圈

原因:把可能出现冒险的输出(一般涉及一个变量),通过增加冗余项,得到不涉及冒险变量的确定值输出,把相切的圈连起来也就是相当于添加了不涉及冒险变量的确定项。

画时序图的方法:

  1. 明确哪个变量发生变化,明确每个逻辑门的输入,因为后面的信号是由前面的信号通过门运算得出的,所以前后的信号都要明确。
  2. 画时序图时,针对一个门的两个信号,看哪个信号先改变,画出延时和延时后门的输出,并延长上一次变化和下一次变化的时差,再对门输出进行更新,重复循环即可。关于为什么可以直接延迟上一次和下一次变化时差的解释:设延时为,第n+1次变化与第n次变化的时差是,也就是的顺序其实最终效果是等价的。

逻辑电路的仿真与测试

排除逻辑电路的错误的方法是:通过输出门往回推,直到定位出错误的连接或有问题的门。

第9章 多路选择器、译码器和可编程逻辑器件

多路选择器

多路选择器有(MUX)一组数据输入端和一组控制端,控制端用于选择出一路数据并将其与输出端相连。

原理:当输入确定时,仅有一个最小项输出为1,其余均为0。

具有n个控制端和个数据端的多路选择器表达式为:

其中,个控制变量的最小项,为相应的数据输入。

多路选择器有不同类型,主要体现在输出是否取反,允许端是否加反相器。

输入不取反,就是普通的选择器,称为高有效输出,取反就是低有效输出。

然后允许端E取1时正常工作的称为允许端高有效,反之则称允许端低有效。

三态缓冲器

通过使能端来决定该路是否通路的一个元器件,可以实现选择的功能,决定信号(不管多少位宽)是否有效。具体的可以应用在选择信号输出,决定该信号是否进行输出,虽然有时候等效于一个与门的作用,但是当信号位宽不止1位时,只能用三态门来处理。

应用:三态总线(选择信号源,ep: 4个输入选1个)、管脚输入输出可编程、双向数据总线、从8421BCD码中选择被5整除的数输出


下面的部分由于书上没有对应内容,全是网课的笔记捏

因为如果全部整到图床不太现实了,图片真的太多了,所以我会只弄一部分自己觉得重要的,如果真的有需要的话可以看下面的链接的网课,基本都是网课对应部分的截图:点这里(/▽\)

译码器

image-20211012105036151

二进制译码器

image-20211012105904432

是使能端

image-20211012110035581

100是使能端

image-20211012110056132

注意:是使能端,然后都是任意取值。

image-20211012110656803

代码转换译码器

image-20211012110824042

显示译码器

image-20211012111433855 image-20211012111503200 image-20211012111517420

编码器

编码器的设计:重点是看函数的对应关系,对编码器来说,输入一般为多数,对应着输入变量所有可能组合的全部或者一部分,其实就是一部分最小项,然后对每个输出变量分别来看,就是构造不同的真值表,对于每个真值表得到对应的逻辑表达式。

与译码器不同在于,译码器其实是输入变量少,而且考虑的也是输入变量的所有可能组合,十分稠密,所以用卡诺图处理,但是对于编码器就很稀疏,而且变量太多卡诺图不好画,所以直接写出最小项来化简即可。

此外不能天真的以为把译码器和编码器只是正向反向可转换的关系,也就是天真地以为3-8译码器和8-3编码器换个方向就能互换,其实由于逻辑门是不可逆的,逻辑运算不可逆,所以没法这么做的。

image-20211012114926173

二进制编码器

image-20211012114938346 image-20211012114953696

优先编码器

image-20211012115045154 image-20211012115102449 image-20211012115119059

数据选择器

对于数据选择器译码器的区别,可以看书P203、P209的图,一个是单输出与或二级门电路,一个是多输出只用与门的电路。

数据选择器不仅可以理解为用控制端对输入数据筛选,其实还可以理解为用输入的数据对控制端筛选,只留下想要的组合(最小项)。

看上面那个的表达式,既可以用来选择,也可以用来选择,多选一数据选择器是选择控制端最小项下标数字对应的输入,设计组合逻辑电路的数据选择器是选取输入为1的下标对应数字的最小项组成逻辑函数表达式。

其实本质来看,数据选择器,就是把所有或部分的变量输入可能用与门和另外的个变量结合。利用这种特殊的形式,再去设计组合逻辑电路。

注意A2才是最高位,A2A1A0,不一定都是顺序的ABC作为输入的。

image-20211226214508688

m=n的设计

image-20211012121346825

m>n的设计

方法总结

只用1个数据选择器

  1. 香农展开式化简
  2. 因式分解法

使用多个数据选择器:部分降维,

通过香农展开式,可以降维。香农展开式就是说将n个变量函数(n变量卡诺图)转换为n-1变量函数(n-1变量卡诺图)与1个变量的组合。

其实降维也有点类似于通过固定部分变量的特定的组合来设计组合逻辑电路。

image-20211012121401111 image-20211012121456958 image-20211012121512051

除了降维以外,其实还可以直接展开合并,看下图,其实对于的表达式,通过把不含的项用这种展开来得到关于的式子,然后直接利用定义就能画出来结果了。

下面是利用多个数据选择器来实现的思路:

多个4选1数据选择器实现。

image-20211012152901811 image-20211012152916582

利用中规模译码器芯片设计组合逻辑电路

这和利用数据选择器设计的区别在于,译码器其实是直接有所有最小项的相应下标位置输出,然后对这些所有的最小项再进行处理,而数据选择器没有独立的最小项输出,其实是将最小项和输入的数据进行与运算。

主要的区别

  1. 译码器是直接利用最小项表达式or真值表来设计电路,而数据选择器是可以进行扩展的,也就是不仅限于的情况。
  2. 译码器可以多输出但是数据选择器只能设计单输出。
image-20211012190057175

地址译码器关键就是写出地址表达式,然后对比不同的项,利用译码器来进行选择。

image-20211012190151752 image-20211012190030567

数值比较器

计算机中对数据的基本处理方法:加减乘除,比较运算。

数值比较器:一种关系运算电路。能对2个n位二进制数A和B进行比较的多输入,多输出的组合逻辑电路。

比较结果:

image-20211012201757345 image-20211012194300748 image-20211012195810550 屏幕截图 2021-11-02 091708 image-20211012195824804 image-20211012200051682

奇偶校验器

奇偶校验实际应用意义:

  1. 只能检测奇数传送出错,偶数个错误检测不出来,而且不能确定错误位置,不能纠错
  2. 但是捏,数据在存储或传送过程中,发生一位错误的可能性超过90%以上,基本可以校验出结果
  3. 电路简单,容易实现,且有实际应用意义

奇偶校验有奇校验偶校验之分。对于奇校验,若数据中有奇数个“1”,则校验位为0; 对于偶校验,若数据中有偶数个“1”,则校验结果为0。奇校验偶校验都是实现约定好的,奇校验的话输入方的原数据就要是奇数个1,然后计算校验码。

image-20211012230740620

奇校验发生器是将产生位置为1,然后对所有位进行异或,原数据为奇数个1,则输出为原数据奇偶的逆,也就是0。得到校验位,然后再对校验位和数据进行奇偶校验,如果输出不为1,则说明数据传输有误。

奇校验原理:原数据奇—>inverse(通过奇偶发生器加1位1)—>get 原数据奇偶的逆,也就是校验位,应该是0—>(原数据+校验位)奇偶—>校验结果为1则说明传输正确

image-20211012204537452

第11章 锁存器与触发器

OverView

本质理解

在大规模的集成电路中,不但需要对二值逻辑进行算数运算和逻辑运算,还经常需要将这些信号和运算结果保存起来。为此,需要使用具有记忆功能的基本逻辑单元。能够存储一位二进制逻辑信号的基本单元电路应该具备以下的特点:

  1. 具有两个能自行保持的稳定状态(也就是双稳态),用来表示逻辑状态0和1,或二进制数的0和1。
  2. 可以受外界输入的控制,根据不同的输入信号,可以置成0或1的状态。

也就是说,当前的任务也就是设计一个具有双稳态性质的逻辑单元,很自然考虑基础的由两个反相器构成的反馈回路,这是存在两种稳态的,具体是哪一种是和初值有关,但是这样的简单回路缺少外部手段将其初始化为两个稳态中的一个状态,或者是从一个稳态变为另一个,也就是说还需要具有控制输入。

而在设计的过程中,应当注意的是双稳态的性质要一直保持,也就是,而不能出现的情况,因为这样就会出现震荡,不是稳态。锁存器就是利用了朴素的思路,通过用和电路的现态信号与、或进行控制。

实现了锁存器,也就是实现了稳态信号的存储和调控,进而可以设计出更多的锁存器、触发器。

如果通过时钟信号来控制,也就是输出状态只在有时钟信号输入时才改变,并不会随着数据输入的改变而改变,那么就称为是触发器,没有时钟输入端的存储单元称为锁存器。

介绍

时序开关电路的特点是输出不仅与现在的输入有关,而且与过去的一系列输入也有关,锁存器和触发器是时序电路中经常用到的存储器件,可以假设它们的状态是两种稳定状态的某一个。同时它们还具有一个或多个输入,利用这些输入可以使输出的状态发生改变。

反馈是指某个门的输出端连接到电路中另一个门的输入端,形成一个闭合的环路,时序电路一定包含有反馈电路。

振荡器可以由奇数个反相器构成,是不稳定的,那么考虑可以形成稳态的结构。

对于一个器件,应该掌握其以下的内容:

  1. 电路构成
  2. 功能表
  3. 次态方程
  4. 逻辑符号
  5. 驱动表(完成状态转换需要满足的输入条件):用于时序电路设计
  6. 状态图

image-20211220111759412

次态方程(特性方程):描述锁存器次态与它现态和输入关系的表达式。

输出方程是整体的概念,也就是说可能一整个电路不止有锁存器、触发器,输出方程看的是整体的输入和现态,和输出的关系。

驱动方程是输入方程,也就是每个触发器输入端的逻辑表达式,然后状态方程对应次态方程。

锁存器

S-R锁存器

或非门实现:对高电平敏感

与非门实现:对低电平敏感

IMG_0742(20211102-152952) IMG_0744(20211102-153014) IMG_0745(20211102-153044)

利用RS锁存器的保持特性可以设计去除开关抖动,也就是R或者S其中一个置为1后,即使震荡变成0,对输出也是没有影响的。

门控锁存器

image-20211104093431328

若将时钟信号连接到锁存器的门控端,则门控锁存器似乎可以作为触发器,但是事实上,除了空翻的问题外,如果想要用这个锁存器去实现其他功能的触发器,会出现震荡问题。(P271)

因此,电平触发是不可取的,要考虑边沿触发。

触发器

基本触发器

S-R触发器、Jk触发器、T触发器

(略)

带有附加输入端的触发器

总的来说,带有附加输入端的触发器分为三种

  1. 带异步清零/置1端
  2. 时钟使能端(一般不把时钟和使能混在一起作为时钟信号,因为会失去同步性)
  3. 利用其他输入的组合逻辑结果作为输入
IMG_0752(20211104-104259) IMG_0753(20211104-104532) IMG_0754(20211104-104804) IMG_0755(20211104-105205)

触发器类型转换

两种:代数法和卡诺图法

本质:设要求是的类型转换,本质是思路是,利用的是的输入和的组合逻辑,带入触发器的输入(也就是一个映射关系),得到等效的转换。

  1. 代数法:代数法是通过因式分解扩展形成对应项等变形,然后得到结果。一般而言,像转换为其他触发器是比较容易的。

    对于触发器而言,因为表达式里是含有的,所以从代数上对其他的触发器表达式展开,线性对应即可。对于触发器,因为,也是极为容易的,直接把触发器的逻辑表达式用逻辑门翻译一下即可。

  2. 卡诺图法:其实代数法是针对简单情况而言,一般地,两个触发器之间是没有什么显式的函数转换式的,只能利用目标的对应关系,也就是触发器的功能,和触发器,来通过的所有可能取值,得到对应的的取值,进而构建卡诺图和表达式。

    为例

    此外,还可以通过拼接驱动表,用等效作用来填卡诺图。(后面会有例子)

IMG_0756(20211104-105720) IMG_0757(20211104-105927) IMG_0758(20211104-110044)

触发器的应用

IMG_0760(20211104-110957) IMG_0761(20211104-111258)

IO

IMG_0762(20211104-111847) IMG_0764(20211104-111935)

第12章 寄存器和计数器

寄存器

寄存器是计算机的一个重要部件,用于暂时存放一组二值代码(如参加运算的数据、运算结果,指令等)

触发器控制门组成组成,就相当于触发器加了个控制端。

寄存器分为基本寄存器和移位寄存器,移位寄存器又分为单向移位寄存器和双向移位寄存器。

基本寄存器的操作:读出/写入/复位(清零)

移位寄存器的操作:读出/写入/复位(清零)/左移(右移)

基本寄存器

工作原理
IMG_0768(20211109-104311) IMG_0769(20211109-104443)
累加功能的并行加法器

方案一的并行加法器需要进行初始化清零,为什么要清零捏,是因为方案一读入的是运算后的结果,不清零的话寄存器中会残留之前的数据,清零后相当于先读入,然后再。方案二不需要初始清零,是因为方案二里是可以直接读入而不是只能读入运算后结果的。

IMG_0770(20211109-104731) IMG_0771(20211109-104951)

移位寄存器

可以和分频的那个设计进行对比,分频其实是把输出当下一个触发器的时钟信号了,而移位寄存器是把当成下一个触发器的输入。

右移是 <- 这样。

IMG_0772(20211109-105448) IMG_0774(20211109-105921)

在移位寄存器中增加反馈,则可构造计数器,具体来说有两种,环形计数器和扭环计数器,还可以作为节拍发生器。

IMG_0775(20211109-110954) image-20211225211906851 IMG_0776(20211109-110854) IMG_0778(20211109-111121)

这里译码的设计,输入是4个变量,输出就只有8个,显然是可以进行化简的。

IMG_0779(20211109-111753) IMG_0781(20211109-111812)

双向移位寄存器

本质就是把几个功能整合到一起了,通过输入的控制来实现不同功能,也就是个缝合怪。

右移就是小D赋值大Q,左移就是大D赋值小Q。

IMG_0783(20211109-112402) IMG_0784(20211109-112405) IMG_0785(20211109-112430) IMG_0786(20211109-112454) IMG_0787(20211109-112507) IMG_0788(20211109-112710)

计数器

IMG_0792(20211109-113345) IMG_0793(20211109-113414)

异步计数器

其实这个和之前的触发器设计的二分频是一样的,只是说这种二分频也是具有计数器的特性。

IMG_0794(20211109-120027)

同步计数器

image-20211220221726783

参考的设计过程:

(38条消息) 数字电路:同步计数器的设计_无机肥料的博客-CSDN博客_同步计数器的设计

具体设计的话后面会讲,也就是同步时序的设计。

补充例题

QQ图片20211226233323

C是正确的,那么什么叫做3进制减法计数器捏,是这样的,从初始状态开始,00->10->01->00这样循环,要注意,状态表示的数字顺序为,一般的也是默认下标大的为高位输出的。

节拍发生器

简单说一下设计,对于节拍发生器,异步的话就可以参考二分频,得到信号,然后用的四种组合设计。同步的话就类比环形计数器,很容易得到最后一位的表达式。

image-20211220235326420 image-20211220235407817

第十三章 时序逻辑电路分析

IMG_0790(20211109-114448)

注意下面谈的都是分析,而不是设计。

分析的话其实是比设计更简单的,因为其实状态已经由寄存器表示出来了,所以直接依次写出输入方程(驱动方程)、次态方程、输出方程,然后画出状态转换表(输入+现态=>次态和输出),如果是Mealy型的话,进一步也可化简为现态在不同输入下的(次态/输出)状态转换表,然后得到状态图。

同步时序分析

image-20211221095312659 image-20211221095348895

异步时序分析

image-20211221095148557 image-20211221113943981 image-20211221114021127

image-20211221100400375

第十四章 设计同步时序电路

设计的diagram:

  1. 给出问题的陈述,确定所要求的输入和输出序列之间的关系,建立状态转移图,得到状态表。
  2. 化简状态表得到最少状态数,先通过匹配去掉重复的行,然后建立隐含表。
  3. 如果化简后的状态表有个状态(),则需要个触发器。使每个触发器状态组合唯一对应于化简状态表中的一个状态。
  4. 把简化的状态表上的每个状态用已经赋值的触发器状态代替,就形成了状态转换表。得到的状态转换表指定了触发器的次态,而输出是由触发器的现态和输入决定的。
  5. 用驱动表合并画出触发器输出变量的卡诺图,得到输入方程。
  6. 使用可利用的逻辑门实现触发器的输入和输出方程。

状态转移图

需要记录的

Moor和Mealy型

Moor型电路中的状态总数相对要多一些,需要使用较多的触发器资源。

Moor型电路的输出只与状态有关,输出没有毛刺。

触发器输入方程设计原理:纸质笔记

隐含表化简原理:notability上面的图

设计的例子

同步模8可逆计数器

JK触发器设计时序锁

JK触发器设计同步二进制串行加法器

8421BCD码误码检测器

第十五章 利用中规模芯片设计时序电路

中规模计数器芯片

Introduction

基础的芯片有:

  1. 同步十进制加法计数器:异步清零、同步清零
  2. 同步十六进制加法计数器:异步清零、同步清零
  3. 异步2-5-10进制加法计数器:异步清零、同步清零
  4. 同步十进制加/减计数器:双时钟、单时钟
  5. 同步十六进制加/减计数器:双时钟、单时钟
image-20211222133334240

设计计数器

为什么要用计数器芯片设计计数器捏,乍一看好像ba能理解,但是仔细考虑也是有道理的。因为计数器芯片都是固定的模10或者模16,而实际情况需要的计数器可能是模的,所以是有需要去设计的。

如果是设计模更少的计数器,是需要提前终止的,也就是要利用清零的方式;如果是设计模更多的计数器,不仅会涉及到清零,还有级联的设计,也就是进位。

清零法就是利用结束的状态和清零端去实现,对于清零法的方式分为异步清零和同步清零,主要区别在于状态个数的设计,以及具体电路的设计。而置数法是利用和预置的信号输入来置零,无论异步同步都能实现。

image-20211222103805192

异步清零

image-20211222144823317

是计数使能端

同步清零

image-20211222144930234

置数法:(同步异步都可以实现)

image-20211222145032360 image-20211227132132556

这里ABC都是正确的,注意BC的实现差异,用异步清零的话是多一个状态,置数法就不用。

级联的设计

image-20211222104050662

异步2-5-10进制加法计数器

是置零端,是置9端。

image-20211222153912573

的低电平作为模5计数器的信号,其实是等价于进位作为信号的,总的来看,这个计数器的状态就是最后一位01变化,然后产生的进位到前三位,整体是按照8421码变化。

image-20211222151116783

模45是需要级联的,这里是异步清零,所以其实是多一个状态,也就是45的时候会清零。

image-20211222111634905 image-20211227130557533

注意本题的CPA使能是悬空的。

加减计数器

image-20211222162726274

可变模值计数器

异步清零,通过数值比较器的预定模值,达到累加到模值的目的,实现可变模值计数器。

image-20211222114137593

设计节拍发生器

其实就是利用译码器来让每次只有一位是0 or 1输出,实现节拍发生器的效果。

image-20211222105157826 image-20211222162140500

中规模寄存器芯片

就是把之前学的东西集成变成了芯片,对管脚控制输入即可。

这里值得注意的是输出是按照从小到大的,这与之前的计数器芯片是不同的。

image-20211222163220228

寄存器级联其实就是左移从低位取数据,右移从高位取数据。保证两片寄存器的工作方式一致。

image-20211222163803488 image-20211222164631211

序列发生器的设计

本质来说就是设计一个能输出特定信号的逻辑电路,主要的方法有:

  1. D触发器同步时序,然后输出依次为信号序列即可。
  2. 计数器 + 数据选择器
  3. 移位寄存器 + 反馈电路设计

基本思路都是把序列信号的每一位和不同状态形成对应,然后对应状态输出对应序列的值。

后记

考的比较容易,基本就复习ppt,分别把握逻辑电路设计和时序设计的point和key即可,这个笔记其实后面记的不是很全,有些证明、原理和本质都没整上去,其实这些是我写在本子上的纸质笔记了,emm后期应该也没啥时间腾上去就是,我的建议是找点题目去写,把整套流程过一遍,也会理解很多,考试一般都不是特别难,很简单的捏。

下面给个刷题的链接:

https://www.wangkejidi.com/7049.html

差不多就是这些了,over~> 本科目所用教材为《逻辑设计基础》(第七版),所用编程语言为Verilog。

课程Overview

(。・∀・)ノ总的来看,本科目的学习大体分为两部分,也就是组合逻辑和时序逻辑。以下是窝工的课程安排:

组合逻辑的内容主要有

  1. 布尔代数等基础知识
  2. 逻辑表达式及其化简
  3. 设计二级门、多级门电路
  4. 冒险和时序图的画法
  5. 组合逻辑的应用:多路选择器,encoder,decode,奇偶校验器,可编程逻辑器件等

时序逻辑的内容主要有:

  1. 锁存器和触发器
  2. 触发器类型转换及触发器应用
  3. 寄存器与计数器
  4. 时序逻辑电路分析
  5. 利用触发器设计同步时序逻辑电路
  6. 利用中规模寄存器芯片设计

数字系统 Big Picture

数字系统与模拟系统的差异:数字系统有更高的精确度和可靠性,数字系统是离散量,而模拟系统是连续量,数字系统在设计范围内无误差,而模拟系统会有精度导致的误差,且数字系统可以重新设计以适应要求,比如处理更多数字位数,而模拟系统在精度方面改进是几乎不可能的。

数字系统设计大体分为3个部分:系统设计,逻辑设计,电路设计。

系统设计:涉及将整个系统划分成若干子系统并确定每个子系统的特性。

逻辑设计:涉及如何将基本的逻辑功能块互连起来以实现特定的功能。ep:将逻辑门和触发器互连形成二进制加法器。

电路设计:涉及如何确定特定部件之间的连接。ep:连接寄存器,二极管和晶体管形成门电路。

数字系统中的许多子系统以开关电路形式出现,开关电路具有一个或多个输入端,一个或多个输出端,输入端和输出端都取离散值。

本课程将学习两种类型开关电路:组合电路和时序电路。

组合电路类似于Markov性质,输出值仅与当前的输入值有关,而时序电路和历史的值也有关。

构成组合电路的基本功能块是逻辑门,具体而言,组合逻辑电路的涉及如下:

  1. 推导出一个真值表或代数化的逻辑等式,该真值表或逻辑等式可以把电路输出描述为电路输入的一个函数(布尔代数理论数学化)
  2. 为了经济地实现此电路,利用各种方法进行化简(代数化简,卡诺图化简等)
  3. 利用几种门电路实现化简过的逻辑等式

构成时序电路的基本存储元件是触发器,这些触发器与门电路经过互连后可以形成计数器和及寄存器

时序逻辑电路涉及:

  1. 时序逻辑分析所用的时序图、状态图、状态表等方法
  2. 设计时序电路的方法:第一步是构造用于描述输入输出序列之间关系的状态图
  3. 第二步是由状态表或状态图得到由逻辑门和触发器组成的电路

如果是完整的课程的话,还将涉及用Verilog来实现,这部分内容可能会再开一个专题介绍总结一下,毕竟明年的CPU涉及也是要迭代使用的。

第一章 数制系统与转换

数制系统与转换

原码和反码的表示范围是,而补码只是用正0表示0,所以数的表示范围是

主要是两个数制系统转化

  1. k进制和m进制间的互换(包括小数)
  2. 2进制,4进制,8进制,16进制间的快速互换

第一种常采取k进制->10进制->m进制的方法,详见P6,7。

第二种就是划分合并(从小数点开始向左右,注意补位) or 拆分。

二进制乘法和除法 P9,10

二进制利用补码进行加减法 P12

二进制编码:BCD码(有权码),余3码(无权码),格雷码(无权码)

二进制编码的转换

8421BCD码就是每四位对应一个十进制数,2421BCD码也是每四位,2421BCD表示最高位的权值不是8而是2,如同这个名字一样2421BCD,自高到低权值依次为2421。同理4221BCD码最高位权值是4,然后是权值依次是2,2,1,也就是4221。

余3码就是8421BCD码每四位减去3得到的。

二进制码转换为格雷码的方法就是保留最高位,然后依次每两位比较,进行异或运算,相同取0,不同取1。

格雷码转换成二进制类似,只是变成异或。

img

题目:

image-20211225204500841

分析:B其实是8421BCD码,而不是二进制数,还是需要再进一步转换为二进制数的。

image-20211225210218395

第二&三章 布尔代数

🦄布尔运算和集合运算相似的原因:就运算而言,集合蕴含的信息是 某个元素是否存在,对于每个元素,只能是存在or不存在,对应于位向量的0,1,因此位向量所含的信息也可以理解为 某个元素是否存在。

OverView

整体来说一下布尔代数,逻辑表达式、真值表的内在逻辑。

我们在数逻中讨论的布尔代数其实是二值布尔代数,也成为开关代数。有三种基本运算,分别为与、或、非,然后都是对应着开关器件的,也就是逻辑门,基于这三种运算,很容易推出布尔代数的基本定理和运算律(因为是Discrete and Finite,直接穷举分析真值表就能得到结论),不仅仅是数学上的成立,实际逻辑电路也是成立的。接下来由这些基本定理和定律,能得到化简定理。

我们使用这样的布尔变量来表示开关电路的输入和输出,当把基本布尔运算运用在一个或多个变量或常量上时,俺们就得到了布尔表达式,也就是逻辑表达式。布尔代数特殊之处也在于,一个布尔表达式是对应一个逻辑门电路的(定义来的),所以对于逻辑表达式,我们不单单把它看成一个关于输入的函数,还要把它看成由输入信号和逻辑门连接的电路,最后输出一个信号结果。

运用化简定理的时候,只是表达式的形式在变,其对应的电路在变,但是真值表是不变的,也就是输入和输出的对应关系是不变的,也就是逻辑表达式是唯一对应一个真值表的。

对于一个特定的真值表如何用逻辑表达式去表示呢,其实只要用一个逻辑表达式描述相同的输入和输出的关系就可以了,focus on ‘1’ 的话,也就是把输出为1的所有可能输入组合用或门连起来,因为不同的组合之间都是互斥的,每次只能有唯一确定的一种输入,整体又是穷尽的,所有这样得到的结果是正确的,这样去做的本质其实是香农展开定理,相当于把真值表展开了。

因式分解及展开

和之积与积之和之间转换。

普通分配定律说明了与运算可以分布与或运算上,而第二分配定律则说明了或运算可以分布于与运算上。

因式分解及展开的方法:

  1. 第二分配率:

  2. 正反项定理(本质是展开+消除蕴含项):

因式分解时,应该在使用第二分配律前先使用普通分配律。然后找这种的进行因式分解。

展开时,也是看看有无

Example P49

异或与同或运算

异或:XNOR,同或:XOR

一个重要的等式:

image-20211227203000536

这题可以利用取反来看。

蕴含定理

应用蕴含定理得到的结果取决于项被删除的先后顺序。

有时无法简单地通过删除项直接将某个表达式化简,可以考虑先用蕴含定理增加一个项,然后利用这个项删除其他项,

多变量降维:香农展开定理

对于一个逻辑表达式,每个变量的取值只有0 or 1两者可能,那么就可以对原逻辑表达式进行基本的决策分类,也就是时,得到相应的余函数,用与运算把余函数和条件结合,然后因为是穷尽且互斥的,就用或运算把两个不同情况结合到一起即可。

可能这样看会更直观一点,不考虑二值,现在来考虑有三种可能取值0,1,2,因为对于一个变量来说,不同取值是互斥的,那么可以拆成$F=(X_i==0) \cdot F_{X_i = 0} +(X_i==1) \cdot F_{X_i = 1} +(X_i==2) \cdot F_{X_i = 2} $,说白了就是离散的函数的表达形式而已。

化简技巧

合并项:存在符合这种的。

消除项:利用消去律和蕴含律。

消除因子:可以先提取公因式,然后对于剩下的因子进行消去操作,ep :

一个比较常见的模型是这种,除了公共项外,是满足消去律形式。

添加蕴含项:这个是当表达式用基本方法化简不了的时候,可以把所有可能的蕴含项写出来,然后逐个加一下康康能不能消去更多,比较经典的题目:$F=AB+A\bar C+\bar B C +B\bar C +\bar B D +B\bar D + ADE(F+G) $,这种异或形式的蕴含项添加化简。添加蕴含项化简基本都是加一个消两个这种,对应卡诺图上大概是L L I这种阶梯型。

拆项& 这种可以选择拆项然后化简,或者直接用定律,也是就,然后得到化简结果,其实这题也可以用添加蕴含项。

其实这些代数化简对应卡诺图的化简操作可以自己画出来看看,还有为啥添加不同蕴含项结果不一样的原因,都能从卡诺图中找出本质。卡诺图含的信息量是远超过代数表达式的,一般而言,肯定是最好用卡诺图化简,才知道是不是最简表达式,但是对于一般的简单情况,代数法可能会更迅速。

考试的话建议先画图,然后找到基本首要蕴含项,得到最简,然后把这一过程代数化即可,代数化和卡诺图实际操作的对应关系可以看课本106页。

等式成立的证明

布尔代数的等式证明和普通代数不同,因为布尔代数没有定义除法和减法,因此等式两边乘项和加项都是不可逆转的,所以不能这么做。

可取的方法是从等式一边化简得到另一边,或者从两边化简到一个式子。

ps:证明展开式相同也可以利用扩展至最小项

第四章 布尔代数的应用、最小项与最大项展开式

一个逻辑表达式对应唯一的真值表,代数化简不改变表达式对应的真值表,可互相化简的代数表达式具有相同的真值表,而对于最小项和最大项展开式,其实就是把真值表中出现的情况完全穷尽了,从而构造一个具有相应真值表的表达式,进而可以化简得到最简表达式。

最小项与最大项展开式

指的是什么?

是说当输入为的二进制时输出为1的乘积项组合,是说当输入为的二进制时输出为0的和项组合。

两个不同的最小项之积恒等于0,两个不同最大项之和恒等于1。

For any input combinations, there is at most one minterm will be 1, there is at most one maxterm will be 0.

原因:不同的最小项or最大项,只是有一位是不同的,这就导致了取值是互斥的。

给定一个

一个逻辑表达式的最小项和最大项的系数是互补的:

原因:若成立,由此可知,若不在最小项展开式中,那么一定在最大项展开式中。

逻辑表达式取反后的最小项和最大项:

原因:

逻辑表达式取对偶后的最小项和最大项:

原因:对偶相当于取反后每个元素再取反,所以得到的是互补项

标准最小项和最大项展开式

对于n个变量的函数,其真值表共有行,因为每行的可取,所以共有种含有n个变量的可能函数。

先从3变量最小项开始

其中的取值为

最大项为

推广得到

两个函数最小项展开式乘法

乘积为

由于交叉项乘积为0,也就是

非完全给定函数

就是真值表有无关项,然后就单独把无关项列出来就行了。例如:

二进制加法器和减法器设计

加法器:半加器与全加器

半加器就是不带进位,只对两个1位二进制数执行相加运算,通过真值表不难得到,和是异或,进位是与。全加器可由两个半加器组成,也就是多了进位的处理。

串行加法器就是必须一位一位地算,速度很慢,并行加法器利用数学推导,得出了每一位进位和其余进位的关系,也就是说一次就可以算出其余的,然后延迟的话就是两个门,因为的逻辑函数可以用二级门电路实现。

减法器也是完全类似的,

image-20211227204731998

第五章 卡诺图

OverView

卡诺图的本质是用所有或一部分输入变量的所有排列组合来把逻辑表达式以格雷码表的形式表现出来,其实就是优化的枚举。格雷码的相邻性保证了可化简、降维等一系列优良性质,信息量利用充分,而不像真值表那种基本毫无联系的线性枚举。

对应表格中填的值,是把表中对应输入变量的取值带入逻辑表达式中得到的值,可能是0/1,也可能是其他输入变量。

开关函数的最简形式

函数的最简积之和表达式定义为乘积项的和,并且满足:

  1. 乘积项的数目最少
  2. 在所有具有最少数目乘积项的表达式中,其包含的因子最少

最简积之和式or最简和之积式(是要互相比较一下的,具体的原因看第七章),更简的那个直接对应一个最简二级门电路,满足:

  1. 具有最小数目的门
  2. 具有最小数目的门输入

值得注意的是,与函数的最小展开式不同,最简积之和式并不是唯一的。

用基本首要蕴含项确定最简表达式

原理:卡诺图的化简原理是利用相邻项的合并律。相邻项由于是格雷码分布,所以只有一个变量不同,可以进行合并化简。

蕴含项:任何在函数的卡诺图上的单个1或者一组可以合并在一起的1都代表一个乘积项,该乘积项成为的蕴含项。

首要蕴含项代表乘积项的一个蕴含项如果不能和其他项合并消除一个变量,那么它称为首要蕴含项,也就是说,如果单个1在图上不和其他任何1相邻。则表示一个首要蕴含项,如果两个相邻的1在图上不被包含在4个一组的1中,那么它们也形成一个首要蕴含项,以此类推。

基本首要蕴含项:如果最小项仅被一个首要蕴含项涵盖,那么该首要蕴含项就是基本的,它肯定含在最简积之和式内,但是值得注意的是,最简积之和式可能除了基本首要蕴含项外还由其他的项构成。

通过基本首要蕴含项能确定出最简表达式,因此要研究如何得到基本首要蕴含项。

这里提供两种方法:

  1. 当卡诺图比较简单时,可以先得到所有首要蕴含项,然后找仅有一个首要蕴含项涵盖的1,那么这一项就是基本首要蕴含项。
  2. 系统的方法是,判断某个最小项是否仅被一个首要蕴含项所涵盖是,检查所有和该最小项相邻的方格,如果该最小项和与之邻近的1(无关项X也要考虑,视为1)都被一个项涵盖了,那么这个项就是基本首要蕴含项。P112的流程图很直观。

对于最简和之积式,可以先求的最简积之和,然后取反即可。

原因:可以这么看,作为所有可能表达式的取反而已,而的最简积之和式的最少项数,最小因数的积之和表达式,直接对应的最小项数,最少因数和之积表达式。

或者是直接去找0写,但是要注意和积之和不一样在于变量取值为0时,应该用表示而非

卡诺图计算:

image-20211227201758875

五变量卡诺图

康康书上的介绍,其实就是分层处理 P113

第六章 奎因-麦克拉斯基法

(挖坑)

第七章 多级门电路/与非门和或非门

电路设计可以从三方面考虑,电路级数输出数扇入数

也就是二级和多级门电路单一输出和多输出电路,以及扇入受限的电路(输入受限)

常讨论的有 二级单输出多级单输出(扇入受限)二级多输出多级多输出(扇入受限)

Overview:

既然已经掌握了化简的方法,数逻的学习始终是代数电路结合,那么接下来就到了设计电路了。那么设计电路,就要考虑一些优化问题的约束,以及不同形式的转换。本章就是来说如何设计这样的电路的。

总体可以这样分类:首先看单输出还是多输出

  1. 如果是单输出,那么是二级就能解决还是输入受限的需要多级。

    二级单输出最简电路可以先从最简与或式or最简或与式入手,对比得出最简二级与或电路,然后再转换为与非/或非门。但是如果扇入受限了,就需要合并因子、因式分解来减少扇入,但同时增加级数,也就会把二级电路增加到多级,得到对应最简多级电路后,转换为与非/或非门时要注意添加反相器的问题。

  2. 如果是多输出,也看是二级的还是输入受限需要多级。

    多输出的情况首先还是要整出来每个函数的最简二级表达式,然后就是要考虑公共项,像多输出二级这种简单情况可以从卡诺图看看,多输出多级的话就是代数法,需要对每个函数单独化简,然后对所得到的二级表达式接着合并公因式、因式分解,引入公共项。

补充:

对于或非门、最大项的设计,其实都可以转换为对于其反函数最小项的设计,然后最后取反,包括输入受限的情况,也可以利用这种思路,课本P178有例子说明。

对于二级多输出卡诺图的看法,虽然有点玄学,但是也是有些技巧的,可以这样想,既然是二级的,那么门数其实就和项数有关,而项数在卡诺图上体现为一个圈,对于目前的分别函数最简卡诺图来看,如果拆开其中的一个大项,会增加门,但是看其他函数有没有公共的部分,能减去更多门,如果有,那么就考虑可以拆项,对应代数的分解。课本P167有图可以对着理解。

一般题目对于输入受限的问题都会加上一个限制,就是门数最少,其实这个意思就是等同于要求最简形式了,没其他意思。

ps:门的数目其实是和输入数和合并公因式等有关的。

多级门电路

电路输入与输出之间串联的门的最大数值就是门的级数。所以,积之和式,和之积式的函数直接对应一个两级门电路。

与或电路的级数通常随着对推导出该电路积之和式进行因式分解而增加,但是通过提取公共项,是可以减少输入数的。

减少门数的方法可以通过合并输入得到,如P150(d),而且似乎通过因式分解之类的方法减少不了门的数目。

一般来说,为了得到最简结果,必须找出与门输出和或门输出的两种结果。(P156)

原因:例如对于二级门电路来说,逻辑函数有最大项和最小项表达式,无论是最大项还是最小项,每一项都对应一个门,最后再用与门or或门进行输出。但是化简过后两种表示门的个数可能不同ep :,或者即使是门的数量一样,输入的数量也可能有差异,如课本上的例子,这就导致了要两种情况都要找出来比较后,才能得到最简的二级门电路,三级门也是同理。

与非门和或非门

和与门、或门相比,通常与非门和或非门速度更快、需要的元件更少。

如果任何布尔函数都可以用一组逻辑运算来描述,那么就称这组逻辑运算是功能完善的。与运算、或运算、非运算显然是功能完善的,因为任何函数都可写成积之和式,由于或门可以由与门和非门实现(P157),因此与门和非门也是功能完善的,进而也可以证明与非门是功能完善的。(P158)

两级与非门、或非门电路和与或非门设计

原理:对表达式两次运用,可以得到或非表达式,对表达式运用两次,可以得到与非表达式

因此与或门(最小项)组成的二级电路通过两次取定律,就很容易转换为由与非门电路或非-或门电路或与门组成的二级电路通过两次取定律,就很容易转换为由或非门电路与非-与门电路

设计最简两级与非-与非电路的步骤:

  1. 找出函数的最简积之和式
  2. 画出对应的两级与-或电路
  3. 用与非门代替所有的门,并保留原有门的相互连接不变。如果输出门有任何作为输入的单个变量,那么将这些变量取反

以积之和式为例,与或非门其实就是先套一个非,得到和之积式,然后展开得到积之和式,然后再套一个非,得到最终的与或非表达式。

多级与非门和或非门电路设计

见课本P161

用门的替代符号转换电路

PPT中的正逻辑和负逻辑其实对应了这里的添加和消除反相器的原理。

利用定律,可以得到与非门和或非门的等效替代符号。与非门的话就是和或门输入取反是等价的,这样可以方便进行分析和设计,上一个小节的原理其实就是可以由本节推出(奇数级取反的原因)。如果是或门-或门相连or与门-与门相连(扇入受限,不然的话其实是可以合并输入的),则根据等价转换是要添加反相器保证成立。

对于扇入受限的电路,往往采取多级电路设计,因为多级电路的一个优点是可以降低门的扇入数,也就是可以通过因式分解减少输入数。对于积之和式,因式分解后如果不存在像(AB)C这种同种门相连的情况(扇入受限),是可以直接转换为与非门,而不增加电路级数的(P165)
如果扇入不受限,那么积之和式是可以直接转换为二级与非门电路的。

Example: 7.6、7.7

二级、多输出电路的设计

上面几个小节讨论的都是单一输出,这里开始多输出电路设 计学习。

核心问题还是确定一个最简的两级多输出电路,有代数法和卡诺图法。

代数法

  1. 展开积之和项进行化简得到公共项,然后对于一个逻辑函数如果展开其中一项来说,是会多一个项,但是通常多的那个项是可以消除的,因此对于两个逻辑函数,分别展开一项后,经过消除,也其实只有公共项了,这样就做到了化简的目的,减少了一个门。
  2. 直接展开表达式的项得到公共项。

Example: 7.9

卡诺图法

  1. 确定基本首要蕴含项:当检查每个卡诺图上的1是否仅被一个首要蕴含项所涵盖时。应该只需要那些没有再其他函数的卡诺图上出现的1。
  2. 选择剩余项来构成最简结果

ps:这其实不是通用方法,而是针对一些简单情况有效,详见P168

而且对于多级多输出这种方法也不是很有效。

总结

P177 8.1

第8章 用门电路设计和模拟组合电路

使用扇入受限的门设计电路

在设计二级以上的多输出电路时,通常最好对每个函数单独化简,所得到的二级表达式必须接着因式分解,以增加电路的级数,因式分解的方法就是再尽可能的情况下去引入公共项,而且因式分解的时候要注意,如果题目要求说用与非or或非实现。

门延迟和时序图

当改变逻辑电路的输入时,输出并不会立刻发生改变,这样就产生了门延迟。

时序图经常用来分析时序电路。

时序图的画法可以借鉴一下课本的图,其实就是画方格,后面也会提到具体的做法。

组合逻辑的冒险

输入信号发生一次变化只引起一个错误信号脉冲称为静态冒险

输入信号发生一次变化引起多个错误信号脉冲称为动态冒险。ps:常发生在多级电路,不同的路径有不同的传输延迟。

冒险是电路自身的特性,与电路中存在的延迟无关。如果只是不同变量的作为输入,每一个逻辑门的输入端都是不同的变量组合,这样的电路有延迟,但是不会出现冒险。但是如果一个逻辑门的两个输入端的信号存在同时向相反方向变化,则会出现竞争,将导致冒险。

冒险是延迟引起的(✔)

image-20211225210834784

三个点:发现冒险,消除冒险,画时序图

发现冒险的方法:

  1. 代数法:看表达式中同时存在原变量和反变量的变量,然后就是将其余值依次01遍历,看函数表达式的结果,如果存在的情况,就说明存在险象。
  2. 卡诺图法:找相切的圈,画切线,切线两侧的1构成的项就是险象(取最小项值对应输入值的时候)。
image-20211227153059152

消除冒险的方法:

  1. 代数法:添加冗余项
  2. 卡诺图法:在切点处添加卡诺圈

原因:把可能出现冒险的输出(一般涉及一个变量),通过增加冗余项,得到不涉及冒险变量的确定值输出,把相切的圈连起来也就是相当于添加了不涉及冒险变量的确定项。

画时序图的方法:

  1. 明确哪个变量发生变化,明确每个逻辑门的输入,因为后面的信号是由前面的信号通过门运算得出的,所以前后的信号都要明确。
  2. 画时序图时,针对一个门的两个信号,看哪个信号先改变,画出延时和延时后门的输出,并延长上一次变化和下一次变化的时差,再对门输出进行更新,重复循环即可。关于为什么可以直接延迟上一次和下一次变化时差的解释:设延时为,第n+1次变化与第n次变化的时差是,也就是的顺序其实最终效果是等价的。

逻辑电路的仿真与测试

排除逻辑电路的错误的方法是:通过输出门往回推,直到定位出错误的连接或有问题的门。

第9章 多路选择器、译码器和可编程逻辑器件

多路选择器

多路选择器有(MUX)一组数据输入端和一组控制端,控制端用于选择出一路数据并将其与输出端相连。

原理:当输入确定时,仅有一个最小项输出为1,其余均为0。

具有n个控制端和个数据端的多路选择器表达式为:

其中,个控制变量的最小项,为相应的数据输入。

多路选择器有不同类型,主要体现在输出是否取反,允许端是否加反相器。

输入不取反,就是普通的选择器,称为高有效输出,取反就是低有效输出。

然后允许端E取1时正常工作的称为允许端高有效,反之则称允许端低有效。

三态缓冲器

通过使能端来决定该路是否通路的一个元器件,可以实现选择的功能,决定信号(不管多少位宽)是否有效。具体的可以应用在选择信号输出,决定该信号是否进行输出,虽然有时候等效于一个与门的作用,但是当信号位宽不止1位时,只能用三态门来处理。

应用:三态总线(选择信号源,ep: 4个输入选1个)、管脚输入输出可编程、双向数据总线、从8421BCD码中选择被5整除的数输出


下面的部分由于书上没有对应内容,全是网课的笔记捏

因为如果全部整到图床不太现实了,图片真的太多了,所以我会只弄一部分自己觉得重要的,如果真的有需要的话可以看下面的链接的网课,基本都是网课对应部分的截图:点这里(/▽\)

译码器

image-20211012105036151

二进制译码器

image-20211012105904432

是使能端

image-20211012110035581

100是使能端

image-20211012110056132

注意:是使能端,然后都是任意取值。

image-20211012110656803

代码转换译码器

image-20211012110824042

显示译码器

image-20211012111433855 image-20211012111503200 image-20211012111517420

编码器

编码器的设计:重点是看函数的对应关系,对编码器来说,输入一般为多数,对应着输入变量所有可能组合的全部或者一部分,其实就是一部分最小项,然后对每个输出变量分别来看,就是构造不同的真值表,对于每个真值表得到对应的逻辑表达式。

与译码器不同在于,译码器其实是输入变量少,而且考虑的也是输入变量的所有可能组合,十分稠密,所以用卡诺图处理,但是对于编码器就很稀疏,而且变量太多卡诺图不好画,所以直接写出最小项来化简即可。

此外不能天真的以为把译码器和编码器只是正向反向可转换的关系,也就是天真地以为3-8译码器和8-3编码器换个方向就能互换,其实由于逻辑门是不可逆的,逻辑运算不可逆,所以没法这么做的。

image-20211012114926173

二进制编码器

image-20211012114938346 image-20211012114953696

优先编码器

image-20211012115045154 image-20211012115102449 image-20211012115119059

数据选择器

对于数据选择器译码器的区别,可以看书P203、P209的图,一个是单输出与或二级门电路,一个是多输出只用与门的电路。

数据选择器不仅可以理解为用控制端对输入数据筛选,其实还可以理解为用输入的数据对控制端筛选,只留下想要的组合(最小项)。

看上面那个的表达式,既可以用来选择,也可以用来选择,多选一数据选择器是选择控制端最小项下标数字对应的输入,设计组合逻辑电路的数据选择器是选取输入为1的下标对应数字的最小项组成逻辑函数表达式。

其实本质来看,数据选择器,就是把所有或部分的变量输入可能用与门和另外的个变量结合。利用这种特殊的形式,再去设计组合逻辑电路。

注意A2才是最高位,A2A1A0,不一定都是顺序的ABC作为输入的。

image-20211226214508688

m=n的设计

image-20211012121346825

m>n的设计

方法总结

只用1个数据选择器

  1. 香农展开式化简
  2. 因式分解法

使用多个数据选择器:部分降维,

通过香农展开式,可以降维。香农展开式就是说将n个变量函数(n变量卡诺图)转换为n-1变量函数(n-1变量卡诺图)与1个变量的组合。

其实降维也有点类似于通过固定部分变量的特定的组合来设计组合逻辑电路。

image-20211012121401111 image-20211012121456958 image-20211012121512051

除了降维以外,其实还可以直接展开合并,看下图,其实对于的表达式,通过把不含的项用这种展开来得到关于的式子,然后直接利用定义就能画出来结果了。

下面是利用多个数据选择器来实现的思路:

多个4选1数据选择器实现。

image-20211012152901811 image-20211012152916582

利用中规模译码器芯片设计组合逻辑电路

这和利用数据选择器设计的区别在于,译码器其实是直接有所有最小项的相应下标位置输出,然后对这些所有的最小项再进行处理,而数据选择器没有独立的最小项输出,其实是将最小项和输入的数据进行与运算。

主要的区别

  1. 译码器是直接利用最小项表达式or真值表来设计电路,而数据选择器是可以进行扩展的,也就是不仅限于的情况。
  2. 译码器可以多输出但是数据选择器只能设计单输出。
image-20211012190057175

地址译码器关键就是写出地址表达式,然后对比不同的项,利用译码器来进行选择。

image-20211012190151752 image-20211012190030567

数值比较器

计算机中对数据的基本处理方法:加减乘除,比较运算。

数值比较器:一种关系运算电路。能对2个n位二进制数A和B进行比较的多输入,多输出的组合逻辑电路。

比较结果:

image-20211012201757345 image-20211012194300748 image-20211012195810550 屏幕截图 2021-11-02 091708 image-20211012195824804 image-20211012200051682

奇偶校验器

奇偶校验实际应用意义:

  1. 只能检测奇数传送出错,偶数个错误检测不出来,而且不能确定错误位置,不能纠错
  2. 但是捏,数据在存储或传送过程中,发生一位错误的可能性超过90%以上,基本可以校验出结果
  3. 电路简单,容易实现,且有实际应用意义

奇偶校验有奇校验偶校验之分。对于奇校验,若数据中有奇数个“1”,则校验位为0; 对于偶校验,若数据中有偶数个“1”,则校验结果为0。奇校验偶校验都是实现约定好的,奇校验的话输入方的原数据就要是奇数个1,然后计算校验码。

image-20211012230740620

奇校验发生器是将产生位置为1,然后对所有位进行异或,原数据为奇数个1,则输出为原数据奇偶的逆,也就是0。得到校验位,然后再对校验位和数据进行奇偶校验,如果输出不为1,则说明数据传输有误。

奇校验原理:原数据奇—>inverse(通过奇偶发生器加1位1)—>get 原数据奇偶的逆,也就是校验位,应该是0—>(原数据+校验位)奇偶—>校验结果为1则说明传输正确

image-20211012204537452

第11章 锁存器与触发器

OverView

本质理解

在大规模的集成电路中,不但需要对二值逻辑进行算数运算和逻辑运算,还经常需要将这些信号和运算结果保存起来。为此,需要使用具有记忆功能的基本逻辑单元。能够存储一位二进制逻辑信号的基本单元电路应该具备以下的特点:

  1. 具有两个能自行保持的稳定状态(也就是双稳态),用来表示逻辑状态0和1,或二进制数的0和1。
  2. 可以受外界输入的控制,根据不同的输入信号,可以置成0或1的状态。

也就是说,当前的任务也就是设计一个具有双稳态性质的逻辑单元,很自然考虑基础的由两个反相器构成的反馈回路,这是存在两种稳态的,具体是哪一种是和初值有关,但是这样的简单回路缺少外部手段将其初始化为两个稳态中的一个状态,或者是从一个稳态变为另一个,也就是说还需要具有控制输入。

而在设计的过程中,应当注意的是双稳态的性质要一直保持,也就是,而不能出现的情况,因为这样就会出现震荡,不是稳态。锁存器就是利用了朴素的思路,通过用和电路的现态信号与、或进行控制。

实现了锁存器,也就是实现了稳态信号的存储和调控,进而可以设计出更多的锁存器、触发器。

如果通过时钟信号来控制,也就是输出状态只在有时钟信号输入时才改变,并不会随着数据输入的改变而改变,那么就称为是触发器,没有时钟输入端的存储单元称为锁存器。

介绍

时序开关电路的特点是输出不仅与现在的输入有关,而且与过去的一系列输入也有关,锁存器和触发器是时序电路中经常用到的存储器件,可以假设它们的状态是两种稳定状态的某一个。同时它们还具有一个或多个输入,利用这些输入可以使输出的状态发生改变。

反馈是指某个门的输出端连接到电路中另一个门的输入端,形成一个闭合的环路,时序电路一定包含有反馈电路。

振荡器可以由奇数个反相器构成,是不稳定的,那么考虑可以形成稳态的结构。

对于一个器件,应该掌握其以下的内容:

  1. 电路构成
  2. 功能表
  3. 次态方程
  4. 逻辑符号
  5. 驱动表(完成状态转换需要满足的输入条件):用于时序电路设计
  6. 状态图

image-20211220111759412

次态方程(特性方程):描述锁存器次态与它现态和输入关系的表达式。

输出方程是整体的概念,也就是说可能一整个电路不止有锁存器、触发器,输出方程看的是整体的输入和现态,和输出的关系。

驱动方程是输入方程,也就是每个触发器输入端的逻辑表达式,然后状态方程对应次态方程。

锁存器

S-R锁存器

或非门实现:对高电平敏感

与非门实现:对低电平敏感

IMG_0742(20211102-152952) IMG_0744(20211102-153014) IMG_0745(20211102-153044)

利用RS锁存器的保持特性可以设计去除开关抖动,也就是R或者S其中一个置为1后,即使震荡变成0,对输出也是没有影响的。

门控锁存器

image-20211104093431328

若将时钟信号连接到锁存器的门控端,则门控锁存器似乎可以作为触发器,但是事实上,除了空翻的问题外,如果想要用这个锁存器去实现其他功能的触发器,会出现震荡问题。(P271)

因此,电平触发是不可取的,要考虑边沿触发。

触发器

基本触发器

S-R触发器、Jk触发器、T触发器

(略)

带有附加输入端的触发器

总的来说,带有附加输入端的触发器分为三种

  1. 带异步清零/置1端
  2. 时钟使能端(一般不把时钟和使能混在一起作为时钟信号,因为会失去同步性)
  3. 利用其他输入的组合逻辑结果作为输入
IMG_0752(20211104-104259) IMG_0753(20211104-104532) IMG_0754(20211104-104804) IMG_0755(20211104-105205)

触发器类型转换

两种:代数法和卡诺图法

本质:设要求是的类型转换,本质是思路是,利用的是的输入和的组合逻辑,带入触发器的输入(也就是一个映射关系),得到等效的转换。

  1. 代数法:代数法是通过因式分解扩展形成对应项等变形,然后得到结果。一般而言,像转换为其他触发器是比较容易的。

    对于触发器而言,因为表达式里是含有的,所以从代数上对其他的触发器表达式展开,线性对应即可。对于触发器,因为,也是极为容易的,直接把触发器的逻辑表达式用逻辑门翻译一下即可。

  2. 卡诺图法:其实代数法是针对简单情况而言,一般地,两个触发器之间是没有什么显式的函数转换式的,只能利用目标的对应关系,也就是触发器的功能,和触发器,来通过的所有可能取值,得到对应的的取值,进而构建卡诺图和表达式。

    为例

    此外,还可以通过拼接驱动表,用等效作用来填卡诺图。(后面会有例子)

IMG_0756(20211104-105720) IMG_0757(20211104-105927) IMG_0758(20211104-110044)

触发器的应用

IMG_0760(20211104-110957) IMG_0761(20211104-111258)

IO

IMG_0762(20211104-111847) IMG_0764(20211104-111935)

第12章 寄存器和计数器

寄存器

寄存器是计算机的一个重要部件,用于暂时存放一组二值代码(如参加运算的数据、运算结果,指令等)

触发器控制门组成组成,就相当于触发器加了个控制端。

寄存器分为基本寄存器和移位寄存器,移位寄存器又分为单向移位寄存器和双向移位寄存器。

基本寄存器的操作:读出/写入/复位(清零)

移位寄存器的操作:读出/写入/复位(清零)/左移(右移)

基本寄存器

工作原理
IMG_0768(20211109-104311) IMG_0769(20211109-104443)
累加功能的并行加法器

方案一的并行加法器需要进行初始化清零,为什么要清零捏,是因为方案一读入的是运算后的结果,不清零的话寄存器中会残留之前的数据,清零后相当于先读入,然后再。方案二不需要初始清零,是因为方案二里是可以直接读入而不是只能读入运算后结果的。

IMG_0770(20211109-104731) IMG_0771(20211109-104951)

移位寄存器

可以和分频的那个设计进行对比,分频其实是把输出当下一个触发器的时钟信号了,而移位寄存器是把当成下一个触发器的输入。

右移是 <- 这样。

IMG_0772(20211109-105448) IMG_0774(20211109-105921)

在移位寄存器中增加反馈,则可构造计数器,具体来说有两种,环形计数器和扭环计数器,还可以作为节拍发生器。

IMG_0775(20211109-110954) image-20211225211906851 IMG_0776(20211109-110854) IMG_0778(20211109-111121)

这里译码的设计,输入是4个变量,输出就只有8个,显然是可以进行化简的。

IMG_0779(20211109-111753) IMG_0781(20211109-111812)

双向移位寄存器

本质就是把几个功能整合到一起了,通过输入的控制来实现不同功能,也就是个缝合怪。

右移就是小D赋值大Q,左移就是大D赋值小Q。

IMG_0783(20211109-112402) IMG_0784(20211109-112405) IMG_0785(20211109-112430) IMG_0786(20211109-112454) IMG_0787(20211109-112507) IMG_0788(20211109-112710)

计数器

IMG_0792(20211109-113345) IMG_0793(20211109-113414)

异步计数器

其实这个和之前的触发器设计的二分频是一样的,只是说这种二分频也是具有计数器的特性。

IMG_0794(20211109-120027)

同步计数器

image-20211220221726783

参考的设计过程:

(38条消息) 数字电路:同步计数器的设计_无机肥料的博客-CSDN博客_同步计数器的设计

具体设计的话后面会讲,也就是同步时序的设计。

补充例题

QQ图片20211226233323

C是正确的,那么什么叫做3进制减法计数器捏,是这样的,从初始状态开始,00->10->01->00这样循环,要注意,状态表示的数字顺序为,一般的也是默认下标大的为高位输出的。

节拍发生器

简单说一下设计,对于节拍发生器,异步的话就可以参考二分频,得到信号,然后用的四种组合设计。同步的话就类比环形计数器,很容易得到最后一位的表达式。

image-20211220235326420 image-20211220235407817

第十三章 时序逻辑电路分析

IMG_0790(20211109-114448)

注意下面谈的都是分析,而不是设计。

分析的话其实是比设计更简单的,因为其实状态已经由寄存器表示出来了,所以直接依次写出输入方程(驱动方程)、次态方程、输出方程,然后画出状态转换表(输入+现态=>次态和输出),如果是Mealy型的话,进一步也可化简为现态在不同输入下的(次态/输出)状态转换表,然后得到状态图。

同步时序分析

image-20211221095312659 image-20211221095348895

异步时序分析

image-20211221095148557 image-20211221113943981 image-20211221114021127

image-20211221100400375

第十四章 设计同步时序电路

设计的diagram:

  1. 给出问题的陈述,确定所要求的输入和输出序列之间的关系,建立状态转移图,得到状态表。
  2. 化简状态表得到最少状态数,先通过匹配去掉重复的行,然后建立隐含表。
  3. 如果化简后的状态表有个状态(),则需要个触发器。使每个触发器状态组合唯一对应于化简状态表中的一个状态。
  4. 把简化的状态表上的每个状态用已经赋值的触发器状态代替,就形成了状态转换表。得到的状态转换表指定了触发器的次态,而输出是由触发器的现态和输入决定的。
  5. 用驱动表合并画出触发器输出变量的卡诺图,得到输入方程。
  6. 使用可利用的逻辑门实现触发器的输入和输出方程。

状态转移图

需要记录的

Moor和Mealy型

Moor型电路中的状态总数相对要多一些,需要使用较多的触发器资源。

Moor型电路的输出只与状态有关,输出没有毛刺。

触发器输入方程设计原理:纸质笔记

隐含表化简原理:notability上面的图

设计的例子

同步模8可逆计数器

JK触发器设计时序锁

JK触发器设计同步二进制串行加法器

8421BCD码误码检测器

第十五章 利用中规模芯片设计时序电路

中规模计数器芯片

Introduction

基础的芯片有:

  1. 同步十进制加法计数器:异步清零、同步清零
  2. 同步十六进制加法计数器:异步清零、同步清零
  3. 异步2-5-10进制加法计数器:异步清零、同步清零
  4. 同步十进制加/减计数器:双时钟、单时钟
  5. 同步十六进制加/减计数器:双时钟、单时钟
image-20211222133334240

设计计数器

为什么要用计数器芯片设计计数器捏,乍一看好像ba能理解,但是仔细考虑也是有道理的。因为计数器芯片都是固定的模10或者模16,而实际情况需要的计数器可能是模的,所以是有需要去设计的。

如果是设计模更少的计数器,是需要提前终止的,也就是要利用清零的方式;如果是设计模更多的计数器,不仅会涉及到清零,还有级联的设计,也就是进位。

清零法就是利用结束的状态和清零端去实现,对于清零法的方式分为异步清零和同步清零,主要区别在于状态个数的设计,以及具体电路的设计。而置数法是利用和预置的信号输入来置零,无论异步同步都能实现。

image-20211222103805192

异步清零

image-20211222144823317

是计数使能端

同步清零

image-20211222144930234

置数法:(同步异步都可以实现)

image-20211222145032360 image-20211227132132556

这里ABC都是正确的,注意BC的实现差异,用异步清零的话是多一个状态,置数法就不用。

级联的设计

image-20211222104050662

异步2-5-10进制加法计数器

是置零端,是置9端。

image-20211222153912573

的低电平作为模5计数器的信号,其实是等价于进位作为信号的,总的来看,这个计数器的状态就是最后一位01变化,然后产生的进位到前三位,整体是按照8421码变化。

image-20211222151116783

模45是需要级联的,这里是异步清零,所以其实是多一个状态,也就是45的时候会清零。

image-20211222111634905 image-20211227130557533

注意本题的CPA使能是悬空的。

加减计数器

image-20211222162726274

可变模值计数器

异步清零,通过数值比较器的预定模值,达到累加到模值的目的,实现可变模值计数器。

image-20211222114137593

设计节拍发生器

其实就是利用译码器来让每次只有一位是0 or 1输出,实现节拍发生器的效果。

image-20211222105157826 image-20211222162140500

中规模寄存器芯片

就是把之前学的东西集成变成了芯片,对管脚控制输入即可。

这里值得注意的是输出是按照从小到大的,这与之前的计数器芯片是不同的。

image-20211222163220228

寄存器级联其实就是左移从低位取数据,右移从高位取数据。保证两片寄存器的工作方式一致。

image-20211222163803488 image-20211222164631211

序列发生器的设计

本质来说就是设计一个能输出特定信号的逻辑电路,主要的方法有:

  1. D触发器同步时序,然后输出依次为信号序列即可。
  2. 计数器 + 数据选择器
  3. 移位寄存器 + 反馈电路设计

基本思路都是把序列信号的每一位和不同状态形成对应,然后对应状态输出对应序列的值。

后记

考的比较容易,基本就复习ppt,分别把握逻辑电路设计和时序设计的point和key即可,这个笔记其实后面记的不是很全,有些证明、原理和本质都没整上去,其实这些是我写在本子上的纸质笔记了,emm后期应该也没啥时间腾上去就是,我的建议是找点题目去写,把整套流程过一遍,也会理解很多,考试一般都不是特别难,很简单的捏。

下面给个刷题的链接:

https://www.wangkejidi.com/7049.html

差不多就是这些了,over~