前言
数字电路是指用数字信号(0 和 1)来表示逻辑变量(或逻辑函数)的电路。数字电路是由数字逻辑门电路组成的,数字逻辑门电路是由晶体管、二极管、电阻等元件组成的。数字电路是数字电子技术的重要组成部分,它是数字电子技术的基础。
1. 数字电路
1.1 什么是“模拟”和“数字”
在自然界中,像声音、温度、光等信息是以连续的值进行变化的。这种连续值就称作"模拟"。
而在计算机的世界里,信息是以一段一段的离散值表示的。这种离散值就称作"数字"。
比方说模拟和数字就相当于实数与整数的关系。实数可以表示直线上的每一个点,就是模拟,而整数只能表示直线上的特定点,就是数字。
图1:模拟与数字的不同
于是,我们把处理连续信息的——模拟信号的电路称作"模拟电路",把处理离散信息——数字信号的电路称作"数字电路"。
为了将自然界的模拟信息输入到像计算机那样的数字电路,需要将信息数字化(模拟信号 → 数字信号)。
进行“模拟信号 → 数字信号”转换的是 A/D 转换器。A/D 转换器按时间有规律地读取(采样)输入信号,并将其转换成用"0"和"1"表现的数值(2 进制)。
为了将连续值(模拟信号)转换为离散值(数字信号),要对模拟信号进行"舍去"和"进位"处理。这种处理造成信息缺失,而产生了误差。而为了减少误差,就需要缩短转换间隔和增加转换时的位数。
那么,"把模拟信号数字化"的好处在哪里呢?它的好处就在于,数字信号有较强的抗噪音能力,不容易被破坏,计算机处理起来比较容易。
现在,随着微处理器性能的不断提高,已经可以高速、大量地处理数字信息。由于在信号传输和再现的过程中都不会造成信号质量下降,从而使数字电路得到了十分广泛的应用。
1.2 强大的“二进制”
数字信号表现数值的方法之一是“二进制”。2 进制是以"0"和"1"表现数值的,各位数都是 2 的阶乘。比如,4 位 2 进制可以表现的整数是从 0 到 15 的值(表 1)。更大的数值就要通过增加位数来表现了。
10 进制 | 2 进制 | 10 进制 | 2 进制 |
---|---|---|---|
0 | 0000 | 8 | 1000 |
1 | 0001 | 9 | 1001 |
2 | 0010 | 10 | 1010 |
3 | 0011 | 11 | 1011 |
4 | 0100 | 12 | 1100 |
5 | 0101 | 13 | 1101 |
6 | 0110 | 14 | 1110 |
7 | 0111 | 15 | 1111 |
表 1:10 进制的 2 进制换算
最初在数字信号中使用 2 进制的原因是因为电路的"开"和"关"可以很方便地用"1"和"0"来表示。并且,开(“1”)和关(“0”)在实际的 IC 中分别用"H"和"L"表现高电压状态和低电压状态。
在一般的 CMOS IC 中,当电源电压为 5V 时,L 表现为 1.35V 以下,H 表现为 3.15 以上。像这样用"0"和"1"表示一定的电压范围,就可以形成在一定范围噪音下,不会发生误操作的牢固电路结构。
CMOS:Complementary Metal Oxide Semiconductor,互补金属氧化物半导体。CMOS 是一种半导体技术,它是由 PMOS 和 NMOS 两种半导体技术组合而成的。CMOS 技术的特点是低功耗、高集成度、可靠性好、抗干扰能力强、工作可靠、耐辐射、抗静电干扰能力强等。相关内容见电路入门。
所以数字电路抗噪音强的原因就是因为用了 2 进制来表现数值。
1.3 什么是数字电路
数字电路进行逻辑运算,也被称为逻辑电路。
逻辑电路的基本要素只有 AND 电路、OR 电路和 NOT 电路这 3 种,通过这 3 种电路的不同组合可以做出具有各种功能的电路。
逻辑电路使用逻辑表达式和电路符号(这里使用 MIL 符号。其他还有 JIS 符号。)进行表示。另外,我们把逻辑电路的输入信号和输出信号的一览表称为真值表。
1.4 逻辑电路的基本要素
1.4.1 串联电路,AND 电路
AND 电路也被称为“逻辑与”,只有当两个输入同时为 1 时,才会输出 1。
-
逻辑表达式:
用・
表示Y = A · B
-
真值表:
A B Y 0 0 0 0 1 0 1 0 0 1 1 1 -
电路符号:
AND
-
AND 电路的工作方式:
如果用开关和 LED 来表现 AND 电路的话,就是如下图 2 所示的串联电路。
开关 A(SW A)的“开”和“关”表示输入 A 的“1”和“0”
开关 B(SW B)的“开”和“关”表示输入 B 的“1”和“ 0”
LED Y 的亮起和熄灭以输出 Y 的“1”和“0”表示图2:AND电路的运作方式
该 AND 电路的工作方式如下:
开关 A 和开关 B 都为“开”时,LED Y 点亮
开关 A 或 B 只有一个为“开”,另一个为“关”时,LED Y 熄灭
开关 A 和开关 B 都为“关”时,LED Y 熄灭
基本逻辑电路也称作门(gate)电路,可以通过单个输入来固定输出(关闭门),或反映输出(打开门)。
AND 电路的门电路的工作情况可以用图 2 的电路图进行说明。A 或 B 的开关之一固定为“关”,LED 保持熄灭,也就是说输出固定为“关”(关闭门)
相反,A 或 B 的开关之一固定为“开”,未固定的另一个输入能够直接反映输出(打开门)
1.4.2 并联电路,OR 电路
OR 电路也被称为“逻辑或”,只要有任何一个输入为 1,或者都为 1 的情况下,都会输出 1。
-
逻辑表达式:
用+
表示Y = A + B
-
真值表:
A B Y 0 0 0 0 1 1 1 0 1 1 1 1 -
电路符号:
OR
-
OR 电路的工作方式:
如果用开关和 LED 来表现 OR 电路的工作方式的话,就是如下图 3 所示的并联电路。图3:OR电路的运作方式
由于是并联电路,因此开关 A(SW A)或开关 B(SW B)中任意一个为“开”,或两者均为“开”时,LED Y 就点亮。
OR 电路的门功能与 AND 电路的工作方式正好相反。A 和 B 的开关之一固定为“开”时,LED 保持点亮,也就是说输出固定为“开”(关闭门)
相反,A 和 B 的开关之一固定为 “关”,未固定的另一个输入能够直接反映输出(打开门)
1.4.3 反向电路,NOT 电路
NOT 电路也被称作变频或反向电路,具有将输入反向输出的功能。是输入为 1 时输出 0,输入 0 时输出 1 的电路。
- 逻辑表达式:
用¯
表示Y = A¯
- 真值表:
A Y 0 1 1 0 - 电路符号:
NOT
2. 数字集成电路 IC
数字集成电路 IC(Integrated Circuit)是将多个逻辑电路集成在一起的电路。IC 的种类很多,从最简单的逻辑门到复杂的微处理器都有。
2.1 什么是数字集成电路 IC?
数字集成电路是指集成了一个或多个门电路的半导体元器件。数字集成电路拥有多个种类,根据用途不同,可分为如下几类。
- 微处理器(microcomputer):进行各种处理的集成电路
- 存储器:记录数据的集成电路
- 标准逻辑 IC:通过集成电路的组合实现各类功能的逻辑电路
- 专用逻辑 IC:特定用途集成电路,允许用户设计自己专用的逻辑电路
标准逻辑 IC 是将逻辑电路的基本要素和可共通使用的功能集合于一体的小规模集成电路,是构成逻辑电路的基本要素。
2.2 数字 IC 和标准逻辑 IC
“标准逻辑 IC”的种类约有 600 多种,有最单纯的逻辑电路 IC,也有高功能的、含有逻辑运算的 IC。
大致可分为 TLL 集成电路与 CMOS 集成电路两种。
- TTL (Transistor-transistor logic) IC:
电路的主要部分由双极性晶体管构成,工作电压为 5V。 - CMOS(Complementary Metal Oxide Semiconductor) IC:
电路的主要部分是由 P 通道和 N 通道的 MOSFET 构成的,工作电压范围比较大。
图1:TTL IC
图2:CMOS IC
数字 IC 之间传递信号时,需要规定信号的“高(High)”、“低(low)”逻辑以及与其对应的电压。这种与逻辑对应的电压称为逻辑电平。
不同的逻辑电平,将无法传输信号,还有可能损坏集成电路。
在 TTL IC 中,判断标准如下:
- 输入信号时,2.0V 以上为“高(High)”,0.8V 以下为“低(Low)”
- 输出信号时,0.4V 以下为“低(Low)”,2.4V 以上“高(High)”
TTL IC 就是根据规定的 TTL 接口标准制作的,该标准规定了输入输出电压与逻辑之间的关系。因此,在 TTL IC 之间传递信号时,不需要考虑逻辑电平的问题。
但是,CMOS IC 拥有许多系列,各个系列的逻辑电平各不相同。有时还会根据电源电压发生变化。因此,需要根据逻辑电平进行连接。
2.3 注意误操作和扇出
在连接“标准逻辑 IC”时,需要考虑一个输出最大可连接的 IC 数量。
在 TTL IC 中,可连接 IC 的数量受到输出电流的限制,我们把允许连接的 IC 上限个数称为扇出。只要想起 TTL IC 是由双极性晶体管构成的,就能容易地想象出开关切换时是需要电流的。TTL IC 的扇出可以通过输出电流除以输入电流来求出(图 3)。需要注意的是如果连接的 IC 个数超过了扇出数,将无法保证输出的逻辑电平。
图3:TTL IC的扇出
由于 CMOS IC 的输入引脚中几乎没有电流,因此无法根据电流计算它的扇出数。需要根据负载容量计算(图 4)。
图4:CMOS IC的扇出
在 CMOS IC 的数据表中,通过传播延迟时间的测量方法明确记载了负载容量。如超过负载容量,传播延迟时间将变长,可能引起误操作,需要注意。
2.4 输出线之间连接,漏极开路
漏极开路是指不能输出高电平(High)的 FET(如图 A 右图)。在漏极开路的电路中,不存在通常 CMOS IC 输出段(如图 A 左图)中和 VCC 相连的 MOSFET,所以,无法输出高电平。只能输出 Low 或高阻抗(输出端和电路是断开的,是一个无法输出电流和电压的状态)。
图A:CMOS输出与漏极开路输出
在高阻抗的情况下,由于输出不稳定,因此需要通过电阻和电源相连,把输出端固定在 High 电平下使用。该电阻称为上拉电阻。
由于上拉电阻连接的电压不需要与电源电压相同,因此可以连接逻辑电平不同的 IC。
上拉电阻与下拉电阻:
上拉电阻是指连接到电源的电阻,下拉电阻是指连接到地的电阻,用于将输入端固定在 High 或 Low 电平。
2.5 组合逻辑电路
逻辑电路中,只通过输入信号的组合方式决定输出的逻辑电路称作“组合逻辑电路”。
相反,内部拥有记忆电路和同步电路,只通过输入信号的组合无法决定输出的逻辑电路被称作“时序逻辑电路”。
“组合逻辑电路”是通过组合多个 AND、OR、NOT、XOR 等逻辑门而构成的。可以理解为用多个逻辑门的排列就能实现多种功能的电路。
“组合逻辑电路”的代表元器件:多路复用器和解码器。
2.5.1 可选择输出信号的多路复用器
多路复用器是可以从多个输入信号中选择一个输出信号的信号切换器。可以通过自动售货机来想象其工作模式。各种饮料的按钮就是输入信号,当按下选择按钮后,从同一出货口可以拿到各种饮料。
如果用开关说明多路复用器的工作原理,如图 5 所示。开关 A 包括 4 个纵向联动开关。开关 B 也是一样。那么,当开关 A 为 0,开关 B 也为 0 时,可以看到输入 0 连接到输出上,也就是输入 0 的信号被输出。同样,当开关 A 为 1,开关 B 为 0 时,输入 1 的信号将连接到输出上。当开关 A 为 0,开关 B 为 1 时,输出 2 的信号将连接到输出上。当开关 A 为 1,开关 B 为 1 时,输入 3 的信号将连接到输出上。也就是说,可以通过开关 A 和开关 B 从 4 个输入中选择一个输出。这就是实现信号切换的多路复用器电路。
图5:用开关构成的多路复用器
多路复用器用逻辑电路表示的话,就如图 6 所示,只需要 AND 和 OR 就可以实现。AND 部分进行判断,OR 部分用于选择一个信号输出。
图6:用逻辑电路构成的多路复用器
2.5.2 判断输入的解码器
图7:用逻辑电路构成的解码器
解码器真值表如下。由该表可知, 2 个输入信号可通过 4 个输出信号中的一个输出。比如当两个输入为二进制时,让 4 个输出信号分别对应十进制的 0、1、2、3,就可以认为这是一个将二进制解码为十进制的电路。
解码器真值表:
输入 0 | 输入 1 | 输出 0 | 输出 1 | 输出 2 | 输出 3 |
---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 1 |
除此之外,还有比较器、加法器(全加器/半加器)、乘法器、减法器、桶形移位器等多种“组合逻辑电路”。其中大多数都是应用多路复用器和解码器制作而成的。但是,如果只是应用而不做改善的话,将出现电路冗长等问题,所以,需要简化并压缩电路。
2.6 时序逻辑电路
组合电路是根据当前输入信号的组合来决定输出电平的电路。换言之,就是现在的输出不会被过去的输入所左右,也可以说成是,过去的输入状态对现在的输出状态没有影响的电路。而时序电路的输出不仅受现在输入状态的影响,还要受过去输入状态的影响。
那么,如何才能将过去的输入状态反映到现在的输出上呢?时序电路到底需要些什么呢?人类总是根据过去的经验,决定现在的行动,这时我们需要的就是——记忆。同样,时序电路也需要这样的功能。这种能够实现人类记忆功能的元器件就是触发器。按结构和功能,触发器可以分为 RS 型、JK 型、D 型和 T 型。在这里,我们只讲解比较有代表性的类型,RS 型和 D 型。
2.6.1 触发器就像一个跷跷板
触发器的工作方式与日本的“起坐亲子游戏”很象。日本的“起坐亲子游戏”,指的就是公园里的跷跷板。想起跷跷板,就能想象出 RS 触发器的工作原理。
图1:RS触发器的电路图
图2:跷跷板的初始状态(Q=L、Q#=H、R=L、S=L)
图 2 就是一个跷跷板。这个跷跷板有些生锈,即使没有人坐,也不能恢复水平状态。请记住它保持倾斜的样子。假设:
- 跷跷板的两端是输出 Q 和 Q#。
- 左右的 2 个人是 R 君和 S 君,表示输入。坐上跷跷板表示逻辑高 H 状态,没有在跷跷板上表示逻辑低 L 状态。(每次只允许一个人坐,两人不能同时坐。)
图3:S君坐在跷跷板上的状态(Q=H、Q#=L、R=L、S=H)
当 S 君坐上跷跷板(S=H)时,输出 Q 就变为 H(Q#变成 L)(图 3 )
图4:S君从跷跷板上下来的状态(Q=H、Q#=L、R=L、S=L)
即使 S 君下来了,跷跷板也不会改变动作(S=L),Q#还是 L,不改变(图 4)
当 R 君坐上跷跷板时,Q 变成 L(Q#变成 H)。当 R 君从跷跷板上下来时,也会保持 L 状态。从这个过程来看,我们是不是可以说跷跷板记住了以前坐过它的人呢。
用真值表表示 RS 触发器的工作过程的话,就像表 5 所示一样。表中 Q0 和 Q0#表示的是输入变化以前的输出。
表 5:RS 触发器的真值表
功能 | R | S | Q | Q# |
---|---|---|---|---|
置位 | L | H | H | L |
复位 | H | L | L | H |
保持 | L | L | Q0 | Q0# |
禁止 | H | H | L | L |
RS 触发器是最简单的触发器。主要用于防止机械式开关的误操作。
2.6.2 按时钟变化记忆的 D 触发器
D 触发器是在时钟信号(CK)的上升沿(信号从 L→H 的变化)或下降沿(信号从 H→L 的变化)时,保持输入信号状态,改变输出信号的触发器。
图6:D触发器
表 7:D 触发器的真值表
Q0:输入变化前的输出
x:H 或 L 都可以
↑:L 向 H 的转移
输入 | 输出 |
---|---|
CK | D Q Q# |
↑ | L L H |
↑ | H H L |
↑ 以外 | x Q0 Q0# |
现在,我们用跷跷板来说明 D 触发器的工作原理。跷跷板的初始状态如图 8 所示。D 君坐上跷跷板表示输入为 H,从跷跷板上下来表示输入为 L。跷跷板的另一边,放一个比 D 君轻的重物。另外,这个跷跷板与一般的跷跷板不同,只有在时钟 CK 上升沿时,才改变跷起的方向。
图8:D触发器的初始状态 (CK=L、D=H、Q=L、Q#=H)
看着图 8,你不觉得有些奇怪吗?D 君坐在跷跷板上,却没有变化。按理说,由于 D 君比重物重,D 君(Q#)应该降下来,才对。为什么跷跷板没有发生变化呢,这是因为 CK 还保持 L 状态。当 CK 变为 H(CK 上升)时,跷跷板就跷起来了,D 君就下降了(图 9)。
图9: D触发器的CK处于上升状态(D=H、Q=H、Q#=L
然后,CK 就稳定在 H 状态。这时,不管 D 君是从跷跷板上下来,还是再坐上去,跷跷板都不动。只要不在 CK 的上升状态,跷跷板就一直保持以前的状态。
这种动作的触发器被称为 D 触发器,具有在时钟上升瞬间,保持(记忆)输入状态的功能,是一种时钟同步时序电路。D 触发器是时序电路的基本元件,用途广泛。D 触发器的多级组合,可以做成移位寄存器、分频电路等。也可用于 CPU 内部的寄存器等。
2.6.3 SRAM 是触发器构成的吗?
触发器可以记忆 H 或 L,1 位的信息。大量排列触发器,并使之具有可选择性后,就可以构成 SRAM。由于 SRAM 的输入输出速度比 DRAM 和闪存的访问速度高得多,所以,常用作 CPU 的缓存和寄存器。
尽管我们这样说,实际上 CPU 中内置的存储器或寄存器并非使用的是 RS 触发器这样的逻辑门。由于使用逻辑门,会使电路规模变大,所以,一般使用 4 到 6 个 FET,再经过优化,构成存储器的 1 位(图 A)。
图A:SRAM的基本电路
2.7 时钟同步电路的必要性
在设计逻辑电路时,有很多应该注意的事项。其中特别重要的就是关于时钟同步电路的注意事项。
在「组合电路」中,微小的信号传输迟延,都有可能造成输出毛刺。尽管毛刺是一个极其短暂的信号,但也可以引起逻辑电路的误动作。为了回避这个问题,就要使用时钟同步电路。
图10:时钟同步电路的思路
FF: Flip-Flop,触发器
图 10 给出了时钟同步电路的概要。如图所示,其构造是在 FF(触发器)之间夹着组合电路。毛刺是组合电路在输出稳定之前,输出的短暂信号。因此,在组合电路输出稳定以后,再改变时钟,用触发器保持这个输出,就可以回避这种误动作了。