一种分布控制双时钟FIFO的设计与实现*
2013-06-08杨剑新胡向东
杨剑新,胡向东,李 媛
(国家高性能集成电路(上海)设计中心,上海 201204,China)
1 引言
大规模数字电路一般采用GALS(Globally Asynchronous Locally Synchronous)[1]方式实现异步和同步设计的混合。各个模块内部使用传统的同步设计技术,而这些同步模块之间信号传输采用异步方式。这种设计方法简化了SoC 芯片的时钟分布,却引入了不同时钟域之间信号传输的同步问题。如何在不同模块之间进行可靠、高效的数据异步传输,成为GALS设计的关键之一。
双时钟FIFO(Dual-Clock First-Input First-Output)或混合时钟FIFO(Mixed-Clock FIFO)适合实现不同时钟域之间的数据传输,这种技术对不同时钟域的时钟没有频率和相位要求,具有良好的适应性。传统的双时钟FIFO 将控制逻辑和存储体作为一个整体,集中放置在高频模块一端,这种设计方式要求将相对低频的时钟树分布到高频区域。随着芯片规模的扩大和时钟种类的增加,尤其是芯片的工作频率不断提高,给时钟树设计以及控制模块之间信号的延时带来较大的困难。
本文第2节介绍传统的双时钟FIFO 技术和存在的不足;第3节介绍源同步数据传输技术;第4节详细介绍一种分布控制双时钟FIFO 的实现方法;第5节从性能和可实现性角度,简要介绍了该设计可进一步采取的优化措施;第6节简要介绍该设计方法在实际SoC 芯片中的使用效果;最后总结全文。
2 传统双时钟FIFO
2.1 传统双时钟FIFO 的结构
文献[2,3]介绍了一种传统的基于Gray码的双时钟FIFO 结构,如图1所示,它能够支持任意相位和频率关系的两个时钟域之间的数据传输。图左侧是发送方所在时钟域(wclk)的同步逻辑,右侧为接收方所在时钟域(rclk)的同步逻辑。……
