Site Overlay

数字逻辑(数电)笔记(上)

二进制乘除法

二进制乘法:$N$ 进制的乘法本质上就是移位加法。

例如十进制:$1213 = 12 3 + 12 (1\ll1) = 12 3 + 12 * 10 = 36 + 120 = 146$

二进制同理:

$$
\begin{align}
& 1010 * 1101 \
&= (1010 \ll 3) + (1010 \ll 2) + (1010 \ll 0)\
&= 101\ 0000 + 10\ 1000 + 1010 \
&= 1000\ 0010\
\end{align}
$$

二进制除法 加减交替法,详见:http://courseware.eduwest.com/courseware/0013/content/0002/030003.htm

BCD 码

8421 码:利用 8,4,2,1 的权值对每位数进行编码。

例如 $7 = 4 + 2 + 1$ ,编码为 $0111$

例如 $13$ 编码为 $0001\ 0011$。(而不是 $1101$)

8421 码的加法

8421 码进行加法,如果:

  1. 结果小于 9 则正确。
  2. 结果大于 9 则错误,需要加 6 修正。

为啥是加 6 修正呢?怎么不是加 5 ?

考虑 $16$ 的十六进制表示:$0001\ 0000$

再考虑 $16$ 的 BCD 表示:$0001\ 0110$

可以发现,当产生进位时,是按照十六进制的规则演算的,而 BCD 是十进制的进位规则,因此需要加 $6$ 从而修正为 BCD 码。对于不是 16 的其它数字,进位(即结果大于等于 10)的时候都需要加 6 修正。这可以通过穷举证明。

格雷码

格雷码的表示范围:$[0,15]$

格雷码的特点:相邻整数之间的格雷码只有一位变化。

typora\20201014191551_b3fe766b238d330f34e0290ab979f729.png

格雷码的构造方法:

  1. $0$ 的格雷码是 $0000$
  2. 最低位取反得到下一个格雷码。$1: 0001$
  3. 最右边的 $1$ 左边的位取反得到下一个格雷码 $2: 0011$
  4. 交替 2,3 两个规则可生成接下来的格雷码。

二进制转格雷码的方法

例如 $0111$,从左往右下标记作 $0, 1, 2, \cdots$

  1. $g_0 = b_0$
  2. $gi = b{i} \oplus b_{i-1}$

生成过程:

  1. $\underbrace{0}_{0}111$
  2. $\underbrace{01}_{1}11$
  3. $0\underbrace{11}_{0}1$
  4. $01\underbrace{11}_{0}$

所以格雷码是 $0100$

格雷码转二进制的方法: 实际上是上述的逆运算

例如:$1011$

  1. $b_0 = g_0$
  2. $b_i = gi \oplus b{i-1}$

得到结果:$1101$

循环冗余校验(CRC)

CRC 生成原理:https://www.bilibili.com/video/BV1V4411Z7VA

检验原理:

typora\20201014201929_0262d52cac44d45493c1dce9207d5f93.png

逻辑门

与门:

typora\20201014202636_f028ccf2ce08a878e878b36a32bba06a.png

或门:

typora\20201014202704_f99da85c1bee17f820106b4686cfbf4a.png

非门:

typora\20201014202754_418e203cd3a62379d62eb267cc86e661.png

与非门:

typora\20201014202821_e51ce90e90e6b23d5a0edbb81e022b4e.png

或非门:

typora\20201014202837_61f3496d9523764cf204f0c7b686ee04.png

异或门:

typora\20201014202933_b1bf1639f6d7a1202efa50f8d82ea145.png

同或门:

typora\20201014203019_f2c70f530170aaaab64a3961fe4110ac.png

三态门:

typora\20201014203137_e422937a6a6029268a39f879b77daa21.png

布尔代数系统

基本代数定律:

  1. 交换
  2. 结合
  3. 分配

运算法则:

  1. $A+0=A$
  2. $A+1=1$
  3. $A \cdot 0=0$
  4. $A \cdot 1=A$
  5. $A+A=A$
  6. $A+\bar{A}=1$
  7. $A \cdot A=A$
  8. $A \cdot \bar{A}=0$
  9. $\bar{\bar{A}}=A$
  10. $A+A B=A$
  11. $A+\bar{A} B=A+B$
  12. $(A+B)(A+C)=A+B C$

德摩根律:

  1. \bar{XY} = \bar{X} + \bar{Y}
  2. $\bar{X+Y} = \bar{X}\bar{Y}$

布尔表达式

  1. SOP 形式(乘积项之和,析取范式)
  2. 最小项之和形式(主析取范式):利用的是布尔表达式可穷举
  3. POS 形式(和项的乘积,或与表达式,合取范式)
  4. 最大项之积形式(主合取范式)

