一种fifo存储器的数据处理方法

文档序号:6420480阅读:486来源:国知局
专利名称:一种fifo存储器的数据处理方法
技术领域
本发明涉及存储领域,特别涉及一种先进先出队列(First In First Out以下简称FIFO)存储器对数据的处理方法。
背景技术
FIFO是一种在电子领域得到广泛应用的存储器器件,通常用于数据的缓存和用于容纳异步信号的频率或相位的差异。通常的FIFO存储器由写控制模块、读控制模块和存储模块组成。FIFO的工作原理如下以独立的读写地址指针在读写脉冲的控制下顺序地从/向存储模块读/写数据,读写指针均从第一个地址单元开始,顺序读/写到最后一个地址单元,然后又回到第一个地址单元。通过对读指针和写指针的比较,给出存储模块的空与满的判断。
FIFO的溢出(Overrun)是由于读、写双方速度差异过大,在FIFO已经写满的情况下又试图写入新的数据造成的。对于FIFO的溢出现象,通常的处理方法是丢弃新的数据,并把溢出(Overrun)标志写到写地址对应的位置,写地址不递增。该方法的不足之处是这样可能造成数据损失并带来一定的性能浪费。这是因为FIFO发生溢出的原因是由于数据读取的一侧不能及时读走FIFO中的数据造成的,如果FIFO中的各条目的数据之间没有联系,现有的处理方法不存在什么问题,但是如果当FIFO中存放的数据是具有帧结构(如HDLC、以太网的数据)的数据,即若干个连续的数据代表一个数据帧或代表一个数据结构,在这种情况下,现有的对FIFO溢出的处理方法就会产生前述的问题可能造成数据损失并带来一定的性能浪费。图1是现有技术中FIFO发生溢出的过程示意图。
如图1所示,假设该FIFO有5个地址,在t0时刻之前,该5个地址中分别写入了数据E、A、B、C、D;ABCDE这些数据都是具有帧结构的数据,是数据帧的单个字节,数据帧的每个字节都有一个结束标志(Last)来标明该字节是否是这一帧数据的最后一个字节,同时也有一个溢出标志(OV)来标识该字节是否发生了溢出错误。在t0时刻读指针指向地址3,数据F写入地址1,写指针指向地址2,该FIFO差一个数据就被写满,此时各地址中数据的溢出标志位与结束标志位均为0,处于无效状态;在t1时刻,读指针指向地址3,数据G写入地址2,写指针指向地址3,FIFO被写满,如果数据G恰好是一个数据帧的最后一个数据字节,则此时数据G的结束标志位应当有效,置1;在t2时刻,读指针指向地址3,外部又有新的数据H申请写入FIFO,此时由于读指针与写指针均指向地址3,因此发生数据溢出现象,按照现有的处理方法,新的数据H将被抛弃,同时在地址3对应条目的数据的溢出标志位被置为有效,即地址3中的数据C的溢出标志位置1。在接下来的数据读取过程中,要读取的数据首先是从读指针指向的地址3开始的,此时,读控制模块将会发现数据C的溢出标志位有效,现有的处理方法会认为从这个字节开始到该帧数据结束(对于本例就是地址2对应的数据G)都是无效数据而丢弃。但事实上这一帧数据其实是完好无损的,在这种情况下,现有的处理方法就造成了效率的浪费。此时的处理方法要么是申请系统将所有相关联的逻辑复位,重新开始接收数据,但是这样就可能损失一帧或多帧正确的数据;要么就要记住这个溢出标志位的实际意义,但是这样做又会使得在可能发生多次溢出的情形下,数据读取的逻辑变得非常的复杂。

发明内容
本发明的目的就是为了解决现有技术中存在的可能造成数据损失并带来一定的性能浪费的问题,提出一种FIFO存储器的数据处理方法。
本发明的核心思想是为了实现对FIFO溢出(Overrun)的情况的处理,写控制模块在内部对FIFO的写数据和写地址进行缓存,缓存得到的结果将比实际的写地址和写数据滞后一拍,这样当发生溢出(Overrun)的时候,就可以用添加了溢出标志的缓存数据写入缓存的地址指向的位置,从而避免破坏当前读指针指向地址的数据。
一种FIFO存储器的数据处理方法,包括下列步骤(1)对每个写地址对应的数据存储区设置溢出标志位;(2)外部申请向FIFO中写入数据;(3)判断FIFO是否已经写满,如果未写满则缓存当前的写数据和写地址;(4)将当前的写数据写入当前的写地址中;(5)写地址加1;(6)重新执行步骤(2);
(7)如果FIFO已写满则将缓存的写数据附加溢出标志后写入缓存的写地址中;(8)重新执行步骤(2)。
所述的写数据是具有帧结构的数据。
本发明提出了一种通过对写地址和写数据进行缓存从而在溢出时用缓存数据代替当前数据的方法来实现对FIFO溢出的处理方法,尤其适用于用FIFO存储具有帧结构的数据的情况。通过使用本发明提出的方法,能够解决由于异步产生的错误,并能够有效的保护数据,最大限度提高了数据存储的效率和利用效率。


