D触发器入门教程:图文详解与应用实例
D触发器(Data Flip-Flop),也称为延迟触发器(Delay Flip-Flop),是数字逻辑电路中最基本也是最重要的存储单元之一。它能够存储一位二进制数据,并在时钟信号的特定边沿(上升沿或下降沿)将输入数据锁存下来。理解D触发器的工作原理对于学习更复杂的时序逻辑电路至关重要。
1. D触发器的基本概念
D触发器是一种双稳态多谐振荡器,意味着它有两个稳定的状态(0或1),并且可以在外部信号的控制下在这些状态之间切换并保持。
1.1 符号表示
D触发器的常用逻辑符号如下:
┌───────┐
D ──┤ ├─── Q
│ D FF │
CLK ─┤ ├─── Q'
└───────┘
- D (Data Input):数据输入端,用于提供要存储的二进制数据。
- CLK (Clock Input):时钟输入端,D触发器在时钟信号的特定边沿(通常是上升沿或下降沿)捕获D端的数据。
- Q (Output):主输出端,反映D触发器当前存储的状态。
- Q’ (Complementary Output):反相输出端,Q的非。
1.2 特性表 (Characteristic Table)
D触发器的特性表描述了其在下一个时钟边沿到来时,输出Q的状态(Q(n+1))如何根据当前输入D来变化。
| CLK | D | Q(n+1) |
|---|---|---|
| ↑ (上升沿) | 0 | 0 |
| ↑ (上升沿) | 1 | 1 |
| 其他 | X (无关) | Q(n) |
- 当有时钟上升沿到来时,无论Q(n)是什么,Q(n+1)都会等于D的当前值。
- 在时钟信号的非有效边沿期间,D输入的变化不会影响Q的输出,Q保持其当前状态(Q(n))。这就是“锁存”的含义。
1.3 真值表 (Truth Table)
真值表通常更侧重于显示在每个时钟周期结束后,Q的输出如何对应D输入。
| 时钟状态 | D输入 | Q输出 (下一个状态) |
|---|---|---|
| 上升沿 | 0 | 0 |
| 上升沿 | 1 | 1 |
| 保持 | X | Q (当前状态) |
2. D触发器的工作原理(内部结构)
D触发器通常由两个锁存器(或两个SR锁存器)级联构成,一个主锁存器(Master)和一个从锁存器(Slave),因此也常被称为“主从D触发器”。
2.1 主从D触发器结构示意图
┌───────────┐ ┌───────────┐
D ──────┤ ├─── Qm ──┤ ├─── Q
│ Master D │ │ Slave D │
CLK ────┤ Latch ├─────────┤ Latch ├─── Q'
│ │ │ │
Not(CLK) ─┤ │ │ │
└───────────┘ └───────────┘
- 主锁存器 (Master Latch):由CLK控制。当CLK为高电平时,主锁存器透明,D输入直接传递到Qm。当CLK为低电平时,主锁存器锁存Qm的值。
- 从锁存器 (Slave Latch):由
NOT(CLK)控制。当CLK为低电平时(即NOT(CLK)为高电平),从锁存器透明,Qm的值传递到Q。当CLK为高电平时(即NOT(CLK)为低电平),从锁存器锁存Q的值。
2.2 工作时序图详解
假设D触发器是上升沿触发的:
-
CLK为高电平期间:
- 主锁存器被使能,输入D被传送到Qm。此时,Qm跟随D的变化。
- 从锁存器被禁用(因为
NOT(CLK)为低电平),其输出Q保持前一个状态不变。
-
CLK从高电平变为低电平(下降沿):
- 主锁存器被禁用,Qm锁存了D在时钟下降沿到来前一瞬间的值。
- 从锁存器仍被禁用,Q保持不变。
-
CLK为低电平期间:
- 主锁存器被禁用,Qm保持不变。
- 从锁存器被使能(因为
NOT(CLK)为高电平),Qm的值被传送到Q。此时,Q跟随Qm的变化。
-
CLK从低电平变为高电平(上升沿):
- 这是D触发器的有效触发边沿。
- 主锁存器被使能,D输入再次传送到Qm。
- 从锁存器被禁用,其输出Q在这一瞬间锁存了Qm在时钟上升沿到来前一瞬间的值。这个值就是D在有效时钟边沿处的值。
通过这种主从结构,D触发器实现了边沿触发的特性。即D输入的变化只在特定的时钟边沿才会影响输出Q,而在其他时间,即使D输入变化,Q也会保持不变。这有效地避免了“竞争冒险”问题,确保数据在每个时钟周期内稳定地传输。
3. D触发器的应用实例
D触发器是构建各种时序逻辑电路的基石,其应用非常广泛。
3.1 1位数据存储器
最直接的应用就是作为一位存储器。每次时钟上升沿到来时,D触发器都会将D输入的数据存储起来,并在Q输出端保持。
3.2 移位寄存器 (Shift Register)
多个D触发器串联可以构成移位寄存器。数据在每个时钟脉冲的作用下,从一个触发器移动到下一个触发器。
电路图示例: (假设右移寄存器)
┌───────┐ ┌───────┐ ┌───────┐
Data In─┤ D Q ├───┤ D Q ├───┤ D Q ├─── Data Out
│ D FF │ │ D FF │ │ D FF │
CLK ─┤ CLK ├───┤ CLK ├───┤ CLK │
└───────┘ └───────┘ └───────┘
FF0 FF1 FF2
在这个电路中,Data In通过FF0的D端输入。在每个时钟上升沿,FF0的输出Q会捕获Data In的值,同时FF1的Q会捕获FF0的Q值,FF2的Q会捕获FF1的Q值。这样,数据就实现了从左向右的移位。
3.3 计数器 (Counter)
通过特定的反馈连接,D触发器可以构建各种类型的计数器,例如环形计数器、约翰逊计数器等。
简单的异步二进制计数器(通过T触发器实现):
虽然D触发器本身不是T触发器,但可以通过将D触发器的Q'输出连接到其D输入,形成一个T触发器(当T=1时)。
┌───────┐
D ──┤ ├─── Q
│ D FF │
CLK ─┤ ├─── Q'
└───────┘
(将 Q' 连接到 D)
当D=Q’时,D触发器在每个时钟上升沿都会翻转其状态(0变1,1变0),实现分频或计数功能。
3.4 频率分频器
将D触发器的Q'输出连接回D输入,就构成了一个“分频器”。每两个时钟周期,Q输出翻转一次,实现了时钟频率的二分频。
时序图:
假设Q初始为0。
1. 第一个CLK上升沿:D=Q’=1,Q变为1。
2. 第二个CLK上升沿:D=Q’=0,Q变为0。
由此可见,Q的频率是CLK频率的一半。
3.5 状态机 (State Machine)
在更复杂的数字系统中,D触发器用于存储当前状态。结合组合逻辑电路,可以根据当前状态和输入生成下一个状态,并更新D触发器的输入。
例如,在有限状态机 (FSM) 中,D触发器的输出代表了机器的当前状态,而D输入则由组合逻辑根据当前状态和外部输入计算得出。
4. D触发器的优缺点
优点:
- 简单易用:行为逻辑直观,便于理解和设计。
- 稳定可靠:边沿触发特性确保了数据在特定时刻的捕获,避免了毛刺和竞争冒险。
- 构建复杂电路的基础:是寄存器、计数器、存储器等更复杂时序逻辑电路的基本组成单元。
缺点:
- 门延迟:与SR锁存器相比,主从D触发器通常包含更多的逻辑门,导致更大的传播延迟。但在现代集成电路中,这种延迟通常很小。
- 不适合异步操作:D触发器是同步器件,其操作严格依赖于时钟信号。对于需要异步控制的应用,可能需要其他类型的触发器或锁存器。
总结
D触发器是数字电路中一个不可或缺的组件。它简单而强大,能够实现一位数据的存储,并且是构建各种复杂时序逻辑电路(如移位寄存器、计数器和状态机)的基石。通过理解其工作原理、特性以及在时序图中的表现,你将能够更好地设计和分析数字系统。