第 157 篇

考研数电·零基础讲义 第11讲|加法器与数值比较器

约 17 分钟 5459 字 华南师范大学数字电子技术考研数电零基础讲义

考研数电·零基础讲义 · 第 11 讲|加法器与数值比较器 学完这一讲,你能自己推出半加器、全加器的真值表和逻辑式,说清串行进位与超前进位的区别(为什么后者快),会用 4 位加法器 74HC283 做码制转换、扩展位数和减法,并会用 4 位数值比较器 74HC85 比较大小、级联成 8 位比较器。预计用时 2~2.5 小时。

本讲地图

  • 半加器:两个 1 位数相加,不管低位进位。S=A⊕BS=A\oplus B⁠,CO=ABCO=AB⁠。
  • 全加器:三个 1 位数相加(两个加数 + 低位进位)。S=A⊕B⊕CIS=A\oplus B\oplus CI⁠,CO=AB+(A⊕B)CICO=AB+(A\oplus B)CI⁠。
  • 多位加法器:串行(行波)进位——简单但慢;超前进位——快但电路复杂。74HC283 是 4 位超前进位加法器。
  • 数值比较器:从高位到低位逐位比;74HC85 是 4 位比较器,带级联输入。
  • 华师怎么考:考纲"组合逻辑电路"中的常用模块。常见题型:推全加器、说明超前进位原理、用 74HC283 设计码制转换(如 8421 码转余 3 码)、比较器级联。
  • 教材对应:第 4 章 4.4.4 节(加法器)、4.4.5 节(数值比较器),4.5 节例 4.5.3。

前置知识

  • 二进制加法、补码与减法(见第 01 讲上、下)。
  • 异或、同或的性质(见第 02 讲上)。
  • 组合电路设计步骤,第 08 讲例 2 分析过全加器(见第 08 讲)。

一、先复习:二进制加法是怎么"进位"的

1.1 大白话:竖式加法

十进制竖式加法我们小学就会:个位相加,满十进一,再加到十位上。二进制完全一样,只是"满二进一":

0+0=0,0+1=1,1+0=1,1+1=100+0=0,\quad 0+1=1,\quad 1+0=1,\quad 1+1=10

1+1=101+1=10读作"一零":本位写 0,向高位进 1。

举个例子,1011+01101011+0110(11 + 6):

位 第 3 位 第 2 位 第 1 位 第 0 位
加数 A 1 0 1 1
加数 B 0 1 1 0
来自低位的进位 1 1 1 0
本位和 0 0 0 1
向高位的进位 1 1 1 0

最低位:1+0=11+0=1⁠,无进位;第 1 位:1+1=101+1=10⁠,写 0 进 1;第 2 位:0+1+1=100+1+1=10⁠,写 0 进 1;第 3 位:1+0+1=101+0+1=10⁠,写 0 进 1。最后结果是进位 1 加上 0001,即10001=1710001=17⁠。

观察到:最低位只需要加两个数,其余每一位都要加三个数(两个加数 + 低位来的进位)。这就引出了两种 1 位加法器。


二、半加器

2.1 定义

半加器(Half Adder):只把两个 1 位数AA⁠、BB相加,不考虑来自低位的进位。输出本位和SS(Sum)和向高位的进位COCO(Carry Out,读作"C-O")。

2.2 真值表与逻辑式

A B S CO
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
S=A‾B+AB‾=A⊕B,CO=ABS=\overline{A}B+A\overline{B}=A\oplus B,\qquad CO=AB

逐行拆解:SS在AA⁠、BB不同时为 1,正是异或;COCO只有两个都是 1 才为 1,正是与。所以半加器 = 一个异或门 + 一个与门。

2.3 为什么叫"半"

因为它只能做加法的"一半工作"——最低位够用,但其他位还要加上低位进位,半加器做不了。


三、全加器

3.1 定义

全加器(Full Adder):把AA⁠、BB和来自低位的进位CICI(Carry In)三个 1 位数相加,输出SS和COCO⁠。

3.2 真值表(教材表 4.4.10)

CI A B S CO
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

怎么列:每一行把三个数当普通数字加起来,结果 0、1、2、3 写成两位二进制CO SCO\,S⁠:0 = 00,1 = 01,2 = 10,3 = 11。

3.3 逻辑式

