在 Atmel SAM-D21 系列单片机上,许多外设使用与主 CPU 时钟异步的时钟,对这些外设的访问必须经过同步逻辑;在时钟相对于 CPU 时间较慢的外围设备上,这可能会增加一些非常大的延迟。例如,如果 RTC 配置为使用 1024Hz 时钟(似乎是设计意图)并且 CPU 以 48Mhz 运行,则读取“当前时间”寄存器将导致总线逻辑插入超过 200,000 个等待状态(最少1024Hz 时钟的五个周期)。尽管可以让 CPU 发出读取请求,执行一些其他不相关的代码,并在 200,000 多个周期后返回以获取时间,但似乎没有任何方法可以更快地实际读取时间。
根据我对同步的理解,单比特同步电路会将信号延迟目标时钟的2-3个周期;同步多比特量有点困难,但有多种方法可以保证目标时钟在五个周期内的可靠行为,如果它比源时钟快,如果不是,则只多几个周期。Atmel SAM-D21 将需要在源时钟域中进行六个周期进行同步,哪些因素会支持同步延迟足够长以至于需要“同步完成”中断的设计,而不是确保同步延迟足够短以至于不需要这样的中断?