想象一下,你书桌上贴着一张“记忆便利贴”:正面写上1,反面写上0,这就是数字电路里的一个比特。但便利贴不会自己翻面,必须靠某个规则在某个时刻翻动它。数字电路里的触发器,就是这张“带规则的便利贴”,而时钟信号就像教室里的铃声——每响一次,所有便利贴按照约定好的规则更新一次。这篇文章要讲的就是四种便利贴:SR、JK、D、T。它们分别像“双按钮记录仪”“防呆升级版”“拍立得相机”和“旋转翻页门”,各有个性,各有用途。理解它们,你就能读懂CPU里的寄存器、计数器、状态机,看懂数字世界是怎么“记住”信息的。

岗位关联

触发器是数字系统最基础的“记忆细胞”。无论你是做AI算法还是AI硬件,理解SR/JK/D/T触发器的工作原理,是读懂寄存器堆、时钟分频和状态机设计的第一步,也是从“写代码”走向“懂硬件”的必经台阶。

目录
  1. 可视化演示
  2. 基础概念:便利贴、铃声与规则表
  3. SR触发器:双按钮记录仪的禁忌
  4. JK触发器:防呆升级版
  5. D触发器:拍立得相机
  6. T触发器:旋转门与翻页器
  7. 触发方式:何时记一笔是关键
  8. 典型应用:从便利贴到寄存器与计数器
  9. 选型对比:挑一张合适的便利贴
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示SR/JK/D/T四种触发器的真值表、状态转换与时钟波形,交互切换查看各触发器的核心特性指标。

本节配有交互动效(进入视口后自动加载,约 3KB)。

SR触发器:基本RS锁存器 SET(S)和RESET(R)输入控制输出Q和Q\'的置位与复位 S=1且R=1为非法状态两个输出同时为0 Q(next)=S+R\'·Q(curr) SR触发器是所有触发器的基础但存在非法状态限制

基础概念:便利贴、铃声与规则表

想象你书桌上有一张“记忆便利贴”,正面写1,反面写0,这就是一个比特。但便利贴不会自己翻面,必须有人按约定去翻。在数字电路里,触发器就是这张带规则的便利贴,而时钟信号是教室里的铃声——每次铃声一响,便利贴按规则更新一次。如果铃声一直不响,便利贴就安静地保持原样。

数字电路分两类:组合逻辑像菜谱,输入定了输出就定,没有任何记性;时序逻辑则像记账本,输出不仅看当前输入,还看以前记下过什么。触发器是时序逻辑最基本的记忆单元。你后面见到的寄存器、计数器、状态机,都是一片片“便利贴”拼起来的。

触发器有两个稳定状态,我们用 Q 表示当前状态(现态),用 Q^{n+1} 表示铃声响起后进入的新状态(次态)。所有触发器的行为都可以写成一张“翻面规则表”,也就是特性方程。注意,这里的上标 n 和 n+1 表示时钟周期的序号,不是乘方。

所以,任何一种触发器本质上都是一台“指令 + 状态 → 新状态”的机器。接下来,我们逐个认识四种最著名的规则表。

Qn+1=f(Qn,X)\displaystyle Q^{n+1}=f(Q^n, X)
这个公式是说:下一个状态由“当前状态”和“外界输入指令 X”共同决定。不同触发器只是函数 f 长得不一样。
  1. 现态 Q^n便利贴当前朝上的一面,代表电路此刻记住的数值。
    Qn∈{0,1}\displaystyle Q^n \in \{0,1\}
  2. 次态 Q^{n+1}时钟铃声响起后,便利贴将要变成的新状态。
    Qn+1∈{0,1}\displaystyle Q^{n+1} \in \{0,1\}
  3. 输入 X外界送给触发器的指令集合。SR 有两个输入,D 只有一个。
    X={S,R} 或 {J,K} 或 {D} 或 {T}\displaystyle X = \{S,R\} \ \text{或}\ \{J,K\} \ \text{或}\ \{D\} \ \text{或}\ \{T\}
  4. 函数 f具体的翻面规则,由触发器内部的逻辑门连接方式决定。
    f:{0,1}k+1→{0,1}\displaystyle f: \{0,1\}^{k+1} \to \{0,1\}

