Ch-1 数字系统与信息
1. 数字系统
1.1 信号与表示
信息在物理层面通常由电压、磁场方向或电荷等物理量表示:
- 模拟信号 (Analog Signal):取值在时间和数值上都是连续的(Continuous);
- 数字信号 (Digital Signal):取值是离散的(Discrete):
- 异步 (Asynchronous):时间上连续,但取值离散;
- 同步 (Synchronous):时间和取值均是离散的,受时钟脉冲控制。

阈值区间与正逻辑
在物理电压表示中,HIGH 和 LOW 之间有一段阈值区间 (Threshold Region),落在该区间的电平被称为浮动 (Floating) 或未定义状态。“宽进严出”的设计能提高电路的抗噪能力。通常采用正逻辑 (Positive Logic),即规定 HIGH=1=True,LOW=0=False。
1.2 逻辑电路
逻辑系统 (Logic System) 根据是否具有 系统状态 (State present),分为两类:
- 组合逻辑 (Combinational Logic):无系统状态,输出完全取决于当前输入,只需要推导输出与输入间的函数关系即可
Output=Function(Input); - 时序逻辑 (Sequential Logic):存在系统状态,状态的更新分为同步(在离散时间点更新)和异步(任意时间点更新):
- 次态方程(State Equation)
Next State=Function(Current State,Input); - 输出方程(Output Function)
Output=Function(State,Input(optional))。
- 次态方程(State Equation)
1.3 计算机系统
- 数字计算机:处理离散数值的通用系统,包含内存、控制单元、数据通路等。
- 嵌入式系统:作为其他产品不可或缺一部分的计算机(如微控制器、数字信号处理器)。需要通过模数转换器 (A-to-D) 和 数模转换器 (D-to-A) 与外部模拟信号进行交互。
2. 计数体制
2.1 常见进制
进制 (Radix/Base):用于表示数字的符号集合及进位规则。常用的有二进制 (Binary)、八进制 (Octal)、十进制 (Decimal) 和十六进制 (Hexadecimal)。
数值可以通过多项式展开 (Power Series) 表示:
\[\begin{align}(N)_R=(A_{n-1}A_{n-2}\cdots A_1A_0.A_{-1}A_{-2}\cdots A_{-m+1}A_{-m})_R = \sum_{i=-m}^{n-1} A_i \cdot R^i\end{align}\]2.2 进制转换
- 任意进制转十进制:按多项式权值展开相加。
- 十进制转任意进制:
- 整数部分:除基取余法(Repeated Division),余数逆序排列。
- 小数部分:乘基取整法(Repeated Multiplication),整数顺序排列。
- 二的幂次进制与二进制互转:八进制对应3位二进制,十六进制对应4位二进制。需要注意的是小数点后的部分如果位数不满需要补零。
Note
小数部分在进行“乘基取整”时,可能会出现无限循环(如十进制0.65转二进制会无限循环1001),此时必须根据指定的位数进行 截断 (Truncate) 或 舍入 (Rounding)。
3. 数据编码
\(n\) 个比特的二进制码可映射 \(2^n\) 个离散元素。表示 \(M\) 个元素的最小比特数 \(n = \lceil \log_2 M \rceil\)。
3.1 独冷码与独热码
独热码 (One-Hot Code):比特串中仅有一位是 1(如 0001, 0010, 0100),改变状态的硬件成本低,容易检测非法状态,但信息表示率低,非法状态非常多但有效状态很少。与之对应的还有 独冷码 (One-Cold Code),即比特串中仅有一位是 0。
3.2 BCD码
将十进制数字用二进制组合表示,称为二进制编码的十进制数 (Binary Coded Decimal)。
- 8421 码:最基础的带权码,四位二进制表示一位十进制位,权值依次为8,4,2,1:
- 在进行加法操作时,以四位一组的基本单元进行计算;
- 当两组相加的结果大于等于 10 时需要 +6 修正结果。
- 余三码 (Excess-3):在 8421 码基础上加 3(即加上0011),具有对称自补特性,即将 +6 的修正均摊到编码本身上,十进制下要进位的两个数位,在余三码下也要组进位。
- 2421 码:与 8421 码类似但各位权重分别为 2,4,2,1,其特性是 \(x\) 和 \(9-x\) 的 2421 码互补,其中 \(x=0\sim4\) 时的 2421 码就是二进制, \(x=5\sim9\) 时为 \(9-x\text{ xor } 1111_{2}\) 。余三码是将空出的 6 位放在两端,而 2421 码则放在中间。
| 十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
| 8421 码 | \(0000\) | \(0001\) | \(0010\) | \(0011\) | \(0100\) | \(0101\) | \(0110\) | \(0111\) | \(1000\) | \(1001\) |
| 余三码 | \(0011\) | \(0100\) | \(0101\) | \(0110\) | \(0111\) | \(1000\) | \(1001\) | \(1010\) | \(1011\) | \(1100\) |
| 2421 码 | \(0000\) | \(0001\) | \(0010\) | \(0011\) | \(0100\) | \(1011\) | \(1100\) | \(1101\) | \(1110\) | \(1111\) |
切勿混淆转换与编码!
- 转换 (Conversion) 是将数值的进制改变,如 \(13_{10} = 1101_2\);
- 编码 (Coding) 是用二进制符号表示各数位,如 13 的BCD码为 \(0001\ 0011\)。
3.3 字符编码
ASCII码:美国信息交换标准代码,使用7位二进制表示128个字符:
- 数字 0~9 的十六进制码为 \(30_{16} \sim 39_{16}\)。
- 字母大小写转换只需翻转第6个比特位。
DEL控制符全为1,源于早年纸带打孔用于覆盖擦除错误的机制。
Unicode:ASCII的扩展,使用16位 (2 Byte) 代码字,可编码全球几乎所有语言。
3.4 格雷码
格雷码 (Gray Code) 是一种可靠性编码 (Reliable Code),其核心特性是相邻的两个数值对应的编码之间,只有 1 个比特位发生翻转。数字 \(x\) 对应的格雷码为:
\[ x\text{ xor }(x\text{>>}1) \]格雷码还可以通过递归构造,假设已知 \(n-1\) 位的格雷码的顺序集合为 \(S\) , 则有 \(n\) 为的格雷码顺序集合为:\(0S+\text{rev}(1S)\) ,例如由 2 位格雷码推导 3 位格雷码:
\[ \begin{align} &S_{2}=\{00,01,11,10\}\\ &0S_2=\{000,001,011,010\},\space1S_2=\{100,101,111,110\}\\ &S_3=0S_2+\text{rev}(1S_2)=\{000,001,011,010,110,111,101,110\} \end{align} \]3.5 奇偶校验
通过引入冗余 (Redundancy) 比特来检测传输错误,称为错误检测码 (Error-Detection Codes)。奇偶校验能够检测出所有单比特错误 (Single-bit errors)。
- 偶校验 (Even Parity):附加1个校验位后,整个代码字中“1”的数量为偶数;
- 奇校验 (Odd Parity):附加1个校验位后,整个代码字中“1”的数量为奇数。