和SS:三个输入中有奇数个 1 时为 1(第 08 讲奇校验的思路):

S=A⊕B⊕CIS=A\oplus B\oplus CI

进位COCO:至少两个 1 时为 1。卡诺图化简得

CO=AB+BCI+ACICO=AB+BCI+ACI

还可以写成另一种很有用的形式:

CO=AB+(A⊕B)CICO=AB+(A\oplus B)CI

逐行拆解第二种形式:产生进位有两种情况——

  1. AA⁠、BB都是 1(⁠AB=1AB=1⁠):不管CICI是什么,一定进位。这叫"自己产生进位"。
  2. AA⁠、BB恰好一个是 1(⁠A⊕B=1A\oplus B=1⁠),而且低位送来了进位(⁠CI=1CI=1⁠):1+1=101+1=10⁠,也进位。这叫"把低位进位传下去"。

为什么两种形式相等?AB+(A⊕B)CIAB+(A\oplus B)CI中,(A⊕B)CI=AB‾CI+A‾BCI(A\oplus B)CI=A\overline{B}CI+\overline{A}BCI⁠;而AB+BCI+ACIAB+BCI+ACI中多出来的ABCIABCI已经被ABAB包含了。两者真值表完全一样(已穷举核对)。

教材另外给出用"圈 0 再取反"得到的与或非形式:

S=A‾ B‾ CI‾+AB‾CI+A‾BCI+ABCI‾‾,CO=A‾ B‾+B‾ CI‾+A‾ CI‾‾S=\overline{\overline{A}\,\overline{B}\,\overline{CI}+A\overline{B}CI+\overline{A}BCI+AB\overline{CI}},\qquad CO=\overline{\overline{A}\,\overline{B}+\overline{B}\,\overline{CI}+\overline{A}\,\overline{CI}}

双全加器 74LS183 就是按这个式子做的。逻辑功能是一样的,只是电路实现方式不同。

3.4 用两个半加器搭一个全加器

把CO=AB+(A⊕B)CICO=AB+(A\oplus B)CI和S=(A⊕B)⊕CIS=(A\oplus B)\oplus CI对照着看:

  • 半加器 1:输入AA⁠、BB⁠,得到A⊕BA\oplus B和ABAB⁠;
  • 半加器 2:输入A⊕BA\oplus B和CICI⁠,得到S=(A⊕B)⊕CIS=(A\oplus B)\oplus CI和(A⊕B)CI(A\oplus B)CI⁠;
  • 一个或门:把ABAB和(A⊕B)CI(A\oplus B)CI相或,得到COCO⁠。
用两个半加器和一个或门组成1位全加器 半加器 1 半加器 2 A B CI A⊕B S S=A⊕B⊕CI (A⊕B)CI AB CO CO=AB+(A⊕B)CI

图 1:两个半加器加一个或门组成 1 位全加器

3.5 例题 1:代数验证一行

题目:A=1A=1⁠,B=0B=0⁠,CI=1CI=1⁠,用式子算SS和COCO⁠。

解:A⊕B=1A\oplus B=1⁠;S=1⊕1=0S=1\oplus1=0⁠;CO=AB+(A⊕B)CI=0+1⋅1=1CO=AB+(A\oplus B)CI=0+1\cdot1=1⁠。检验:1+0+1=2=(10)21+0+1=2=(10)_2⁠,和 0 进位 1,正确。

3.6 易错点 ⚠️

  • 全加器的SS是三个变量的异或,不是两个。
  • CO=AB+(A⊕B)CICO=AB+(A\oplus B)CI中的异或也可以换成或:CO=AB+(A+B)CICO=AB+(A+B)CI⁠,结果不变(多出的ABCIABCI被ABAB吸收)。超前进位里的"传递函数" PP就是这么来的。
  • 列真值表时变量顺序要和题目一致,教材把CICI放在最左边。

四、多位加法器

4.1 串行进位加法器(行波进位)

大白话:像接力赛,第 0 棒跑完把接力棒(进位)交给第 1 棒,第 1 棒跑完再交给第 2 棒……

结构:4 个全加器排成一排,低位全加器的COCO接到高位全加器的CICI⁠,最低位的CICI接 0。