SR触发器:双按钮记录仪的禁忌

最早的“智能便利贴”配了两个按钮:S(Set)和 R(Reset)。按 S,纸片翻到正面(1);按 R,纸片翻到反面(0);两个都不按,保持原样。但说明书上有一条警告:两个按钮同时按是违规操作,后果自负。这就是 SR 触发器给人的第一印象。

SR 触发器通常由两个与非门或两个或非门首尾相接组成。两个输入组合出四种情况:置 1、置 0、保持、禁止。其中“两个同时为 1”会引发两个输出端互相拉扯,最终状态不确定,因此必须用约束条件来禁止。

它的特性方程为:

SR 触发器结构简单,功能直观,但那条“不许同时按”的告诫逼着工程师们设计更聪明的纸片。于是,JK 触发器登场了。

Qn+1=S+RˉQn且SR=0\displaystyle Q^{n+1}=S+\bar{R}Q^n \qquad\text{且}\qquad SR=0
这个公式表示:S 为 1 时直接置 1;R 为 1 时直接置 0;两个都为 0 时保持原状态。约束 SR=0 就是“不许同时按两个按钮”的数学表达。
  1. 置位条件 S=1, R=0代入后 Q^{n+1}=1,纸片无条件翻到正面。
    Qn+1=1+0ˉ⋅Qn=1\displaystyle Q^{n+1}=1+\bar{0}\cdot Q^n=1
  2. 复位条件 S=0, R=1\bar{R}=0,结果被归零。
    Qn+1=0+0⋅Qn=0\displaystyle Q^{n+1}=0+0\cdot Q^n=0
  3. 保持条件 S=0, R=0Q^{n+1}=Q^n,纸片不动。
    Qn+1=0+1⋅Qn=Qn\displaystyle Q^{n+1}=0+1\cdot Q^n=Q^n
  4. 约束条件 SR=0若 S=R=1,真实电路会同时置 1 和置 0,输出不确定,所以禁止。
    S⋅R≠1\displaystyle S\cdot R \neq 1

JK触发器:防呆升级版

工程师觉得“不能同时按两个按钮”太憋屈,于是把按钮改成两个旋钮 J 和 K:只拧 J 就置 1,只拧 K 就置 0,两个都不拧就保持,两个同时拧就翻面。JK 触发器是 SR 触发器的完美升级:没有禁止态,功能最全。

实际电路里,JK 触发器常用主从结构实现:内部藏着“草稿本”主触发器和“正本”从触发器。高电平期间先把结果写在草稿上,时钟下降沿再把草稿誊到正本,这样能避免在一个时钟周期里输出反复翻转的“空翻”现象。

JK 触发器的特性方程为:

JK = SR + 翻转,既补上了“禁止态”的短板,又保留了完整的功能。它是教科书里功能最全的触发器,也是理解状态机的基础。

Qn+1=JQnˉ+KˉQn\displaystyle Q^{n+1}=J\bar{Q^n}+\bar{K}Q^n
这个公式读起来像一句口诀:J 在“当前为 0”时把它拉成 1,K 在“当前为 1”时把它拉成 0;J 和 K 同时为 1,则整个公式退化成 \bar{Q^n},也就是翻转。
  1. 置位 J=1, K=0结果恒为 1。
    Qn+1=1⋅Qnˉ+1⋅Qn=1\displaystyle Q^{n+1}=1\cdot \bar{Q^n}+1\cdot Q^n=1
  2. 复位 J=0, K=1结果恒为 0。
    Qn+1=0⋅Qnˉ+0⋅Qn=0\displaystyle Q^{n+1}=0\cdot \bar{Q^n}+0\cdot Q^n=0
  3. 保持 J=0, K=0原状态原样传递。
    Qn+1=0+1⋅Qn=Qn\displaystyle Q^{n+1}=0+1\cdot Q^n=Q^n
  4. 翻转 J=1, K=1输出等于现态的非。
    Qn+1=1⋅Qnˉ+0=Qnˉ\displaystyle Q^{n+1}=1\cdot \bar{Q^n}+0=\bar{Q^n}

D触发器:拍立得相机

