✅ 异步电路处理方法概述
异步电路是指不依赖全局统一时钟的电路,或包含不同时钟域的电路。在实际设计中,完全异步的系统较少见,更多的是在同步系统中跨时钟域通信的情况,这种情况也被统称为“异步问题”。
由于两个时钟之间存在频率、相位差,甚至不相关,导致数据传输存在风险(如亚稳态、毛刺),需要特定处理方法来确保数据可靠性和系统稳定性。
🚧 异步通信中的主要问题
- 亚稳态(Metastability):触发器在采样异步输入信号时,可能进入不稳定状态,持续时间不可预测。
- 毛刺(Glitch):由于不稳定信号造成逻辑误判。
- 数据丢失或重复:写/读不一致或握手失败。
- 信号违例(Setup/Hold Violation)。
📌 常见的异步处理方法(跨时钟域)
1. 单比特信号多级打拍(Double/Triple Flip-Flop Synchronizer)
- 用途:跨时钟域传递控制信号(如启动信号、状态位等)。
- 原理:将异步信号接入多个级联的触发器(通常是2~3级),增加亚稳态恢复时间,减小误采样概率。
2. 异步 FIFO(Asynchronous FIFO)
- 用途:在不同步时钟域之间传输多位数据,如图像流、采集数据等。
- 结构要点:
- 写端使用写时钟域,读端使用读时钟域。
- 使用格雷码地址进行地址指针跨域同步,减少毛刺。
- 内部需加入指针同步器和空/满标志计算逻辑。
- 优点:适合大数据量跨时钟域传输。
- 注意事项:设计和验证相对复杂。
握手协议(Handshake Protocol)
- 用途:在异步通信中保证发送与接收双方协同工作,常见于低速控制通信。
- 基本流程:
- 发送端发出请求(
req),接收端响应(ack)。 - 双方确认后才进行数据采样或状态迁移。
- 发送端发出请求(
- 类型:
- 双向握手(2-phase handshake)
- 四相握手(4-phase handshake)
- 优点:可靠、不依赖时钟关系。
- 缺点:速度较慢,不适合高吞吐应用。
4. 仲裁器(Arbiter)
- 用途:在多个异步请求信号同时到达时决定先后顺序。
- 典型场景:
- 多主控设备竞争总线;
- 多个异步信号源请求同一个资源。
- 实现:常用仲裁器包括优先级仲裁、循环仲裁等。核心是检测多个输入信号并输出一个无冲突的允许信号。
- 问题处理:仲裁器本身也需防范亚稳态影响,通常也用打拍同步。