20 / 63 · 概念
D 触发器:从电平到边沿
比较锁存器与触发器的更新时间,联系寄存器、setup 和 hold 的含义。
课时内容可免费阅读,选课后可保存学习进度。
时钟为 1 的区间不同于变为 1 的瞬间
高电平有效锁存器锁存器 控制信号有效期间跟随输入,无效时保持数值的存储元件。它不同于只在边沿存储的触发器。了解更多在整个 CLK=1 区间内跟随 D。上升沿上升沿 时钟从 0 变为 1 的瞬间。它不同于表示整个 CLK=1 区间的电平。 D 触发器触发器 在指定时钟边沿存储输入,并保持到下一边沿的元件。输入必须满足 setup、hold 条件。只在 CLK 从 0 变为 1 的边界采纳 D,并保持到下一个上升沿。不能仅凭 clk=1 的条件语句就认为两种行为相同。
请亲自完成以下比较。
- CLK=0 时,将 D 改为 1。两个 Q 此时仍为 0。
- 将 CLK 升为 1。两个 Q 都变为 1。
- 保持 CLK=1,将 D 改为 0。只有锁存器的 Q 变为 0。
- 将 CLK 降为 0,再升为 1。触发器的 Q 此时也采纳 0。
假设两个 q 初始均为 0。D 锁存器在 CLK=1 时跟随 D,在 CLK=0 时保持;D 触发器只在 CLK 从 0→1 时存储 D。
时序电路的一个周期
触发器输出 Q 经过组合电路生成下一输入 D,就形成状态转移。将边沿前的输入记为 ,边沿后的存储状态记为 ,则理想模型如下。
实际输出不会在边沿瞬间同时改变,而是在 clock-to-Q 延迟后改变。多个触发器在同一边沿分别采纳自己的输入,因此能够根据彼此的旧状态计算下一状态。这是计数器和移位寄存器寄存器 存储多位状态的电路。本课程中的同步寄存器在时钟边沿存储指定输入。的起点。
- 当前 Q: 本周期的存储状态
- 组合电路: 由 Q 与外部输入计算 D
- 下一个上升沿: 存储满足时序条件的 D
- 新的 Q: 经过 clock-to-Q 延迟后输出下一状态
setup、hold 是采样的前提
D 必须在捕获边沿之前的 setupsetup 捕获时钟边沿之前,输入数据必须保持稳定的最短时间。违反建立时间就无法保证存储结果。了解更多 时间与之后的 hold 时间保持时间 捕获时钟边沿之后,输入数据仍必须保持稳定的最短时间。需结合上下文,将此时序要求与普通的数值保持行为区分。了解更多内保持稳定。D 在边沿附近变化时,不能简单保证结果一定是旧值或新值,亚稳态可能成为问题。上述实验并不模拟这种模拟电路现象。
寄存器由多个比特的触发器组成。一个寄存器有八位,并不代表输入的八个比特必定构成一致的整体数值;仍需要共同满足时序条件与数据传递规则。
初始状态与复位
仿真中令 Q 从 0 开始,与硬件上电时必定为 0 并不相同。下一课将加入 reset 和 enable,规定何时初始化、何时保持。同步复位在边沿起作用,异步复位不依赖边沿,但也必须关注释放时序。
自己试试
CLK=1 期间,D 发生 0→1→0 的变化,并在下一个上升沿之前稳定为 D=1。锁存器与触发器的 Q 分别何时改变?触发器会在该边沿更新两次吗?
阅读解释
锁存器在 CLK=1 期间跟随 D 的变化。触发器忽略这些变化,只在下一个上升沿采纳一次有效的 D=1。解读实际电路时,还应包含 setup、hold 和 clock-to-Q 条件。