有时我们不需要两个按钮,只想要一台“拍立得相机”。D 触发器就是这台相机:镜头对着输入 D,快门由时钟控制。快门按下的瞬间,把 D 的模样印在相纸上;拍完以后,光线再怎么变,照片都定格不变。也就是说,D 触发器在时钟有效沿到来时,把输入值“拍”下来保存。

D 触发器只有一个输入,没有任何约束条件,结构在四种触发器里最简单,因此成为现代芯片的绝对主力。CPU 里的寄存器堆、流水线寄存器,几乎全是用 D 触发器搭的。

它的特性方程简洁到极致:

“按下快门那一瞬,留住的是此刻的光线。”D 触发器用最小的代价完成了数据快照,是数字世界里最可靠的拍立得。

Qn+1=D\displaystyle Q^{n+1}=D
这个公式容易让人误以为“输出一直等于输入”。注意,正确的理解是:只有在时钟有效边沿到达的那一刻,输出才会变成当时的 D 值;其余时间输出保持不变。
  1. 输入 D要保存的 1 位数据,来自组合逻辑或外部总线。
    D∈{0,1}\displaystyle D\in\{0,1\}
  2. 时钟采样上升沿或下降沿到来瞬间,相机的“快门”打开,读取当前 D。
    Qn+1=D∣边沿时刻\displaystyle Q^{n+1}=D\big|_{\text{边沿时刻}}
  3. 输出保持边沿之后的新状态锁定为采样到的 D,直到下一个有效沿。
    Q(t)=D(tn),t∈[tn,tn+1)\displaystyle Q(t)=D(t_n), \quad t\in[t_n,t_{n+1})

T触发器:旋转门与翻页器

想象一扇旋转门:转一次,门从“开”变成“闭”,再转一次又变回“开”。T 触发器的输入 T 就是“转不转”的指令:T=1 时,每个时钟脉冲都翻一次;T=0 时,门锁死不动。如果你把 T 永远接 1,就得到一个纯粹的“翻转器”,常记作 T' 触发器。

T 触发器可以由 D 触发器或 JK 触发器改装而成。它的核心价值在于计数:每来一个脉冲,状态变一次。N 个 T 触发器串联起来,就能数到 2^N,非常适合做计数器和分频器。

它的特性方程是异或运算:

旋转门永远是“转一联动一下”,T 触发器是计数器最省心的积木。下次看到时钟分频器,不妨想想那扇旋转门。

Qn+1=TQnˉ+TˉQn=T⊕Qn\displaystyle Q^{n+1}=T\bar{Q^n}+\bar{T}Q^n=T\oplus Q^n
这个公式的意思是:T 和当前状态不相同(0 和 1 碰在一起)时,结果变成 1;相同(都是 0 或都是 1)时,结果回到 0。这就是“翻转”。
  1. T=0 保持门不转,维持原状态。
    Qn+1=0+1⋅Qn=Qn\displaystyle Q^{n+1}=0+1\cdot Q^n=Q^n
  2. T=1 翻转门转一次,状态取反。
    Qn+1=1⋅Qnˉ+0=Qnˉ\displaystyle Q^{n+1}=1\cdot \bar{Q^n}+0=\bar{Q^n}
  3. 异或等价变换从“两路选择”到“异或门”的化简。
    TQnˉ+TˉQn≡T⊕Qn\displaystyle T\bar{Q^n}+\bar{T}Q^n \equiv T\oplus Q^n
  4. T' 固定翻转T 恒等于 1 时,每个时钟都翻转,等价于分频器。
    Qn+1=Qnˉ\displaystyle Q^{n+1}=\bar{Q^n}

触发方式:何时记一笔是关键

光有记事本还不够,得规定“哪一刻记账”。有的本子全天开放,只要在开放时间内随时可改,这是电平触发;有的本子只在铃声响起的那个瞬间记账,这是边沿触发;还有更讲究的,先在草稿上写,等铃声落定再誊到正本,这是主从触发。三种方式各有脾气,选错了就会出错。

电平触发在时钟高电平或低电平期间一直响应输入,好处是窗口宽,坏处是容易把信号抖动也照单全收。边沿触发只在上升沿或下降沿的瞬间采样,抗干扰能力强,因此现代芯片普遍采用边沿触发。主从触发由主、从两个触发器组成,先接收后输出,经典代表是主从 JK 触发器。

