处理多个时钟
作者:互联网
处理多个时钟
3.2 多时钟域
- 时钟频率不同
- 时钟频率相同,但相位不同
3.3 多时钟域设计的难题
- 建立时间和保持时间的违背
- 亚稳态
3.4 多时钟设计的处理技术
相关信号命名时指明所属时钟域。
分块化设计
- 每个模块只在单个始终下工作
- 信号需要跨时钟域传输时,使用同步器模块。
- 同步器模块规模尽可能小。
同步模块不需要做静态时序分析,但要保证满足保持时间要求。
跨时钟域
控制信号的传输
最常见的就是多级同步器
缺点是增加了电路的整体延时。
数据信号的传输
- 握手协议
- 异步FIFO
3.5 跨时钟域
跨同步时钟域类型
同频零相位差时钟
两时钟完全相同,视为单时钟。
同频恒定相位差时钟
传输信号宽度足够,能被采到即刻。
非同频可变相位差时钟
整数倍时钟
非整数倍时钟
3.6 握手信号方法
- 发送器X将数据放到数据总线上,并发出xreq信号,表示有效数据已经发送
- 把xreq信号同步到y时钟域
- 接收器y在识别到xreq同步后的信号yreq后,所存数据线上的信号
- 接收器发出确认信号yack,表示已接收。
- 接收信号yack同步到x时钟域成为xack
- 发送器识别到同步后的xack后,发送下一个数据。
传输单个数据延迟比较大
3.7 使用同步FIFO传输数据
判满:写操作使两个指针在下个时钟保持相等
判空:读操作使两个指针在下一个时钟相等
也可用计数器来对FIFO宽度进行计数,这种方法虽然原理简单,但是会增加额外的资源开销(比较器)来判断满和空。这最终会降低FIFO操作的最高频率。
3.8 异步FIFO
避免使用二进制计数器实现指针
异步FIFO内部读写指针属于不同时钟域,因此判满判空时不能直接比较。
如FFF变为000,可能会采到101、110等值。
采用格雷码计数。
例如,如果计数器从1010变为1011,取样逻辑要么读到1010,要么读到1011,但不会出现其他值。
格雷码计数器
- 格雷码转二进制
- 二进制+1
- 二进制转格雷码
- 保存格雷码
标签:格雷,同步,多个,处理,FIFO,传输,信号,时钟 来源: https://www.cnblogs.com/icwangpu/p/15895709.html