1.3 数字电路基础

1.3 数字电路基础

本节将介绍数字电路的基础知识。数字电路是利用数字信号的电子电路。近年来,绝大多数的计算机都是基于数字电路实现的。

1.3.1 什么是数字电路

数字电路是利用两种不连续的电位来表示信息的电子电路。数字电路中的电源电压 H (High,高)电平、接地电压 L(Low,低)电平分别代表 1 和 0,以此实现信息的表达。大部分数字电路是基于叫做 MOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor,金属氧化物半导体场效应管)的场效应管实现的。在数字电路中,MOSFET 通过组合可以实现各种各样的逻辑电路。

1.3.2 数值表达

数字电路中的信息由 0 和 1 两个数字表示,因此数字电路的设计基于二进制数(binary number)。二进制是指从 0 到 1 的数值在一位数字中表示,遇 2 则向上进位的数值表达方式。二进制的第 n 个数字位,数值上是 2 的 n-1 次方位。我们平时使用的数值表达方式是十进制(decimal number),十进制中,0 到 9 的数值可在一位中表示。图 1-16 说明了二进制和十进制的位值关系。

图 1-16 二进制和十进制的位值关系

十进制数的 3210 可以表示为(103×3)+(102×2)+(101×1)+(100×0)。二进制数的 1010 可以表示为(23×1)+(22×0)+(21×1)+(20×0),相当于十进制数 10。一个数字位上可以表达数值的个数称为底数,十进制的底数是 10,二进制的底数是 2。

计算机中常用的数值表现方式,除了二进制和十进制之外,还有八进制(octal number)和十六进制(hexadecimal number)等。八进制使用从 0 开始的八个数表达数值。十六进制中,从 10 到 15 使用字母 A 到 F 来表示,以 0 到 9 加上 A 到 F 表示十六个数值。

八进制数值通常以 0 开头,以区分十进制等表达方式。十六进制则通常以 0x 开头。0x 中的 x 代表 hexadecimal 中的 x。十六进制也有在末尾加 H 等其他表达方法。

表 1-2 列出了利用以上几种进制表达数值的例子。

表 1-2 数值表现的示例

10 进制数

2 进制数

8 进制数

16 进制数

0

0000

000

0x0

1

0001

001

0x1

2

0010

002

0x2

3

0011

003

0x3

4

0100

004

0x4

5

0101

005

0x5

6

0110

006

0x6

7

0111

007

0x7

8

1000

010

0x8

9

1001

011

0x9

10

1010

012

0xA

11

1011

013

0xB

12

1100

014

0xC

13

1101

015

0xD

14

1110

016

0xE

15

1111

017

0xF

1.3.3 有符号二进制数

在用二进制表示有符号数值时,我们经常使用补码表示法。补码表示法中,N 位的二进制数的最高位代表数值 -(2N-1)。图 1-17 介绍了有符号二进制数的表达方式。

图 1-17 有符号二进制数的示例

专栏

比特和字节

二进制中的一个数字位称为 binary digit,简称比特(bit)。计算机领域中,我们使用比特作为单位来表示数据量,还会用到一种叫字节(byte)的单位。通常一个字节代表 8 比特,绝大多数 CPU 都是以字节为单位处理数据的。内存地址大多也是为每字节赋予一个地址,称为字节编址方式。由 8 比特组成一个字节是出于 2 的 8 次方表达的范围(0~255)比较适合表达文字(英文字母、符号、控制符等)的考虑。

 

专栏

1K 字节有多大

K、M、G、T 是表示大数据量时常用的单位。1K 的大小有 1000(10 的 3 次方)和 1024(2 的 10 次方)两种计数方法。

通常,衡量计算机内存和网络数据包大小时,1K 相当于 1024 比特。而在硬盘等存储器的标签上记述的尺寸或物理学中的 1K 相当于 1000。

表 1-3 是对单位的说明。

1K 等于 1024 时 1K 等于 1000 时
1 [K] 1 024 (2 的 10 次方 ) 1 000 (10 的 3 次方 )
1 [M] 1 048 576 (2 的 20 次方 ) 1 000 000 (10 的 6 次方 )
1 [G] 1 073 741 824 (2 的 30 次方 ) 1 000 000 000 (10 的 9 次方 )
1 [T] 1 099 511 627 776 (2 的 40 次方 ) 1 000 000 000 000 (10 的 12 次方 )

无符号二进制数变成补码时,将所有比特反转(又称取反码)后加 1。以 4 位二进制数 0001 为例,全比特反转后为 1110,然后加 1 成为 1111。也就是说,在二进制的补码表示法中,将数字 1 表示为 0001,-1 表示为 1111。这就是说最高位的比特起到了符号位的作用。最高位为 0 时是正数,最高位为 1 时是负数。

