- 掌握芯片的功能表——单片怎么用
- 芯片的扩展
4.2.1 中规模编码器和译码器
CMOS中规模集成8/3优先编码器CD4532


- EO只有在EI=1,而且无编码对象输入时,输出为1,它可以与相同芯片的EI相连,实现多片优先编码器的连接(芯片扩展)
- GS端当EI=1,且有编码输入时才为1,表示编码器处于工作状态,用于区分当编码器无输入和只有I₀输入的情况。
- 值得说明的是,输出为000共有3种情况,所以需要GS、EO两个标致位才能加以区分
芯片的拓展使用
两片CD4532组成16线/4线优先编码器(实现的就是8421的编码功能)
:enable out,输出的使能信号,用于控制低位的编码器
:enable in,输入的使能信号,用于接受来自高位编码器的控制信号

- 通过和的连接,只有当高8位全部没有有效输入的时候低8位的芯片才会开始工作
- 下面采用或门,根据输出的逻辑关系组成8421的编码功能
中规模集成3/8译码器74LS138

A₂ | A₁ | A₀ | Y₀ | Y₁ | Y₂ | Y₃ | Y₄ | Y₅ | Y₆ | Y₇ | ||
0 | X | X | X | X | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
X | 1 | X | X | X | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
这是74LS138译码器的真值表,显示了各输入状态下对应的输出状态。
需要注意,74LS138有3个使能控制端。这在复杂的芯片拓展中会很有用
芯片的拓展

多出来的一路控制信号控制使能端,实现芯片的拓展
应用:最小项
3/8译码器可以实现3变量的逻辑函数



3/8译码器理论上只能实现3位的最小项之和的表达;如果有4个变量?
把第四个看成是控制项提出来


4.2.2中规模集成数据选择器
74HC151数据8选1数据选择器




集成芯片的拓展使用
利用4个8选1和1个4选1实现32选1(分级选择)

应用:最小项之和


思考题:当函数输入变量数量数大于数据选择器的地址端(A)时,如何处理?
这类问题具体操作方法:
- 在要实现的逻辑函数中选择适当的变量从选择器的地址输入。多余的变量从数据端加入。(当变量选得不同时,结果会不同)
- 画出给定函数的卡诺图,求出地址变量最小项所对应的数据输入端的逻辑关系。
- 画出对应的逻辑图。

用于产生序列脉冲


4.2.3中规模集成加法器与数值比较器
一、加法器74HC283

多位二进制数相加——芯片拓展

这里的加法确实还是串行的,但是因为是4位全加器串行,延迟不会非常严重
实现减法运算
加法器可以通过补码运算来实现减法。实现A-B的步骤如下:
- 将减数B取反(按位取反)
- 在取反后的结果上加1,得到B的补码
- 将被减数A与B的补码相加
举例:计算6-3
- 3的二进制:0011
- 按位取反:1100
- 加1得到补码:1101
- 6的二进制:0110
- 0110 + 1101 = 0011(3,即为所求结果)
利用异或门实现可逆减法运算
要求:实现既可以做加法又可以做减法的电路
利用异或门的特性:
- 一端给0,输出和另一端输出一样
- 一端给1,输出是另一端取反

例:分析8-12的运算过程
被减数:8 = 1000₂
减数:12 = 1100₂
12的补码:0100₂
8-12:1000₂ + 0100₂ = 1100₂
由于没有产生进位(),取反后输入异或门为1(),异或门执行取反操作
最终结果:0011₂ + 1 = 0100₂ = -4
注:结果的符号可由判断
实现代码转换
例:将8421码转换成余三码
+3即可

二、数值比较器74HC85

8位数值比较(芯片拓展)

注意最低的4位的接法!👉认为上一级相等
小写代表接收上一级的输入,大写代表给下一级的输出
10位数值比较器
👉把多余的管脚接相同电平


4.2.4中规模集成计数器
一、典型的中规模集成计数器74HC163、74HC161
74HC163(同步清零,同步置数)

- 两个使能端是为了实现芯片的拓展和进位
- 163的清零是同步的,161的清零是异步的

74HC161(异步清零,同步置数)

十进制可逆计数器74HC217

双时钟触发:
- 加法计数时钟输入:
- 减法计数时钟输入:
借位输出与进位输出:
- 只维持半个周期,和时钟脉冲有关
- 逻辑函数表达式如下:


十进制可逆计数器74LS192



- 这里的借位和进位信号保持半个时钟周期,且是正半周期
- 异步置数,异步清零
二、利用单片中规模集成计数器实现N进制计数
用反馈清零法实现功能拓展
例:实现7进制清零
- 使用161(异步清零)
异步清零时,必须借助0110的下一个状态0111,利用0111状态作为反馈清零控制


这里会出现一个非常短暂的过渡态‘0111’;考察下述情况:
如果翻转速度不一致,很有可能会出现:先被清零→→没有被有效置零
为了充分保证异步清零的有效性,必须保证清零脉冲有足够的宽度👉使用RS锁存器


- 使用163(同步清零)
采用同步清零时,除了要求清零信号之外,还要求有时钟CP。将最后一个状态“0110”作为反馈控制逻辑


特别关注:准备清零区间
出现0110时,为低,等待下一个上升沿到来即可开始清零
用置数法实现功能拓展
例:用74HC163设计余3编码的七进制加法计数器

163的置数是同步置数,将状态转移图中的最大状态1001作为置数控制逻辑

例:用74HC217设计8421BCD编码的七进制减法计数器

74HC217为异步方式置数
借助0000的下一个状态1001作为置数控制的逻辑状态

例:题4.36(b)用进位借位标识符实现异步置数:慎用!!!



虽然是异步置数方式,但是还需要时钟脉冲的配合,在负半周期才会有效!0000、0111的状态只出现了0.5个周期
慎用!
多次反馈置数法
反馈清零法和反馈置数法局限于原计数器的计数状态以二进制连续变化。
如果状态转移不连续,置数和计数功能应多次交替使用
这里置数端的数据D也和输入有关,需要列写一张复杂的真值表





三、实现大容量计数器的连接
大容量:几十进制以上的计数器
连接原则:用小容量计数器级联实现

连接方法:

- 同步方式

- 异步方式

同步级联法




异步级联法

异步级联法只需要把59的下一个状态,也就是60作为判断的依据
进一步地,只需要把十位的6作为反馈即可
同样需要关注短暂脉冲的问题👉采用RS锁存器即可改善