4位串行进位加法器计算0111加0001时进位逐级传递(动画) FA0 A0=1 B0=1 S0 0 FA1 A1=1 B1=0 S1 0 FA2 A2=1 B2=0 S2 0 FA3 A3=0 B3=0 S3 1 CI=0 C1 1 C2 1 C3 1 C4 0 CO 0111 + 0001:进位像多米诺骨牌一样从右往左逐级传递,结果 1000

图 2:4 位串行进位加法器计算0111+00010111+0001⁠:进位从右往左逐级传递,每一位的和要等进位到了才确定(动画循环播放)

缺点:慢。每一位都要等低位的进位到达才能算出正确结果。最坏情况(比如0111+00010111+0001⁠,进位一路从第 0 位传到第 3 位),要经过 4 个全加器的进位延迟。位数越多越慢:32 位就要传 32 级。

优点:结构简单、规整,对速度要求不高时仍然常用。

4.2 超前进位加法器

大白话:与其等接力棒一棒一棒传过来,不如让每一棒的选手自己算出"我这一棒会不会拿到接力棒"。第ii位的进位其实只由更低的那些位的AA⁠、BB和最初的CICI决定,完全可以提前用一个专门的电路同时算出来。

两个关键函数(第ii位):

Gi=AiBi(进位生成函数,Generate)G_i=A_iB_i\qquad(\text{进位生成函数,Generate}) Pi=Ai+Bi(进位传送函数,Propagate)P_i=A_i+B_i\qquad(\text{进位传送函数,Propagate})

于是第ii位的进位输出为

(CO)i=Gi+Pi (CI)i(CO)_i=G_i+P_i\,(CI)_i

读法:"本位自己生成进位,或者本位能传送且低位送来了进位"。

展开:令C0C_0为最低位的进位输入,Ci+1=(CO)iC_{i+1}=(CO)_i为第ii位送给第i+1i+1位的进位:

C1=G0+P0C0C_1=G_0+P_0C_0 C2=G1+P1G0+P1P0C0C_2=G_1+P_1G_0+P_1P_0C_0 C3=G2+P2G1+P2P1G0+P2P1P0C0C_3=G_2+P_2G_1+P_2P_1G_0+P_2P_1P_0C_0 C4=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0C_4=G_3+P_3G_2+P_3P_2G_1+P_3P_2P_1G_0+P_3P_2P_1P_0C_0

逐行拆解C2C_2:第 1 位向第 2 位进位,有三种可能:

  • G1G_1⁠:第 1 位自己就生成了进位;
  • P1G0P_1G_0⁠:第 0 位生成了进位,第 1 位把它传了过去;
  • P1P0C0P_1P_0C_0⁠:最初的进位C0C_0被第 0 位、第 1 位一路传过来。

关键:右边只出现AA⁠、BB和C0C_0,没有任何别的进位。所以所有进位都可以同时算出来,每个进位只要"先算GG⁠、PP(一级门)+ 一级与或",与位数无关。和则是Si=Ai⊕Bi⊕CiS_i=A_i\oplus B_i\oplus C_i⁠。

代价:位数越多,CiC_i的式子越长,与门的输入越多,电路复杂程度急剧上升。所以实际中常做成 4 位一组。

4.3 4 位超前进位加法器 74HC283

引脚 作用
A3A2A1A0A_3A_2A_1A_0 加数 A(⁠A3A_3最高位)
B3B2B1B0B_3B_2B_1B_0 加数 B
CICI 最低位进位输入
S3S2S1S0S_3S_2S_1S_0 4 位和
COCO 最高位进位输出

功能一句话:CO S3S2S1S0=A+B+CICO\,S_3S_2S_1S_0=A+B+CI(按二进制数相加)。教材指出:从加数送入到得到和只需三级门的延迟,得到进位输出只需一级反相器加一级与或非门的延迟。

4.4 例题 2:74HC283 算一道加法

题目:A3A2A1A0=1011A_3A_2A_1A_0=1011⁠,B3B2B1B0=0110B_3B_2B_1B_0=0110⁠,CI=0CI=0⁠,求输出。

解:11+6+0=17=16+111+6+0=17=16+1⁠,所以CO=1CO=1⁠,S3S2S1S0=0001S_3S_2S_1S_0=0001⁠。(与第一节竖式结果一致。)

4.5 两种进位方式对比