主从 JK 在 CLK=1 期间,主触发器不断跟随输入变化;CLK 下降沿到来时,从触发器把主触发器的内容锁存到输出。这种结构避免了整个高电平期间输出的“空翻”,但也带来了“一次翻转”现象:在 CLK=1 期间输入多次变化时,只有最后一次能被可靠地送到输出。设计人员需要控制好输入的有效时刻。

触发方式就像记账时“何时下笔”:同样是触发器,采样的时刻不同,结果可能完全不同。写硬件代码时,你关心的 posedge clk 或 negedge clk,正是在表达“选哪种快门”。

典型应用:从便利贴到寄存器与计数器

单张便利贴只能记 1 个 bit,但把 8 张便利贴并排钉在一起,就能记一个字节。这就是寄存器。把旋转门式的 T 触发器串成一串,每扇门每响一次翻一次,就能做出计数器、分频器——记忆纸条由此变成真正的计算工具。

D 触发器最常用来做寄存器,因为它保存数据没有禁忌;T 触发器天生适合计数;JK 触发器在复杂状态机里足够灵活。N 个 D 触发器并排共享时钟,就是 N 位寄存器;N 个 T 触发器级联,上一级输出作为下一级时钟,就构成 N 位二进制异步计数器。

分频电路计算很简单:

一排排记忆纸条各司其职:寄存器存数据、计数器数脉冲、分频器调节奏。数字芯片复杂的时序行为,就这样由简单的便利贴组织起来。

fout=fin2N\displaystyle f_{\text{out}}=\frac{f_{\text{in}}}{2^N}
每经过一级 T 触发器,脉冲频率就除以 2。两级是 4 分频,三级是 8 分频,以此类推。
  1. N 位寄存器N 个 D 触发器共享时钟,同一拍锁存 N 位数据。
    Qin+1=Di,i=0,…,N−1\displaystyle Q^{n+1}_i=D_i, \quad i=0,\dots,N-1
  2. T 触发器级联上级输出作为下级时钟,每级翻转频率减半。
    fk+1=fk2\displaystyle f_{k+1}=\frac{f_k}{2}
  3. 分频公式N 级串联后总频率为输入频率除以 2^N。
    fout=fin2N\displaystyle f_{\text{out}}=\frac{f_{\text{in}}}{2^N}

选型对比:挑一张合适的便利贴

回到文具店,你选哪种便利贴?SR 是复古款,功能直观但要小心“双键同按”;JK 是功能王,什么情况都能应付;D 是销量冠军,简单可靠;T 是计数专用玩具。选哪个,取决于你要把它贴在哪儿。

工程选型没有绝对最优,关键在于面积、功耗和时序安全。现代 ASIC 设计中,绝大多数时序逻辑都用 D 触发器实现,因为综合工具对 D 触发器的时序分析最成熟,面积和功耗也最可控。JK 触发器更多出现在教材和特殊计数器设计中,SR 触发器则只在小型电路里作为学习原型使用。

四种触发器的特性对比非常清晰:

| 类型 | 置 1 | 置 0 | 保持 | 翻转 | 约束 |

|------|------|------|------|------|------|

| SR | S=1 | R=1 | S=R=0 | 不支持 | SR≠1 |

| JK | J=1 | K=1 | J=K=0 | J=K=1 | 无 |

| D | D=1 | D=0 | 不支持 | 不支持 | 无 |

| T | 不支持 | 不支持 | T=0 | T=1 | 无 |

选型建议:做寄存器选 D,做分频计数选 T,做状态机选 JK 或 D,做基础学习从 SR 入门。最稳妥的组合是“D 触发器 + 边沿触发 + 统一时钟”,这几乎是现代数字设计的默认答案。

到这里,四种“记忆便利贴”的性格都清楚了。搭电路时,你就能像挑文具一样,顺手又踏实。

AI 应用场景

场景一:AI 芯片里的寄存器堆

阶段:数据存储与中间结果暂存

解决的问题:AI 模型推理时,每一层的激活值、权重参数都需要在计算单元之间快速搬运。传统方式用组合逻辑直接传递,数据容易丢失且时序混乱;用 D 触发器构成寄存器堆,可以在同一时钟沿将所有中间结果“拍”进存储,稳定供给下一层计算。

