进阶 #hardware#memory

D触发器

D触发器是带时钟控制的1位存储单元,只在时钟边沿采样输入

从锁存器到触发器

SR 锁存器 虽然能存储数据,但有两个缺点:

  1. S 和 R 不能同时为 0(无效状态)
  2. 输入变化时立即输出——无法同步控制何时翻转

D 触发器(D Flip-Flop) 解决了这两个问题。

D 触发器的结构

D 触发器在 SR 锁存器基础上增加:

  • 一个非门:确保 S 和 R 不会同时为 0
  • 时钟信号(CLK):控制何时采样输入
graph LR
    D[D] --> N1[NAND A]
    CLK[CLK] --> N1
    CLK --> NOT[非门 NOT]
    NOT --> N2[NAND B]
    CLK --> N2

    subgraph SR[SR 锁存器]
        NAND_C[NAND C] --> Q[Q]
        NAND_D[NAND D] --> Q̅[Q̅]
        NAND_C -.-> NAND_D
        NAND_D -.-> NAND_C
    end

    N1 --> NAND_C
    N2 --> NAND_D

功能表

CLKDQ 的下一个状态
X保持不变
00(复位)
11(置位)

↑ = 上升沿,↓ = 下降沿,X = 任意值

时钟上升沿是什么意思?想象一下:时钟信号像心跳一样在 0 和 1 之间交替跳动。从 0 跳到 1 的那一瞬间叫上升沿,从 1 跳到 0 的那一瞬间叫下降沿。就像老师喊”预备——起!“,同学们在听到”起!“的那一刻同时行动。

换句话说,D 触发器只在时钟的上升沿时刻看一眼 D 输入的值,然后记住它。其他时间不管 D 怎么变,Q 都保持不变。

为什么需要时钟?

时钟信号让所有触发器同步工作。就像阅兵方阵中所有人按同一个鼓点迈步——如果每个士兵自己想什么时候迈步就什么时候迈,方阵就会乱成一团。CPU 中数十亿个触发器也是一样——它们必须跟着同一个”鼓点”一起动作。

这个”鼓点”就是时钟信号。这就是 同步时序电路 的核心思想。

应用

  • 寄存器:多个 D 触发器并排存储多位数据
  • 计数器:触发器级联实现二进制计数
  • 状态机:用触发器保存当前状态
  • 分频器:每个触发器将时钟频率减半

小结

D 触发器用时钟控制了”什么时候存储”,是现代数字电路中最基本的时序单元。多个 D 触发器组合起来就是 寄存器