与非门用作通用件

typora\20201014204706_d71ee7933b3ea4fc110849e653e98eae.png

或非门用作通用件

typora\20201014204735_35e402223270594b93cea73ad6461bd4.png

半加器和全加器

半加器计算两数之和。全加器计算三数之和。输出的是本位和进位。

并行二进制加法器

通过若干进位级联的全加器级联一个半加器,可以得到这种加法器。缺点是进位需要一级一级传输。

超前进位加法器

原理:

typora\20201014210132_cccbf2bf09f197ccc286ba3a4316535a.png

首先看普通的并行加法器(如图),其进位输出表达式如下:

全加器 1 :
$$
C{\text {out } 1}=C{\mathrm{g} 1}+C{\mathrm{pl}} C{\text {in } 1}
$$
全加器 2 :
$$
\begin{aligned}
C{\mathrm{in} 2} &=C{\text {out } 1} \
C{\text {out } 2} &=C{\mathrm{g} 2}+C{\mathrm{p} 2} C{\text {in2 }}=C{\mathrm{g} 2}+C{\mathrm{p} 2} C{\text {out } 1}=C{\mathrm{g} 2}+C{\mathrm{p} 2}\left(C{\mathrm{g} 1}+C{\mathrm{pl}} C{\text {in1 }}\right) \
&=C{\mathrm{g} 2}+C{\mathrm{p} 2} C{\mathrm{g} 1}+C{\mathrm{p} 2} C{\mathrm{pl}} C{\text {in } 1}
\end{aligned}
$$
全加器 3:
$$
\begin{aligned}
C{\mathrm{in} 3} &=C{\text {out } 2} \
C{\text {out } 3} &=C{\mathrm{g} 3}+C{\mathrm{p} 3} C{\text {in } 3}=C{\mathrm{g} 3}+C{\mathrm{p} 3} C{\text {out } 2}=C{\mathrm{g} 3}+C{\mathrm{p} 3}\left(C{\mathrm{g} 2}+C{\mathrm{p} 2} C{\mathrm{g} 1}+C{\mathrm{p} 2} C{\mathrm{pl}} C{\text {in1 }}\right) \
&=C
{\mathrm{g} 3}+C{\mathrm{p} 3} C{\mathrm{g} 2}+C{\mathrm{p} 3} C{\mathrm{p} 2} C{\mathrm{g} 1}+C{\mathrm{p} 3} C{\mathrm{p} 2} C{\mathrm{pl}} C{\text {inl }}
\end{aligned}
$$
全加器 4:
$$
C
{\text {in4 }}=C{\text {out } 3}
$$
$$
\begin{aligned}
C
{\text {out } 4} &=C{\mathrm{g} 4}+C{\mathrm{p} 4} C{\text {in } 4}=C{\mathrm{g} 4}+C{\mathrm{p} 4} C{\text {out } 3} \
&=C{\mathrm{g} 4}+C{\mathrm{p} 4}\left(C{\mathrm{g} 3}+C{\mathrm{p} 3} C{\mathrm{g} 2}+C{\mathrm{p} 3} C{\mathrm{p} 2} C{\mathrm{gl}}+C{\mathrm{p} 3} C{\mathrm{p} 2} C{\mathrm{pl}} C{\text {in1 }}\right) \
&=C{\mathrm{g} 4}+C{\mathrm{p} 4} C{\mathrm{g} 3}+C{\mathrm{p} 4} C{\mathrm{p} 3} C{\mathrm{g} 2}+C{\mathrm{p} 4} C{\mathrm{p} 3} C{\mathrm{p} 2} C{\mathrm{g} 1}+C{\mathrm{p} 4} C{\mathrm{p} 3} C{\mathrm{p} 2} C{\mathrm{pl}} C_{\text {in } 1}
\end{aligned}
$$

观察之后就能发现,进位输出只和 $C{\text {in } 1}, C{\mathrm{p} 1}, C{\mathrm{p} 2}, \cdots$ 有关,展开 $C{\mathrm{p} 1}, C_{\mathrm{p} 2}, \cdots$ 又都只和输入的 $A_1, A_2, \cdots , B_1, B_2,\cdots$ 有关