具体案例:在 GPU 或 NPU 中,一个 32 位寄存器堆由 32 个 D 触发器并排构成。每个时钟周期,计算单元把卷积结果写入寄存器堆,下一个周期再送到激活函数模块。如果其中任何一个触发器没有按要求锁存数据,整个推理流水线就会出现错误预测。

场景二:AI 加速器的时钟分频

阶段:时钟生成与功耗管理

解决的问题:AI 芯片不同模块需要不同频率的时钟,例如核心计算单元需要高频时钟,而外设接口只需要低频时钟。用软件模拟分频会浪费 CPU 资源;用 T 触发器级联做硬件分频器,则可以稳定高效地产生 2^N 分频时钟。

具体案例:某边缘 AI 芯片的 MCU 主频为 96MHz,需要 1MHz 的 UART 接口时钟。设计人员用 7 级 T 触发器串联实现 128 分频,得到 750kHz 作为接口时钟,再用计数校正得到接近 1MHz 的时钟。整个过程只消耗少量门电路,功耗极低。

场景三:AI 推理控制器的状态机

阶段:控制流调度

解决的问题:AI 推理过程包含“读指令→取数据→计算→写回”等多个阶段,需要状态机来精确切换。用 JK 或 D 触发器实现 FSM,可以在每个时钟沿把当前状态锁存,保证状态转移不混乱。

具体案例:NVIDIA GPU 的指令调度器中,状态机用多个 D 触发器保存当前流水线阶段。当计算单元发出“完成”信号时,触发器在下一个上升沿把状态切换到“写回阶段”,同时清空数据通路。这种设计让 AI 训练可以像流水线一样高效推进。

Python 演示

python47 行
def sr_next(s, r, q):    if s == 1 and r == 0:        return 1    if s == 0 and r == 1:        return 0    if s == 0 and r == 0:        return q    return None  # 禁止态 def jk_next(j, k, q):    if j == 1 and k == 0:        return 1    if j == 0 and k == 1:        return 0    if j == 1 and k == 1:        return 1 - q    return q def d_next(d, q):    return d def t_next(t, q):    return 1 - q if t == 1 else q def run_sequence(name, trigger_fn, input_sequence, num_inputs):    print("--- %s ---" % name)    q = 0    for item in input_sequence:        if num_inputs == 1:            inp = (item,)            q = trigger_fn(inp[0], q)        else:            inp = item            q = trigger_fn(inp[0], inp[1], q)        print("在输入 %s 下,Q -> %d" % (str(inp), q))    print() if __name__ == "__main__":    sr_seq = [(1, 0), (0, 0), (0, 1), (1, 1)]    jk_seq = [(1, 0), (0, 1), (1, 1), (1, 1)]    d_seq = [1, 0, 1, 0]    t_seq = [1, 1, 0, 1]     run_sequence("SR触发器", sr_next, sr_seq, 2)    run_sequence("JK触发器", jk_next, jk_seq, 2)    run_sequence("D触发器", d_next, d_seq, 1)    run_sequence("T触发器", t_next, t_seq, 1)
目的:用 Python 脚本直接演示四种触发器在输入序列下的状态更新过程,适合快速验证特性方程的真值表。
  1. if s == 1 and r == 0: return 1SR 触发器的置位规则:S 有效时不管原来是什么都置 1。
  2. if s == 0 and r == 1: return 0复位规则:R 有效时无条件置 0。
  3. return None # 禁止态当 S=R=1 时,SR 电路输出不确定,用 None 表示“非法”。
  4. if j == 1 and k == 1: return 1 - qJK 触发器最关键的“翻转”逻辑,对应音频里“同时拧两个旋钮就翻面”。
  5. def d_next(d, q): return dD 触发器不需要看现态,直接跟随输入。
  6. return 1 - q if t == 1 else qT 触发器:T=1 翻面,T=0 保持。
  7. if __name__ == "__main__":保证脚本可以直接运行,也能被其他模块导入。

常见误区

误区我看到 D 触发器的特性方程是 Q^{n+1}=D,就觉得既然 D 是 1,Q 就应该立刻变成 1;D 变成 0,Q 也应该立刻变成 0,不然怎么叫“跟随输入”呢?