串行(行波)进位 超前进位
进位怎么来 低位算完逐级传上来 由AA⁠、BB⁠、C0C_0直接同时算出
速度 慢,位数越多越慢 快,进位延迟与位数基本无关
电路 简单、规整 复杂,位数多时急剧变复杂
典型器件 由全加器(如 74LS183)串接 74HC283
类比 接力赛 每位选手自己算好起跑时刻

简答题"比较串行进位与超前进位加法器"照这张表答,要点就齐了。

4.6 易错点 ⚠️

  • 超前进位"快"的原因是进位不再逐级等待,而不是全加器本身变快了。
  • PiP_i用Ai+BiA_i+B_i或Ai⊕BiA_i\oplus B_i都能得到正确进位(已穷举 4 位全部 512 种输入核对);教材定义Pi=Ai+BiP_i=A_i+B_i⁠,写答案时按教材。
  • 74HC283 只管 4 位二进制相加,不会自动做 BCD 调整。

五、74HC283 的应用

5.1 例题 3:8421 码转余 3 码

题目:用 74HC283 把 8421 BCD 码DCBADCBA转换为余 3 码Y3Y2Y1Y0Y_3Y_2Y_1Y_0⁠。

思路:余 3 码 = 8421 码 + 3(第 01 讲下)。所以只要做一次加法:

  • A3A2A1A0A_3A_2A_1A_0接DCBADCBA⁠;
  • B3B2B1B0B_3B_2B_1B_0接常数00110011⁠;
  • CI=0CI=0⁠;
  • S3S2S1S0S_3S_2S_1S_0就是余 3 码。

验证:输入 0101(5),5+3=85+3=8⁠,输出 1000,正是 5 的余 3 码。0~9 全部已用程序核对,最大9+3=12<169+3=12<16⁠,COCO始终为 0。

这类"码制转换"题是华师加法器考点的经典问法:看到"加上一个常数",就想到 74HC283。

5.2 例题 4:两片级联成 8 位加法器

低 4 位一片、高 4 位一片:低位片CI=0CI=0⁠,低位片的COCO接高位片的CICI,高位片的COCO就是 8 位加法的最高进位。这相当于"片内超前进位、片间串行进位"。

验证:200+100=300=256+44200+100=300=256+44⁠,高位片输出CO=1CO=1⁠,8 位和00101100=4400101100=44(已用程序核对多组数据)。

5.3 例题 5:用 74HC283 做减法

第 01 讲下讲过:A−B=A+B‾+1A-B=A+\overline{B}+1(补码)。所以:

  • BB的每一位经非门后接到B3∼B0B_3\sim B_0⁠;
  • CICI接 1(这就是"+1");
  • SS就是A−BA-B的结果(4 位)。

而且CO=1CO=1表示A≥BA\ge B(结果为正或零),CO=0CO=0表示A<BA<B(结果为负,SS是负数的补码)。已对 256 组(A,B)(A,B)全部核对。

例:A=0110A=0110(6),B=0010B=0010(2):B‾=1101\overline{B}=1101⁠,0110+1101+1=101000110+1101+1=10100⁠,CO=1CO=1⁠,S=0100=4S=0100=4⁠,正确。

5.4 例题 6:一位 BCD 加法器(综合题)

题目:用两片 74HC283 和若干门,设计一位 8421 BCD 码加法器:输入两个 BCD 数XX⁠、YY(各 0~9)和低位进位CinC_{in}⁠,输出本位 BCD 和以及向高位(十位)的进位CC⁠。

为什么一片不够:74HC283 做的是二进制加法,"满十六进一";BCD 要求"满十进一"。比如7+5=127+5=12⁠,二进制和是 1100,但 BCD 应该是"进位 1、本位 0010"。两者差了 6(16 与 10 之差)。

修正规则:二进制和大于 9 时,再加 6(0110),同时向十位进 1;不大于 9 时不修正。

第 1 步:片(1) 做X+Y+CinX+Y+C_{in}⁠,得到CO1CO_1和S3S2S1S0S_3S_2S_1S_0⁠。

第 2 步:判断是否大于 9(即自测第 7 题):

C=CO1+S3S2+S3S1C=CO_1+S_3S_2+S_3S_1
  • CO1=1CO_1=1⁠:和 ≥ 16(最大9+9+1=199+9+1=19⁠);
  • S3S2=1S_3S_2=1⁠:和为 12~15;
  • S3S1=1S_3S_1=1⁠:和为 10、11(以及 14、15)。