所以可以根据这些表达式设计电路,直接接到各个 $C_{\text {in }$ 端口上,从而实现超前进位。比如这样:

typora\20201014210805_2cd411436fa59134d1780e47e76ddc59.png

比较器

比较器是这样子的:

typora\20201014210920_824ce070fe1636f7ea595c174161f6e6.png

用法大家应该秒懂。

四位比较器比较两个八位二进制数

触发器

RS 触发器

注意:默认是低有效!

typora\20201029215406_cfdd273ac5caf5a1fde1d711e64b7a74.png

状态方程:

$Q = S' + RQ$

$S + R = 1$

对于高有效 RS 触发器:

$Q = S + R' Q$

$S \cdot R = 0$

触发条件:

输入变化

D 触发器

D 锁存器

typora\20201029215652_71d582c23d51d09214263abe444c5871.png

状态方程:

$Q = D$

触发条件:

使能端有效,输入信号。

“空翻”现象在锁存器普遍存在。解决方法是改为边沿触发。

D 寄存器

typora\20201029220147_f245b30ddd4e68d0c7178acef7adc997.png

触发条件:

处于上升沿,输入信号。

下降沿 JK 寄存器

typora\20201029220405_7a7713026a6b648c842758b4625acab8.png

状态方程:

$Q = JQ' + K'Q$

触发条件:

下降沿,J = 1 置 1,K = 1 置 0. J = K = 0,维持状态。J = K = 1,翻转。

上升沿 T 触发器

相当于 JK 的两个输入端合并,并改成上升沿触发。

typora\20201029220901_67a1306b020050bec039f1b33a3cbe3d.png

状态方程:

$Q = T!Q + !TQ = T \circ + Q$

触发条件:

上升沿,T = 0 维持,T = 1 翻转。

例题

常识问题

【例子】 八路数据分配器,数据输入端有多少个?

【分析与解答】 数据端只有一个。(三个地址端,一个使能端,八个输出端)

【例子】 $\odot$ 是啥玩意儿?

同或,又叫异或非。$F = AB + A'B'$

moore型状态机和mealy型状态机的区别

moore 的输出只和当前状态有关。

mealy 的输出和当前状态和输入都有关。

布尔代数公式

01 律:$A \cdot 1 = A, a \cdot 0 = 0$ $A + 0 = A, A + 1 = 1$

交换律,结合律,分配律,互补律,还原律

重叠率:$A \cdot A = A, A + A = A$

反演(德摩根)律: $\bar{AB} = \bar{A} + \bar{B}$, $\bar{A+B} = \bar{A} \cdot \bar{B}$

常用公式:

  1. $AB + AB' = A$ (并项)
  2. $A+AB = A$ (吸收)
  3. $A + A'B = A + B$ (消因子) (证明方法:利用 $(A+A')(A+B) = A+B$
  4. $AB + A'C + BC = AB + A'C$ (消项) (证明方法:展开 BC)

【例子】 $E \operatorname{and} E = ?$

【分析与解答】 考察的是数字逻辑化简公式的重叠率. $A \cdot A = A$

【例子】 用德摩根律求反函数之于 $F = A(B'+(C'D+E'G))$

【分析与解答】 肯定是 $A'$ 打头,直接排除 BC。

最小项和最大项的性质

typora\20201031211134_db5b48d77f39d13dd0f5fa6f57b80e29.png

typora\20201031211212_2fb682d2f06e3639d2e3bc9cdf60a0c5.png

上图来自:http://www.qacn.net/viewchapter.aspx?topicid=7&chapterid=164

【例子】 对于一个逻辑函数,其任意两个最小项的与为,所有最大项的与为

任意两个最小项,相当于二进制序列穷举情况的任意两个,对于一种取值,只能使得一个为 1. 所以与为 0.

最大项就是合取范式的项,一种取值里面只有一个最大项是 0,所以所有最大项的与最后要乘以0,还是 0.

【例子】 $F = \Sigma _m(1,2,3), G = \Pi _M(1,2,3)$,则 $F, G$ 的关系是?

【分析与解答】 互补的。原因看上边的图。

【例子】 求 $F = A'B + BC + AB'C'$ 的标准与或表达式。

【分析与解答】

A'B => 01X => 2, 3
BC => X11 => 3, 7
AB'C' => 100 => 4

所以是 $\Sigma _m(2,3,4,7)$

竞争和冒险

竞争就是信号的各个输出端口不是同时输出。

冒险就是电路短暂错误输出(毛刺)

如何判断静态冒险

  1. 功能冒险:只要输入信号不是按照循环码的规律变化,组合逻辑就可能产生功能冒险,且不能通过修改设计加以消除,只能通过对输出采用时钟采样来消除。
  2. 逻辑冒险:在某种情况出现
    1. $F = A + A'$ ,则有“0”冒险
    2. $F = A \cdot A'$,则有“1”冒险。

如何消除冒险

  1. 冗余项法
  2. 选通法:只选择稳定期间的值
  3. 滤波电容:减小毛刺(影响输出波形)

下面着重说说冗余项法:

$F = \bar{A}D + \bar{A}C + AB \bar{C}$

当 $BCD = 101$ 时:

$F = \bar{A} + A$,出现 “0” 冒险。

增加一个 $B\bar{C}D$ 冗余项,可消除冒险。

为什么冗余项可以消除冒险?

上面的例子,如果不加冗余项,那么输出 $F = 0$,是所谓 $0$ 冒险的叫法来源,体现在输出上就是一个朝下的毛刺,那么我们让它等于 $1$,这毛刺就没啦,所以加个冗余项,输出 $F = 1$,消除了冒险。

体现在卡诺图上,冒险就是相切项:

typora\20201031212501_85d165b4bf2a569badbdc5f6b7540392.png

增加冗余项使得不相切:

typora\20201031212525_027f8d3152ca6dd117bff4dfcb97646e.png

【例子】 4.对于功能冒险,在下面几种说法中,只有_D_是正确的。

  • A)只有一个变量发生变化时,会发生功能冒险。
  • B)可以通过增加冗余项的方法,消除功能冒险。
  • C)输入变量发生变化,发生了功能冒险,变化前后的输出逻辑值不同。
  • D)可以通过增加选通脉冲消除功能冒险的影响。

