记忆诞生
门接起来就能算一切——这句话,亚稳态之影说对了一半。
记忆之门
时序殿的灯是冷的。你把 ch02 的组合逻辑阵列铺满整面石台——加法器、ALU、多路选择器,金光流转,像一件得意之作。
诺依曼老祖立在台边,只问一句:"让它数到三就停。"你按下时钟,它数:一、二、三……四、五。停不住。你松手,它归零,连"刚才数到几"都忘了。
「你算得对,但你记不住。一个记不住的东西,算得再快也是空。你押上"组合逻辑万能"的全部自信——赌一把:哪一件里没有时序逻辑?」
「先下注。猜错,亚稳态账本记一笔。」
反直觉下注 · 哪件里没有时序逻辑电路?
先下注,指认一件。猜错,亚稳态账本记一笔。👆 点击下方按钮下注
四要素关系图 · 补上那条被抹掉的边
组合逻辑只有"输入→输出"。时序逻辑多一条"状态→次态"——这就是记忆的边。
详解 · K03-01 时序逻辑基本概念
组合逻辑:输出 = f(当前输入)。时序逻辑:输出 = f(当前输入,当前状态),且状态本身也在更新:次态 = g(输入,状态)。多出来的这条「状态→次态」的边就是记忆。按输出是否直接依赖输入还分 Mealy(依赖)与 Moore(只依赖状态)两型——计数器、寄存器、状态机,全都建立在这四个要素上。
详解 · K03-01 时序逻辑基本概念
组合逻辑:输出 = f(当前输入)。时序逻辑:输出 = f(当前输入,当前状态),且状态本身也在更新:次态 = g(输入,状态)。多出来的这条「状态→次态」的边就是记忆。按输出是否直接依赖输入还分 Mealy(依赖)与 Moore(只依赖状态)两型——计数器、寄存器、状态机,全都建立在这四个要素上。
双环之锁 · SR 锁存器
诺依曼老祖把两个或非门推到你面前,让你把它们尾对尾交叉耦合。你按下 S,Q 亮了;按下 R,Q 灭了。松手,它居然还记着。你几乎要笑出声。
「同时按呢?」
「它记住了——可你敢同时按 S 和 R 吗?记忆说谎的瞬间,我就在那里。」
SR 双环之锁非法态探索器 · 踩出 S=R=1 禁区
点 S/R 旋钮切换 0/1,逐行试真值表。亲手同时按 S=1, R=1,看记忆"说谎"。
详解 · K03-02 SR 锁存器:结构与特性
两个或非门(或与非门,低有效版)尾对尾交叉耦合,构成双稳态回路——这是所有存储元件的祖师爷。特性表:S=0,R=0 保持;S=1 置位(Q=1);R=1 复位(Q=0);S=R=1 禁区——NOR 版两输出同被压成 0,互补约束破裂,且松手瞬间两级延迟的微小差(对称破坏)决定最终落向,结果不可预测。所以一切实用锁存器的第一要务,就是从结构上消灭 11 这个输入组合。
边沿之刃 · D 触发器
老祖给你主从双联:两个 D 锁存串联,主从时钟相反。上升沿一到,从锁存器把主锁存器上一瞬的值"咔"地冻结。你第一次得到一个稳稳的 1 位记忆。
正欣慰,老祖却在上升沿前最后一纳秒猛拨 D。Q 颤了半拍,停在 0 和 1 之间,像一缕不肯落定的灰雾。半秒后它才随机落下。
「快门按下前,数据得摆好姿势;按下后,还得再 hold 一会儿。」
「你管得了自己的数据,管不了异步的外部输入——它想什么时候来就什么时候来。」
D 触发器 · 主从边沿快门 + Tsu/Th 违例触发余烬
按"拨时钟"看边沿采样;在上升沿前极短窗口翻转 D(违反建立时间),看输出颤动——亚稳态余烬一闪。
详解 · K03-03 D 锁存器:透明与电平触发
给 SR 锁存器加一个反相器,让 S = D、R = ¬D——输入 11 从结构上被消灭,这就是 D 锁存器。使能 EN=1 时 Q 透明跟随 D(此刻输入毛刺会直漏到输出,即「透明期漏刺」);EN=0 时锁存。它是电平触发的:整个高电平期间都在"听",这正是它不够安全的原因。
详解 · K03-04 D 触发器:主从边沿触发
两个 D 锁存器串联、时钟反相:时钟低时主锁存透明、从锁存保持;时钟升高瞬间主锁存关门冻结,随后从锁存开门把冻结值放出。净效果:输出只在上升沿那一瞬采一次样——边沿触发。一拍之内 D 怎么折腾都漏不过去,这就是数字系统敢用"一拍"做时间单位的底气。
详解 · K03-06 建立时间与保持时间(Tsu/Th)
边沿采样不是魔法,它要求数据在沿前稳定至少 Tsu(建立时间)、沿后再稳至少 Th(保持时间)——源于内部传输延迟与钟控门的物理惯性。在 Tsu+Th 构成的"决断窗口"内翻转 D,触发器就可能停在中间电平:亚稳态。Tsu/Th 是数据手册上的硬参数,时序约束方程的两块基石。
记忆之墙 · 寄存器
你把 8 个 D 触发器并排,共用一个时钟,一键并行写入 8 位——寄存器。数据像一面墙上的灯,齐刷刷亮起。
「能存 8 位了。可你骄矜中没注意——并排靠的是共同时钟,一旦时钟歪了整列就错位。这是后面崩塌的火药。」
8 位并行寄存器 · 共时钟并行写入
逐位点击输入开关设定 8 位数据,按"写入"看寄存器整列同步更新。
详解 · K03-07 寄存器:并行加载与移位
n 个 D 触发器共时钟、共清零,就是一个 n 位寄存器:一个时钟沿,n 位同时更新(并行加载)。加一条写使能 WE,就能"只在需要时更新"。寄存器是 CPU 里最忙碌的居民——程序计数器 PC、指令寄存器 IR、通用寄存器,本质都是它。
详解 · K03-14 寄存器文件的组织与寻址
把 2ᵏ 个寄存器排成阵列,配上地址译码器(选写哪个)和多路选择器(选读哪个),就是寄存器文件(Register File)。CPU 的通用寄存器堆通常是 2 读 1 写三端口:同一拍内读两个源操作数、写一个结果——端口数直接决定数据通路能多宽。
自走之轮 · 计数器
你把 T 触发器级联:第一级翻两次,第二级进一位——异步二进制计数器成了。简单。但每一级的翻转要等上一级传过来,毛刺在中间一闪,记进了亚稳态账本。
「行波延迟的毛刺,是我派去的探子。你以为级联即计数?刺会传遍下级。」
「改同步:所有触发器共时钟,用组合逻辑算'该不该翻'。同步干净,可逻辑越绕越慢。」
计数器对比 · 异步行波 vs 同步共时钟
选择计数器类型,按"来一个时钟"看计数过程。异步会生毛刺,同步吃关键路径。
详解 · K03-05 JK 与 T 触发器
JK 触发器是 SR 的进化:次态方程 Q* = J·¬Q + ¬K·Q,J=K=1 不再是禁区而是翻转。把 J、K 短接成 T 就得到 T 触发器:T=1 时每拍翻转一次——天然二分频。T 触发器是计数器的基本细胞,你脚下的异步计数器就是它级联出来的。
详解 · K03-09 同步计数器设计
所有触发器共时钟,"该不该翻"由组合逻辑提前算好:T₀=1,T₁=Q₀,T₂=Q₀·Q₁,T₃=Q₀·Q₁·Q₂——每一级看所有低位是否全 1。任意模 N 则用译码电路在数到 N−1 时同步清零或置数。代价:与门输入数随位数增长,关键路径变长——这就是"同步干净但吃路径"。
详解 · K03-10 异步(行波)计数器与 glitch
把上一级的 Q 直接当下一级的时钟——结构极简、几乎不要组合逻辑。但第 i 级要比第 0 级晚 i 个触发器延迟才翻转:0111→1000 的进位过程中会瞬态经过 0110、0100、0000 等中间值——毛刺(glitch)。位数越多、频率越高越危险,所以异步计数器只配做低速分频,正经计数一律同步。
流水之渠 · 移位寄存器
老祖又让你把前一级的 Q 接下一级的 D,首尾相连——移位寄存器。你试四种接法:串进串出、串进并出、并进串出、并进并出。数据像一串光点,在 8 格之间一格一格地搬。
「串并转换,是时间换空间。8 位串入 8 次→并出,你用时间换了 8 根线。」
8 位移位寄存器 · 四模式切换
选一种模式,按"移一位"看数据在 8 格间流动。
详解 · K03-08 移位寄存器的应用
四种模式各有战场:SISO 做 n 拍延迟线;SIPO 是串口接收的核心(UART:线上串行来,内部并行用);PISO 反过来做串口发送;PIPO 就是普通寄存器。串并转换的本质是时间换空间——用 8 拍换 8 根线。再加上反馈抽头还能变 LFSR:伪随机数发生器、CRC 校验都靠它。
时钟之裂 · 时钟偏移
你把同步计数器挂上一块大电路,时钟线拉得太长。到末端的触发器时,时钟已经歪了一截。末端在错误的时间采样,整个计数乱套。你画时序图一行行对,约束方程一行行被违反。
「你以为同步就稳?'同步'的前提是时钟同源同时到达——而物理世界,做不到绝对同时。信号总要时间。」
时钟偏移模拟器 · 末端采样错位
拖动"时钟线长度"滑块,看末端触发器时钟延迟、采样错位。违例窗口染赤红。
详解 · K03-11 时钟信号:频率 · 占空比 · 偏移
时钟有三个物理参数:频率/周期决定节拍快慢;占空比是高电平占比(理想 50%);偏移(skew)是同一时钟沿到达不同触发器的时间差——来自走线长度、负载、缓冲级数的不均衡。芯片里用时钟树综合(CTS)把时钟布线成对称的树,把 skew 压到皮秒级。与之并列的还有 jitter(周期间抖动),它们一起吃掉了你的时序裕量。
约束方程求解器
诺依曼老祖递来一张方程石板:"写下同步的契约。"你刻下:T_clk ≥ T_cq + T_logic + T_setup + T_skew。四项相加,不能超过一拍。
「调参数。让它满足,再让它违反。亲手感受契约的边界。」
「约束能算清的,都不算绝路。算不清的,在边沿上等着你。」
约束方程求解器 · 四参数实时代入
拖动四个滑块,看约束满足(翠绿)或违反(赤红)。亲手经历"满足→违反→满足→违反"。
详解 · K03-13 同步设计准则
为什么整个行业死守同步设计?单一时钟源 + 全部边沿触发 + 每条组合路径都过约束方程——电路行为就变得可预测、可分析:静态时序分析(STA)不用跑仿真就能遍历所有路径。异步电路里毛刺、竞争、冒险全靠手工排查,验证成本爆炸。同步不是信仰,是工程上唯一付得起的确定性。
详解 · K03-15 时序分析:时序图与约束方程
两条核心不等式。建立约束:T_clk ≥ T_cq + T_logic + T_setup + T_skew——决定最高频率(f_max = 1/T_min)。保持约束:T_hold ≤ T_cq + T_logic——注意它不含 T_clk:降频救不了保持违例,只能修数据路径本身。画时序图逐拍对齐每个信号的到达与采样时刻,是定位违例的基本功。
亚稳态之兆 · MTBF
你把一个异步外部信号直接送进触发器的 D 端。信号恰好在时钟上升沿附近翻转——Q 既不是 0 也不是 1,停在一个中间电平上,久久不落。你查 MTBF:平均故障时间随"决断时间"指数增长。
「这不是 bug。这是物理。我在两个稳态的山脊上,需要时间滚下来。你算得清约束,算不清我。」
亚稳态示波器 + MTBF 公式组装
①按"对齐边沿"触发亚稳态,Q 停在中间电平;②拖"决断时间"滑块看 Q 最终落定;③拖公式碎片组装 MTBF 公式;④拖 T_res 看 MTBF 指数变化。
MTBF 公式组装 · 拖碎片到空槽
详解 · K03-12 亚稳态与 MTBF
触发器内部是正反馈双稳态回路,输入在决断窗口内变化时,输出会停在两个稳态之间的"山脊"上——需要随机的时间滚落,这就是亚稳态。它不可消除,只可管理:平均故障间隔 MTBF = e^(T_res/τ) / (f_clk · f_data · C),对决断时间 T_res 呈指数敏感。两级同步器的精髓:第一级专心冒险,白赚一整个时钟周期当 T_res,第二级再采样——MTBF 从秒级直接拉到亿年级。
亚稳态之影 · 三问收网
亚稳态之影从每一次违时采样中渗出,凝成 neither-0-nor-1 的影子。它不攻击,它只是"不决定"——让每一级触发器在山脊上多停一拍,错误像涟漪传遍全电路。
「我是亚稳态之影。我不在错误里——我在'还没决定'的瞬间。建立/保持时间违例只是入口,根因是物理世界做不到瞬时决断。三问。答不出,天机门归于不确定。」
「你的刻痕,够用了。三问:驯服、立基、收网。」
渊账累计 0 笔 · 三问全对后清零
记忆之生 · 时序生忆
之影散去,石台清朗。诺依曼老祖让你综合一个序列检测器:认出输入里的"1011"。你画状态图、列状态表、化简、分配编码、推导方程、画出电路。你输入 1、0、1、1——检测灯亮了。一列触发器同步亮起,像一段被点亮的记忆。
「记忆,诞生了。不是某个元件,是这套'状态+输入→输出+次态'的语言。你能记事了。但记得越多,丢得起吗?」
知识图谱点亮 · 十六碎片排认知链 + 1011 序列检测
点击下方碎片,按因果顺序点亮认知链。再切换编码、输入"1011"看检测灯亮。
1011 序列检测器 · 状态综合
二进制:3 触发器,译码复杂;格雷:相邻态只变 1 位,毛刺少;独热:5 触发器,次态逻辑最简。
输入序列 · 逐位点击
详解 · K03-16 时序与组合的协同:流水线萌芽
把一条长组合逻辑切成几段、段与段之间插入寄存器:每段在一拍内独立完成,上一段的结果被寄存器稳稳接住再交给下一段——整体吞吐率成倍提升,而每一拍仍满足约束方程。这就是流水线思想的种子(ch08 将让它长成参天大树):时序逻辑切开时间,组合逻辑填满空间,二者协同才有了现代 CPU。
本章复盘 · 记忆诞生全景
记忆 = 状态+输入→输出+次态。SR 锁存器用交叉耦合留住状态却留下 11 禁区;D 锁存器消灭禁区却透明漏刺;主从 D 触发器用边沿快门驯服透明,但 Tsu/Th 划出物理铁窗。寄存器成墙、计数器自走、移位器成渠,全都押注"共同时钟"——skew 告诉你物理做不到绝对同时,约束方程告诉你一拍能装多少逻辑;而亚稳态住在"还没决定"的瞬间,两级同步器与复位策略教你的不是战胜它,是与不确定共处。