跳转至

数字电路

基础构件

布尔代数

  • 核心: 一切计算的数学基础。变量只有0和1,代表假与真、低与高、关与开。
  • 基本操作: AND(与)、OR(或)、NOT(非)。一切复杂的逻辑都可以由这三者构建。
  • 对系统开发者的意义: 这是机器所能理解的“最原始的语言”。编译器最终会将你的C代码转化为由这些逻辑组成的电路行为。

逻辑门

  • 定义: 实现布尔函数的物理器件。是数字电路的“原子”。
  • 关键门电路: AND, OR, NOT, NAND(与非), NOR(或非), XOR(异或)。
  • 系统视角:
    • NAND和NOR是“通用门”:仅使用一种类型的门就可以构造出任何布尔函数。这意味着CPU的复杂性源于简单、重复的单元。
    • 你的代码中的每一个位操作(如 &, |, ~, ^)都直接对应着底层逻辑门的操作。

组合逻辑

  • 定义:电路的输出仅取决于当前的输入**,与电路过去的状态无关。没有记忆功能。

关键电路与系统关联

  • 译码器:
    • 功能: N位输入,2^N位输出。在任一时刻,只有一位输出是有效的(如1)。
    • 系统应用: 内存地址译码。CPU发出的地址线通过译码器来选择特定的内存单元或I/O设备。这是理解内存映射I/O和地址空间的基础。
  • 多路选择器:
    • 功能: 从多个输入中选择一个作为输出。
    • 系统应用: 无处不在!例如,在ALU中选择执行哪种运算,在处理器中选择将哪个寄存器的值写入总线,在流水线中控制数据流向。
  • 加法器:
    • 半加器、全加器: 构建块。
    • 行波进位加法器: 直观但慢。关键要理解进位传播延迟是限制CPU主频的因素之一。
    • 系统视角: ALU的核心组件。你写的 a + b 最终就是在这样一个电路中完成的。理解进位延迟有助于理解为何某些运算优化(如循环展开)能提升性能。
  • 算术逻辑单元(ALU):
    • 功能: 计算机的“计算心脏”。它是一个复杂的组合逻辑电路,通过控制信号来选择执行加法、减法、位与、位或等操作。
    • 系统视角: 这是软件与硬件交互的关键界面之一。CPU执行指令时,会将操作数送入ALU,并设置ALU的控制线(由指令的操作码决定),然后取出结果。理解ALU,就理解了指令执行的基本周期。

时序逻辑

  • 定义: 电路的输出不仅取决于当前输入,还取决于电路过去的状态(历史)**。这是实现“记忆”的关键。

基本存储单元:

  • SR锁存器: 由交叉耦合的NOR或NAND门构成的最基本存储单元。是构建更复杂存储元件的基础。
  • D触发器:
    • 这是最重要的概念!
    • 功能: 在时钟信号的边沿(如上升沿)瞬间,将输入D的值捕获并保存到输出Q,直到下一个时钟边沿到来。
    • 关键特性: 建立时间保持时间。这是数字电路设计的黄金法则。系统不稳定(如超频失败)往往与违反这两个时间有关。
    • 系统视角:
      • CPU寄存器 就是由D触发器阵列构成的。
      • 程序计数器(PC) 就是一个特殊的寄存器,其输入是下一条指令的地址。这清晰地展示了指令执行的序列化是如何通过硬件实现的。
      • 理解了D触发器,就理解了同步数字系统如何在一个统一的时钟下协同工作。

存储结构:

  • 寄存器: 快速存储少量数据(如CPU中的通用寄存器)。
  • 寄存器文件: 一组寄存器的集合,可以通过地址(寄存器号)来读写。这直接对应了你代码中的变量操作。
  • 内存(RAM):
    • 可以看作一个巨大的、可寻址的寄存器阵列。
    • 核心组件: 地址译码器(选择哪个单元)、存储单元阵列(通常是触发器或电容)、读写控制逻辑。
    • 系统视角: 清晰地展示了 “地址” 如何物理地选择存储位置,以及 “数据” 如何在该位置被写入或读出。这消除了“内存”这个概念的神秘感。

构建LC-3微架构

  • 将所有前述组件组合成一个可运行的、图灵完备的计算机。

数据通路:

  • 定义: 数据在处理器内部流动的路径。包括寄存器文件、ALU、内存接口等,通过总线连接。
  • 系统视角: 你的C代码被编译成指令,指令控制着数据通路中的多路选择器、ALU操作和寄存器写入,从而完成计算。数据通路是软件指令的“执行舞台”。

控制逻辑:

  • 定义: 根据当前执行的指令(机器码),生成所有控制信号,来“指挥”数据通路如何工作。
  • 实现方式: 一个巨大的组合逻辑电路(或微码ROM)。输入是指令的操作码和状态位,输出是控制数据通路的各种信号(如ALU控制、寄存器写使能、内存读写等)。
  • 系统视角: 这是连接软件(指令)硬件(数据通路)桥梁。它解释了为什么 ADD R1, R2, R3 这条汇编指令能让CPU完成加法。理解控制逻辑,就彻底明白了“指令驱动硬件”的本质。