【分析与解答】

  • A. 功能冒险通过循环码(只变一个输入)消除,A 说反了。
  • B. 那是消除逻辑冒险
  • C. 不一定啊
  • D. 选通法,没毛病。

TTL 和 CMOS 逻辑电路的区别

  1. TTL 高电平(一般5V)范围比 CMOS(一般12V) 小(当然,CM0S 也有很多 3.5V)
  2. TTL 输入悬空则为高电平。CMOS 输入端不可悬空,考试考到了就当是低电平。
  3. TTl 是双极性,功耗大,集成度低,但是速度快。CMOS 是单极性,功耗低,集成度高,速度慢。

http://www.360doc.com/content/18/0916/09/908538_787051226.shtml

由于功耗等原因,现在 CPU 都是 CMOS 的。

扇入系数和扇出系数

扇入系数:门电路允许的输入端数目。vice versa.

【例子】 _D_系数反映了逻辑门的带负载能力,是指一个逻辑门能够驱动同类型门的个数。
A)输入
B)输出
c)扇入
D)扇出

用简单集成芯片实现组合逻辑

【例子】 问下面实现了个啥函数:

typora\20201031214632_d2720a86fbecd018e1c8f4b2a567f5ba.png

A) $\Sigma _m (m(1,3,4))$

B) $\Sigma _m (m(1,3,4,6))$

C) $\Sigma _m (m(0,2,5,7))$

D) 以上都不对

【分析与解答】 首先排除 D。

然后我们看,输出是 $(1F1' \cdot 1F3' \cdot 2F0' \cdot 2F2') ' = 1F1 + 1F3 + 2F0 + 2F2$ (德摩根)

当 $A = 0$ 时,有效的是第二组的 $F_0, F_2$,对应 $BC = 00, 10$。

当 $A = 1$ 时,有效的时第一组的 $F_1, F_3$,对应 $BC = 01, 11$。

所以输出是 $000, 010, 101, 111$,十进制的 $0,2, 5, 7$,选 C.

各种 FF 的状态方程

【例子】 这俩干嘛的:

typora\20201031225003_4d1e730bf87ed0e9dec3a257ca116ee0.png

【分析与解答】 第一个看到 $CP$ 有非门,说明是下降沿触发的 JKFF。

$$
Q &= Q'Q' + AQ\
&=Q' + AQ \text{重叠律}\
&=Q'+A
$$

第二个是上升沿触发的 TFF。

$$
Q &= (AT)Q' + (AT)'Q \
&= (AQ')Q' + (AQ')'Q\
&= AQ' + (AQ')'Q \text{重叠律} \
&= AQ' + (A'+ Q) Q \text{反演律}\
&= AQ' + A'Q + Q \text{分配律}\
&= AQ' + Q \text{吸收律}\
&= A + Q' \text{消因子}
$$

选 A.

用卡诺图判断函数关系

首先明确有哪些关系,一般是蕴含,互补,相等,等等。(集合间关系)

【例子】 用卡诺图判断 $F = AB + BC + AC$ 与 $G = \bar{A}\bar{B} + \bar{B} \bar{C} + \bar{A} \bar{C}$ 关系。

用通用门实现逻辑函数

NAND

【例子】 用 NAND 门,实现 $F = ABC+ABC+BCD+BC$

【分析与解答】

NOR

3 thoughts on “数字逻辑(数电)笔记(上)

发表评论

电子邮件地址不会被公开。 必填项已用*标注