正解这误解了“跟随”的时机。D 触发器只在时钟有效边沿到达的那一瞬采样输入,之后输出一直保持这个采样值,直到下一个有效沿。可以把 D 触发器想象成拍立得相机:只有快门按下那一刻,画面才被印在相纸上;外界光线再怎么变,照片都不会变。

为何常见:因为初学时看真值表往往只看“输出和输入相等”,忽略了时钟的作用,于是把组合逻辑的“实时跟随”错套到了时序逻辑上。

误区SR 触发器两个输入看起来可以随便组合,S=1、R=1 时只要让两个输出都变成 1 不就行了?我写代码时直接返回 1 就好了。

正解真实电路里,当 S=1、R=1 时,两个与非门或或非门会互相拉扯,最终状态取决于制造工艺和信号到达时间,无法预测。特性方程里虽然会算出 1,但那只是形式推导,实际工程必须把 S=R=1 当作非法输入来禁止。就像红灯和绿灯同时亮的十字路口,交警手册里必须写“不许同时亮”。

为何常见:初学者把真值表当作纯数学表格,忽略了触发器内部反馈环路带来的物理冲突,总以为“按公式算就行”。

误区JK 触发器能置位、能复位、能保持、能翻转,功能最全面,那工程上设计芯片应该全用 JK 触发器,比 D 触发器厉害多了。

正解功能丰富不一定代表工程最优。D 触发器除了功能简单之外,面积更小、功耗更低、时序约束最清晰,综合工具对它的支持也最成熟。现代 ASIC 设计里,寄存器堆和流水线几乎清一色用 D 触发器,而不是功能最全的 JK。挑工具要看场景,不是看参数表上谁的功能多。

为何常见:在教科书对比表里,JK 的“能力范围”看起来最大,容易让人误以为“越全能越好”,忽略了面积、功耗、时序收敛这些工程更看重的指标。

误区只要时钟是高电平,D 触发器就应该一直跟随 D 变化;所以我在一个高电平周期里给 D 变了三次,Q 也应该跟着变三次。

正解电平触发确实在整个有效电平期间都敏感,因此容易把输入抖动也吸收进来;但边沿触发只在电平跳变的那一瞬间采样,其余时间完全不看输入。现代同步电路几乎都用边沿触发。你见过旋转门吗?它只在刷卡的那一瞬转一下,而不是你站在刷卡区整段时间里都转个不停。

为何常见:因为很多教学图里只画了“高电平期间 D=1、Q 变 1”,却没有强调“只有上升沿那一刻采样”,导致大脑自动把它理解成“高电平期间都响应”。

误区主从触发器有“草稿”和“正本”两层保护,应该能把输入端的多次变化都记录下来,怎么会限制为“翻转一次”?

正解主从 JK 触发器在 CLK=1 期间,主触发器持续跟随输入;但到了 CLK 下降沿,从触发器只把主触发器瞬间的值锁存到输出。如果高电平期间输入端发生多次变化,主触发器会一直追,最终下降沿锁存的是最后一次变化,中间的变化全部丢失。这就是“一次翻转”现象的本质——不是只允许翻转一次,而是只有最后有效的那次翻转能被记录。

为何常见:大家容易觉得“多级结构就一定是无懈可击的缓存”,忽略了主从结构本质上还是“在某个瞬间采样”,并没有实现真正的“多次记录”。

面试题

Q1. SR 触发器在哪种输入组合下会进入禁止态?

单选题 · easy

  • A.S=0, R=0
  • B.S=0, R=1
  • C.S=1, R=0
  • D.S=1, R=1← 正确答案

答案:D。S=1、R=1 时,触发器的两个输出会互相拉扯,状态不确定;特性方程虽然能写出 1,但真实电路是矛盾的。其他三种组合分别对应保持、置 0、置 1,都是合法状态。

Q2. D 触发器的特性方程是?

单选题 · easy

  • A.Q^{n+1}=D← 正确答案
  • B.Q^{n+1}=\bar{D}
  • C.Q^{n+1}=Q^n
  • D.Q^{n+1}=\bar{Q^n}

答案:A。D 触发器的行为就是“时钟沿到达时把输入存下来”,所以次态等于输入 D。其余选项分别对应取反、保持、翻转,都不是 D 触发器的定义。

