在数字电路设计中,CDC(Clock Domain Crossing)和RDC(Reset Domain Crossing)是两个重要的检查步骤,用于确保信号在不同时钟域或复位域之间传递时的正确性和稳定性。这些检查帮助设计人员识别和解决由于跨域传输而可能引起的亚稳态和同步性问题。
CDC 检查
CDC检查主要针对时钟域跨越时可能出现的问题,确保信号在不同的时钟域之间传递时不会引发数据错误或亚稳态。
常见的CDC问题:
-
亚稳态(Metastability):
当信号在跨时钟域时不满足建立时间或保持时间要求,可能进入亚稳态,导致不确定的输出。 -
数据丢失或重复(Data Loss or Duplication):
在没有正确处理握手协议或同步机制时,数据可能在传输过程中丢失或重复。 -
时序问题(Timing Issues):
不同时钟域之间的信号传递可能导致时序违例,影响系统的正确性。
解决方案:
-
使用同步器(Synchronizers):
- 同步器(如双级触发器)用于将异步信号同步到目标时钟域,减少亚稳态的概率。
-
异步FIFO(Asynchronous FIFO):
- 适用于大量数据传输,通过读写指针管理数据,避免直接跨域传输引起的问题。
-
握手协议(Handshake Protocols):
- 使用握手信号确保数据在不同时钟域之间的正确传递。
RDC 检查
RDC检查针对复位域跨越时可能出现的问题,确保信号在不同的复位域之间传递时不会引发数据错误或不一致。
常见的RDC问题:
-
复位不同步(Asynchronous Reset Issues):
在不同复位域之间传递信号时,如果复位信号不同步,可能导致信号不一致或丢失。 -
复位域间信号的竞争条件(Race Conditions):
不同复位域之间的信号传递可能出现竞争条件,导致系统不稳定。 -
复位释放不同步(Reset De-assertion Issues):
在复位信号解除时,不同复位域可能出现不同步的情况,导致不一致的系统状态。
解决方案:
-
复位同步器(Reset Synchronizers):
使用复位同步器将复位信号同步到目标复位域,确保复位信号的一致性。 -
复位域握手协议(Reset Domain Handshake Protocols):
使用握手协议确保复位信号在不同复位域之间的一致释放。 -
双端口RAM(Dual-Port RAM):
用于在不同时钟域或复位域之间共享数据,避免竞争条件。
CDC 和 RDC 检查的区别
- 检查对象不同:CDC检查主要关注时钟域跨越时的信号传递问题,而RDC检查则关注复位域跨越时的信号传递问题。
- 解决方法侧重点不同:CDC检查主要通过同步器、异步FIFO和握手协议来解决问题,而RDC检查则更多依赖于复位同步器和复位域握手协议。