CN101373424B - 一种异步先进先出存储器的数据读写方法、装置及系统 - Google Patents
一种异步先进先出存储器的数据读写方法、装置及系统 Download PDFInfo
- Publication number
- CN101373424B CN101373424B CN2008102226524A CN200810222652A CN101373424B CN 101373424 B CN101373424 B CN 101373424B CN 2008102226524 A CN2008102226524 A CN 2008102226524A CN 200810222652 A CN200810222652 A CN 200810222652A CN 101373424 B CN101373424 B CN 101373424B
- Authority
- CN
- China
- Prior art keywords
- address
- gray code
- locking
- read
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000009191 jumping Effects 0.000 claims abstract description 17
- 230000001360 synchronised effect Effects 0.000 claims abstract description 11
- 229910002056 binary alloy Inorganic materials 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明提供了一种异步先进先出存储器的数据读写方法、装置及系统,所述异步FIFO系统包括先进先出存储器、写地址子系统和读地址子系统。其中,写地址子系统包括:写地址域格雷码编码器、写地址域地址跳转锁定单元、写地址域跨时钟同步寄存器、写地址域格雷码译码器、写地址单元;读地址子系统包括:读地址域格雷码编码器、读地址域地址跳转锁定单元、读地址域跨时钟同步寄存器、读地址域格雷码译码器、读地址单元。本发明通过在异步FIFO存储器地址从非2幂次边界跳转到初始地址时,对格雷码输出进行锁定以实现地址的稳定跳转,使得在异步FIFO地址深度不是2的幂次方时,可以通过格雷码实现异步FIFO,从而节省了系统的内存、硬件和功耗。
Description
技术领域
本发明涉及先进先出系统,特别是涉及一种异步先进先出存储器的数据读写方法、装置及系统。
背景技术
在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步先进先出(First In First Out,FIFO)为解决这个问题提供了一种简便、快捷的方法。
异步FIFO是一种先进先出电路,广泛用于实时数据传输接口中,用来存储、缓冲两个异步时钟之间的数据传输。它用一种时钟写入数据,而用另外一种时钟读出数据,在两个不同时钟系统之间传输实时数据。在应用中,由于读写时钟的不同步,常常会发生FIFO的上溢或下溢,为了避免这种情况,异步FIFO设置了与读时钟和写时钟同步的空标志和满标志以禁止读写操作。但是,空、满标志的产生是通过对读写地址的比较产生的,当地址变化时,由于多位地址各位变化时间不同,异步时钟对其进行采样的数值可能与地址变化的真正数值有差别,从而可能导致产生错误的空满标志,以至于FIFO操作发生错误。
为了解决地址变化引起的FIFO操作错误问题,异步FIFO使用格雷码将其发生错误的概率降低到一个可以接受的程度。格雷码是一种在相邻计数值之间只有一位发生变化的编码方式,而FIFO的地址是连续增加的,可以看出,若读写地址采用格雷码编码方式,就可以解决上面的问题。
同时,标准的格雷码是一种循环码,其对于n个位大多都具有完整的2n个不同的项,并且排序中的“第一”和“最后”项仍旧只差一位。格雷码的这种相邻位间转换时只有一位发生变化的特性,使其广泛应用于诸如异步FIFO地址编码、位移检测等情形。
然而,用于发现或产生格雷码的传统技术受限于具有2n个项的码,其中n是每个整数的比特数,即总的码子必须是2的幂次方个。因此,采用格雷码地址编码的异步FIFO也要求地址深度必须为2的幂次方个。这很不幸,因为存在一些应用,如:大部分时候,异步FIFO并不需要2n个地址的存储空间,只需要有限个非2n的格雷码地址的存储空间,在这些应用中,具有较少项数的格雷码就足够了。但是,2n格雷码的大多子集都是非循环的,例如,在从0到3,或者从0到7等2n个格雷码的情况下,当格雷码从3变到0,或7变到0,可以保证只有一个比特变化;但是对于非2n个格雷码的情况,如0到6,就不能保证6变到0时只变化一个比特位。后一种情况的存在,极大妨碍了格雷码的有用性。因为,对于那些不需要完整的2n个项的应用来说,这种不足浪费了硬件和功耗。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够节省上述情形下的异步FIFO系统的内存,有效降低系统的硬件和功耗。
发明内容
本发明所要解决的技术问题是提供一种异步先进先出(FIFO)存储器的数据读写方法与装置,用以节省异步FIFO系统的内存,有效降低系统的硬件和功耗。
本发明的另一个目的是提供一种异步FIFO系统,所述系统包括上述异步FIFO数据读、写装置,以实现本发明的具体应用。
为了解决上述问题,本发明实施例提供了一种异步先进先出存储器的数据写入方法,包括以下步骤:
获取写地址域的二进制写地址;
转换所述二进制写地址为格雷码写地址;
判断所述格雷码写地址是否到达所述异步先进先出存储器的非2幂次边界地址;
如果是,则将所述格雷码写地址跳转锁定后输出;如果否,则直接输出;
将写地址域时钟转换为读地址域时钟;
将所输出的格雷码写地址转换为读地址域时钟的二进制写地址;
如果所述异步先进先出存储器非满,则在所述写地址域的二进制写地址写入数据。
本发明实施例还提供了一种异步先进先出存储器的数据读取方法,包括以下步骤:
获取读地址域的二进制读地址;
转换所述二进制读地址为格雷码读地址;
判断所述格雷码读地址是否到达所述异步先进先出存储器的非2幂次边界地址;
如果是,则将所述格雷码读地址跳转锁定后输出;如果否,则直接输出;
将读地址域时钟转换为写地址域时钟;
将所输出的格雷码读地址转换为写地址域时钟的二进制读地址;
如果所述异步先进先出存储器非空,则读取所述读地址域的二进制读地址的数据。
相应的,本发明实施例还提供了一种异步先进先出存储器的数据写入装置,包括:
地址获取单元,用于获取写地址域的二进制写地址;
格雷码编码单元,用于转换所述二进制写地址为格雷码写地址;
边界判定单元,用于判断所述格雷码写地址是否到达所述异步先进先出的非2幂次边界地址;
地址跳转锁定单元,包括:锁定输出子单元,用于当判定结果为是时,将所述格雷码写地址跳转锁定后输出;直接输出子单元,用于当判定结果为否时,直接输出;
跨时钟同步单元,用于将写地址域时钟转换为读地址域时钟;
格雷码译码单元,用于将所输出的格雷码写地址转换为读地址域时钟的二进制写地址;
数据写入单元,用于当所述异步先进先出存储器非满时,在所述写地址域的二进制写地址写入数据。
相应的,本发明实施例还提供了一种异步先进先出存储器的数据读取装置,包括:
地址获取单元,用于获取读地址域的二进制读地址;
格雷码编码单元,用于转换所述二进制读地址为格雷码读地址;
边界判定单元,用于判断所述格雷码读地址是否到达所述异步先进先出存储器的非2幂次边界地址;
地址跳转锁定单元,包括:锁定输出子单元,用于当判定结果为是时,将所述格雷码读地址跳转锁定后输出;直接输出子单元,用于当判定结果为否时,直接输出;
跨时钟同步单元,用于将读地址域时钟转换为写地址域时钟;
格雷码译码单元,用于将所输出的格雷码读地址转换为写地址域时钟的二进制读地址;
数据读取单元,用于当所述异步先进先出存储器非空时,读取所述读地址域的二进制读地址的数据。
本发明实施例还提供了一种异步先进先出系统,包括:
用于存储数据的先进先出存储器、写地址子系统和读地址子系统;
其中:
写地址子系统,包括:
写地址域格雷码编码器,用于将写地址域的二进制写地址转换为格雷码写地址;
写地址域地址跳转锁定单元,用于在写地址到达所述异步先进先出存储器的非2幂次边界地址时,将所述格雷码写地址跳转锁定后输出;
写地址域跨时钟同步寄存器,用于将写地址域时钟转换为读地址域时钟;
写地址域格雷码译码器,用于将经过时钟域转换的格雷码写地址转换为读地址域的二进制写地址;
写地址单元,用于当异步先进先出存储器非满时,在所述写地址域的二进制写地址写入数据。
读地址子系统,包括:
读地址域格雷码编码器,用于将读地址域的二进制读地址转换为格雷码读地址;
读地址域地址跳转锁定单元,用于在读地址到达异步先进先出存储器的非2幂次边界地址时,将所述格雷码读地址跳转锁定后输出;
读地址域跨时钟同步寄存器,用于将读地址域时钟转换为写地址域时钟;
读地址域格雷码译码器,用于将经过时钟域转换的格雷码读地址转换为写地址域的二进制读地址;
读地址单元,用于当异步先进先出存储器非空时,读取所述二进制读地址的数据。
与现有技术相比,本发明具有以下优点:
本发明通过在异步FIFO存储器地址从非2幂次边界跳转到初始地址时,对格雷码输出进行锁定以实现地址的稳定跳转,使得在异步FIFO地址深度不是2的幂次方时,可以通过格雷码实现异步FIFO。与现有的异步FIFO地址深度必须为2的幂次方相比,本发明大大节省了系统的内存。例如:一个异步FIFO存储器只需要1030个地址的存储空间,现有技术的实现方法是定义异步FIFO的地址浓度为2的11次方,即2048个存储地址,其中有1018个存储地址的存储空间因系统不需使用而造成了极大的内存和硬件浪费。同时,存储空间和地址的减少,也减轻了系统的管理负担,减少了系统的功耗。
附图说明
图1是本发明的一种异步FIFO数据写入方法实施例1的步骤流程图;
图2是本发明的写入方法实施例1中格雷码写地址跳转锁定后输出的步骤流程图;
图3是本发明的一种异步FIFO数据读取方法实施例1的步骤流程图;
图4是本发明的读取方法实施例1中格雷码读地址跳转锁定后输出的步骤流程图;
图5是本发明的一种异步FIFO数据写入装置实施例的结构框图;
图6是本发明的一种异步FIFO数据写入装置实施例的锁定输出子单元的结构框图;
图7是本发明应用图5和图6所示的装置实施例进行异步FIFO数据写入的流程图;
图8是本发明的一种异步FIFO数据读取装置实施例的结构框图;
图9是本发明的一种异步FIFO数据读取装置实施例的锁定输出子单元的结构框图;
图10是本发明应用图8和图9所示的装置实施例进行异步FIFO数据读取的流程图;
图11是本发明的一种异步FIFO系统实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心构思之一在于,通过对异步FIFO的边界格雷码地址跳转进行处理,使得在FIFO地址深度不是2的幂次方时,也可以通过格雷码实现异步FIFO。本发明对于只需要有限个非2n的格雷码地址的存储空间的异步FIFO来说,减少了不必要的存储地址的存储空间的浪费,从而节省了系统内存,降低了系统的硬件和功耗。
参照图1,示出了本发明的一种异步FIFO数据写入方法实施例1的步骤流程图,具体可以包括以下步骤:
步骤101:获取异步先进先出写地址域的二进制写地址;
FIFO是英文First In First Out的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,数据只能顺序写入、顺序读出,其数据地址由内部读写指针自动加1完成。从时钟角度考虑,FIFO根据时钟的同步和异步分为同步FIFO和异步FIFO。随着大规模、超大规模集成电路的发展,异步FIFO越来越广泛地应用于两个异步时钟之间的数据传输。
异步FIFO由存储介质和控制逻辑构成,存储介质通常是一块双端口的RAM,具有两个独立的读写时钟,整个异步FIFO系统也分为两个完全独立的时钟域,即读时钟域和写时钟域。FIFO的控制逻辑执行所有的读写指针管理,产生各种状态标志。写时钟域部分由写地址产生逻辑产生写控制信号和写地址,读时钟域部分由读地址产生逻辑产生读控制信号和读地址。
在本实施例中,使用写地址单元管理写地址,其功能包括执行写地址产生逻辑的功能,即当外部有写请求时,由其获取异步FIFO的写地址域的二进制写地址。
步骤102:转换所述二进制写地址为格雷码写地址;
异步FIFO中由于读写时钟的不同步,往往会发生数据访问时写满还写的上溢问题和读空还读的下溢问题。异步FIFO通过对读写地址的比较产生空满标志来避免这一问题,但是,在读写地址变化的过程中,由于地址各位变化的不同步,在计算读写地址差值时,可能产生错误的结果,导致产生错误的空满标志。解决这一问题的有效方法是采用格雷码,格雷码是一种在相邻计数数值之间只有一位发生变化的编码方式,读写地址采用格雷码的编码方式,就可以解决上述错误。
本实施例中,使用格雷码编码器将二进制写地址转换为格雷码写地址。
步骤103:判断所述格雷码写地址是否达到异步先进先出存储器的非2幂次边界地址,如果是,则则执行步骤104;如果否,则执行步骤105;
异步FIFO的存储空间大小固定,因此其地址深度可以是一个固定的参数,本实施例以异步FIFO的非2幂次边界地址为参数,将所述格雷码写地址与此参数进行比较,以判定其是否达到为异步FIFO地址边界。
步骤104:将所述格雷码写地址跳转锁定后输出,执行步骤106;
如果所述格雷码地址与异步FIFO的非2幂次边界地址参数相等,则将所述格雷码写地址跳转锁定后输出,具体而言,可以包括以下子步骤:
子步骤A1:锁定格雷码输出;
子步骤A2:跳转非2幂次边界格雷码地址为初始格雷码地址;
子步骤A3:解除格雷码输出锁定;
子步骤A4:输出所述初始格雷码地址。
本实施例中,当异步FIFO到达地址边界时,则锁定所述格雷码的输出,以实现其从边界地址到初始地址的稳定跳转。待其跳转到初始格雷码地址后,再解除格雷码的输出锁定。其中,所述初始格雷码地址可以为0,解锁后输出0地址的格雷码。
步骤105:直接输出当前格雷码;
如果所述格雷码地址与异步FIFO的非2幂次边界地址参数不相等,则直接将其输出。
步骤106:将写地址域时钟转换为读地址域时钟;
异步FIFO处于两个不同的时钟域之间,写地址与读地址是两个不同时钟域的数据,在将它们比较前必须要经过同步。本实施例中,跨时钟同步寄存器将写地址域时钟转换为读地址域时钟,以进行后续的读写地址比较判断等操作。
步骤107:转换所输出的格雷码写地址为读地址域时钟的二进制写地址;
格雷码不是权重码,每一位码没有确定的大小,不能直接进行比较大小和算术运算,本实施例中使用格雷码译码器将其转换为二进制码,以对读写地址进行比较。
步骤108:如果异步先进先出存储器非满,则在所述写地址域的二进制写地址写入数据。
读地址域比较读写二进制地址,如果异步FIFO非满,即FIFO存储器中还有剩余存储空间可写,异步FIFO不产生满标志,则对外部写请求做出反馈,写电路应答外部写请求,并置写使能有效,进而在所述二进制写地址写入数据。
参照图2,示出了本发明的写入方法实施例1中格雷码地址跳转锁定后输出的详细步骤流程图。当异步FIFO到达地址边界时,锁定格雷码输出,具体可以包括以下步骤:
步骤201:锁定写地址域格雷码编码器;所述格雷码编码器发送锁定控制信号给写地址域的格雷码译码器。
步骤202:锁定写地址域格雷码译码器;
写地址域的格雷码译码器收到锁定控制信号后锁定,并发送锁定控制信号给读地址域的格雷码译码器。
步骤203:锁定读地址域格雷码译码器;
读地址域的格雷码译码器收到锁定控制信号锁定,以进行边界地址格雷码的跳转和接收。
步骤204:跳转非2幂次边界格雷码地址为初始格雷码地址;
例如,跳转非2幂次边界格雷码地址为0地址。
步骤205:解除写地址域格雷码编码器锁定;
读地址域格雷码译码器接收到跳转后的格雷码后,返回一个解锁控制信号给写地址域格雷码编码器,格雷码编码器收到解锁控制信号后清除锁定控制信号,解除锁定,并发送解锁控制信号给写地址域的格雷码译码器。
步骤206:解除写地址域格雷码译码器锁定;
写地址域格雷码译码器接受解锁控制信号后清除锁定控制信号,解锁,并发送解锁控制信号给读地址域的格雷码译码器。
步骤207:解除读地址域格雷码译码器锁定。
读地址域格雷码译码器接受解锁控制信号后将锁定控制信号清除,解除锁定,从而完成整个格雷码输出的锁定解除。
步骤208:输出所述初始格雷码地址。例如,输出0地址的格雷码。
参照图3,示出了本发明的一种异步FIFO数据读取方法实施例1的步骤流程图,具体可以包括以下步骤:
步骤301:获取异步先进先出读地址域的二进制读地址;
在异步FIFO中,读地址时钟域部分由读地址产生逻辑产生读控制信号和读地址。本实施例中,读地址单元用于管理读地址,其功能包括执行读地址产生逻辑的功能,即当有外部读请求时,由其获取异步FIFO的二进制读地址。
步骤302:转换所述二进制读地址为格雷码读地址;
步骤303:判断所述格雷码读地址是否到达异步先进先出存储器的非2幂次边界地址,如果是,则则执行步骤304;如果否,则执行步骤305;
将所述格雷码读地址与异步FIFO边界地址参数进行比较,以判定其是否达到异步FIFO地址边界。
步骤304:将所述格雷码读地址跳转锁定后输出,执行步骤306;
如果所述格雷码地址与异步FIFO的非2幂次边界地址参数相等,则将所述格雷码读地址跳转锁定后输出,具体而言,可以包括以下子步骤:
子步骤B1:锁定格雷码输出;
子步骤B2:跳转非2幂次边界格雷码地址为初始格雷码地址;
子步骤B3:解除格雷码输出锁定;
子步骤B4:输出所述初始格雷码地址。
其中,所述初始格雷码地址可以为0。
步骤305:直接输出当前格雷码;
步骤306:将读地址域时钟转换为写地址域时钟;
步骤307:转换所输出的格雷码读地址为写地址域时钟的二进制读地址;
步骤308:如果异步先进先出存储器非空,则读取所述二进制读地址的数据。
写地址域比较读写二进制地址,如果异步FIFO非空,即FIFO存储器中还有数据可读,异步FIFO不产生空标志,则对外部读请求做出反馈,读电路应答外部读请求,并置读使能有效,进而读取所述二进制地址的数据。
参照图4,示出了本发明的读取方法实施例1中格雷码读地址跳转锁定后输出的详细步骤流程图。当异步FIFO到达地址边界时,锁定格雷码输出,具体可以包括以下步骤:
步骤401:锁定读地址域格雷码编码器;
步骤402:锁定读地址域格雷码译码器;
步骤403:锁定写地址域格雷码译码器;
步骤404:跳转非2幂次边界格雷码地址为初始格雷码地址;
步骤405:解除读地址域格雷码编码器锁定;
步骤406:解除读地址域格雷码译码器锁定;
步骤407:解除写地址域格雷码译码器锁定。
步骤408:输出所述初始格雷码地址。例如,输出0地址的格雷码。
因异步FIFO数据读取方法与写入方法原理相同,所述方法步骤的区别仅限于不同的时钟域,因此,相关部分参照前述数据写入实施例即可。
此外,需要说明的是,本说明书中的每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参照图5,示出了本发明的一种异步FIFO数据写入装置实施例的结构框图,可以包括以下单元:
地址获取单元501,用于获取异步FIFO写地址域的二进制写地址;
格雷码编码单元502,用于转换所述二进制写地址为格雷码写地址;
边界判定单元503,用于判断所述格雷码写地址是否到达异步FIFO存储器的非2幂次边界地址;
地址跳转锁定单元504,包括:锁定输出子单元5041,用于当判定结果为是时,将所述格雷码写地址跳转锁定后输出;直接输出子单元5042,用于当判定结果为否时,直接输出;
跨时钟同步单元505,用于将写地址域时钟转换为读地址域时钟;
格雷码译码单元506,用于转换所输出的格雷码写地址为读地址域时钟的二进制写地址;
数据写入单元507,用于当异步先进先出存储器非满时,在所述二进制写地址写入数据。
优选的,参照图6,所述锁定输出子单元5041可以包括:
锁定模块601,用于锁定格雷码输出;
地址跳转模块602,用于跳转非2幂次边界格雷码地址为初始格雷码地址;
解锁模块603,用于解除格雷码输出锁定;
地址输出模块604,用于输出所述初始格雷码地址。
其中,所述锁定模块601可以进一步包括:
写编码器锁定子模块6011,用于锁定写地址域格雷码编码器;
写译码器锁定子模块6012,用于锁定写地址域格雷码译码器;
读译码器锁定子模块6013,用于锁定读地址域格雷码译码器。
优选的,所述解锁模块603可以进一步包括:
写编码器解锁子模块6031,用于解除写地址域格雷码编码器锁定;
写译码器解锁子模块6032,用于解除写地址域格雷码译码器锁定;
读译码器解锁子模块6033,用于解除读地址域格雷码译码器锁定。
参照图7,示出了应用图5和图6所示的装置实施例进行异步FIFO数据写入的流程图,可以包括以下步骤:
步骤701:地址获取单元获取异步FIFO的二进制写地址;
步骤702:格雷码编码单元将所述二进制写地址转换为格雷码写地址;
步骤703:边界判定单元判断所述格雷码写地址是否到达异步FIFO存储器的非2幂次边界地址,如果是,则交给地址跳转锁定单元的锁定输出子单元处理,执行步骤704;如果否,则交给地址跳转锁定单元的直接输出子单元处理,执行步骤712;
步骤704:锁定输出子单元的锁定模块的写编码器锁定子模块锁定写地址域格雷码编码器;
步骤705:锁定模块的写译码器锁定子模块锁定写地址域格雷码译码器;
步骤706:锁定模块的读译码器锁定子模块锁定读地址域的格雷码译码器;
步骤707:锁定输出子单元的地址跳转模块跳转非2幂次边界格雷码地址为初始格雷码地址;本实施例中,所述初始格雷码地址为0。
步骤708:锁定输出子单元的解锁模块的写编码器解锁子模块解除写地址域格雷码编码器锁定;
步骤709:解锁模块的写译码器解锁子模块解除写地址域格雷码译码器锁定;
步骤710:解锁模块的读译码器解锁子模块解除读地址域格雷码译码器锁定;
步骤711:锁定输出子单元的地址输出模块输出所述初始格雷码地址,即0地址,执行步骤713;
步骤712:直接输出子单元直接输出当前格雷码;
步骤713:跨时钟同步单元将写地址域时钟转换为读地址域时钟;
步骤714:格雷码译码单元转换所输出的格雷码写地址为二进制写地址;
步骤715:当异步FIFO存储器非满时,数据写入单元在所述二进制写地址写入数据。
由于图7所示的实施例都可以对应适用于前述的异步FIFO数据写入方法实施例中,所以描述较为简略,未详尽之处可以参见本说明书前面相应部分的描述。
参照图8,示出了本发明的一种异步FIFO数据读取装置实施例的结构框图,可以包括以下单元:
地址获取单元801,用于获取异步先进先出读地址域的二进制读地址;
格雷码编码单元802,用于转换所述二进制读地址为格雷码读地址;
边界判定单元803,用于判断所述格雷码读地址是否到达异步先进先出的非2幂次边界地址;
地址跳转锁定单元804,包括:锁定输出子单元8041,用于当判定结果为是时,将所述格雷码读地址跳转锁定后输出;直接输出子单元8042,用于当判定结果为否时,直接输出;
跨时钟同步单元805,用于将读地址域时钟转换为写地址域时钟;
格雷码译码单元806,用于转换所输出的格雷码读地址为写地址域时钟的二进制读地址;
数据读取单元807,用于当异步先进先出存储器非空时,读取所述二进制读地址的数据。
优选的,参照图9,所述锁定输出子单元8041可以包括:
锁定模块901,用于锁定格雷码输出;
地址跳转模块902,用于跳转非2幂次边界格雷码地址为初始格雷码地址;
解锁模块903,用于解除格雷码输出锁定;
地址输出模块904,用于输出所述初始格雷码地址。
其中,所述锁定模块901可以进一步包括:
读编码器锁定子模块9011,用于锁定读地址域格雷码编码器;
读译码器锁定子模块9012,用于锁定读地址域格雷码译码器;
写译码器锁定子模块9013,用于锁定写地址域格雷码译码器。
优选的,所述解锁模块903可以进一步包括:
读编码器解锁子模块9031,用于解除读地址域格雷码编码器锁定;
读译码器解锁子模块9032,用于解除读地址域格雷码译码器锁定;
写译码器解锁子模块9033,用于解除写地址域格雷码译码器锁定。
参照图10,示出了应用图8和图9所示的装置实施例进行异步FIFO数据读取的流程图,可以包括以下步骤:
步骤1001:地址获取单元获取异步FIFO的二进制读地址;
步骤1002:格雷码编码单元将所述二进制读地址转换为格雷码读地址;
步骤1003:边界判定单元判断所述格雷码读地址是否到达异步FIFO存储器的非2幂次边界地址,如果是,则交给地址跳转锁定单元的锁定输出子单元处理,执行步骤1004;如果否,则交给地址跳转锁定单元的直接输出子单元处理,执行步骤1012;
步骤1004:锁定输出子单元的锁定模块的读编码器锁定子模块锁定读地址域格雷码编码器;
步骤1005:锁定模块的读译码器锁定子模块锁定读地址域格雷码译码器;
步骤1006:锁定模块的写译码器锁定子模块锁定写地址域的格雷码译码器;
步骤1007:锁定输出子单元的地址跳转模块跳转非2幂次边界格雷码地址为初始格雷码地址;本实施例中,所述初始格雷码地址为0。
步骤1008:锁定输出子单元的解锁模块的读编码器解锁子模块解除读地址域格雷码编码器锁定;
步骤1009:解锁模块的读译码器解锁子模块解除读地址域格雷码译码器锁定;
步骤1010:解锁模块的写译码器解锁子模块解除写地址域格雷码译码器锁定;
步骤1011:锁定输出子单元的地址输出模块输出所述初始格雷码地址,即0地址,执行步骤1013;
步骤1012:直接输出子单元直接输出当前格雷码;
步骤1013:跨时钟同步单元将读地址域时钟转换为写地址域时钟;
步骤1014:格雷码译码单元转换所输出的格雷码读地址为二进制读地址;
步骤1015:当异步FIFO存储器非空时,数据读取单元读取所述二进制读地址的数据。
由于图10所示的实施例都可以对应适用于前述的异步FIFO数据读取方法实施例中,所以描述较为简略,未详尽之处可以参见本说明书前面相应部分的描述。
参照图11,示出了本发明的一种异步FIFO系统实施例的结构框图,包括:
先进先出存储器1102,用于存储数据;
写地址子系统1101,包括:
写地址域格雷码编码器11013,用于将写地址二进制码转化为格雷码;
写地址域地址跳转锁定单元11012,用于在写地址达到异步先进先出的非2幂次边界地址时锁定写地址域格雷码输出;
写地址域跨时钟同步寄存器11014,用于将写地址域时钟转换为读地址域时钟;
写地址域格雷码译码器11015,用于将经过时钟域转换的写地址格雷码转换成二进制码;
写地址单元11011,用于当异步FIFO存储器非满时,在所述写地址域的二进制写地址写入数据;
读地址子系统1103,包括:
读地址域格雷码编码器11033,用于将读地址二进制码转化为格雷码;
读地址域地址跳转锁定单元11032,用于在读地址达到异步先进先出的非2幂次边界地址时锁定读地址域格雷码输出;
读地址域跨时钟同步寄存器11034,用于将读地址域时钟转换为写地址域时钟;
读地址域格雷码译码器11035,用于将经过时钟域转换的读地址格雷码转换成二进制码;
读地址单元11031,用于当异步FIFO存储器非空时,读取所述二进制读地址的数据。
为使本领域技术人员更好地理解本发明,以下以地址深度为1030的非2幂次大小异步FIFO为例说明本发明的异步FIFO系统实施例。
异步FIFO广泛地应用于外设和芯片内部总路线之间的数据传输等方面,如摄像模块与芯片内部的传输、USB与内部总线的传输等。数据先写入后读出,异步FIFO空/满标志产生逻辑不停比较读写地址,以便实时产生空/满标志,从而进行FIFO的控制。在本实施例中,读/写地址单元负责管理读/写地址,其功能除读/写数据外,还执行异步FIFO中读/写地址产生逻辑的功能。当异步FIFO非满,即还有空闲存储空间时,写地址子系统响应外部写请求,由写地址单元获取二进制写地址;格雷码编码器将二进制写地址转换为格雷码写地址,并由地址跳转锁定单元判断是否到达异步FIFO的非2幂次边界地址1030,如果还没有到达,如地址1000,则直接交给跨时钟同步寄存器处理;如果地址为1030,则由地址跳转锁定单元将地址锁定跳转为0,之后交给跨时钟同步寄存器;跨时钟同步寄存器将写地址域时钟转换为读地址域时钟;格雷码译码器将已转换为读地址域时钟的非地址边界地址1000或0地址格雷码转换为二进制码,并交给读地址子系统进行读写地址比较;若异步FIFO非满,则访问FIFO存储器,在地址1000或0处写入数据;异步FIFO写地址顺序加1。
读地址子系统工作原理与写地址子系统相同,当异步FIFO非空时,访问FIFO存储器读取相关数据。
由于图11所示的实施例都可以对应适用于前述的实施例中,所以描述较为简略,未详尽之处可以参见本说明书前面相应部分的描述。
以上对本发明所提供的一种异步FIFO的实现方法、装置及系统进行了详细介绍,本文中应用了具体个例对本发明的核心构思及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种异步先进先出存储器的数据写入方法,其特征在于,包括以下步骤:
获取写地址域的二进制写地址;
转换所述二进制写地址为格雷码写地址;
判断所述格雷码写地址是否到达所述异步先进先出存储器的非2幂次边界地址;
如果是,则将所述格雷码写地址跳转锁定后输出;如果否,则直接输出;
将写地址域时钟转换为读地址域时钟;
将所输出的格雷码写地址转换为读地址域时钟的二进制写地址;
如果所述异步先进先出存储器非满,则在所述写地址域的二进制写地址写入数据,其中
所述格雷码写地址的跳转锁定后输出包括:锁定格雷码输出;跳转非2幂次边界格雷码地址为初始格雷码地址;解除格雷码输出锁定;输出所述初始格雷码地址。
2.根据权利要求1所述的方法,其特征在于,所述锁定格雷码输出包括以下步骤:
锁定写地址域格雷码编码器;
锁定写地址域格雷码译码器;
锁定读地址域格雷码译码器。
3.根据权利要求2所述的方法,其特征在于,所述解除格雷码输出锁定包括以下步骤:
解除写地址域格雷码编码器锁定;
解除写地址域格雷码译码器锁定;
解除读地址域格雷码译码器锁定。
4.一种异步先进先出存储器的数据读取方法,其特征在于,包括以下步骤:
获取读地址域的二进制读地址;
转换所述二进制读地址为格雷码读地址;
判断所述格雷码读地址是否到达所述异步先进先出存储器的非2幂次边界地址;
如果是,则将所述格雷码读地址跳转锁定后输出;如果否,则直接输出;
将读地址域时钟转换为写地址域时钟;
将所输出的格雷码读地址转换为写地址域时钟的二进制读地址;
如果所述异步先进先出存储器非空,则读取所述读地址域的二进制读地址的数据,其中
所述格雷码读地址的跳转锁定后输出包括:锁定格雷码输出;跳转非2幂次边界格雷码地址为初始格雷码地址;解除格雷码输出锁定;输出所述初始格雷码地址。
5.根据权利要求4所述的方法,其特征在于,所述锁定格雷码输出包括以下步骤:
锁定读地址域格雷码编码器;
锁定读地址域格雷码译码器;
锁定写地址域格雷码译码器。
6.根据权利要求5所述的方法,其特征在于,所述解除格雷码输出锁定包括以下步骤:
解除读地址域格雷码编码器锁定;
解除读地址域格雷码译码器锁定;
解除写地址域格雷码译码器锁定。
7.一种异步先进先出存储器的数据写入装置,其特征在于,包括:
地址获取单元,用于获取写地址域的二进制写地址;
格雷码编码单元,用于转换所述二进制写地址为格雷码写地址;
边界判定单元,用于判断所述格雷码写地址是否到达所述异步先进先出的非2幂次边界地址;
地址跳转锁定单元,包括:锁定输出子单元,用于当判定结果为是时,将所述格雷码写地址跳转锁定后输出;直接输出子单元,用于当判定结果为否时,直接输出;
跨时钟同步单元,用于将写地址域时钟转换为读地址域时钟;
格雷码译码单元,用于将所输出的格雷码写地址转换为读地址域时钟的二进制写地址;
数据写入单元,用于当所述异步先进先出存储器非满时,在所述写地址域的二进制写地址写入数据,其中
所述锁定输出子单元包括:锁定模块,用于锁定格雷码输出;地址跳转模块,用于跳转非2幂次边界格雷码地址为初始格雷码地址;解锁模块,用于解除格雷码输出锁定;地址输出模块,用于输出所述初始格雷码地址。
8.根据权利要求7所述的装置,其特征在于,所述锁定模块包括:
写编码器锁定子模块,用于锁定写地址域格雷码编码器;
写译码器锁定子模块,用于锁定写地址域格雷码译码器;
读译码器锁定子模块,用于锁定读地址域格雷码译码器。
9.根据权利要求8所述的装置,其特征在于,所述解锁模块包括:
写编码器解锁子模块,用于解除写地址域格雷码编码器锁定;
写译码器解锁子模块,用于解除写地址域格雷码译码器锁定;
读译码器解锁子模块,用于解除读地址域格雷码译码器锁定。
10.一种异步先进先出存储器的数据读取装置,其特征在于,包括:
地址获取单元,用于获取读地址域的二进制读地址;
格雷码编码单元,用于转换所述二进制读地址为格雷码读地址;
边界判定单元,用于判断所述格雷码读地址是否到达所述异步先进先出存储器的非2幂次边界地址;
地址跳转锁定单元,包括:锁定输出子单元,用于当判定结果为是时,将所述格雷码读地址跳转锁定后输出;直接输出子单元,用于当判定结果为否时,直接输出;
跨时钟同步单元,用于将读地址域时钟转换为写地址域时钟;
格雷码译码单元,用于将所输出的格雷码读地址转换为写地址域时钟的二进制读地址;
数据读取单元,用于当所述异步先进先出存储器非空时,读取所述读地址域的二进制读地址的数据,所述锁定输出子单元包括:锁定模块,用于锁定格雷码输出;地址跳转模块,用于跳转非2幂次边界格雷码地址为初始格雷码地址;解锁模块,用于解除格雷码输出锁定;地址输出模块,用于输出所述初始格雷码地址。
11.根据权利要求10所述的装置,其特征在于,所述锁定模块包括:
读编码器锁定子模块,用于锁定读地址域格雷码编码器;
读译码器锁定子模块,用于锁定读地址域格雷码译码器;
写译码器锁定子模块,用于锁定写地址域格雷码译码器。
12.根据权利要求11所述的装置,其特征在于,所述解锁模块包括:
读编码器解锁子模块,用于解除读地址域格雷码编码器锁定;
读译码器解锁子模块,用于解除读地址域格雷码译码器锁定;
写译码器解锁子模块,用于解除写地址域格雷码译码器锁定。
13.一种异步先进先出系统,其特征在于,包括用于存储数据的先进先出存储器、写地址子系统和读地址子系统;其中,
写地址子系统,包括:
写地址域格雷码编码器,用于将写地址域的二进制写地址转换为格雷码写地址;
写地址域地址跳转锁定单元,用于在写地址到达所述异步先进先出存储器的非2幂次边界地址时,将所述格雷码写地址跳转锁定后输出,其中所述写地址域锁定输出子单元包括:写地址域锁定模块,用于锁定格雷码输出;写地址域地址跳转模块,用于跳转非2幂次边界格雷码地址为初始格雷码地址;写地址域解锁模块,用于解除格雷码输出锁定;写地址域地址输出模块,用于输出所述初始格雷码地址;
写地址域跨时钟同步寄存器,用于将写地址域时钟转换为读地址域时钟;
写地址域格雷码译码器,用于将经过时钟域转换的格雷码写地址转换为读地址域的二进制写地址;
写地址单元,用于当异步先进先出存储器非满时,在所述写地址域的二进制写地址写入数据。
读地址子系统,包括:
读地址域格雷码编码器,用于将读地址域的二进制读地址转换为格雷码读地址;
读地址域地址跳转锁定单元,用于在读地址到达异步先进先出存储器的非2幂次边界地址时,将所述格雷码读地址跳转锁定后输出,所述读地址域锁定输出子单元包括:读地址域锁定模块,用于锁定格雷码输出;读地址域地址跳转模块,用于跳转非2幂次边界格雷码地址为初始格雷码地址;读地址域解锁模块,用于解除格雷码输出锁定;读地址域地址输出模块,用于输出所述初始格雷码地址;
读地址域跨时钟同步寄存器,用于将读地址域时钟转换为写地址域时钟;
读地址域格雷码译码器,用于将经过时钟域转换的格雷码读地址转换为写地址域的二进制读地址;
读地址单元,用于当异步先进先出存储器非空时,读取所述二进制读地址的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102226524A CN101373424B (zh) | 2008-09-19 | 2008-09-19 | 一种异步先进先出存储器的数据读写方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102226524A CN101373424B (zh) | 2008-09-19 | 2008-09-19 | 一种异步先进先出存储器的数据读写方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101373424A CN101373424A (zh) | 2009-02-25 |
CN101373424B true CN101373424B (zh) | 2011-10-12 |
Family
ID=40447606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102226524A Expired - Fee Related CN101373424B (zh) | 2008-09-19 | 2008-09-19 | 一种异步先进先出存储器的数据读写方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101373424B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495713A (zh) * | 2011-12-09 | 2012-06-13 | 盛科网络(苏州)有限公司 | 实现任意深度异步fifo的方法及系统 |
CN109388370B (zh) * | 2017-08-03 | 2023-06-27 | 深圳市中兴微电子技术有限公司 | 一种实现先入先出队列的方法及装置 |
US10476656B2 (en) * | 2018-04-13 | 2019-11-12 | DeGirum Corporation | System and method for asynchronous, multiple clock domain data streams coalescing and resynchronization |
CN110888622B (zh) * | 2018-09-11 | 2024-07-02 | 上海肇观电子科技有限公司 | 实现任意深度异步fifo的方法及装置、设备、介质 |
CN110059036B (zh) * | 2019-04-15 | 2022-04-26 | 西安微电子技术研究所 | 一种存储体内部多异步接口访问控制装置及方法 |
CN110427168B (zh) * | 2019-06-26 | 2023-03-07 | 天津芯海创科技有限公司 | 一种实现任意深度低传输延时的异步fifo的方法及装置 |
CN110704021B (zh) * | 2019-09-29 | 2022-03-15 | Oppo广东移动通信有限公司 | 异步先进先出数据处理方法、装置、电子装置及计算机可读存储介质 |
CN111061676B (zh) * | 2019-11-26 | 2021-11-30 | 中山大学 | 一种深度学习芯片的全异步存储系统及其生产方法、设备 |
CN111832048B (zh) * | 2020-07-09 | 2022-02-11 | 郑州信大捷安信息技术股份有限公司 | 一种基于双端口ram的数据包排序方法和系统 |
CN112084730B (zh) * | 2020-09-11 | 2024-04-05 | 昇显微电子(苏州)股份有限公司 | 一种改善Asynchronous FIFO支持非2的幂次深度方法 |
CN112199071B (zh) * | 2020-10-26 | 2024-02-09 | 中国兵器工业集团第二一四研究所苏州研发中心 | 一种地址可控异步缓存器及异步缓存方法 |
CN112486453B (zh) * | 2020-12-10 | 2023-12-08 | 上海金卓科技有限公司 | 一种异步先入先出寄存器以及芯片 |
CN116561027A (zh) * | 2022-01-27 | 2023-08-08 | 瑞昱半导体股份有限公司 | 异步先进先出内存的控制方法及对应的数据传输系统 |
CN118173141B (zh) * | 2024-05-14 | 2024-07-19 | 电子科技大学 | 一种基于格雷码计数器的低功耗非易失存储器电路 |
-
2008
- 2008-09-19 CN CN2008102226524A patent/CN101373424B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101373424A (zh) | 2009-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101373424B (zh) | 一种异步先进先出存储器的数据读写方法、装置及系统 | |
CN111367495B (zh) | 一种异步先入先出的数据缓存控制器 | |
US6263410B1 (en) | Apparatus and method for asynchronous dual port FIFO | |
EP2149083B1 (en) | Fifo buffer | |
US6553448B1 (en) | Method for unit distance encoding of asynchronous pointers for non-power-of-two sized buffers | |
US5596540A (en) | Serial to parallel and parallel to serial architecture for a RAM based FIFO memory | |
US6918002B2 (en) | Data processor and data processing method reduced in power consumption during memory access | |
JP2010160653A (ja) | リングバッファ回路及びその制御回路 | |
US6845414B2 (en) | Apparatus and method of asynchronous FIFO control | |
CN105117360A (zh) | 基于fpga的接口信号重映射方法 | |
US9183170B2 (en) | Asynchronous bridge | |
US6801143B2 (en) | Method and apparatus for generating gray code for any even count value to enable efficient pointer exchange mechanisms in asynchronous FIFO'S | |
KR20040023762A (ko) | 레지스터 파일 및 레지스터 파일의 설계 방법 | |
EP0484652B1 (en) | First-in-first-out buffer | |
CN110187918B (zh) | 二进制至格雷转换电路、相关的fifo存储器、集成电路和方法 | |
CN116226018A (zh) | 一种数据解码结构 | |
CN209765494U (zh) | 一种异步fifo装置 | |
CN115202612A (zh) | 基于异步fifo的超导单磁通量子跨时钟域通信方法及系统 | |
KR20190007227A (ko) | 버퍼 컨트롤러, 메모리 장치 및 집적회로 장치 | |
CN110427168B (zh) | 一种实现任意深度低传输延时的异步fifo的方法及装置 | |
CN101145117A (zh) | 检错处理方法及装置 | |
CN108462655B (zh) | Fc链路弹性缓冲区电路 | |
JP4217208B2 (ja) | Fifoメモリ | |
KR100294770B1 (ko) | 반도체기억장치 | |
CN113760795B (zh) | 一种异步fifo存储器读写控制方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111012 Termination date: 20120919 |