推荐答案
测试一下
题目
How do you synchronize an asynchronousinput?
参考答案与知识点
参考答案
异步信号同步的核心目标是避免亚稳态传播,确保跨时钟域信号稳定采样。常用方法如下:
1. **单比特同步:两级触发器同步器**
对单比特慢速变化信号(如按键、中断),使用两个串联的触发器,第一级采样异步信号,第二级输出同步信号。两级可有效降低亚稳态概率(MTBF足够大),但输入信号必须保持至少两个目标时钟周期宽度,否则可能漏采。电路结构:两级D触发器,同源时钟。
2. **多比特同步:处理多位宽异步数据**
- **握手协议**:请求-应答方式,发送方使请求信号有效,接收方采样后拉高应答,发送方撤销请求,接收方再撤销应答。包含四相或两相握手,适用于较慢数据传输,但延迟较大。
- **异步FIFO**:通过双端口RAM、读写指针、格雷码指针同步,实现跨时钟域批量数据传输。格雷码保证单次仅跳变一位,同步后无多位同时变化风险。注意空满标志产生需跨时钟域比较,使用同步后的指针。
- **寄存器组打拍同步**:将多位信号通过连续两个(或更多)触发器同步,但要求多位信号变化间隔远大于同步时钟周期,且允许短暂错误(如配置寄存器)。易错点:多位信号同时变化时,不同位可能因布线延迟不同而在不同时钟沿被采样,产生错误组合值。因此不推荐直接对多位信号打拍,除非能保证变化间隔足够大或使用格雷码。
3. **特殊场景**
- **非常慢变信号**:可用边缘检测同步器,但需确保脉冲宽度足够。
- **快时钟到慢时钟**:输入信号需展宽到慢时钟两个周期以上,或使用握手/脉冲同步器(如单脉冲同步器:将快时钟域的脉冲转换为电平,再同步后恢复为脉冲)。
**易错点**:
- 不能仅用一级触发器同步,会直接采样亚稳态。
- 多位宽信号(如数据总线)不能简单用两级同步器,必须使用握手或FIFO。
- 同步器输入信号必须满足建立时间和保持时间,否则即使两级也会失效(概率极低但存在)。
- 复位信号异步复位同步释放是常见同步方法。
**考点**:亚稳态概念、MTBF、两级触发器原理、格雷码跨时钟域、异步FIFO结构。
涉及知识点
- 亚稳态与MTBF
- 双级触发器同步器
- 格雷码编码与多比特同步
- 握手协议(四相/两相)
- 异步FIFO结构
- 脉冲同步器与边沿检测