Q3. JK 触发器中,当 J=1 且 K=1 时,时钟有效沿后 Q 的状态会?

单选题 · mid

  • A.保持
  • B.置 1
  • C.翻转← 正确答案
  • D.置 0

答案:C。JK 触发器在 J=K=1 时的行为是“状态翻转”,即 0 变 1、1 变 0。这正好补上了 SR 触发器的禁止态,成为 JK 最显著的特性。

Q4. T 触发器接成 T'(T 恒为 1)后,每个时钟脉冲的作用是?

单选题 · mid

  • A.输出恒为 1
  • B.输出恒为 0
  • C.输出保持不变
  • D.输出状态翻转一次← 正确答案

答案:D。T' 触发器的输入永远是 1,每来一个时钟脉冲,输出就取反一次,相当于二分频器。输出恒为 1 或 0 与 T 触发器的翻转本质不符。

Q5. 主从 JK 触发器的“一次翻转”现象指的是?

单选题 · mid

  • A.CLK=1 期间多次输入变化只有最后一次有效← 正确答案
  • B.触发器一生只能翻转一次
  • C.输出只能在下降沿翻转一次
  • D.输入信号只能变化一次

答案:A。主从 JK 在 CLK=1 期间主触发器不断跟随输入,但下降沿锁存的是最后那一刻的状态,中间的变化不会被记录。所以叫做“一次翻转”——不是硬件限制,而是采样特性。

Q6. 要设计一个 N 位二进制计数器,最省事的触发器选择是?

单选题 · mid

  • A.N 个 D 触发器
  • B.N 个 T 触发器← 正确答案
  • C.N 个 SR 触发器
  • D.一个 JK 触发器

答案:B。T 触发器每来一个脉冲翻转一次,天然适合计数;N 个 T 触发器级联就能数到 2^N。D 触发器需要加额外反馈逻辑才能计数,SR 触发器约束太多,单个 JK 触发器只能构成 1 位计数器。

Q7. 输入时钟为 8MHz,经过 3 级 T 触发器分频后,输出频率是?

单选题 · mid

  • A.2MHz
  • B.1MHz← 正确答案
  • C.2.67MHz
  • D.4MHz

答案:B。每级 T 触发器输出频率除以 2,所以 3 级是 2^3=8 分频,8MHz 除以 8 等于 1MHz。选项中其他值都对应错误的分频系数。

Q8. 关于电平触发与边沿触发,下列说法正确的有?

多选题 · mid

  • A.电平触发在整个有效电平期间都可能响应输入← 正确答案
  • B.边沿触发只在跳变瞬间采样← 正确答案
  • C.边沿触发的抗干扰能力通常更强← 正确答案
  • D.电平触发一定比边沿触发速度快

答案:ABC。电平触发窗口长,容易吸收噪声;边沿触发只在上升沿或下降沿瞬间采样,抗干扰更强。速度快慢取决于具体电路,不能简单说电平触发一定更快,因此 D 错。

Q9. 下列哪些触发器转换关系是成立的?

多选题 · hard

  • A.JK 触发器可以接成 T 触发器← 正确答案
  • B.D 触发器可以接成 T 触发器← 正确答案
  • C.T 触发器可以接成 D 触发器← 正确答案
  • D.SR 触发器可以接成 JK 触发器

答案:ABC。JK 和 D 都可以通过反馈逻辑变成 T 触发器;T 触发器也可以加组合逻辑变成 D 触发器(把 D 和当前 Q 异或后作为 T 输入)。SR 触发器缺少翻转功能,很难直接等价成 JK,因此 D 不成立。

Q10. 在 ASIC 设计中,为什么寄存器阵列大多使用 D 触发器而不是 JK 触发器?

单选题 · hard

  • A.D 触发器面积更小、时序约束简单← 正确答案
  • B.JK 触发器不能保存数据
  • C.D 触发器不需要时钟
  • D.JK 触发器一定更耗电

答案:A。工程上优先考虑面积、功耗和时序收敛。D 触发器结构简单、无约束条件,综合工具支持成熟,所以成为寄存器阵列的主流。JK 功能更全但面积功耗代价更大,且并非“一定更耗电”,B、C 本身也错误。