第1章 数字技术基础
Section titled “第1章 数字技术基础”本章主要介绍数字技术的基础知识,包括数字电路中常用的计数制、逻辑代数的基础理论、逻辑函数的表示及其简化方法等内容。
自然界中的许多物理量(如距离、温度、压力、亮度、流量等)在时间和数值上都是连续变化的,这些物理量在一定范围内可在任意时间点上取得任意精度的实数,我们称这类物理量为模拟量。为了将这些物理量进行分析、传输、显示,工程上通常转换成电压或电流来模拟、处理这些实际的物理量,对应的电压或电流称为模拟信号,例如正弦变化的交流信号,它在某一瞬间的值可以是一个数值区间内的任何值。处理模拟信号的电路被称为模拟电路(analog circuit)。模拟电路主要研究输出与输入信号之间幅度、相位、阻抗、失真等方面的内容。一般情况下,模拟电路中所使用的电子器件要求工作在线性区。这类电路包括放大电路、模拟运算电路、滤波电路、钳位电路等。
另外一类信号,它们只在特定的时间点上取得特定的数值,每次数值的增减变化都是某一个最小单位的整数倍(如果是二进制信号,在数值上只有0和1),也就是在时间上和数值上都是离散的,这一类信号叫做数字信号。数字信号可以用来表示某些物理量,也可以仅仅表示数字信号输入和输出之间的逻辑关系。处理数字信号的电路称为数字电路(digital circuit)。二进制数字电路中,常使用高电平(1电平)和低电平(0电平)来表示电路的状态,每个0或1称为一个比特(bit),是数据传输、处理和存储的最小单位。数字电路主要研究输出与输入信号之间的逻辑关系,包括各种逻辑运算、时延、抗干扰能力、带负载能力等方面内容。一般情况下,数字电路中所使用的电子器件工作在非线性区,即工作于开关状态。这类电路包括地址译码器、计数器、寄存器等。
图 1.0.1 给出了模拟信号与数字信号的示意图。

(a)模拟信号