第 3 步:片(2) 的AA接S3S2S1S0S_3S_2S_1S_0⁠,BB接0 C C 00\,C\,C\,0(即B3=0B_3=0⁠,B2=CB_2=C⁠,B1=CB_1=C⁠,B0=0B_0=0⁠,需要修正时就是加 0110,否则加 0000),CI=0CI=0⁠。片(2) 的SS就是本位 BCD 和,CC就是十位进位(片(2) 的COCO不用)。

验证:7+5+07+5+0⁠:片(1) 得CO1=0CO_1=0⁠,S=1100S=1100⁠;C=0+1⋅1+1⋅0=1C=0+1\cdot1+1\cdot0=1⁠;片(2):1100+0110=100101100+0110=10010⁠,取低 4 位 0010。结果"进位 1、本位 2",即 12。正确。XX⁠、YY取 0~9、CinC_{in}取 0/1 的 200 种组合已全部用程序核对。

5.5 易错点 ⚠️

  • 做减法时别忘了CI=1CI=1⁠。
  • 级联时COCO接下一片的CICI⁠,方向是低位片 → 高位片。

六、数值比较器

6.1 大白话:比身高

比较两个数谁大,就像比两个人的身高。比两个多位数时,先比最高位:最高位大的那个数一定大;最高位一样,再比下一位……直到分出胜负;全都一样,就相等。

6.2 1 位数值比较器

两个 1 位数AA⁠、BB⁠:

情况 条件 输出式
A>BA>B A=1,B=0A=1,B=0 Y(A>B)=AB‾Y_{(A>B)}=A\overline{B}
A<BA<B A=0,B=1A=0,B=1 Y(A<B)=A‾BY_{(A<B)}=\overline{A}B
A=BA=B 相同 Y(A=B)=A⊙BY_{(A=B)}=A\odot B

逐行拆解:AB‾A\overline{B}只在A=1A=1⁠、B=0B=0时为 1,正好是"A 大";同或A⊙BA\odot B在两者相同时为 1,正好是"相等"。

6.3 4 位数值比较器的逻辑

比较A3A2A1A0A_3A_2A_1A_0和B3B2B1B0B_3B_2B_1B_0⁠,"A>BA>B"的条件写成式子:

Y(A>B)=A3B3‾+(A3⊙B3)A2B2‾+(A3⊙B3)(A2⊙B2)A1B1‾+(A3⊙B3)(A2⊙B2)(A1⊙B1)A0B0‾+(⋯ )I(A>B)Y_{(A>B)}=A_3\overline{B_3}+(A_3\odot B_3)A_2\overline{B_2}+(A_3\odot B_3)(A_2\odot B_2)A_1\overline{B_1}+(A_3\odot B_3)(A_2\odot B_2)(A_1\odot B_1)A_0\overline{B_0}+(\cdots)I_{(A>B)}

逐项拆解:

  • 第 1 项:最高位 A 大,直接判 A 大;
  • 第 2 项:最高位相等(⁠A3⊙B3=1A_3\odot B_3=1⁠)且次高位 A 大;
  • 第 3、4 项依此类推;
  • 最后一项:4 位全相等,就听"更低位送来的比较结果" I(A>B)I_{(A>B)}的。

Y(A<B)Y_{(A<B)}同理(把AiBi‾A_i\overline{B_i}换成Ai‾Bi\overline{A_i}B_i⁠,I(A>B)I_{(A>B)}换成I(A<B)I_{(A<B)}⁠),而

Y(A=B)=(A3⊙B3)(A2⊙B2)(A1⊙B1)(A0⊙B0) I(A=B)Y_{(A=B)}=(A_3\odot B_3)(A_2\odot B_2)(A_1\odot B_1)(A_0\odot B_0)\,I_{(A=B)}

6.4 74HC85 的引脚与用法

引脚 作用
A3∼A0A_3\sim A_0⁠、B3∼B0B_3\sim B_0 两个 4 位数
I(A>B)I_{(A>B)}⁠、I(A<B)I_{(A<B)}⁠、I(A=B)I_{(A=B)} 级联输入:来自更低位的比较结果
Y(A>B)Y_{(A>B)}⁠、Y(A<B)Y_{(A<B)}⁠、Y(A=B)Y_{(A=B)} 比较结果输出

