给电路一个共同节拍
复习
- D 锁存器可以写入并保存一个比特
- 使能端打开期间,输出会一直跟随输入
- 多个部件若随时变化,步骤便无法排出先后
TL;DR
- 时钟是一根周期性地在 0 和 1 之间变化的信号线
- 全机用共同边沿约定何时交接数据
- 时序图把多根信号的变化画在同一条时间轴上
正文
想象几十个人一起搬箱子。有人还没把箱子放稳,下一个人已经伸手来拿,结果只会乱成一团。
电路也一样。运算需要传播时间,存储需要明确的写入时刻。于是我们给整台机器放一个节拍器:滴答,准备;滴答,交接。
这个节拍器就是时钟。
一根反复跳变的线
┌───┐ ┌───┐ ┌───┐
CLK ──┘ └───┘ └───┘ └──
↑ ↑ ↑
上升沿 上升沿 上升沿
从 0 跳到 1 的瞬间叫上升沿,从 1 跳到 0 叫下降沿。以后可以约定:“所有存储部件都只在上升沿收下新数据。”这样,全机便有了共同的交接时刻。
一高一低走完一轮,叫一个时钟周期。每秒完成多少个周期,叫作频率,单位是赫兹。频率不能无限提高,因为组合逻辑需要时间让结果传播并稳定;下一次边沿来得太早,存储部件可能收下尚未算完的值。
把先后画出来
电路图擅长说明“线接到哪里”,却不擅长说明“谁先变、谁后变”。因此我们让横轴表示时间,每一行画一根信号:
CLK ──┐ ┌───┐ ┌───┐
└───┘ └───┘ └──
D ──────┐ ┌────────
└───────┘
Q ──────────────┐
└────────
这种图叫作时序图。高线表示 1,低线表示 0,竖直变化表示信号发生跳变。多行波形共用一条时间轴,所以能直接比较变化顺序。
读图先找边沿
假设存储部件只在上升沿读取 D。读图时,只需依次检查每个上升沿:
- 找到上升沿
- 看边沿到来前 D 是多少
- Q 稍后更新为这个值,并保持到下一次采样
D 在两个边沿之间即使变化多次,也不会立刻改写 Q。现实里,D 还要在边沿前后稳定一小段时间,分别满足建立时间和保持时间。这里不计算具体数值,只记一句:铃响时,数据必须已经站稳。
时钟和读图方法都有了。下一章,我们把“一段时间内开门”的锁存器改成“只在边沿拍照”的触发器。
思考题
如果一段组合逻辑要 8 ns 才能稳定,时钟周期却只有 5 ns,会有什么风险?
小结
知识点
- 时钟周期、上升沿与下降沿
- 时钟让全机按共同节拍交接数据
- 时序图用共同时间轴展示多根信号
- 数据必须在采样边沿附近保持稳定
思考题答案(仅供参考)
下一次采样发生时,结果可能仍在传播和变化,存储部件会收下错误或不确定的值。因此时钟周期必须给最慢的数据通路留出足够时间。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