ECE2050 数字逻辑与系统 · Chapter 1 课堂笔记
本笔记对应课件
ECE2050-Chap1.pdf,跳过课程介绍部分(授课教师、考核方式、教学周历、参考教材等),只整理第 1 章正式内容。Chapter 1 是一张"全课程导览图",目的是先建立全局视野,后面每一章才会展开细节。
为什么要学数字逻辑(简要动机)
在进入正章前,老师用两张幻灯片给了动机。第一个理由是它是电子与计算机工程(ECE)专业的必修基础课;第二个理由是从"写出能在硬件上跑的高性能软件"这一目标倒推——任何底层性能优化、任何对微处理器数据手册(datasheet)和电路原理图(schematic diagram)的阅读,都绕不开"布尔代数 + 数字电路"这套底座语言。
课件上列出了一组今天数字世界的核心处理器/芯片名词,先混个脸熟,后面课程会反复回到它们:
- CPU(Central Processing Unit,中央处理器):通用计算的大脑。
- GPU(Graphics Processing Unit,图形处理器):大规模并行计算单元,现广泛用于 AI 训练。
- DSP(Digital Signal Processor,数字信号处理器):面向信号处理(滤波、FFT 等)的专用处理器。
- MCU(Microcontroller Unit,微控制器):把 CPU、内存、外设集成在一颗芯片上的"小电脑",用于嵌入式控制。
- SoC(System on Chip,系统级芯片):把整个系统(CPU、GPU、内存控制器、外设接口……)集成到一颗芯片上,手机里的应用处理器就是典型。
- ASIC(Application-Specific Integrated Circuit,专用集成电路):为某个固定功能定制的芯片,量产成本低但不可改。
- FPGA(Field-Programmable Gate Array,现场可编程门阵列):芯片"毛坯",买回来可由工程师用硬件描述语言反复烧写配置成任意电路。
记住一个直觉:所有这些芯片,无论名字多花哨,底层都是由大量"开关"组成的数字电路。本课程就是来拆解这个"开关"世界是怎么搭起来的。
一、管理复杂度:现代数字系统怎么设计
老师一上来抛出本章最核心的问题:现代数字系统动辄包含数百万甚至数十亿个晶体管,单个人脑一次根本装不下这么多细节,那我们到底是怎么把这种东西设计出来的?答案是一套已经成熟几十年的方法论,可以浓缩为"抽象 + 纪律 + 三个 Y"(Abstraction, Discipline, The 3-Y's)。
1.1 抽象(Abstraction)
抽象的精髓是主动忽略底层细节,把工作拉到一个更高的层级上。现代芯片里有几百万个晶体管,每个晶体管里又有电子迁移率(electron mobility)、电压阈值(voltage threshold)、开关延迟(switching delays)等等物理现象——如果我们必须一直想着这些,就什么事都做不了。Abstraction 让我们"封印"掉这些低层信息,只看更上层的功能模块。本课程绝大部分时间都在更高的抽象层上工作——我们关心的是逻辑门、寄存器、状态机,而不是单个晶体管里的电子运动。
1.2 纪律(Discipline)
光有抽象还不够,我们必须给自己定规矩,否则不同人/不同模块会各做各的,最后拼不到一起。课件举了"数字纪律(Digital Discipline)"作为最典型的例子:现实世界的电压是连续的(一条线上可能是 0.1V、1.732V、3.3V 等等任何值),但数字电路规定只用两个离散的电压——低电平(GND,约 0V)和高电平(VDD,例如 3.3V 或 1.2V),中间值要么被明确判为 0、要么被判为 1。这个看似武断的纪律换来的是巨大回报:信号更容易识别、抗噪声能力更强、电路更易设计,于是我们就能搭出"更复杂"但仍然"能工作"的系统。
1.3 三个 Y(The 3-Y's)
这套方法论的灵魂是三个以某种方式相互呼应的设计原则:Hierarchy、Modularity、Regularity。注意它们在课本里被戏称为"the 3-Y's",是教材的一个标志性提法。
层次化(Hierarchy) 是把系统按"层级"组织。课件给了一个非常具体的四层范例:
- 第 1 层:晶体管(transistors) → 组合出逻辑门(logic gates)
- 第 2 层:逻辑门 → 组合出基本电路(basic circuits),如半加器(half-adder)、多路选择器(mux)
- 第 3 层:基本电路 → 组合出功能单元(functional units),如全加器(full-adder)、触发器(flip-flops)
- 第 4 层:功能单元 → 组合出完整系统(systems),如计数器(counter)、状态机(state machine)
每往上一层,关心的问题就更宏观;每往下一层,就更具体。这种"洋葱式"的拆解让我们每一时刻只需要盯住自己那一层。
模块化(Modularity) 是设计出"独立、定义良好、可互换"的组件。课件以 2-to-1 MUX(二选一多路选择器)为例:一旦这个模块被设计并验证(well-defined function + well-defined interface),它就可以被原封不动地复用到有限状态机(FSM)、存储控制器(memory controller)等任何需要它的地方。模块化的关键不在于"功能多强大",而在于"接口是否清晰、行为是否可预测"。
规律性(Regularity) 鼓励"千篇一律",让模块更容易被复用。课件给了三个例子:
- 一个 4-bit 寄存器就是 4 个完全相同的 D 触发器(DFF)拼起来;
- 一块存储阵列就是一个由"相同位单元(bit cell)"排成的二维网格;
- 一个 n-bit 加法器就是把同一个全加器(full-adder)级联 n 次。
规律性的好处是电路版图(layout)整齐、测试可以批量化、生产/良率管理更简单,也方便扩展——把设计从 4-bit 扩到 8-bit,方法就是把已有模块再抄一遍。
可以把三者记成一个心智模型:Hierarchy 决定"怎么分层",Modularity 决定"每层长什么样",Regularity 决定"同一层里各模块多像彼此"。
二、模拟量 vs 数字量
铺垫完设计方法论后,正式进入"数字 vs 模拟"这组对立概念。
模拟量(analog quantity) 是连续取值。课件列了几个例子:电线上的电压、振荡的频率、物体的位置——它们在物理上可以取一段范围内的任何值。数字量(digital quantity) 则是从一个离散集合中取值。本课程关心的是数字量。
一个直觉性的对比来自音乐载体:黑胶唱片(vinyl record,12 英寸约 30cm,能放约 3.5 小时的连续声波)和 CD(Compact Disk,12cm,能放约 74 分钟的数字音频)。前者是模拟信号、后者是数字信号。
老师问了一个反问:一个带 CD 播放器的音响系统算不算数字系统? 课件给出的答案是:它既是又不是。CD 内部、播放器内部确实是数字域,但扬声器要发出声音必须把数字信号通过 D/A 转换器(Digital-to-Analog converter)变回连续的模拟电压才能推动喇叭。所以一个完整的"系统"常常是数字 + 模拟混合的,关键看哪一段是你关心的抽象。
数字系统的优势 课件列了两条主线:一是数字数据可以更高效、更可靠地存储、处理和传输;二是数字信号更抗噪声——因为我们只在乎"是高还是低",中间的小毛刺只要不越界就不影响判读。
数字系统的劣势 课件没写答案,但老师留作思考。一个直观的代价是量化误差:把连续的模拟量强行拍成离散值必然会丢精度。例如 CD 的 16-bit、44.1kHz 采样,决定了它能表达的动态范围和频响上限。另一个代价是采样与处理延迟:模拟信号实时变化,数字系统要采样→量化→处理→重建,必然有滞后。这些在后续信号处理课程里会再展开。
三、数字纪律:Bit 与逻辑电平
数字电路的最小信息单位是 bit(binary digit,二进制位),它只有两种合法取值:0 或 1。课件给了一组等价说法来帮助直觉:
0≡LOW≡FALSE≡低电平
1≡HIGH≡TRUE≡高电平
怎么用物理量来表示 0 和 1? 在电路上,最自然的做法是用两种不同的电压。常见约定是 正逻辑(Positive Logic):高电平(VDD)= 1,低电平(GND)= 0。注意这是约定,不是物理必然——也存在**负逻辑(Negative Logic)**系统,那里 1 对应低电平、0 对应高电平(例如某些老式工业总线)。本课程默认使用正逻辑。
课件还提到,0 和 1 并不一定要用电平实现——也可以是齿轮的两种位置、液面的高低、灯泡的亮灭等任何"两个稳定、可区分状态"的物理系统。核心是"离散二值",而不是"必须用电"。这正是 Babbage 在 19 世纪用机械齿轮就能搭出"第一台数字计算机"的原因。
顺带提一下历史掌故:Charles Babbage 在 1834–1871 年间设计的分析机(Analytical Engine) 被认为是第一台数字计算机,用齿轮的 10 个位置表示 0–9;同期的 Ada Lovelace 被公认为第一位程序员。
四、数制(Number Systems)
既然数字电路里只有 0 和 1,那么日常的十进制数怎么表达?这就要靠进制。课件给了一张 0–15 的四列对照表,把十进制(Decimal)、二进制(Binary)、八进制(Octal)、十六进制(Hexadecimal, Hex)摆在一起:
| Decimal | Binary | Octal | Hex |
|---|---|---|---|
| 0 | 0000 | 00 | 0 |
| 1 | 0001 | 01 | 1 |
| 2 | 0010 | 02 | 2 |
| 3 | 0011 | 03 | 3 |
| 4 | 0100 | 04 | 4 |
| 5 | 0101 | 05 | 5 |
| 6 | 0110 | 06 | 6 |
| 7 | 0111 | 07 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
几个值得注意的点:
- 每一列都是同一数字的不同写法,值是相等的。例如 1210=11002=148=C16。
- 十六进制用 A–F 表示 10–15,因为十进制数字只有 0–9,不够用。
- 八进制的数字只能到 7,因为它是"逢 8 进 1"。所以 14 的八进制是 16(不是 14),15 的八进制是 17。
- 二进制的位权 是 2 的幂:从右到左分别是 20,21,22,…。这意味着一个 n-bit 二进制数能表示 0 到 2n−1 的范围;4-bit 就是 0–15,对应表中 16 个数。
为什么同时学四种进制?因为工程上各有分工:十进制是给人看的(日常书写、用户界面);二进制是给电路看的(bit 流);十六进制是给人看 bit 流的"压缩写法"——每 4 个二进制位正好对应 1 个十六进制位(1 个 hex digit = 1 个 nibble = 4 bits),所以写起来比纯二进制短得多;八进制现在用得少一些(早期 Unix 权限位、早期微型计算机常用),但在某些场合还会出现。Chapter 2 会专门讲各种进制之间怎么转换、怎么算加减乘除、怎么处理有符号数(signed numbers),这里先建立"它们是同一数字的不同写法"这个直觉。
五、逻辑门(Logic Gates)
逻辑门(logic gate) 是"接收 0/1 输入、按某种布尔规则输出 0/1"的电路。课件先给出三种最基本的形式:
- NOT(非门):输出与输入相反。输入 0 → 输出 1;输入 1 → 输出 0。
- AND(与门):只有所有输入都是 1 时输出才是 1;只要有一个输入是 0,输出就是 0。可以有两个或更多输入。
- OR(或门):只要有一个输入是 1,输出就是 1;所有输入都是 0 时输出才是 0。同样可以有两个或更多输入。
课件给出了一个 AND 门的真值表(truth table)和布尔方程(Boolean equation)作为示例:
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
对应的方程是 Y=A⋅B(也常写作 Y=AB),意思是"Y 等于 A 与 B"。
Chapter 3 会再引入更完整的门族:NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或),以及它们如何用 CMOS 晶体管实现。这里只要记住"逻辑门是最小的、可识别的功能块"就够了。
六、组合逻辑 vs 时序逻辑
数字电路分成两大类,理解这个二分法是后续所有章节的骨架。
组合逻辑(Combinational Logic) 是无记忆的:输出完全且仅由当前的输入决定,没有"上次发生了什么"的概念。AND 门就是最典型的组合逻辑——给一时刻的 A、B,立刻能算出 Y,电路里没有任何东西"记得"上一次的输入。
时序逻辑(Sequential Logic) 是有记忆的:输出**既由当前输入,也由"过去发生的事"决定。"过去发生的事"在电路里被抽象成一个叫状态(state)**的内部存储量。课件的定义是:状态 = 解释电路未来行为所需的全部信息。最典型的时序元件是触发器(flip-flop),它能"记住"一个 bit 一直到你让它改为止。
为什么要这么分?因为现实问题里有一大类本质就是"需要时间维度"的——比如计数器要从 1 数到 100、状态机要按顺序执行若干步、自动售货机要"记得"你已经投了多少钱。这些没法用纯组合逻辑实现,必须有时序元件配合。这一区分会贯穿 Chapter 6–10。
七、布尔代数与化简(Chapter 4 预告)
组合逻辑的设计核心是布尔代数(Boolean Algebra)。课件上给了一个三变量函数的化简示例,用来"剧透"Chapter 4 会讲什么:
Y=AˉBˉCˉ+AˉBC+ABC
注意这个表达式里每一项都是"三个变量的某种 AND 组合"——这种项叫最小项(minterm),对应真值表里输出为 1 的那些行。
化简过程是:
Y=AˉBˉCˉ+AˉBC+ABC=AˉBˉCˉ+AˉBC+AˉBˉC+ABC(把 AˉBC 拆成两项)=AˉB(Cˉ+C)+(Aˉ+A)BC=AˉB+BC
解释一下中间用到的两个规则:
- 代入恒等(Rule 11: A+AˉB=A+B)的逆用——我们用"把一项拆成两项"的方式把公共因子提出来;
- 互补律(Cˉ+C=1、Aˉ+A=1)——把"必然为 1"的东西消掉。
右边那张 Karnaugh Map(K-map,卡诺图) 用 2D 表格把 3 个变量的 8 种组合摆成相邻的格子,把相邻的 1 圈起来(一个圈覆盖 2 个相邻的 1)就能直接读出 AˉB 和 BC 两组化简项。K-map 是 Chapter 4 重点要学的工具。
课件上还摆了三块代数参考。Laws(定律):交换律(Commutative laws)、结合律(Associative laws)、分配律(Distributive law)。Rules(规则,共 12 条):
- A+0=A
- A+1=1
- A⋅0=0
- A⋅1=A
- A+A=A
- A+Aˉ=1
- A⋅A=A
- A⋅Aˉ=0
- Aˉˉ=A(双重否定律)
- A+AB=A
- A+AˉB=A+B
- (A+B)(A+C)=A+BC
DeMorgan 定理(DeMorgan's Theorems)——可能是整个布尔代数里最常用、也最容易记错的两条:
A⋅B=Aˉ+Bˉ
A+B=Aˉ⋅Bˉ
直观的记忆方法:长线上变短、短线上变长(即"非号切开时,要么所有变量取反,要么所有运算从 AND 变 OR / OR 变 AND")。Chapter 4 会用大量例子训练。
八、组合逻辑构件预览(Chapter 6 预告)
课件花了几张幻灯片把后续章节会详细讲的"组合逻辑构件"先过一遍。这一节只是预告,每种构件会在 Chapter 6 单独拆开讲。
加法器(Adder) 用来算两个数的和。课件举的最朴素的例子是 3+9=12——把两个多位二进制数按位相加,再处理进位(carry)。一个完整的加法器内部会由若干个"全加器(full-adder)"级联而成。
比较器(Comparator) 用来判断两个数的大小关系。例如判断 2<5,当条件成立时输出 HIGH(即 1)。比较器的输出通常是三根线(A<B、A=B、A>B)中恰好有一根为 1。
编码器(Encoder)与译码器(Decoder) 是一对相反的操作。编码器 把 2n 条输入线中"哪一条为 1"压缩成 n-bit 二进制码(例如 8-to-3 encoder);译码器 把 n-bit 二进制码展开成 2n 条输出线中"对应那一根变 1"(例如 3-to-8 decoder)。两者在存储芯片地址选择、7 段数码管显示等场景里大量使用。
多路选择器(Multiplexer, MUX)与多路分配器(Demultiplexer, DeMUX) 是另一种"信号路由"构件。MUX 把多条输入线"合并"到一条输出线,靠选择信号(select)决定当前把哪一条接到输出上;DeMUX 反过来,把一条输入线"分发"到多条输出线中的一条。MUX/DeMUX 在总线、数据选择、信号切换里几乎是基础设施级别的存在。
九、时序逻辑设计(Chapter 7 预告)
进入时序逻辑的世界。课件的核心定义是:时序逻辑的输出取决于"当前输入 + 过去的输入历史"——它有记忆。而"过去历史的总和"被抽象成状态(state)。
最基本的"记忆单元"是双稳态电路(bistable circuit):它有两个稳定状态,对应 0 和 1;没有外部驱动时,它会一直待在自己当前的状态里;外界给它一个合适信号时,它会切换到另一个状态。一次只能存 1 个 bit——这是后续所有"更大存储"的基石。
课件列出了后续章节会涉及的具体元件:
- SR 锁存器(SR Latch) 与 D 锁存器(D Latch):最简单的锁存器,输出跟随输入或保持。
- D 触发器(D Flip-Flop, DFF) 与 JK 触发器(JK Flip-Flop):在时钟边沿触发的存储元件,是真正"同步数字系统"的基石。Chapter 7 会详细讲它们的内部结构、时序参数(建立时间 setup time、保持时间 hold time)和应用。
直觉上:锁存器是"电平敏感"的(输入在哪个电平,输出就跟到哪),触发器是"边沿敏感"的(只在时钟上升/下降沿那一瞬采样输入并更新输出)。这个差别在写时序电路时至关重要。
十、寄存器、计数器与有限状态机(Chapter 8–10 预告)
把多个触发器并排,就得到寄存器(Register);把多个触发器串起来、让数据"流动",就得到移位寄存器(Shift Register)。课件特别强调串行(serial) 与并行(parallel) 两种数据传输方式的对比:
- 串行:1 bit 一次通过 1 根线。传 8 bit 需要 8 个时间间隔,但只用 1 根物理线。
- 并行:多个 bit 同时通过多根线。8 bit 只需 1 个时间间隔,但要 8 根物理线。
典型场景:计算机往老式打印机送数据通常用并行口(一次传 8 bit,速度快、距离短),而 USB、网线等都是串行(用更少的线、更高的时钟频率达到同样吞吐量)。
计数器(Counter) 是时序逻辑里最常用的小功能块。课件给了一句非常到位的概括:"要计数,计数器必须记住当前的数,才能走到序列里下一个正确的数。"存储能力是所有计数器的关键特性,触发器(flip-flop)通常就是它的实现手段。Chapter 10 会讲异步计数器、同步计数器的设计方法和应用。
有限状态机(Finite State Machine, FSM) 是时序逻辑的"集大成"形式。课件给出的结构是 状态寄存器(State Register)+ 组合逻辑(Combinational Logic):状态寄存器负责"记住当前在哪个状态",组合逻辑根据"当前状态 + 当前输入"算出"下一状态"和"当前输出"。
课件上的例子是一个十字路口交通灯控制器(Bravado 大道与 Academic 大道 / Ave. 大道路口,附近是 Dining Hall、Labs、Dorms、Fields),四态 FSM:
- S0:Academic 方向绿灯(LA green,LB red);若传感器 TB 检测到 Bravado 方向有车在等 → 转 S1,否则保持 S0;
- S1:Academic 方向转黄(LA yellow,LB red);无条件 → S2;
- S2:Bravado 方向绿灯(LA red,LB green);若传感器 TA 检测到 Academic 方向有车在等 → 转 S3,否则保持 S2;
- S3:Bravado 方向转黄(LA red,LB yellow);无条件 → S0。
关键直觉:绿灯所在的那个方向不会自己主动走,只有当另一条路的车等待传感器(TB 或 TA)触发时才让行——即"我这条绿灯是否继续"由"对面有没有车在等"决定。这是典型的 Moore 型 FSM(输出只由当前状态决定),Chapter 9 会系统讲。
十一、存储器、IC、PLD/FPGA(Chapter 11 预告)
课件最后一组预览是关于"怎么把这一切真正造出来"。
存储器(Memory) 是数字系统的"仓库"。课件列了几种主流类型:SRAM(Static RAM)、DRAM(Dynamic RAM)、ROM(Read-Only Memory)、Flash。每种在速度、密度、是否易失(断电丢数据)上各有取舍,Chapter 11 会展开。
集成电路(Integrated Circuit, IC) 是把整个电路做在单颗硅片上的产品。课件把它按"功能是否可由用户改写"分成两大类:
- 可编程逻辑(Programmable Logic):出厂后用户可以反复烧写配置。包含 PLD(Programmable Logic Device,下分 SPLD、CPLD)和 FPGA(Field-Programmable Gate Array)。
- 固定功能逻辑(Fixed-function Logic):出厂时功能就定死了,用户不能改。
IC 还有**封装(package)**形式问题:穿孔安装(through-hole mounting)、表面贴装(surface mounting)、免焊面包板(solderless breadboard)——同一个芯片功能可能,但因为引脚形式不同,使用方式完全不一样。面包板就是大家在 lab 里插杜邦线的那种黄色塑料板。
固定功能 IC 按集成度 分四档(课件的表):
| 级别 | 缩写 | 门数 | 典型例子 |
|---|---|---|---|
| 小规模集成 | SSI(Small-Scale Integration) | <10 | 基本门、触发器 |
| 中规模集成 | MSI(Medium-Scale Integration) | 10–100 | 编码器、译码器、计数器、寄存器、多路选择器、算术电路、小容量存储 |
| 甚大规模集成 | VLSI(Very Large-Scale Integration) | 10,000–100,000 | 存储器 |
| 超大规模集成 | ULSI(Ultra Large-Scale Integration) | >100,000 | 超大容量存储、大型微处理器、单片计算机 |
注意课件这张表里跳过了 LSI(Large-Scale Integration)一档。常见教材里其实有 LSI(100–10,000 门),把 MSI 和 VLSI 之间填上;本课件省略了它。
可编程逻辑器件(PLD / FPGA) 是数字工程师的"瑞士军刀"。课件给的开发流程是:先在电脑上装软件开发包 → 用图形(schematic)或硬件描述语言(如 VHDL)"画出"电路 → 通过一根下载线把配置烧进开发板。FPGA 之所以重要,是因为它让"芯片级验证"在没流片(tape-out)之前就能跑起来——这也是为什么本课程后面要做 project 的时候,你大概率会跟 FPGA 打交道。
十二、Chapter Review 与 Quiz 提示
课件最后一页给了一份"本章回顾"清单:
- 模拟 vs 数字
- Bit、逻辑电平、数字波形(digital waveforms)
- 基本逻辑函数:NOT、AND、OR
- 组合/时序逻辑函数:比较器、加法器、编/译码器、(解)多路复用器、触发器、寄存器、计数器
- 集成电路:可编程 vs 固定功能
- 封装:表面贴装 vs 穿孔
- 可编程:PLD(SPLD、CPLD)vs FPGA
- 固定功能:SSI / MSI / VLSI / ULSI
最后还附了一组 True/False 自测题,挑几条典型易错项来预警:
- "数字量没有离散取值"——错。数字量的定义就是"离散取值的量",是相对于模拟量的连续取值而言的。
- "在正逻辑里,LOW 表示二进制 1"——错。正逻辑里 HIGH 表示 1、LOW 表示 0;反过来才是负逻辑。
- "AND 函数由一个叫反相器的电路实现"——错。AND 是 AND gate;反相器(inverter)实现的是 NOT。
- "一个 flip-flop 一次能存两个 bit"——错。一个 flip-flop 一次只能存 1 个 bit;存更多 bit 需要多个 flip-flop 拼成寄存器。
- "数字集成电路分两大类:固定功能 vs 可编程"——对,与课件一致。
剩下几条("模拟量是连续值"、"二进制系统有两个 digit"、"bit 是 binary digit 的缩写"、"两类数字集成电路"等)都是事实陈述题,答案都能在本文里直接找到。
写在最后
Chapter 1 没有教你任何"具体的电路",它的真正目的是把后面 12 周要学的整张地图先摊开。等下一章 Chapter 2 就会开始真正动手处理"二进制的加减乘除、有符号数怎么表示、BCD 与各种编码"这些数字本身的问题;Chapter 3 才进入逻辑门;Chapter 4–5 是布尔代数与组合逻辑设计的核心;Chapter 6 是组合构件;Chapter 7 起开始有时序——一步一步搭上去。建议每学完一章,回来对照本章的导览图,看自己离"完整数字系统"又近了多少。