[发明专利]一种实现不等宽数据传输的异步先进先出存储器及方法有效
申请号: | 200810100926.2 | 申请日: | 2008-02-26 |
公开(公告)号: | CN101261575A | 公开(公告)日: | 2008-09-10 |
发明(设计)人: | 周涛 | 申请(专利权)人: | 北京天碁科技有限公司 |
主分类号: | G06F5/06 | 分类号: | G06F5/06 |
代理公司: | 北京银龙知识产权代理有限公司 | 代理人: | 许静 |
地址: | 100082北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 不等 数据传输 异步 先进 存储器 方法 | ||
技术领域
本发明涉及通用缓冲存储器领域,尤其涉及一种实现不等宽数据传输的异步先进先出存储器及方法。
背景技术
在计算机、通信领域的各类应用中,经常需要进行不同时钟域之间的数据传输。如果是多比特数据的传输,为了保证异步时钟域之间传输时数据的完整性,一种通用的方法是使用异步先进先出(First Input First Out,FIFO)存储器。这种存储器的特征是利用双端口随机存储器RAM作为存储单元,读/写端各自的时钟域完全异步,如图1所示,图1为现有异步FIFO存储器的工作原理示意图。
写逻辑发出写使能信号,表示可以写入,写逻辑同时给出写地址,写入数据根据写地址将数据写入数据缓存。写逻辑在给出写地址时,写地址经过时钟穿越,到达读逻辑。同时,读逻辑给出读使能信号后,也给出读地址,外部命令根据该读地址将数据读出。该读地址经过时钟穿越,到达写逻辑,写逻辑对写地址和读地址进行比较后,判断是否可以继续写入数据,如果已写满,则发出满信号。读逻辑也对读地址和写地址进行比较后,判断是否还能够读出数据,如果不能读出,则发出空信号。读逻辑和写逻辑分别由读时钟和写时钟控制。这样,读和写的地址指针分别进行时钟域穿越,在写逻辑和读逻辑中分别对写地址和读地址的相对位置进行逻辑比较,从而保证了数据缓存的同时写入和读出不会造成数据丢失和重复。
如图2所示,图2为现有异步FIFO存储器的读/写地址的相对位置示意图。图2中的数据缓存容量为m*n,其中n为数据宽度,m为地址空间。这种设计方法中,读/写两端逻辑的地址指针范围完全相同,都是0到m-1,读和写数据的宽度也一致,都是n比特。
如果数据不仅需要穿越异步时钟域,而且读/写端数据的宽度需求不一致,例如写时钟域中的数据宽度为16bit,而读时钟域的读出宽度为8bit,则需要额外进行数据宽度的转换,如图3所示。图3为现有异步FIFO存储器的数据宽度转换示意图,要实现不等宽度数据的读/写需要添加宽度变换逻辑,宽度变换逻辑可以放在写时钟域进行宽度转换,也可以在读时钟域中进行宽度转换。也就是说,现有的异步FIFO不能实现直接读/写不等宽的数据。
发明内容
为了解决上述问题,本发明提供了一种实现不等宽数据传输的异步先进先出存储器,包括:
数据缓存单元,所述数据缓存单元中的数据基本单元为读出数据宽度和写入数据宽度的公倍数;
写地址计算模块,用于根据写入数据宽度计算当前写地址对应于所述数据缓存中的具体位置;
读地址计算模块,用于根据读出数据宽度计算当前读地址对应于所述数据缓存中的具体位置;
读/写判断模块,用于根据所述当前写地址对应于所述数据缓存中的具体位置和所述当前读地址对应于数据缓存中的具体位置确定读/写使能。
所述数据缓存单元为寄存器形式的数据缓存元件。
所述当前读地址对应于所述数据缓存中的具体位置=当前读地址×读出数据宽度,
所述当前写地址对应于所述数据缓存中的具体位置=当前写地址×写入数据宽度。
所述读出数据和写入数据的宽度为任意值。
所述数据基本单元为读出数据宽度和写入数据宽度的最小公倍数。
所述当前写地址对应于所述数据缓存中的具体位置减去所述当前读地址对应于所述数据缓存中的具体位置得到的值大于等于读出数据宽度,则从数据缓存单元将数据读出,
所述数据缓存单元的容量减去所述当前写地址对应于所述数据缓存中的具体位置再加上所述当前读地址对应于所述数据缓存中的具体位置得到的值大于等于写入数据宽度,则将数据写入所述数据缓存单元。
本发明还提供了一种异步先进先出存储器实现不等宽数据传输的方法,所述异步先进先出存储器包括数据缓存单元,所述数据缓存单元中的数据基本单元为读出数据宽度和写入数据宽度的公倍数,所述不等宽数据传输的方法包括:
根据写入数据宽度计算当前写地址对应于所述数据缓存中的具体位置的步骤;
根据读出数据宽度计算当前读地址对应于所述数据缓存中的具体位置的步骤;
根据所述当前写地址对应于所述数据缓存中的具体位置和所述当前读地址对应于数据缓存中的具体位置确定读使能和写使能的步骤。
所述当前读地址对应于所述数据缓存中的具体位置=当前读地址×读出数据宽度,
所述当前写地址对应于所述数据缓存中的具体位置=当前写地址×写入数据宽度。
所述数据基本单元为读出数据宽度和写入数据宽度的最小公倍数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京天碁科技有限公司,未经北京天碁科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810100926.2/2.html,转载请声明来源钻瓜专利网。