二进制补码表示法的好处是正数和负数相加时无需考虑符号的处理。以刚才例子中的 1 和 -1 的补码相加为例,0001 加 1111 后进位得到 10000。当数据宽度为 4 位时忽略第五位的 1,结果为 0000,也就是正确答案——数值 0。如上所示,运用二进制补码表示法可以在不关心数据符号的情况下进行运算。

1.3.4 MOSFET 的结构

近年来,数字电路基本上都是由 MOSFET 场效应管构成的。MOSFET 是一种在施加电压后可以像开关一样工作的半导体器件。MOSFET 有 P 型 MOSFET 和 N 型 MOSFET 两种。P 型 MOSFET 的构造如图 1-18 所示,N 型 MOSFET 的构造如图 1-19 所示。

图 1-18  P 型 MOSFET 的构造

图 1-19  N 型 MOSFET 的构造

MOSFET 有源极、漏极和栅极 3 个电极。功能上,源极、漏极和栅极分别作为电流输入、电流输出和电流控制使用。MOSFET 的源极和漏极采用相同类型的半导体材料,而栅极下的通道则填入不同类型半导体材料。P 型 MOSFET 的源极和漏极使用 P 型半导体,栅极下的通道使用 N 型半导体。N 型 MOSFET 材料的构成与 P 型 MOSFET 相反。

下面以 N 型 MOSFET 为例说明其工作原理。在不给控制电流的栅极施加电压时,源极和漏极间填充了异种半导体材料,因此电流无法流过。当给栅极施加正电压时,源极和漏极中 N 型半导体材料里的自由电子被栅极吸引,使通道中充满电子,源极和漏极间的电流从而能够流动。

图 1-20  N 型 MOSFET 的动作原理

N 型 MOSFET 在栅极施加电源电压(H)时电流可以流通,接地(L)时电流无法流通。反之,P 型 MOSFET 的栅极接地时电流可以通过,施加电源电压时电流无法流过。这种持有相反特性的 N 型 MOSFET 和 P 型 MOSFET 互补使用形成的门电路称为 CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)。CMOS 可以用来制作各种各样的逻辑电路。

1.3.5 逻辑运算

逻辑运算是只用“真”、“假”二值进行的运算。数字电路中的 H(1) 和 L(0) 可与逻辑运算中的“真”、“假”对应,进行逻辑运算。逻辑运算使用 AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)三种基本运算组合来实现各种运算。图 1-21 对基本的逻辑运算进行了说明。

图 1-21 基本逻辑运算

图 1-21 中 A 和 B 为输入,Y 为运算结果。AND 运算在输入 A 和 B 双方都为真时结果 Y 为真,其他情况下 Y 为假。因此 AND 运算的结果是 A 和 B 的交集。

OR 运算在输入 A 和 B 任意一方为真时结果 Y 为真,A 和 B 双方皆为假时结果 Y 为假。因此 OR 运算的结果是 A 和 B 的并集。

NOT 运算是单输入的运算,输入为真时结果为假,输入为假时结果为真。因此 NOT 运算的结果是输入 A 的补集。

1.3.6 CMOS 基本逻辑门电路

接下来介绍 CMOS 的基本逻辑门电路。N 型 MOSFET 和 P 型 MOSFET 的电路符号 如图 1-22 所示。

图 1-22  MOSFET 的电路符号

将 MOSFET 按照图 1-23 的方式组合即可实现 NOT 门电路。当输入 H 时,N 型 MOSFET 打开,输出为 L ;当输入 L 时,P 型 MOSFET 打开,输出为 H。

图 1-23  NOT 门电路的电路图和动作原理

从最简单的 NOT 门电路到各种逻辑门电路,都可以由 MOSFET 的组合进行实现。图 1-24 中列出的是逻辑门电路中定义的基本逻辑门电路。逻辑门电路的电路符号称为 MIL(美军标准)逻辑符号。数字电子电路通过基本逻辑电路的组合来实现各种逻辑电路功能。

图 1-24 基本逻辑门电路

1.3.7 存储元件

通过组合基本的逻辑门,可以实现用来保存数据的存储元件。锁存器(Latch)就是其中一种存储元件。锁存器具有像闩锁一样锁住并维持数据的特性。

图 1-25 是一种最为单纯的锁存器,其电路由一个 2 输入的 AND 门构成,并将输出与其中一个输入相接形成一条循环回路。一旦这个电路的输入 A 为 0 时,循环回路中的值就一直为 0。这样就可以利用循环回路将逻辑值锁存。

