【异步电路碎碎念3】 —— 跨异步的处理原则

简介: 【异步电路碎碎念3】 —— 跨异步的处理原则

【异步电路碎碎念2】 —— 跨异步引发的电路危机_尼德兰的喵的博客-CSDN博客_异步电路的危害

学习了跨异步的基础概念和引发问题后,继续学习下应该如何处理跨异步的场景。

查询了一些资料后,总结起来跨异步处理的大原则有以下几个。

寄存器输出

跨异步信号推荐是寄存器输出,具体来讲脉冲信号必须由寄存器输出,电平信号根据实际使用场景可以进行选择,当然我觉得吧如果面积不瓶颈的话,都采用寄存器输出是完全没问题的。

脉冲信号不能通过组合逻辑输出必须是寄存器的干净输出,因为组合逻辑在电路中必然存在毛刺,这个毛刺一旦被同步器采集到那么就是一个错误的有效信息传往下级模块,这是应当尽量避免的。

电平信号因为电路本身对跳转沿不敏感,因此对于寄存器输出这项并没有严格的要求。

维持足够时间

源时钟域的信号如果想被目的时钟域时钟采样到(同步器时钟必然为目的时钟),那么信号需要维持足够长的时间。这个时间我看到了几处说法,自己采纳的是T+Tset+Thold+Tskew即目的时钟周期+建立时间+保持时间+最大时间抖动,这么要求的原因当然是保证目的时钟可以顺利的采样到源脉冲信号。

当然了实际应用中,我记得是直接要求至少2T的维持时间。如果源信号宽度不够的话,是需要进行信号展宽的。

同步过程中不要有组合逻辑

总线/多比特跨异步不能简单打拍

接收域避免再收敛

打拍需要与时俱进

异步复位一定要纳入跨异步考虑


相关文章
|
前端开发 Shell 芯片
【芯片前端】保持代码手感——跨异步DMUX
【芯片前端】保持代码手感——跨异步DMUX
126 0
|
8月前
|
网络协议 算法 开发者
如何实现网络同步?
【5月更文挑战第3天】如何实现网络同步?
167 9
|
前端开发 芯片
【芯片前端】保持代码手感——握手型同步fifo的进一步拓展
【芯片前端】保持代码手感——握手型同步fifo的进一步拓展
111 1
|
前端开发 芯片
【芯片前端】保持代码手感——同步FIFO
【芯片前端】保持代码手感——同步FIFO
|
存储 前端开发 芯片
【芯片前端】保持代码手感——异步FIFO全解析
【芯片前端】保持代码手感——异步FIFO全解析
122 0
【异步电路碎碎念4】 —— 跨异步的处理方法
【异步电路碎碎念4】 —— 跨异步的处理方法
109 0
【异步电路碎碎念4】 —— 跨异步的处理方法
|
前端开发
【异步电路碎碎念2】 —— 跨异步引发的电路危机
【异步电路碎碎念2】 —— 跨异步引发的电路危机
282 0
|
前端开发 芯片
【异步电路碎碎念1】 —— 到底什么是异步电路
【异步电路碎碎念1】 —— 到底什么是异步电路
425 0
【异步电路碎碎念1】 —— 到底什么是异步电路
|
算法 Linux
linux多线程同步设计
linux多线程同步设计
195 0
linux多线程同步设计
【异步电路碎碎念5】 —— 跨异步处理的几个注意事项
【异步电路碎碎念5】 —— 跨异步处理的几个注意事项
150 0