图1是现有技术中FIFO发生溢出的过程示意图。
图2是实现本发明的方法的FIFO写控制模块的结构示意图。
图3是本发明提出的方法的流程图。
图4是本发明的一个应用实施例的过程示意图。
具体实施例方式
下面结合附图和实施例对本发明作进一步的详细说明。
图1在背景技术中已经进行过说明。
图2是实现本发明的方法的FIFO写控制模块的结构示意图。如图2所示,为了实现本发明提出的方法,对写数据和写地址进行缓存,写控制模块增加了两个多路选择器和两个寄存器。其中寄存器1用于缓存写数据,寄存器2用于缓存写地址,多路选择器1通过FIFO已满的信号来触发选择输出当前写数据和寄存器1中缓存的写数据;多路选择器2通过FIFO已满的信号来触发选择输出当前的写地址和寄存器2中的缓存的写地址。由图2可见,通过写控制模块的这种结构可以实现本发明所提出的方法的中写地址和写数据的缓存以及选择输出。
图3是本发明提出的方法的流程图。如图3所示,本发明提出的方法包括下列步骤(1)对每个写地址对应的数据存储区设置溢出标志位;(2)外部申请向FIFO中写入数据;(3)判断FIFO是否已经写满,如果未写满则缓存当前的写数据和写地址;(4)将当前的写数据写入当前的写地址中;(5)写地址加1;(6)重新执行步骤(2);(7)如果FIFO已写满则将缓存的写数据附加溢出标志后写入缓存的写地址中;(8)重新执行步骤(2)。
图4是本发明的一个应用实施例的过程示意图。如图4所示,结合图1,该FIFO有5个地址,ABCDE这些数据都是具有帧结构的数据,是数据帧的单个字节,数据帧的每个字节都有一个结束标志(Last)来标明该字节是否是这一帧数据的最后一个字节,同时也有一个溢出标志(OV)来标识该字节是否发生了溢出错误。根据本发明提出的方法,在t0时刻之前,该FIFO没有发生溢出,也即未被写满,因此,该5个地址中分别写入了数据E、A、B、C、D,t0时刻之前缓存的写数据为E,缓存的写地址为0,写地址加1后变成1。根据本发明提出的方法在t0时刻读指针指向地址3,当前的写地址为1,此时外部申请将数据F写入FIFO,判断此时FIFO未被写满,因此,缓存的写数据为F,缓存的写地址为1,将数据F写入地址1,写地址加1变成2,该FIFO差一个数据就被写满,此时各地址中数据的溢出标志位与结束标志位均为0,处于无效状态。
在t1时刻读指针指向地址3;外部申请将数据G写入FIFO,判断此时FIFO未被写满,因此,缓存的写数据为G,缓存的写地址为2;将数据G写入地址2,写地址加1变成3。此时FIFO全部被写满。如果数据G恰好是一个数据帧的最后一个数据字节,则此时数据G的结束标志位应当有效,被置1。
在t2时刻,读指针指向地址3;外部又申请将新的数据H写入FIFO,当前的写地址为3,由于读指针与写指针均指向同一个地址3,此时FIFO已经被写满,发生数据溢出现象,根据本发明提出的方法,就会将缓存的写数据附加溢出标志后写入缓存的写地址中,此时缓存的写数据为G,缓存的写地址为2,因此将数据G附加溢出标志后写入地址2中,即将原地址2中的数据G的溢出标志位置1即可。在接下来的数据读取过程中,要读取的数据首先是从读指针指向的地址3开始的,使用本发明提出的方法后,读取到的数据就是正常数据了,直到读取了4个数据后读到地址2中的数据G,才会发现溢出标志和结束标志均有效,而此时,该数据帧的所有数据均已读出,在这种情况下,上层的处理逻辑就不必丢弃该帧数据了,从而提高了数据存储的效率和利用效率,同时也有效保护了数据。
权利要求
1.一种FIFO存储器的数据处理方法,其特征在于包括下列步骤(1)对每个写地址对应的数据存储区设置溢出标志位;(2)外部申请向FIFO中写入数据;(3)判断FIFO是否已经写满,如果未写满则缓存当前的写数据和写地址;(4)将当前的写数据写入当前的写地址中;(5)写地址加1;(6)重新执行步骤(2);(7)如果FIFO已写满则将缓存的写数据附加溢出标志后写入缓存的写地址中;(8)重新执行步骤(2)。
2.根据权利要求1所述的一种FIFO存储器的数据处理方法,其特征在于所述的写数据是具有帧结构的数据。
3.根据权利要求1所述的一种FIFO存储器的数据处理方法,其特征在于所述对写数据和写地址的缓存是通过寄存器实现的。
全文摘要
本发明公开了一种FIFO存储器的数据处理方法,其核心思想是写控制模块在内部对FIFO的写数据和写地址进行缓存,缓存得到的结果将比实际的写地址和写数据滞后一拍,这样当发生溢出的时候,就可以用添加了溢出标志的缓存数据写入缓存的地址指向的位置,从而避免破坏当前读指针指向地址的数据。本发明提出的方法尤其适用于用FIFO存储具有帧结构的数据的情况,能够解决由于异步产生的错误,并能够有效的保护数据,最大限度地提高了数据存储的效率和利用效率。
文档编号G06F12/00GK1545031SQ200310113548
公开日2004年11月10日 申请日期2003年11月17日 优先权日2003年11月17日
发明者何刚跃, 陈家锦, 文冠果 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1