(b)数字信号
图 1.0.1 模拟信号与数字信号
除模拟电路与数字电路外,还有一类电路称为数模混合电路,该类电路中既包含了模拟电路,也包含了数字电路,如电压比较器、多谐振荡器、限幅器、数模和模数转换器等。
1.1.1 数制
Section titled “1.1.1 数制”数制是进位记数制的简称,是用一组固定的符号和统一的规则来表示数值的方法。现在常用的计数制有二进制、八进制、十进制、十六进制。每一种记数制所使用的数码个数称为基数,如二进制的基数为 2, 十进制基数为 10。在表示数值的大小时,通常需要使用从低位到高位的多位数码表示,各个数码处于数码组合不同位置时所代表的数值不同,即数码在不同位置对应有不同的权值。表 1.1.1 是十进制数对应的二进制、八进制和十六进制数。表 1.1.2 给出的是二进制各位对应的权值。
表 1.1.1 十进制对应的二进制、八进制、十六进制数
| 十进制 | 二进制 | 八进制 | 十六进制 | 十进制 | 二进制 | 八进制 | 十六进制 | 十进制 | 二进制 | 八进制 | 十六进制 |
| 0 | 0000 | 0 | 0 | 6 | 0110 | 6 | 6 | 12 | 1100 | 14 | C |
| 1 | 0001 | 1 | 1 | 7 | 0111 | 7 | 7· | 13 | 1101 | 15 | D |
| 2 | 0010 | 2 | 2 | 8 | 1000 | 10 | 8 | 14 | 1110 | 16 | E |
| 3 | 0011 | 3 | 3 | 9 | 1001 | 11 | 9 | 15 | 1111 | 17 | F |
| 4 | 0100 | 4 | 4 | 10 | 1010 | 12 | A | 16 | 10000 | 20 | 10 |
| 5 | 0101 | 5 | 5 | 11 | 1011 | 13 | B |
表 1.1.2 二进制各位的权值
| 二进制位数 | 权 | 十进制表示 | 二进制位数 | 权 | 十进制表示 | 二进制位数 | 权 | 十进制表示 |
| 13 | 2¹2 | 4096 | 7 | 2⁶ | 64 | 1 | 2⁰ | 1 |
| 12 | 2¹1 | 2048 | 6 | 2⁵ | 32 | -1 | 2⁻1 | 0.5 |
| 11 | 2¹0 | 1024 | 5 | 2⁴ | 16 | -2 | 2⁻2 | 0.25 |
| 10 | 2⁹ | 512 | 4 | 2³ | 8 | -3 | 2⁻3 | 0.125 |
| 9 | 2⁸ | 256 | 3 | 2² | 4 | -4 | 2⁻4 | 0.0625 |
| 8 | 2⁷ | 128 | 2 | 2¹ | 2 | -5 | 2⁻5 | 0.03125 |
任何进制数都可以按权展开求和,从而得到十进制数的对应数值。将一个整数位为 n 位、小数位为 m 位的 R 进制数 N 按权展开的表示式为
r l (N) _ R & = (k _ n - 1 × R ^ n - 1 + k _ n - 2 × R ^ n - 2 + … + k _ 1 × R ^ 1 + k _ 0 × R ^ 0 + & k _ - 1 × R ^ - 1 + k _ - 2 × R ^ - 2 + … + k _ - m × R ^ - m) _ 1 0 & = (∑_ i = - m ^ n - 1 k _ i × R ^ i) _ 1 0 (1.1.1)式(1.1.1)中 (N)_R 为 R 进制的数 N , (∑ᵢ = -mⁿ - 1kᵢ× Rⁱ)₁0 表示展开求和后对应的十进制
数,括号外的下角标表示进制(基数)。
以一个十进制数 8921 为例,8、9、2、1 称为系数,每个系数所处的位置不同,则对应的权值不同。其运算规律为逢十进一,借一当十。将其按权值展开可以表示为
(8 9 2 1) _ 1 0 = (8 × 1 0 ^ 3 + 9 × 1 0 ^ 2 + 2 × 1 0 ^ 1 + 1 × 1 0 ^ 0) _ 1 0若将二进制数 (11011.011)₂ 按权展开,得到十进制数为
r l (1 1 0 1 1. 0 1 1) _ 2 & = (1 × 2 ^ 4 + 1 × 2 ^ 3 + 0 × 2 ^ 2 + 1 × 2 ^ 1 + 1 × 2 ^ 0 + 0 × 2 ^ - 1 + 1 × 2 ^ - 2 + 1 × 2 ^ - 3) _ 1 0 & = (1 6 + 8 + 0 + 2 + 1 + 0 + 0. 2 5 + 0. 1 2 5) _ 1 0 & = (2 7. 3 7 5) _ 1 01.1.2 不同数制间的转换
Section titled “1.1.2 不同数制间的转换”1. 十进制与非十进制之间的转换
Section titled “1. 十进制与非十进制之间的转换”(1) 非十进制数转换为十进制数
非十进制数转换为十进制数仅需按式(1.1.1),将每位数码作为系数乘以权值并求和即可。
将 (12AF.B4)₁6 转换成十进制数。
解
(2) 十进制数转换为非十进制数
十进制数转换为非十进制数时需要将整数和小数分别处理。
① 整数部分的转换
整数部分的转换采用基数连除法。方法是用十进制整数除以目的数制的基数,第一次相除所得的余数为目的数的最低位,得到的商再除以该基数,所得的余数为目的数的次低位,依此类推,直到商为0,最后所得的余数为目的数的最高位。
将 (53)₁0 转换成二进制数。
解
目的基数 十进制整数

