多时钟域设计——数据信号传输

Posted lizhiqing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多时钟域设计——数据信号传输相关的知识,希望对你有一定的参考价值。

主要内容:

  • 使用握手信号进行跨时钟域的数据信号传输
  • 使用FIFO进行跨时钟域的数据信号传输
  • 跨时钟域的数据信号传输总结

同步器为什么不适合用于跨时钟域数据传输过程

  1. 一般情况下数据信号的都是多位的,以数据总线的形式传输。
  2. 同步器只能降低亚稳态传输的概率,不能确保正确的同步信号。

因此如果简单的使用多组同步器进行数据信号跨时钟域传输,可能导致数据信号中多位数据在传输过程中发生错误。

时钟定义命名

前级时钟=发送时钟;

后级时钟=采样时钟=接收时钟;

1、使用握手信号进行跨时钟域的数据信号传输

根据发送时钟端数据信号的变化速率和采样时钟频率,可以分为一下三种情况。

(1)数据变化速率比采样时钟频率低

问题:上升沿检测电路检测的是什么信号的上升沿?

使用发送端的控制信号进行同步,在采样到慢时钟域发出的控制信号后,接收数据的时钟沿进行数据采样。

使用如图所示的上升沿检测信号CE作为控制信号(或数据接收的使能信号)控制数据信号的传输。

技术图片

 

 

(2)数据变化速率比采样时钟频率略高

由于发送时钟比接收时钟快,对于接收时钟而言,发送时钟相当于窄脉冲。

为避免检测不到上升沿,可以结合窄脉冲捕获电路和上升沿检测电路进行边沿检测,并将结果作为使性能信号,但前提是发送时钟频率不能太快。

技术图片

 

 

(3)数据变化速率比采样时钟频率快很多

问题:可能会导致数据采样不完整,数据丢失的现象。

无法使用握手信号进行数据传输,需要使用FIFO。

 

2、使用FIFO进行跨时钟域的数据信号传输

FIFO设计

同步FIFO架构: 

如图所示为同步FIFO,DPRAM(双端RAM)作为FIFO的存储器,允许读写同步进行,由状态模块控制读写的指针和FIFO的状态。

技术图片

 

 

同步fifo表示fifo状态的表示方法

 

 

异步FIFO架构: 

异步FIFO用于对性能要求较高的设计中,尤其是始终延迟比系统资源更为重要的环境中。

可以使用与同步FIFO类似的双端RAM和单独读写端口实现,但是要注意产生fifo_empty和fifo_full时要避免出现亚稳态现象。

技术图片

 

 

避免使用二进制计数器实现指针

在写请求有效时,写指针在写时钟作用下递增;在读请求有效时,读指针在读时钟下递增。

由于读写指针分别与其各自的时钟同步,彼此之间异步,使用二进制计数器实现指针时,可能会导致比较指针值取样错误。

 

以上是关于多时钟域设计——数据信号传输的主要内容,如果未能解决你的问题,请参考以下文章

亚稳态及跨时钟域的处理办法

基于FPGA的跨时钟域信号处理——亚稳态(V3-FPGA学院)

HDMI中线的SCL SDA具体做啥用的正常的信号传输是否TMDS,3对数据加一对时钟应该就够了吧。

多时域设计中,如何处理信号跨时域

数字IC设计——跨时钟域篇4(多比特处理)

数字IC设计——跨时钟域篇4(多比特处理)