数据接口同步的同步方法
- 前级(如另外一个芯片、PCB布线、驱动接口元件)输出的延时是随机的,或者有可能变动,如何在后级完成数据的同步?
对于随机到达的数据,需要建立同步机制。可以采用使数据通过RAM或者FIFO的缓存仔读取的方法,达到数据同步的目的。将前级芯片提供的时钟作为基本时钟,将数据写入RAM或者FIFO,然后使用后级的基本时钟产生读信号,将数据读出来即可。这种做法的关键是必须要有堆栈满和空的指示信号来管理数据的写入和读取,以防止数据的丢失。
- 数据有固定的帧格式,数据的起始位置如何确定?
在通信系统中,数据往往是按照帧组织的。由于系统对时钟的要求很高,常常设计专门时钟板产生高精度的时钟。数据帧是有起始位置的,在数据正确接收之前,必须先完成数据的同步,即确定数据的“头”是从什么地方开始的。数据同步采用的就是这种方法,即用同步头表示数据信号的起始,或者使用双口RAM、FIFO来缓存数据再传送到下一级。找到数据头的方法有两种:一种,增加一条表示数据起始位置的信号线;第二种,对于异步系统,则常常在数据中插入一段有特殊码型的同步码(同步头),接收端通过相关运算检测到同步头。
级联的两个模块的基本时钟是异步时钟域的,如何把前级输出的数据准确地传送到下一级模块中?
如果输入数据的节拍和本级芯片的处理时钟同频,可以直接用本级芯片的主时钟对输入数据寄存器采样,完成输入数据的同步;如果输入数据和本级芯片的处理时钟是异步的,特别当两个时钟的频率不是由同一石英晶体分频产生的,则起码对输入数据做两次以上的采样