单片使用(只比 4 位)时,没有更低位,令

I(A>B)=0,I(A<B)=0,I(A=B)=1I_{(A>B)}=0,\quad I_{(A<B)}=0,\quad I_{(A=B)}=1

意思是"更低位(不存在)算作相等",这样 4 位全相等时输出A=BA=B⁠。

功能表(简化,"×"为不管):

比较情况 Y(A>B)Y_{(A>B)} Y(A<B)Y_{(A<B)} Y(A=B)Y_{(A=B)}
从高位起第一个不同位Ai=1A_i=1⁠、Bi=0B_i=0 1 0 0
从高位起第一个不同位Ai=0A_i=0⁠、Bi=1B_i=1 0 1 0
4 位全相等,级联输入为(1,0,0)(1,0,0) 1 0 0
4 位全相等,级联输入为(0,1,0)(0,1,0) 0 1 0
4 位全相等,级联输入为(0,0,1)(0,0,1) 0 0 1

(级联输入按I(A>B),I(A<B),I(A=B)I_{(A>B)},I_{(A<B)},I_{(A=B)}的顺序写。)

6.5 例题 7:读 74HC85

题目:(1)A=1011A=1011⁠,B=1001B=1001⁠,单片使用;(2)A=0110A=0110⁠,B=0110B=0110⁠,级联输入为I(A>B)=1I_{(A>B)}=1⁠、其余为 0。分别求输出。

解:(1)从高位比:A3=B3=1A_3=B_3=1⁠,A2=B2=0A_2=B_2=0⁠,A1=1>B1=0A_1=1>B_1=0——分出胜负,Y(A>B)=1Y_{(A>B)}=1⁠,其余为 0。(2)4 位全相等,听级联输入的:Y(A>B)=1Y_{(A>B)}=1⁠,其余为 0。

6.6 例题 8:两片 74HC85 组成 8 位比较器(教材例 4.5.3)

思路:高 4 位相等时才看低 4 位。所以:

  • 低 4 位A3∼A0A_3\sim A_0⁠、B3∼B0B_3\sim B_0接片(1),片(1) 的级联输入接(0,0,1)(0,0,1)⁠;
  • 高 4 位A7∼A4A_7\sim A_4⁠、B7∼B4B_7\sim B_4接片(2);
  • 片(1) 的三个输出YY分别接片(2) 的三个级联输入II⁠;
  • 片(2) 的输出就是 8 位比较结果。

验证:A=10010110A=10010110⁠,B=10010011B=10010011⁠:高 4 位都是 1001,相等,片(2) 听片(1) 的;低 4 位0110>00110110>0011⁠,片(1) 输出A>BA>B⁠,所以最终A>BA>B⁠。正确。这个接法已用程序对256×256=65536256\times256=65536种输入全部核对。

6.7 易错点 ⚠️

  • 级联方向:低位片的输出 → 高位片的级联输入,和加法器进位方向一样,从低到高。
  • 最低位片(或单片使用)的级联输入必须接(0,0,1)(0,0,1)⁠,不能悬空、不能全接 0。
  • 多位比较是"高位优先":高位一旦分出大小,低位再怎么样都不影响结果。

速记卡

项目 要点
半加器 S=A⊕BS=A\oplus B⁠,CO=ABCO=AB(异或门 + 与门)
全加器 S=A⊕B⊕CIS=A\oplus B\oplus CI⁠,CO=AB+(A⊕B)CI=AB+BCI+ACICO=AB+(A\oplus B)CI=AB+BCI+ACI
全加器结构 两个半加器 + 一个或门
串行进位 低位COCO → 高位CICI⁠;简单但慢(逐级等待)
超前进位 Gi=AiBiG_i=A_iB_i⁠,Pi=Ai+BiP_i=A_i+B_i⁠,Ci+1=Gi+PiCiC_{i+1}=G_i+P_iC_i展开后只含AA⁠、BB⁠、C0C_0
74HC283 4 位超前进位加法器,CO S=A+B+CICO\,S=A+B+CI
283 应用 加常数(8421→余 3 码加 0011);级联CO→CICO\to CI⁠;减法A+B‾+1A+\overline{B}+1
1 位比较 AB‾A\overline{B}(大)、A‾B\overline{A}B(小)、A⊙BA\odot B(等)
74HC85 4 位比较器;单片级联输入接(0,0,1)(0,0,1)⁠;级联:低位片YY → 高位片II

