找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 异步FIFO控制器的设计

[复制链接]
admin 发表于 2013-3-25 11:13:22 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘   要: 异步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所示。
    20121107050138653532146.gif
   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所示结构。
    20121107050138684782147.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-27 15:05 , Processed in 0.055502 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表