- 组合逻辑电路:在任意时刻电路的输出仅取决于该时刻的输入,而与输入信号作用前电路所处的状态无关。
- 电路特点:无记忆,无反馈(组合逻辑电路中不包括锁存器和触发器等记忆单元)。
一般分析步骤:
注:可以不一步一步写,在图中标注(个人觉得比较方便)
三位二进制数 A = A2A1A0(知到上的测验题)
要求:实现的电路要最简,即所用器件品种最少数量最少、连线最少.
一般设计步骤:
例:设计一个交通灯故障自动检测器,以实现红、黄、绿三种灯的远程监控,要求用与非门实现。
注:需考虑交通灯逻辑
解:(1)逻辑赋值:
输入:红、黄、绿三种灯分别用变量A、B、C表示,灯亮为1,不亮为0。
输出:用变量L表示,正常为1,有故障为0。
(2)列出真值表
A | B | C | L |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 |
(3)写出逻辑表达式
L = A ‾ B ‾ C + A ‾ B C ‾ + A B ‾ C ‾ L=\overline A\overline BC+\overline AB\overline C+A\overline B\overline C L=ABC+ABC+ABC
变换成与非式
L = A ‾ B ‾ C + A ‾ B C ‾ + A B ‾ C ‾ ‾ ‾ = A ‾ B ‾ C ‾ + A ‾ B C ‾ ‾ + A B ‾ C ‾ ‾ ‾ L=\overline{\overline{\overline A\overline BC+\overline AB\overline C+A\overline B\overline C}}=\overline{\overline{\overline A\overline BC}+\overline{\overline AB\overline C}+\overline{A\overline B\overline C}} L=ABC+ABC+ABC=ABC+ABC+ABC
(4)画出逻辑图
注意这种阵列画图的方法。
- 由于逻辑门电路存在延迟时间,且输入信号到达同一器件时所经历的路径也可能不同,从而引起几个输入信号到达同一地点时有先有后的现象,这种现象称为竞争。
- 竞争若使电路输出出现违背逻辑关系的尖峰脉冲(干扰脉冲或毛刺),即使得真值表所描述的逻辑关系受到短暂的破坏,就会产生错误的输出,称为冒险。
- 不是所有竞争都会引起错误输出(冒险),但在实际电路中信号的变化快慢有一定随机性,很难预测哪些信号变化会产生冒险,因此,只能说存在竞争就有可能产生冒险,这种现象就统称为竞争冒险。
0型冒险 L = X + X ‾ L=X+\overline X L=X+X 1型冒险 L = X ⋅ X ‾ L=X\cdot\overline X L=X⋅X
(1)冒险现象的判别
代数法
一般,具有竞争能力的变量(一般由非门产生),若其表达式具有 L = X ⋅ X ‾ L=X\cdot\overline X L=X⋅X的形式,则有可能产生1型冒险;若表达式具有 L = X + X ‾ L=X+\overline X L=X+X的形式,则有可能产生0型冒险。
方法:写出函数表达式后,先找出具有竞争能力的变量,然后求出其他逻辑变量的取值发生变化时的逻辑函数表达式,根据表达式中是否出现上述两种形式,来判别是否存在冒险及冒险的类别。
例:已知电路逻辑函数表达式为 L = ( A + B ‾ ) ( B + C ) L=(A+\overline B)(B+C) L=(A+B)(B+C)判断此电路是否存在冒险。
变量B具有竞争能力,将A、C的各种取值组合列出并求出对应表达式如下表所示。
A | C | L |
---|---|---|
0 | 0 | B ⋅ B ‾ B\cdot\overline B B⋅B |
0 | 1 | B B ‾ B\overline B BB |
1 | 0 | B B B |
1 | 1 | 1 |
由表知,当A=C=0时,有 L = B ⋅ B ‾ L=B\cdot\overline B L=B⋅B
该电路可能发生1型冒险。
卡诺图法
凡在卡诺图中存在两个圈相切(相邻而不相交)处,都有可能产生冒险现象。
例: L = A C + B ‾ L=AC+\overline B L=AC+B
两圈相切处B=C=1,故当A变量变化时(A由0变1或由1变0时,即A由一个圈进入另一个圈的相邻项时)可能产生冒险。
(2)消除竞争冒险的方法
编码:将信息符号与二进制代码之间建立一一对应的关系。
编码器:能实现编码功能的逻辑电路。
二进制编码器:在某一时刻只把一个输入信号转换为n位二进制代码。
4-2线编码器
把4个输入信号编成对应的2位二进例代码输出的编码电路。
I 0 I 3 I_0~I_3 I0 I3为4个输入端,高电平有效;输出为两位二进制代码 Y 1 Y 0 Y_1Y_0 Y1Y0
I 3 I_3 I3 | I 2 I_2 I2 | I 1 I_1 I1 | I 0 I_0 I0 | Y 1 Y_1 Y1 | Y 0 Y_0 Y0 |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | 1 |
注意:编码器在任一时刻只能对一个输入信号进行编码。
输出表达式: Y 1 = I ‾ 3 I 2 I ‾ 1 I ‾ 0 + I 3 I ‾ 2 I ‾ 1 I ‾ 0 Y_1=\overline I_3I_2\overline I_1\overline I_0+I_3\overline I_2\overline I_1\overline I_0 Y1=I3I2I1I0+I3I2I1I0
Y 1 = I ‾ 3 I ‾ 2 I 1 I ‾ 0 + I 3 I ‾ 2 I ‾ 1 I ‾ 0 Y_1=\overline I_3\overline I_2 I_1\overline I_0+I_3\overline I_2\overline I_1\overline I_0 Y1=I3I2I1I0+I3I2I1I0
根据表达式:
如果某一时刻,有两个输入端如 I 1 I_1 I1、 I 2 I_2 I2,同时为1时,输出 Y 1 Y 0 Y_1Y_0 Y1Y0为00 ;而输出 Y 1 Y 0 Y_1Y_0 Y1Y0为00本应表示信号 I 0 I_0 I0。
4-2线优先编码器
I 3 I_3 I3 | I 2 I_2 I2 | I 1 I_1 I1 | I 0 I_0 I0 | Y 1 Y_1 Y1 | Y 0 Y_0 Y0 |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | × | 0 | 1 |
0 | 1 | × | × | 1 | 0 |
1 | × | × | × | 1 | 1 |
EI | I 7 I_7 I7 | I 6 I_6 I6 | I 5 I_5 I5 | I 4 I_4 I4 | I 3 I_3 I3 | I 2 I_2 I2 | I 1 I_1 I1 | I 0 I_0 I0 | Y 2 Y_2 Y2 | Y 1 Y_1 Y1 | Y 0 Y_0 Y0 | G S GS GS | E O EO EO |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | × | × | × | × | × | × | × | × | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | × | × | × | × | × | × | × | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | × | × | × | × | × | × | 1 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | × | × | × | × | × | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | × | × | × | × | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 1 | × | × | × | 0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | × | × | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | × | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
译码:编码的逆过程,把给定的二进制代码转换为相应的输出信号或另一种形式的代码。
译码器:具有译码功能的逻辑电路。
输入和输出之间要满足: M ≤ 2 N M\leq2^N M≤2N
将输入代码转换成一一对应的有效信号,在使能控制端有效的情况下,对应每一组输入代码,输出端只有一个输出有效。
注意:输入输出满足 M = 2 N M=2^N M=2N,也称为N线-M线译码器或唯一地址译码器。
(1)2线-4线译码器
E ‾ \overline E E | A 1 A_1 A1 | A 2 A_2 A2 | Y ‾ 3 \overline Y_3 Y3 | Y ‾ 2 \overline Y_2 Y2 | Y ‾ 1 \overline Y_1 Y1 | Y ‾ 0 \overline Y_0 Y0 |
---|---|---|---|---|---|---|
1 | × | × | 1 | 1 | 1 | 1 |
0 | 0 | 0 | 1 | 1 | 1 | 0 |
0 | 0 | 1 | 1 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 1 | 1 | 1 |
E 3 E_3 E3 | E ‾ 2 \overline E_2 E2 | E ‾ 1 \overline E_1 E1 | A 2 A_2 A2 | A 1 A_1 A1 | A 0 A_0 A0 | Y ‾ 7 \overline Y_7 Y7 | Y ‾ 6 \overline Y_6 Y6 | Y ‾ 5 \overline Y_5 Y5 | Y ‾ 4 \overline Y_4 Y4 | Y ‾ 3 \overline Y_3 Y3 | Y ‾ 2 \overline Y_2 Y2 | Y ‾ 1 \overline Y_1 Y1 | Y ‾ 0 \overline Y_0 Y0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | × | × | × | × | × | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
× | 1 | × | × | × | × | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
× | × | 1 | × | × | × | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
将输入的BCD码译成十个输出信号,有4个输入端,10个输出端,常称为4线-10线译码器。
常用的有8421BCD码集成译码器74HC42。
74HC42输出也为低电平有效,假设输入为1001时,输出端仅Y9为低电平,其他输出端为高电平,对应于十进制数9。
当输入超过0~9范围时,输出均为高电平,无有效译码输出,这超出范围的六个代码1010~1111称为伪码,显然,电路具有拒绝伪码的功能。
(1)由发光二极管构成的七段显示器(LED数码管)
a~g七个发光二极管分段封装而成,共阳极接法将各段阳极接在一起作为公共阳极接到高电平,需要某段发光,则将相应二极管的阴极接低电平,共阴极接法反之。
(2)七段集成显示译码器
将需要显示的十进制数的代码经过译码器译出送到LED数码管,点亮相应的段即可在数码管上显示十进制数。
实现数据分配的逻辑电路,将一路通道上的公共数据根据需要分配到多路通道上去,至于传送到哪路通道上,则需要用唯一地址译码器来决定。
通常数据分配器有1根输入线,n根地址控制线, 2 n 2^n 2n根数据输出线,因此根据输出线的个数也称为 2 n 2^n 2n路数据分配器。
用74HC138译码器实现的数据分配器
译码器的三个输入端A、 A1、A作为选择通道用的地址信号输入,八个输出端作为数据输出通道,三个控制端接法如下:
E ‾ 1 \overline E_1 E1接低电平; E 3 E_3 E3接高电平; E ‾ 2 \overline E_2 E2接数据线D作为数据输入。
不论D为何值,总有Y通道输出和D相同。即数据D被分配到了Y通道。
74HC138实现的数据分配器功能表
E 3 E_3 E3 | E ‾ 2 \overline E_2 E2 | E ‾ 1 \overline E_1 E1 | A 2 A_2 A2 | A 1 A_1 A1 | A 0 A_0 A0 | Y ‾ 7 \overline Y_7 Y7 | Y ‾ 6 \overline Y_6 Y6 | Y ‾ 5 \overline Y_5 Y5 | Y ‾ 4 \overline Y_4 Y4 | Y ‾ 3 \overline Y_3 Y3 | Y ‾ 2 \overline Y_2 Y2 | Y ‾ 1 \overline Y_1 Y1 | Y ‾ 0 \overline Y_0 Y0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | D | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | D |
1 | D | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | D | 1 |
1 | D | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | D | 1 | 1 |
1 | D | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | D | 1 | 1 | 1 |
1 | D | 0 | 1 | 0 | 0 | 1 | 1 | 1 | D | 1 | 1 | 1 | 1 |
1 | D | 0 | 1 | 0 | 1 | 1 | 1 | D | 1 | 1 | 1 | 1 | 1 |
1 | D | 0 | 1 | 1 | 0 | 1 | D | 1 | 1 | 1 | 1 | 1 | 1 |
1 | D | 0 | 1 | 1 | 1 | D | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
实现数据选择功能的逻辑电路,通过选择,按需要把多个通道上的某路数据传送到唯一的公共数据通道。
一般,有 2 n 2^n 2n根输入线和一根输出线,n根选择控制线,因此根据输入线的个数也称为 2 n 2^n 2n选1数据选择器。
选择输入 | 输出 |
---|---|
0 | D 0 D_0 D0 |
1 | D 1 D_1 D1 |
Y = S ‾ D 0 + S D 1 Y= \overline SD_0+SD_1 Y=SD0+SD1
S 1 S_1 S1 | S 0 S_0 S0 | Y |
---|---|---|
0 | 0 | D 0 D_0 D0 |
0 | 1 | D 1 D_1 D1 |
1 | 0 | D 2 D_2 D2 |
1 | 1 | D 3 D_3 D3 |
Y = S ‾ 1 S ‾ 0 D 0 + S ‾ 1 S 0 D 1 + S 1 S ‾ 0 D 2 + S 1 S 0 D 3 = m 0 D 0 + m 1 D 1 + m 2 D 2 + m 3 D 3 = ∑ i = 0 3 m i D i Y=\overline S_1\overline S_0D_0+\overline S_1S_0D_1+S_1\overline S_0D_2+ S_1S_0D_3=m_0D_0+m_1D_1+m_2D_2+m_3D_3=\sum_{i=0}^3m_iD_i Y=S1S0D0+S1S0D1+S1S0D2+S1S0D3=m0D0+m1D1+m2D2+m3D3=i=0∑3miDi
E ‾ \overline E E | A 2 A_2 A2 | A 1 A_1 A1 | A 0 A_0 A0 | Y Y Y | Y ‾ \overline Y Y |
---|---|---|---|---|---|
1 | × | × | × | 0 | 1 |
0 | 0 | 0 | 0 | D 0 D_0 D0 | D ‾ 0 \overline D_0 D0 |
0 | 0 | 0 | 1 | D 1 D_1 D1 | D ‾ 1 \overline D_1 D1 |
0 | 0 | 1 | 0 | D 2 D_2 D2 | D ‾ 2 \overline D_2 D2 |
0 | 0 | 1 | 1 | D 3 D_3 D3 | D ‾ 3 \overline D_3 D3 |
0 | 1 | 0 | 0 | D 4 D_4 D4 | D ‾ 4 \overline D_4 D4 |
0 | 1 | 0 | 1 | D 5 D_5 D5 | D ‾ 5 \overline D_5 D5 |
0 | 1 | 1 | 0 | D 6 D_6 D6 | D ‾ 6 \overline D_6 D6 |
0 | 1 | 1 | 1 | D 7 D_7 D7 | D ‾ 7 \overline D_7 D7 |
实现两个一位二进制数数值比较的逻辑电路。
输入变量:A、B
输出变量: F A > B F_{A>B} FA>B、 F A < B F_{AFA<B、 F A = B F_{A=B} FA=B当输出取值为1时表示相应的比较结果成立,反之取值为0。
- 半加:在做二进制加法运算时只考虑两个加数本身,而不考虑低位有无进位。
- 半加器:实现半加运算的逻辑电路。
A、B为两个1位二进制加数,S为两数的和,C为向高位产生的进位。
真值表:
A | B | S | C |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
逻辑表达式为: S = A ‾ B + A B ‾ = A ⊕ B S=\overline AB+A\overline B=A\oplus B S=AB+AB=A⊕B
C = A B C=AB C=AB
- 全加:不仅考虑两个加数本身,还考虑来自相邻低位的进位,并根据求和结果给出向高位的进位信号。
- 全加器:实现全加运算的逻辑电路。
真值表:
A | B | C i C_i Ci | S | C 0 C_0 C0 |
---|---|---|---|---|
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 |
由真值表可得全加器的逻辑表达式:
S = A ⊕ B ⊕ C i S=A\oplus B\oplus C_i S=A⊕B⊕Ci
C 0 = A B + ( A ⊕ B ) C i C_0=AB+(A\oplus B) C_i C0=AB+(A⊕B)Ci
将多个全加器串行进位的方法就可组成多位数加法器。
特点:电路简单,但速度较慢。