经过多次除以基数2,得到转换结果为 (53)₁0 = (110101)₂ 。这里需要强调的是最先得到的余数为最低位。
将 (53)₁0 转换成八进制数。
解
| 目的基数 | 十进制整数 | 余数 |
| 8 | 53 | 5 低位 |
| 6 | 6 高位 | |
| 0 |
转换结果为 (53)₁0=(65)₈ 。
② 小数部分的转换
Section titled “② 小数部分的转换”小数部分的转换是采用基数连乘法。方法是用该十进制小数乘以目的数制的基数,第1次相乘结果的整数部分为目的数制小数的最高位,去除整数后剩余的小数部分再乘以基数,所得结果的整数部分为目的数制小数的次高位,依此类推,直到小数部分为0或达到精度要求为止。
将十进制小数 (0.6875)₁0 转换成二进制数,精度到小数点后6位。
为表示该二进制数的精度到小数点后6位,可在最低位后增加两个“0”。所以转换结果为 (0.6875)₁0 = (0.101100)₂ 。
将十进制小数 (0.687)₁0 转换成二进制数,精度到小数点后4位。
r l r l text 解: & 0. 6 8 7 × 2 = 1. 3 7 4 & 1 & text 最高位 & 0. 3 7 4 × 2 = 0. 7 4 8 & 0 & 0. 7 4 8 × 2 = 1. 4 9 6 & 1 & 0. 4 9 6 × 2 = 0. 9 9 2 & 0 & text 最低位(已经到达所要精度,无须再继续转换)转换结果为 (0.687)₁0≈(0.1010)₂ 。最后的0应该保留,以表示精确到小数点后第4位。
2. 二进制与八进制和十六进制之间的转换
Section titled “2. 二进制与八进制和十六进制之间的转换”八进制的基数是2的3次幂,十六进制的基数是2的4次幂,因此二进制与八进制和十六进制间的互换非常容易。二进制要转换为八进制时,只需要将其以小数点为中心,向两边按每3位分成一组,不足3位时补0,再把每3位二进制数对应的八进制数码写出即可。同样,二进制要转换为十六进制时,只需要将其以小数点为中心,向两边按每4位分成一组,不足4位时补0,再把每4位二进制数对应的十六进制数码写出即可。反过来,八进制和十六进制转换为二进制时,只需写出对应的二进制码即可。下面用4个例子说明二进制与八进制以及二进制与十六进制之间的转换方法。
将 (11101.1101)₂ 转换成八进制数。
解
二进制数=011 101.110 100 八进制数=3 5.6 4
转换结果为 (11101.1101)₂=(35.64)₈ 。
将 (234.567)₈ 转换成二进制。
解
八进制数 = 2 3 4 .5 6 7
二进制数 = 010 011 100.101 110 111
转换结果为 (234.567)₈ = (10011100.101110111)₂ 。
将 (11101.1101)₂ 转换成十六进制数。
解
二进制数=0001 1101.1101
十六进制数 = 1 D. D
转换结果为 (11101.1101)₂=(1D.D)₁6 。
将 (AF.26)₁6 转换成二进制数。
解
十六进制数= A F . 2 6
二进制数 = 1010 1111.0010 0110
转换结果为 (AF.26)₁6=(10101111.0010011)₂ 。
1.1.3 二进制编码
Section titled “1.1.3 二进制编码”二进制编码是用特定的二进制数码来表示自然数、符号、状态等各类信息的过程。不同的二进制数码可以表示数的大小,也可以表示符号、状态的不同。当表示符号或状态时,数码没有大小含义,例如可以给每个参加运动会的运动员一个二进制数码,用于在计算机系统中相关信息的识别和处理。
1. 二进制编码
Section titled “1. 二进制编码”二进制编码可以有很多种编码方式,这里主要介绍自然二进制编码和格雷码。4位二进制码的编码方式如表1.1.3所示。
表 1.1.3 两种 4 位二进制编码表
| 十进制数 | 自然二进制码 | 二进制格雷码 | 十进制数 | 自然二进制码 | 二进制格雷码 |
| 0 | 0000 | 0000 | 8 | 1000 | 1100 |
| 1 | 0001 | 0001 | 9 | 1001 | 1101 |
| 2 | 0010 | 0011 | 10 | 1010 | 1111 |
| 3 | 0011 | 0010 | 11 | 1011 | 1110 |
| 4 | 0100 | 0110 | 12 | 1100 | 1010 |
| 5 | 0101 | 0111 | 13 | 1101 | 1011 |
| 6 | 0110 | 0101 | 14 | 1110 | 1001 |
| 7 | 0111 | 0100 | 15 | 1111 | 1000 |
自然二进制编码 0000~1111 可以用来表示十进制数的 0~15,也可以用来表示 16 种其他状态信息。自然二进制编码是一种有权编码,各个位置上的权值是固定的,由高到低分别为 8、4、2、1,所以也称自然二进制码为 8421 码,对于 8421 码或其他有权码,可以通过其权值和系数计算出对应的十进制数。
二进制循环码(简称循环码)是无权码,也就是没有固定的权值,其编码方案有很多种,其特点是任何相邻的两个码组(包括首尾两个码组)仅有一位码不同,因此循环码又叫单位距离码。二进制格雷码(Gray Code)是循环码的一种,鉴于它的编码特点,格雷码又称为反射二进制码。在后面的学习中可以看到,使用循环码(包括格雷码)时,在码组顺序变化时可以有效地减少逻辑错误,所以二进制格雷码属于可靠性编码,是错误最小化的编码方式之一。观察二进制格雷码的最后一位,可将其分为4个一组,顺序为01 10,01 10,……从中间分开后折叠对称;倒数第二位分为8个一组时的顺序为0011 1100,0011 1100,……同样,倒数第三位的顺序为00001111 11110000,……这一特性称为折叠反射特性,利用其折叠反射性很容易获得对应的编码。
2. 二-十进制编码
Section titled “2. 二-十进制编码”我们非常熟悉的是十进制数,在计算机中,有多种4位二进制数码来表示十进制数的0~9,通常将这些4位二进制数码称为二十进制编码或简称BCD(Binary Coded Decimal)码。几种常用的BCD编码如表1.1.4所示。
表 1.1.4 常见的 BCD 编码
| 十进制码 | 8421BCD 码 | 2421BCD 码 | 余 3BCD 码 | 格雷 BCD 码 | 余 3 格雷 BCD 码 |
| 0 | 0000 | 0000 | 0011 | 0000 | 0010 |
| 1 | 0001 | 0001 | 0100 | 0001 | 0110 |
| 2 | 0010 | 0010 | 0101 | 0011 | 0111 |
| 3 | 0011 | 0011 | 0110 | 0010 | 0101 |
| 4 | 0100 | 0100 | 0111 | 0110 | 0100 |
| 5 | 0101 | 1011 | 1000 | 0111 | 1100 |
| 6 | 0110 | 1100 | 1001 | 0101 | 1101 |
| 7 | 0111 | 1101 | 1010 | 0100 | 1111 |
| 8 | 1000 | 1110 | 1011 | 1100 | 1110 |
| 9 | 1001 | 1111 | 1100 | 1000 | 1010 |
(1) 8421BCD 码
Section titled “(1) 8421BCD 码”8421BCD码是最常用的二-十进制编码。它是用4位自然二进制码中的前10个,即0000~1001来表示十进制的0~9。4位二进制代码权值由高到低分别为8、4、2、1,所以8421BCD码是一种有权码。以十进制数76为例,其8421BCD码为 (76)₁0=(01110110)₈421BCD 。
(2) 2421BCD 码(简称 2421 码)
Section titled “(2) 2421BCD 码(简称 2421 码)”2421 码的最高位权值为 2,其他位的权值与 8421BCD 码相同,其权值由高到低分别为 2、4、2、1。特点是 0 和 9、1 和 8、2 和 7、3 和 6、4 和 5 互为反码。十进制数 76 的 2421 码为 (76)₁0 = (11011100)₂421 。
(3) 余 3BCD 码(简称余 3 码)
Section titled “(3) 余 3BCD 码(简称余 3 码)”余3码是去掉4位自然二进制码的前3组编码,从第4组开始顺序选用10组编码,或者说是由8421BCD码加上0011(3)形成的,因此称为余3码。特点是将两个余3码表示的十进制数相加时,能正确产生进位信号,但对不含进位位的“和”必须修正。修正的方法是:如果有进位,则结果加3;如果无进位,则结果减3。与2421码相似,余3码的0和9、1和8、2和7、3和6、4和5也互为反码。十进制数76的余3码为 (76)₁0 = (10101001)_(余 3码) 。
(4) 格雷 BCD 码
Section titled “(4) 格雷 BCD 码”格雷 BCD 码是选用 4 位二进制格雷码的前 9 个编码,再选用 1000 作为第 10 个编码构成。挑选 1000 的目的是使该编码的首尾编码仍具有单位距离特性(任意两个相邻的编码之
间仅有一位不同)。格雷 BCD 码是无权码。
(5) 余 3 格雷 BCD 码(简称余 3 格雷码)
余 3 格雷码是选用 4 位二进制格雷码的第 4 到第 13 个编码构成的 BCD 码。余 3 格雷码也是无权码。