图 1-25 最简单的锁存器

还有一种锁存器叫 D 锁存器(Data Latch,D-Latch,数据锁存器)。D 锁存器的电路构造如图 1-26 所示,它由 4 个 NAND 门电路构成。D 锁存器中有 D(Data) 和 E(Enable)两个输入信号,Q 和 \overline{\text{Q}} 两个输出信号。D 锁存器在 E 为 0 时保持前一个数据,E 为 1 时将输入 D 的数据输出到 Q。\overline{\text{Q}} 是输出信号 Q 的反相信号。D 锁存器的真值表如图 1-27 所示。由于 D 锁存器在 E 为 1 时输入的 D 直接通过 Q 输出,所以也称为通过型锁存器。

图 1-26 D 锁存器的构成及其电路符号

图 1-27  D 锁存器的真值表

D 锁存器和 NOT 门组合,可以实现依据时钟信号同步并保存数据的 D 触发器。D 触发器的电路构成和符号分别如图 1-28 和图 1-29 所示。

图 1-28  D 触发器的电路构成

图 1-29  D 触发器的电路符号

D 触发器有 D(Data) 和 C(Clock) 两个输入信号,Q 和 \overline{\text{Q}} 两个输出信号。当 D 触 发器的 C 为 0 时,前端 D 锁存器输出信号 D 的值,后端 D 锁存器保持之前的数据。当 C 为 1 时,前端 D 锁存器保持之前的数据,后端 D 锁存器将前端 D 锁存器保持的数据直接通过 Q 输出。D 触发器的动作原理和波形图分别如图 1-30 和图 1-31 所示。

图 1-30  D 触发器的动作原理

图 1-31  D 触发器的波形图

D 触发器由于原理简单,构造单纯,被广泛使用在同步电路当中。

专栏

建立时间与保持时间

D 触发器是由时钟信号的边沿来触发数据的存储动作的。因此,需要在时钟沿前后一段时间内将输入信号稳定下来。如果在时钟变化时输入信号也在变化,很可能无法正确存储数据。因此,为了让 D 触发器正确存储数据,需要有建立时间(setup time)和保持时间(hold time)两个基本条件。

建立时间是在时钟变化前必须稳定输入信号的时间,而保持时间是时钟变化后必须稳定输入信号的时间。

图 1-32 说明了建立时间和保持时间的关系。同时遵守建立时间和保持时间,就可以让 D 触发器正确的存储数据。

图 1-32 建立时间与保持时间

1.3.8 组合电路和时序电路

数字电路可以分为组合电路和时序电路两种。

组合逻辑电路是指输出值仅由输入信号的状态决定的电路。组合逻辑电路的输出不依赖于过去的输入。也就是说,不需要记忆维持过去的输入信号,因此不含有存储元件。

时序电路是指输出值同时依赖于现在和过去输入信号的逻辑电路。时序电路中含有用于保持输入的存储元件。

1.3.9 时钟同步设计

时钟同步设计是一种数字电路的设计技术。前文提到过,时序电路的输出同时取决于现在和过去的输入。但如何区别现在和过去呢?

在时钟同步设计中,有一种周期性地在 H 和 L 间变化的时钟信号,时钟变化边沿(上升沿或下降沿)之前被称为过去,之后被称为现在。时钟同步设计中,由时钟边沿触发同步更新电路的状态。时钟同步设计最大的优点是,设计者只需要注意时钟边沿的时序,电路的设计和验证都比较容易。因此很多数字电路都是时钟同步设计。

1.3.10 小结

本节介绍了数字电路的基础。在数字电路中使用 1 和 0 表现信息,基于用 MOSFET 组合构成的 CMOS 来实现各种逻辑电路。近年来,绝大多数的计算机都是基于数字电子电路实现的。

专栏

数字电路相关书籍

  • 論理回路の設計(浅川毅著、コロナ社)(中文译名《逻辑电路的设计》)

    这本书详细讲解了逻辑电路的原理和设计方法。主要面向学习逻辑电路设计的学生和技术员,也可作为大学或大专院校信息专业学生的教材,非常适合初学者。

  • ディジタル設計者のための電子回路(天野英晴著、コロナ社)

    (中文译名《面向数电设计者的电路》)

    这本书讲解了数字电路中的电路相关知识和设计技术。与《逻辑电路的设计》一书相比,本书对电路和电磁方面知识的讲解更通俗易懂。本书也可以作为大学和大专院校信息专业学生的教材。

目录