zhiweiqiang33 发表于 2016-12-14 15:10:26

如何把前级输出的数据准确地传送到下一级模块中?

级联的两个模块的基本时钟是异步时钟域的,如何把前级输出的数据准确地传送到下一级模块中?

如果输入数据的节拍和本级芯片的处理时钟同频,可以直接用本级芯片的主时钟对输入数据寄存器采样,完成输入数据的同步;如果输入数据和本级芯片的处理时钟是异步的,特别当两个时钟的频率不是由同一石英晶体分频产生的,则起码对输入数据做两次以上的采样寄存,才能初步完成输入数据的读入。需要说明的对异步时钟域的数据进行两次以上采样,其作用只是防止了数据状态不稳定的传播,使后级电路处理的数据都是有效电平。但是这种做法并不能保证两级寄存器采样后的数据是完全正确的电平,这种方式处理,一般都会读入一定数量的错误数据,所以只适用于允许发生少量错误的电路功能单元。

为了避免由异步时钟域产生的错误,经常使用双口RAM(DPRAM)、FIFO缓存的方法完成异步时钟域之间的数据传送。在输入端口使用前级时钟写数据,在输出端口使用本级时钟读数据,并有缓冲器空或满的控制信号来管理数据的读写,以避免数据的丢失,非常方便准确地完成异步时钟域之间的数据交换。我们将在高级教程中通过实际例子说明如何设计这样的接口。

页: [1]
查看完整版本: 如何把前级输出的数据准确地传送到下一级模块中?