【数字电路】组合逻辑电路
1 组合逻辑电路的分析和设计方法
数字电路可以分为组合逻辑电路和时序逻辑电路两大类
- 组合逻辑电路:仅取决于该时刻电路的输入,与电路原状态无关
- 时序逻辑电路:不仅取决于该时刻电路的输入,还取决于电路的原状态
1.1 组合逻辑电路的分析
- 根据电路写出逻辑表达式
- 由表达式列出真值表
- 分析电路的逻辑功能
1.2 组合逻辑电路的设计
- 从已知的逻辑功能出发,列出真值表
- 根据真值表写出逻辑表达式,并变换成所需要的形式
通常进行的变化举例如下:
A B + B C = A B + B C ‾ ‾ = A B ‾ ⋅ B C ‾ ‾ (仅使用“与非”门) AB+BC=\overline{\overline{AB+BC}}=\overline{\overline{AB}·\overline{BC}}(仅使用“与非”门) AB+BC=AB+BC=AB⋅BC(仅使用“与非”门) - 画出逻辑电路图
− ∣ 组合逻辑电路的分析设计比较程式化,后续博客中笛哥会有习题更新 ∣ − \color{red}{-|组合逻辑电路的分析设计比较程式化,后续博客中笛哥会有习题更新|-} −∣组合逻辑电路的分析设计比较程式化,后续博客中笛哥会有习题更新∣−
1.3 七段数码管显示译码电路设计
-
七段译码管:一般的七段数码管拥有七个发光二极管(三横四纵)用以显示十进制0至9的数字外加小数点,也可以显示英文字母,包括十六进制中的英文 A 至 F(b、d 为小写,其他为大写)。现时大部分的七段数码管会以斜体显示。
-
七段译码管的电路连接有共阳极接法(左图)和共阴极接法(右图)两种:
其实这两种接法没有什么需要特别注意的地方,无非就是决定输入端接高电平/低电平时二极管发光 -
下面我给出一个例子:通过共阴极接法将BCD码以十进制阿拉伯数字表示出来
-
列出真值表
-
根据真值表写出逻辑表达式(这里就要用到上一篇博客中讲述的卡诺图)
在这里只展示a段二极管对应的卡诺图,其他段交给读者自行验证
a = A 3 + A 1 + A 2 A 0 + A 2 ‾ ⋅ A 0 ‾ a=A_3+A_1+A_2A_0+\overline{A_2}·\overline{A_0} a=A3+A1+A2A0+A2⋅A0 -
根据逻辑表达式设计出电路图
-
2 常用中规模组合逻辑芯片
在数字电路中,经常会用到加法器、数值比较器、译码器、编码器、数据选择器和数据分配器、奇偶校验器等实用电路。为方便使用,这些电路的设计已经标准化,并制成了中规模的单片集成电路芯片供使用。这里来介绍一下这些常用的中规模组合逻辑芯片。
2.1 加法器
- 半加器:不需要考虑来自低位的进位
- 两个输入:A、B表示两个同位相加的数
- 两个输出:∑表示半加和,Cout表示向高位的进位
- 全加器:需要考虑来自低位的进位
- 三个输入:A、B表示两个同位相加的数,Cin表示来自低位的进位
- 两个输出:∑表示本位和,Cout表示向高位的进位
- (1)串行进位加法器:
工作特点:
任意一位的加法运算,都必须等到低位加法完成送来进位时才能进行 - (2)超前进位加法器(了解即可)
2.2 比较器
- 四位二进制比较器
- A大于B时,A>B输出高电平
- A等于B时,A=B输出高电平
- A小于B时,A<B输出高电平
- 特殊的四位二进制比较器,例如74HC85芯片
- AB不等时,比较器的输出可以不用看cascading inputs
- AB相等时,比较器的输出需要看cascading inputs来给出最后判断
2.3 编码器
编码:用数字或某种文字符号来表示某一对象或信号的过程,如:电话号码、邮编、学号等
在此,我们主要来学习二进制编码器:将一系列信号状态编制成二进制代码
- 一般编码器:每次只允许一个输入端有信号
- 优先编码器:允许几个输入信号同时有效,但电路只对其中优先级别高的信号进行编码,对其它优先级别低的信号不予理睬。
需要注意编码器输出端口,是输出原码还是反码 \color{red}{需要注意编码器输出端口,是输出原码还是反码} 需要注意编码器输出端口,是输出原码还是反码
例如上图:74LS147芯片的输出端口,就是反码输出(如果(10)管脚低电平输入,反码输出为0110)
2.4 译码器
译码:即将某代码翻译成电路的某种状态(二进制译码器,显示译码器…)
没啥特别的,就是“编码”的逆过程
\color{red}{没啥特别的,就是“编码”的逆过程}
没啥特别的,就是“编码”的逆过程
2.5 数据选择器
数据选择:从多路数据中选择其中一路数据输出
功能:根据Data select端口的译码对应Data inputs端口的输入
数据选择端Data select(S0 S1) | 数据输出 |
---|---|
0 0 | D0 |
0 1 | D1 |
1 0 | D2 |
1 1 | D3 |
逻辑表达式: Y = D 0 S 0 ˉ S 1 ˉ + D 1 S 0 ˉ S 1 + D 2 S 0 S 1 ˉ + D 3 S 0 S 1 Y=D_0\bar{S_0}\bar{S_1}+D_1\bar{S_0}S_1+D_2S_0\bar{S_1}+D_3S_0S_1 Y=D0S0ˉS1ˉ+D1S0ˉS1+D2S0S1ˉ+D3S0S1
2.6 数据分配器
数据分配:将数据分配到对应的输出端口
没啥特别的,反向参考一下数据选择器就行
\color{red}{没啥特别的,反向参考一下数据选择器就行}
没啥特别的,反向参考一下数据选择器就行
3 基于二进制译码器芯片的组合逻辑设计
- 首先考虑芯片的选用
- 将要实现的逻辑关系写成最小项之和的形式
- 电路实现
4 组合逻辑电路中的“竞争冒险”现象
在组合电路中,信号经由不同的途径达到某一会合点的时间有先有后,两个输入“同时向相反的逻辑电平变化”,称存在“竞争”
由于竞争而引起电路输出发生瞬间错误现象,称为竞争-冒险,表现为输出端出现了原设计中没有的窄脉冲,常称其为毛刺(glitch)
- 检测“竞争-冒险”
- 当输入变量很少时,可以通过逻辑表达式判断
- 当输入变量较多时,往往需要计算机辅助分析或者实验检验
- 消除“竞争-冒险”
-
修改逻辑设计,增加冗余项
-
接入滤波电容
尖峰脉冲很窄,用很小的电容就可将尖峰削弱到 VTH以下
-
引入选通脉冲
选通脉冲作用时间在电路达到稳定之后,选通的高电平期的输出信号不会出现尖峰
-