用双端口随机存取存储器实现异步先进先出数据传输的制作方法

文档序号:6761948阅读:316来源:国知局
专利名称:用双端口随机存取存储器实现异步先进先出数据传输的制作方法
技术领域
本发明涉及专用集成电路(ASIC)设计、数字电路设计技术领域,特别是一种用双端口随机存取存储器实现异步先进先出数据传输的方法。
背景技术
一般来说,同步FIFO((First-In First-Out,先进先出))结构简单,易于实现;异步FIFO的控制逻辑相对复杂,市场上的专用产品也有不少,但只能给出FIFO的满(Full)、半满(Half-Full)和空(Empty)三种状态,不能全面准确地反映FIFO的内部状态,使得其使用受到一定的局限,也不利于数据传输性能的提高。

发明内容
本发明所设计的FIFO,是在双端口RAM(Random-Access Memory,随机存取存储器)的基础上,通过同步控制逻辑把双端口RAM包装成一个通用的同步FIFO,再用一个较小的寄存器阵列构成异步接口。使用本发明所设计的FIFO,能够准确及时地给出FIFO中数据的多少,使得数据传输双方可以适时地发起数据读写操作,有效地提高数据传输的效率。
发明技术方案一种异步FIFO的实现方法,用双端口RAM和控制逻辑实现异步FIFO。
可实现不同时钟源之间大数据流双向突发传输。
能够准确及时地给出FIFO中数据的多少,使得数据传输双方可以适时地发起数据读写操作,有效地提高数据传输的效率。


