处理多个时钟

处理多个时钟

3.2 多时钟域

  • 时钟频率不同
  • 时钟频率相同,但相位不同

3.3 多时钟域设计的难题

  • 建立时间和保持时间的违背
  • 亚稳态

3.4 多时钟设计的处理技术

相关信号命名时指明所属时钟域。

分块化设计

  • 每个模块只在单个始终下工作
  • 信号需要跨时钟域传输时,使用同步器模块。
  • 同步器模块规模尽可能小。

同步模块不需要做静态时序分析,但要保证满足保持时间要求。

跨时钟域

控制信号的传输

最常见的就是多级同步器

缺点是增加了电路的整体延时。

数据信号的传输

  • 握手协议
  • 异步FIFO

3.5 跨时钟域

跨同步时钟域类型

同频零相位差时钟

两时钟完全相同,视为单时钟。

同频恒定相位差时钟

传输信号宽度足够,能被采到即刻。

非同频可变相位差时钟

整数倍时钟
非整数倍时钟

3.6 握手信号方法

  1. 发送器X将数据放到数据总线上,并发出xreq信号,表示有效数据已经发送
  2. 把xreq信号同步到y时钟域
  3. 接收器y在识别到xreq同步后的信号yreq后,所存数据线上的信号
  4. 接收器发出确认信号yack,表示已接收。
  5. 接收信号yack同步到x时钟域成为xack
  6. 发送器识别到同步后的xack后,发送下一个数据。

传输单个数据延迟比较大

3.7 使用同步FIFO传输数据

判满:写操作使两个指针在下个时钟保持相等

判空:读操作使两个指针在下一个时钟相等

也可用计数器来对FIFO宽度进行计数,这种方法虽然原理简单,但是会增加额外的资源开销(比较器)来判断满和空。这最终会降低FIFO操作的最高频率。

3.8 异步FIFO

避免使用二进制计数器实现指针

异步FIFO内部读写指针属于不同时钟域,因此判满判空时不能直接比较。

如FFF变为000,可能会采到101、110等值。

采用格雷码计数。

例如,如果计数器从1010变为1011,取样逻辑要么读到1010,要么读到1011,但不会出现其他值。

格雷码计数器

  • 格雷码转二进制
  • 二进制+1
  • 二进制转格雷码
  • 保存格雷码
posted @   骑猪上树的少年  阅读(171)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
回到顶部
点击右上角即可分享
微信分享提示

目录导航