自测练习

1. 写出半加器和全加器的真值表,并说明全加器为什么不能用一个半加器代替。

答案与提示

见本讲第二、三节。半加器只能加两个 1 位数,而多位加法中除最低位外每一位都要加上低位进位,是三个数相加,所以需要全加器(或两个半加器 + 或门)。

2. 用 74HC283 计算0111+01010111+0101(⁠CI=0CI=0⁠)和1111+00011111+0001(⁠CI=0CI=0⁠),写出COCO和SS⁠。

答案与提示

7+5=127+5=12⁠:CO=0CO=0⁠,S=1100S=1100⁠。15+1=1615+1=16⁠:CO=1CO=1⁠,S=0000S=0000⁠。已用程序核对。

3. 写出 4 位超前进位中C3C_3的表达式,并说明每一项的含义。

答案与提示

C3=G2+P2G1+P2P1G0+P2P1P0C0C_3=G_2+P_2G_1+P_2P_1G_0+P_2P_1P_0C_0⁠。依次是:第 2 位自己生成进位;第 1 位生成、第 2 位传送;第 0 位生成、第 1、2 位传送;最初进位C0C_0经第 0、1、2 位一路传送。

4.(华师真题风格)用一片 74HC283 设计电路,将 8421 BCD 码转换为余 3 码,画出(写出)接法;若反过来把余 3 码转换为 8421 码,又该怎么接?

答案与提示

8421→余 3:AA接 BCD 码,B=0011B=0011⁠,CI=0CI=0⁠,SS为余 3 码。余 3→8421:要减 3,即加上 3 的补码11011101(4 位下−3-3的补码),AA接余 3 码,B=1101B=1101⁠,CI=0CI=0⁠,取SS(忽略COCO⁠)。例:余 3 码 1000(表示 5)+1101=10101+1101=10101⁠,S=0101=5S=0101=5⁠。也可以写成B=0011‾=1100B=\overline{0011}=1100⁠、CI=1CI=1⁠,效果相同。

5. 用 74HC283 实现A−BA-B(⁠AA⁠、BB为 4 位无符号数),并判断A=0011A=0011⁠、B=0101B=0101时的输出及其含义。

答案与提示

BB各位取反接B3∼B0B_3\sim B_0⁠,CI=1CI=1⁠。0011+1010+1=11100011+1010+1=1110⁠,CO=0CO=0⁠,表示A<BA<B⁠;S=1110S=1110是−2-2的补码。已用程序核对。

6. 74HC85 单片使用,A=0100A=0100⁠,B=0101B=0101⁠,三个输出各是多少?若把级联输入错接成(0,0,0)(0,0,0)⁠,A=B=0101A=B=0101时Y(A=B)Y_{(A=B)}是多少?

答案与提示

A<BA<B⁠:Y(A<B)=1Y_{(A<B)}=1⁠,其余为 0。按教材式 (4.4.22),Y(A=B)Y_{(A=B)}含因子I(A=B)I_{(A=B)}⁠,级联输入接成(0,0,0)(0,0,0)时,即使A=BA=B也有Y(A=B)=0Y_{(A=B)}=0——结果出错,所以单片使用必须把I(A=B)I_{(A=B)}接 1。

7. 两个 1 位 BCD 数相加(用 74HC283 得到和S3S2S1S0S_3S_2S_1S_0及COCO⁠),当结果超过 9 时需要"加 6 修正"。写出判断是否需要修正的逻辑式。

答案与提示

需要修正当且仅当和大于 9:C=CO+S3S2+S3S1C=CO+S_3S_2+S_3S_1⁠。理解:CO=1CO=1表示和 ≥16;S3S2=1S_3S_2=1表示 12~15;S3S1=1S_3S_1=1表示 10、11、14、15。已对 0~9 两两相加的 100 种情况核对。


下一讲预告

第 12 讲讨论一个"稳态分析看不到"的问题:输入跳变的瞬间,组合电路输出可能出现一个极窄的错误脉冲——竞争-冒险,以及怎么发现它、消除它。

👉 点击进入下一讲:第12讲|组合逻辑电路中的竞争-冒险

评论

还没有评论。 来写第一条。

留下一条评论

选填,不会公开

纯文本,链接会自动识别。