图一是用双端口RAM实现的一个通用同步FIFO。
图二是寄存器阵列单元的结构图。
图三是本发明方法实现流程图。
具体实施例方式
用双端口RAM构造异步数据传输中的桥接FIFO可以分为两步实现异步FIFO。
第一步是用双端口RAM构造一个通用的同步FIFO,如图一所示,图中所有信号都工作在一个时钟域,而且该时钟域与外部(数据传输双方)两个时钟源中速度较高者相同。
第二步是在通用的同步FIFO之上,用一个较小的寄存器阵列构成异步接口。寄存器阵列的宽度与FIFO的数据宽度相等,且外加状态标记寄存器;寄存器阵列的深度根据异步时钟域的差距比例来决定。实际上,深度为n的寄存器阵列是由n个深度为1的寄存器阵列串连成的一个小FIFO,因此,把深度为1的寄存器阵列定义为寄存器阵列单元。
图一中,把双端口RAM的两个端口分别定义成数据输入端口和数据输出端口,写指针是数据输入端口的地址信号,读指针是数据输出端口的地址信号。当写信号有效时,读写控制逻辑把写指针加1;当读信号有效时,读写控制逻辑把读指针加1。根据读指针和写指针大小,读写控制逻辑可以实时地给出双端口RAM中数据量的多少和空/满状态。
图二中,寄存器阵列单元包含两个标记寄存器Rf1和Rf2;以及数据暂存寄存器R1,R2,…,和Rn。寄存器阵列单元的输入和输出工作在两个不同的时钟域,其工作时钟分别为CLK_IN和CLK_OUT。当输入端的数据写入时,数据用输入时钟CLK_IN暂存在寄存器R1,R2,…,和Rn中,同时标记寄存器Rf1被置1。标记寄存器Rf1的输出用时钟CLK_OUT写入标记寄存器Rf2。当数据输出端检测到标记寄存器Rf2的输出为1(读就绪)时,此时输入数据早已稳定地锁存在暂存寄存器R1,R2,…,和Rn中,可以用时钟CLK_OUT和读信号把它读出,在读出数据的同时,标记寄存器Rf1和Rf2被清零。当多个寄存器阵列单元串连成一个小FIFO,就可以实现不同时钟域大数据流的突发传输。
图三中所描述的实现流程,可以分成S1、S2、S3和S4四个步骤,分别说明如下步骤S1用双端口RAM构造一个通用的同步FIFO,具体如图一所示。步骤S2如果数据源域的时钟频率大于数据目标域的时钟频率,同步FIFO工作在数据源时钟域,并在同步FIFO的输出端接一个异步寄存器阵列;否则,同步FIFO工作在数据目标时钟域,并在同步FIFO的输入端接一个异步寄存器阵列,异步寄存器阵列的宽度与同步FIFO的数据宽度相等,寄存器阵列的深度根据异步时钟域的频率和相位差来决定,频率和相位差越大,寄存器阵列的深度越大;当频率和相位差接近于0时,寄存器阵列的深度等于或大于3(这时才能保证数据不间断流水传输);步骤S3当数据源域的时钟频率大于数据目标域的时钟频率时,同步FIFO输出端的寄存器阵列具有数据预取能力,即只要同步FIFO中有数据且寄存器阵列有空闲的寄存器阵列单元,都及时从同步FIFO预取数据到寄存器阵列中,并给出数据就绪标志;当数据源域的时钟频率小于数据目标域的时钟频率时,只要同步FIFO输入端的寄存器阵列中有数据,都被及时地读入同步FIFO中,同时寄存器阵列给出空闲标志;步骤S4以上通过同步控制逻辑把双端口RAM包装成一个通用的同步FIFO,再用一个异步寄存器阵列构成异步接口,从而实现异步FIFO功能的方法,只要异步寄存器阵列有足够大的深度,就可以保证异步数据大流量连续传输。
权利要求
1.一种异步FIFO的实现方法,其特征在于,用双端口RAM和控制逻辑实现异步FIFO。
2.根据权利要求1所述的异步FIFO的实现方法,其特征在于,可实现不同时钟源之间大数据流双向突发传输。
3.根据权利要求1所述的异步FIFO的实现方法,其特征在于,能够准确及时地给出FIFO中数据的多少,使得数据传输双方可以适时地发起数据读写操作,有效地提高数据传输的效率。
4.一种异步数据传输中用双端口RAM实现桥接FIFO的方法,在双端口RAM的基础上,通过同步控制逻辑把双端口RAM包装成一个通用的同步FIFO,再用一个较小的寄存器阵列构成异步接口。
5.根据权利要求4的异步数据传输中用双端口RAM实现桥接FIFO的方法,其具体步骤如下步骤S1用双端口RAM构造一个通用的同步FIFO;步骤S2如果数据源域的时钟频率大于数据目标域的时钟频率,同步FIFO工作在数据源时钟域,并在同步FIFO的输出端接一个异步寄存器阵列;否则,同步FIFO工作在数据目标时钟域,并在同步FIFO的输入端接一个异步寄存器阵列,异步寄存器阵列的宽度与同步FIFO的数据宽度相等,寄存器阵列的深度根据异步时钟域的频率和相位差来决定,频率和相位差越大,寄存器阵列的深度越大;当频率和相位差接近于0时,寄存器阵列的深度等于或大于3;步骤S3当数据源域的时钟频率大于数据目标域的时钟频率时,同步FIFO输出端的寄存器阵列具有数据预取能力,即只要同步FIFO中有数据且寄存器阵列有空闲的寄存器阵列单元,都及时从同步FIFO预取数据到寄存器阵列中,并给出数据就绪标志;当数据源域的时钟频率小于数据目标域的时钟频率时,只要同步FIFO输入端的寄存器阵列中有数据,都被及时地读入同步FIFO中,同时寄存器阵列给出空闲标志;步骤S4以上通过同步控制逻辑把双端口RAM包装成一个通用的同步FIFO,再用一个异步寄存器阵列构成异步接口,从而实现异步FIFO功能的方法,只要异步寄存器阵列有足够大的深度,就可以保证异步数据大流量连续传输。
全文摘要
本发明涉及专用集成电路设计、数字电路设计技术领域,特别是一种用双端口随机存取存储器实现异步先进先出数据传输的方法。本发明设计了一种适用于异步数据传输的桥接FIFO,这种新型FIFO是在双端口RAM的基础上,通过同步控制逻辑把双端口RAM包装成一个通用的同步FIFO,再用一个较小的寄存器阵列构成异步接口。其步骤S1用双端口RAM构造一个通用的同步FIFO,S2确定数据时钟域,S3读取数据,S4实现异步数据传输。使用本发明所设计的FIFO,能够准确及时地给出FIFO中数据的多少,使得数据传输双方可以适时地发起数据读写操作,有效地提高数据传输的效率。
文档编号G11C7/00GK1560868SQ20041000388
公开日2005年1月5日 申请日期2004年2月10日 优先权日2004年2月10日
发明者张亮, 韩承德, 张 亮 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1