22 / 63 · 概念
同步状态转移与时钟的作用
将同步系统理解为一组读取相同旧状态的寄存器。
课时内容可免费阅读,选课后可保存学习进度。
整个状态在同一边沿共同更新
设同步电路状态向量为 、输入为 ,其核心规格如下。
F 是下一状态函数,G 是输出函数。时钟不决定计算内容,而是决定何时存储算出的下一状态。存在多个寄存器寄存器 存储多位状态的电路。本课程中的同步寄存器在时钟边沿存储指定输入。了解更多时,可理解为它们都依据同一组旧状态确定各自的新值。
Q 经过组合函数 F,形成下一状态输入。最后存储的值反馈为下一时段的 Q,从而区分边沿之间的计算与边沿上的存储。
- 当前状态 Q: 在时钟边沿之间保持
- F(Q, X): 由输入与旧状态计算
- 在边沿存储: 计算结果成为下一 Q
时钟周期必须满足最慢路径的要求
新值从输入寄存器输出需要时间,经组合电路到达下一个寄存器也需要时间。还必须在下一边沿前满足 setupsetup 捕获时钟边沿之前,输入数据必须保持稳定的最短时间。违反建立时间就无法保证存储结果。了解更多 裕量。代码写得短,并不意味着可采用很高的时钟频率。
10ns 的时钟周期对应 100MHz。
不要省略单位换算。1ns 的倒数是 1GHz,1ps 的倒数是 1THz。仿真中设置的周期只是输入调度,并不是实际物理电路能够以该频率工作的测量结果。
解读边沿之间的信号
寄存器输出通常保持逻辑状态到下一个有效边沿,但组合输出在边沿之间也可能改变。复位复位 将状态恢复为规定初值的控制。必须同时规定其同步或异步性质,以及相对于其他控制的优先级。了解更多是同步还是异步,会影响这一说法的例外。本课程提供的实验使用单一时钟与同步复位。
阅读波形之前,先规定输入有效时刻、状态更新时刻和输出观察时刻。状态方程比“每个时钟执行一行代码”的软件式理解更准确。
自己试试
200MHz 时钟的周期是多少?同一时钟下连接两个寄存器 a、b,若代码为 a<=d; b<=a;,b 会接收该边沿刚更新的 a 吗?
阅读解释
周期为 5ns。b 接收边沿前的 a。两个寄存器都从同一组旧状态计算新值,因此 d 的新值不会在一个边沿内穿过两级。