时序逻辑电路
复习
- 第二十二章:掌握了锁存器,它是最简单的记忆单元
- 第二十三章:认识了时钟,它统一了各部件的更新节拍
- 第二十七章:把加法器、寄存器和多路选择器接成回路,做出了累加器
TL;DR
- 组合逻辑电路的输出只取决于当前输入;时序逻辑电路还取决于“过去的状态“
- 时序逻辑 = 组合逻辑 + 存储元件 + 时钟
- 常见例子:计数器、移位寄存器、状态机
正文
两类电路
到目前为止,我们造的电路可以分成两拨:
- 组合逻辑电路:加法器、减法器、ALU。给定输入,输出立马确定,和“过去“没有任何关系
- 时序逻辑电路:锁存器、触发器、寄存器、累加器。它们的输出不仅看当前输入,还要看自己记住的状态
一句话概括时序逻辑:它的输出,是“当前输入“和“历史状态“共同作用的结果。
时序逻辑的组成
把前面学的东西归归类,时序逻辑电路无非就是三块:
- 存储元件:锁存器或触发器,用来保存状态
- 组合逻辑:根据输入和当前状态,算出“下一状态“和输出
- 时钟:规定什么时候把“下一状态“写进存储元件
第二十七章的累加器就是一个标准例子:寄存器存状态,加法器是组合逻辑,时钟控制更新。
计数器
最直观的时序电路是计数器。它每个时钟脉冲就往上数一个数。
怎么造?回忆第二十四章的 T 触发器:只要 T = 1,每来一个时钟边沿,输出就翻转一次。把它串起来,就能数数了:
- 第 1 个 T 触发器:每来一个脉冲翻转一次,相当于最低位
- 第 2 个:每当第 1 个从 1 变回 0(也就是进位)时翻转,相当于次低位
- 以此类推
这和十进制里“个位逢十进一、十位再往上进“是一个道理。程序计数器(PC)就是这样一个部件,它记录着下一条指令的地址(后面会讲)。
状态机
比计数器更一般的时序电路,叫有限状态机。它有一组“状态“,根据输入在不同状态之间跳转,就像一台自动售货机:
- 收到硬币,进入“已付款“状态
- 按下按钮,从“已付款“转到“出货“状态
- 出货完毕,回到初始状态
只要有明确的状态和跳转规则,任何复杂的控制流程都能用状态机描述。后面要讲的控制器,本质上就是一个状态机。
建立时间与保持时间
时序电路有一个绕不开的物理限制:数据必须在时钟边沿前后稳定一小段时间,触发器才能正确采样。
- 建立时间:边沿到来之前,数据需要提前稳定的时间
- 保持时间:边沿到来之后,数据还需要继续保持的时间
这就像拍照:快门按下的前后,人都得站着别动,照片才清晰。时钟频率之所以不能无限提高,很大程度上就是被这两个时间卡住了。
思考题
在第二十七章的累加器里,如何用一个状态机来管理“输入第一个数 → 输入第二个数 → 计算 → 输出结果“这整个流程?
小结
知识点
- 组合逻辑与时序逻辑的区别
- 时序逻辑电路的三个组成部分
- 计数器
- 有限状态机
- 建立时间与保持时间
参考资料
- Wikipedia(zh):时序逻辑:时序逻辑的基本概念
- Wikipedia(zh):有限状态机:状态机的工作原理
- Wikipedia(zh):移位寄存器:移位寄存器的基本概念
推荐
思考题答案(仅供参考)
定义一个状态机,大致有这些状态:初始状态 → 接收第一个数 → 接收第二个数 → 计算 → 存储结果 → 回到初始状态。每个状态在时钟驱动下跳转,并用控制信号去开关寄存器、多路选择器的读写。处理器的控制器,做的就是这件事。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