异步FIFO控制器的设计
扫描二维码
随时随地手机看文章
摘 要: 异步FIFO是一种先进先出电路,可以有效解决异步时钟之间的数据传递。通过分析异步FIFO设计中的难点,以降低电路中亚稳态出现的概率为主要目的,提出了一种格雷码计数器的技术,通过仿真验证,有效地实现了异步FIFO控制器的设计。该设计将大大提高工作频率和资源利用率。
关键词: 异步FIFO;亚稳态;格雷码计数器
随着现代芯片设计规模的不断扩大,集成电路越来越复杂,一个系统中往往包含多个时钟,如何设计异步时钟之间的接口电路是多时钟领域的关键问题。异步FIFO(First In First Out)是一种先进先出电路,用来存储、缓冲在两个异步时钟之间的数据传输,使用异步FIFO可以在两个不同的时钟系统之间快速准确地传输实时数据,是用来解决异步时钟接口电路的一个有效方案。并且异步FIFO高速、可靠性好,在网络接口、图像处理等方面都得到了广泛的应用。
1异步FIFO控制器的设计
1.1 异步FIFO时钟域结构设计
FIFO主要由FIFO控制器和RAM两个部分组成。FIFO控制器最重要的功能就是产生RAM的读写地址以及相应的使能信号;产生FIFO的状态标志,包括空(Empty)、满(Full)、溢出(Underflow,Overflow)以及其他根据设计需要产生的状态标志。异步FIFO由两个时钟域构成:push clock domain(记为clk_push domain)和pop clock domain(记为clk_pop domain)。
所以异步FIFO可以划分为下列时钟域结构,如图1所示。
1.2 简单计数器实现读写地址输出结构设计
由时钟域结构可知,作为FIFO控制器,最基本的就是要根据外部的输入信号push和pop,产生对RAM访问的读写地址。FIFO控制器内首先要实现对RAM的读写地址输出,所以FIFO控制器内有一组基于clk_push domain的逻辑产生写地址:push_addr,和一组基于clk_pop domain的逻辑产生读地址:pop_addr。然后对地址信息采用二进制编码,每一次push操作,使push_addr增加1,即指向下一个push操作的RAM空间;每一次pop操作,使pop_addr增加1,即指向下一个pop操作的RAM空间。按照这种思路,异步FIFO控制器可进一步细化为如图2所示结构。