时钟
复习
- 第二十一章:将逻辑门首尾相连,观察到了“记忆“和振荡现象
- 第二十二章:利用首尾相连的“记忆“,实现了简单的 1 位锁存器,但它对输入太敏感
TL;DR
- 时钟是数字电路的心跳,是一个周期性的方波
- 它规定了各部件“什么时候“更新数据,让所有部件步调一致
- 常用参数:周期、频率、上升沿、下降沿、占空比
正文
引言
在第二十一章里,我们把非门的输出接回它自己的输入,发现它会在 0 和 1 之间不停地翻转。这就是最简单的振荡器。
这个翻转太快、太不受控,直接拿来用是不行的。但如果我们想办法把这种“周期性翻转“稳定下来,就得到了一样非常有用的东西——时钟。
让我们把它认真定义一下。
时钟信号长什么样
时钟信号是一个不断在高电平(1)和低电平(0)之间跳变的方波:
1 ─┐ ┌───┐ ┌───┐ ┌───
│ │ │ │ │ │
0 ─┘ └───┘ └───┘ └───
描述它常用这几个量:
- 周期:一个完整的高、低电平变化所需的时间
- 频率:每秒钟经历了多少个周期,单位是赫兹(Hz)
- 频率 = 1 / 周期。比如周期是 1 纳秒,频率就是 1 GHz
- 上升沿:从低电平跳到高电平的那一瞬间
- 下降沿:从高电平跳到低电平的那一瞬间
- 占空比:一个周期里高电平所占的比例,通常取 50%
可以把时钟想象成乐队的节拍器:所有人都盯着它,它响一下,大家就一起做动作。
为什么需要时钟
第二十四章里,边沿 D 触发器已经能做到“只在 WE 变化的瞬间更新“,从而忽略噪声。这很棒,但随之而来一个新问题:
整个电路里有很多触发器、很多部件,如果每个部件都各写各的,谁先谁后就乱套了。比如加法器的结果还没稳定,锁存器就抢先把它存了进去;又或者两个部件同时往一条线上送数据,撞车了。
所以我们需要一个统一的信号,规定“大家什么时候一起更新“。这个信号就是时钟。
有了时钟以后,规则变得非常简单:
- 在一个时钟周期内,各部件安安心心把自己的活儿干完
- 等到时钟边沿到来,大家再一起把新数据写进各自的存储器
这就是所谓的“同步“。
边沿触发
既然用时钟来统一节拍,那到底是看它的高电平、低电平,还是看它的跳变?
答案是跳变,也就是边沿。道理和第二十四章完全一样:电平可以持续很久,容易被噪声干扰;而边沿只是一个瞬间,干净利落。触发器只在时钟的上升沿或下降沿更新,噪声就很难钻空子。
一个触发器选上升沿还是下降沿,是设计时定好的,不能中途更改。
时钟频率与性能
时钟频率决定了电路的工作速度:
- 频率越高,每秒能完成的动作越多,性能越强
- 但电路必须在一个周期内把活干完,频率太高就会来不及,结果出错
- 反过来,频率太低又是在浪费电路的能力
所以时钟频率不能随便定,要在“快“和“稳“之间找一个平衡点,通常以整个系统里最慢的那个环节为准。
思考题
如果时钟频率太快或太慢会发生什么?
小结
知识点
- 时钟信号的特征:周期、频率、上升沿、下降沿、占空比
- 时钟的作用:同步各部件的工作节拍
- 边沿触发为什么能抗噪声
- 时钟频率与性能的关系
参考资料
- Wikipedia(zh):时钟信号:时钟信号的基本概念
- Wikipedia(zh):同步电路:同步电路的工作原理
- Wikipedia(zh):时序逻辑:时序逻辑的基本概念
推荐
思考题答案(仅供参考)
又快又慢都不行:
- 太快:电路可能来不及在一个周期内完成操作,数据还没稳定就被读取,结果出错。
- 太慢:系统性能无法充分发挥,运算速度被不必要地限制,浪费了电路的能力。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