一种复用性强的fifo控制模块及其管理内存的方法

文档序号:6464681阅读:252来源:国知局
专利名称:一种复用性强的fifo控制模块及其管理内存的方法
技术领域
本发明涉及计算机领域的存储器控制技术,具体涉及一种复用性强的 FIFO控制模块及其管理内存的方法。
背景技术
随着片上系统(soc)芯片的技术发展, 一颗芯片上集成的模块对存储器(包
括片内内存与片外存储器)的需求也越来越多,因此如何更加高效的使用内存
就显得相当的重要,先入先出(First In First Out,以下简称为FIFO)控制 模块在实际应用中有相当高的使用频率,其可以提供非常高效的内存使用方式。 一般来说,片上系统芯片中会有两个模块同时访问FIFO控制模块控制的内存, 一个进行只读操作, 一个进行只写操作,该内存访问方式主要有如下2种(1) 该内存是上述两个模块的专用内存,不能被其余^t块访问,其逻辑框图如图1 所示;(2)该内存是可以通过总线访问的共享内存,其逻辑框图如图2所示。
由于第一种方式的内存不能共享给其它模块,因此当FIFO控制模块不被使 用时,会对内存造成一定的浪费。对于第二种内存使用方式,目前一般的设计 方法是在总线仲裁模块中加入专门处理该FIFO控制的逻辑,通过该逻辑来控制 和管理内存的使用情况,但由于总线控制模块在不同的芯片设计中会发生很大 的变化,因此,这种处理方法针对于不同的芯片需要重新进行设计和验证,复 用能力低下,不能适应当今芯片技术的发展需求。

发明内容
本发明的目的在于针对现有技术的缺陷,提供一种具有很强复用性的FIFO 控制模块,以适应不同类型芯片的需求,同时,本发明还要提供这种FIFO控制 模块管理内存的方法。
本发明的技术方案如下 一种复用性强的FIF0控制^^莫块,包括如下組成结

—FIFO主控模块,用于接收总线仲裁模块发送来的内存读写信号,并根据 读写指针控制模块所给出的读写指针位置向总线仲裁模块发出读写请求;
—FIFO控制寄存器,用于外部设置FIFO所用内存的信息,并将这些信号传 递给读写指针控制模块和中断产生模块;
一读写指针控制模块,用于计算读写指针位置,并将读写指针位置传递给 FIFO主控模块;
--中断产生模块,用于冲艮据当前的读写指针位置和设置在FIFO控制寄存器 中的基本空/满阈值信息,产生中断;
其中,FIFO主控模块与读写指针控制模块连接,FIFO控制寄存器分别与读 写指针控制模块和中断产生模块连接。
如上所述的复用性强的FIF0控制模块,其中,FIFO主控模块通过内存接口 模块和总线接口模块与总线仲裁模块连接。内存接口模块的主要接口信号包括 读写地址、读写长度、读写使能、读/写动作。
如上所述的复用性强的FIF0控制模块,其中,FIFO控制寄存器设置的内存 信息包括FIFO起始地址、长度、基本空阈值、基本满阈值以及FIFO指针 复位信号。
如上所述的复用性强的FIF0控制模块,其中,中断产生^f莫块产生的中断类 型包括空、满、基本空、基本满中断。
一种复用性强的FIFO控制模块管理内存的方法,包括向所管理的内存中写 数据和从所管理的内存中读数据的操作,其中,针对一个模块通过一条总线发 起的写操作或读操作,总线仲裁模块经过仲裁以后,通过与FIFO控制模块之间 的内存访问接口来对FIFO控制模块发起一次内存写操作或读操作,FIF0控制模 块再通过它与总线仲裁模块之间的总线接口发起一次内存写操作或读操作,总 线仲裁模块再与其它n路总线一起经过仲裁以后向真正的内存区域中做一次写 操作或读操作。
进一步,在写数据的过程中,FIFO控制模块的动作流程为内存接口模块 收到写使能信号后将写地址、写数据、写长度发送到FIF0主控模块;FIF0主控 模块将写地址替换成当前写地址,发送写动作及写长度信号给读写指针控制模 块,并同时将写数据、写地址、写长度传递给总线接口模块;读写指针控制模
块收到FIFO主控模块发过来的写动作及写长度信号后,将写指针加写长度,当 指针位置到达FIFO内存的尾部时,自动绕回到FIFO内存的头部;总线接口模 块根据总线协议,产生写数据动作。
如上所述的复用性强的FIFO控制模块管理内存的方法,其中,在读数据的 过程中,总线仲裁模块向真正的内存区域中发出读控制信号后,内存将读数据 返回总线仲裁模块,总线仲裁模块再将这个数据通过与FIFO控制模块之间的总 线接口模块返回给FIFO控制模块,然后FIFO控制模块再通过它与总线仲裁模 块之间的内存接口模块将读数据返回给总线仲裁模块,从而总线仲裁模块结束 等待数据过程,完成一次读数据操作。
进一步,在读数据的过程中,FIFO控制模块的动作流程为内存接口模块 收到读使能信号后将读地址、读长度发送到FIFO主控模块;FIFO主控模块将读 地址替换成当前读地址,发送读动作及读长度信号给读写指针控制模块,并同 时将读地址、读长度传递给总线接口模块;读写指针控制模块收到FIF0主控模 块发过来的读动作及读长度信号后,将读指针减读长度,当指针位置到达FIFO 内存的头部时,自动绕回到FIFO内存的尾部;总线接口模块根据总线协议,产 生读数据动作,将读数据返回给FIFO主控模块;FIFO主控模块将读数据返回给 内存接口模块,内存接口模块将读数据返回给总线仲裁模块。
本发明的有益效果如下
(1 )该FIFO控制模块无需任何修改就可以很方便的集成到各个SOC系统 中去,使设计、验证的工作量大大降低,该系统只需要增加3个部分内容 今总线仲裁模块增加一个对FIFO的访问仲裁模块, 一般来说这一模块与其
他的内存仲裁基本一样,无需特殊处理; 今总线仲裁模块与FIFO控制模块之间增加一条总线接口;这条总线接口和
其他总线(比如总线1,总线2…)都一样; 今总线仲裁模块与FIFO控制模块之间增加一个内存访问接口。
(2 )由于该FIFO控制模块的数据流程是简单的顺序流动,因此该FIFO控 制模块可以很容易的用多级流水线来操作,可以达到很高的运行频率。


图1为现有技术中FIFO控制模块管理专用内存的逻辑框图。
图2为现有技术中FIFO控制模块管理共享内存的逻辑框图。
图3为本发明中FIFO控制模块管理内存的逻辑框图。
图4为本发明中FIFO控制模块的结构示意图。
图5为向FIFO控制模块所管理的内存中写翁:据的过程示意图。
图6为从FIFO控制模块所管理的内存中读数据的过程示意图。 图7为写数据的过程中FIFO控制模块的动作流程图。
8为读数据的过程中FIFO控制模块的动作流程图。
具体实施例方式
下面结合附图对本发明进行详细的描述。
本发明所提供的FIFO控制模块同时作为总线仲裁模块的访问主导方和被动 方,作为主导方时,FIFO控制模块和一般的总线主模块具有一样的总线接口和 总线访问方式;作为被动方时,FIFO控制模块模拟为一个内存模块。FIF0控制 模块管理内存的逻辑如图3所示,其通过总线接口和内存访问接口与总线仲裁 模块连接,总线仲裁模块与共享内存连接。
FIFO控制模块的组成如图4所示,包括如下结构
令FIFO控制寄存器
该模块主要负责外部设置FIFO所用内存的一些信息,比如FIFO起始地址, 长度,基本空阈值,基本满阈值以及FIFO指针复位信号;并将这些信号传递给 读写指针控制模块和中断产生模块。
令读写指针控制模块
该模块主要负责计算读写指针。当收到FIFO主控i^块发过来的读/写动作、 读/写长度信号后,将读写指针减/加读/写长度,在写操作中当指针位置到达 FIFO内存的尾部时,需要自动绕回到FIFO内存的头部,在读操作中当指针位置 到达FIF0内存的头部时,需要自动绕回到FIFO内存区域的尾部;其读写指针 起始位置根据FIFO控制寄存器中设置的FIFO起始地址、长度以及FIFO指针复 位信号来产生;并将读写指针位置传递给FIFO主控模块。
今中断产生才莫块
该模块主要负责根据当前的读写指针位置和设置在FIFO控制寄存器中的基 本空/满阈值信息,产生空、满、基本空、基本满中断。 今FIF0主控模块
FIFO主控模块是FIFO控制模块的核心模块,其主要功能是从内存访问接 口接收总线仲裁模块发过来的内存读写信号,并根据读写指针控制模块所给的 读写指针位置通过总线接口向总线仲裁模块发出读写请求;如果是读梯:作,当 总线仲裁模块返回读数据后,还需要通过内存访问接口返回读数据给总线仲裁 模块,并最终返回给读写发起模块。
今内存接口模块
FIFO内存接口模块,主要是给总线仲裁模块模拟一个内存接口,主要接口 信号有读写地址,读写长度,读写使能,读/写动作。当收到一个读/写动作 信号后,该模块需要将读写地址、写数据、读写长度传递给FIFO主控模块,并 且当该动作是读动作时,还需要将FIFO主控模块发过来的读数据传递给外部。
今总线接口模块
FIFO控制模块利用该接口将自身模拟为一个总线的发起方,并将真正的读 写操作发送给外部总线仲裁模块。
FIFO主控模块与读写指针控制模块连接,FIFO控制寄存器分别与读写指针 控制模块和中断产生模块连接;FIFO主控模块通过内存接口模块和总线接口模 块与总线仲裁模块连接。
向FIFO所管理的内存中写数据的过程如图5:
模块1通过总线1发起一个写操作,总线仲裁4莫块经过仲裁以后,通过与 FIFO控制模块之间的内存访问接口来对FIFO控制模块发起一次内存写操作, FIFO控制模块再通过它与总线仲裁模块之间的总线接口发起一次内存写操作, 总线仲裁模块再与其他n路总线一起经过仲裁以后往真正的内存区域中做一次
写操作。
在写数据的过程中,FIFO控制模块的动作流程如图7:
内存接口模块收到写使能信号后将写地址、写婆t据、写长度发送到FIFO主 控模块;FIFO主控模块将写地址替换成当前写地址,发送写动作及写长度信号 给读写指针控制模块,并同时将写数据、写地址、写长度传递给总线接口模块;
读写指针控制模块收到FIFO主控;漠块发过来的写动作及写长度信号后,将写指 针加写长度,当指针位置到达FIFO内存的尾部时,自动绕回到FIFO内存的头 部;总线接口模块根据总线协议,产生写数据动作。
读写指针控制模块的读写指针起始位置是根据FIFO控制寄存器中设置的 FIFO起始地址、长度以及FIFO指针复位信号产生的。
由于FIFO是一个设定大小的内存区域,如果读凄t据方的读速率小于写数据 方的写速率,该FIFO内存一定会被写满。FIFO内存被写满是一个错误状态,因 为写进来的数据已经要覆盖还没有被读出的数据。这种情况的发生是由于设计 人员错误的估计了读写速率差,此时,需要中断产生模块给出满中断以通知MCU 来进行处理和调整。
由于FIFO控制寄存器中设置了基本满阈值,并将其传递给了中断产生模块, 当达到此阈值时,中断产生模块产生基本满中断,此时,读模块收到基本满中 断,然后去把FIFO内存读空,以保证读写双方的操作能够继续进行下去。
向FIFO所管理的内存中读数据的过程如图6:
模块2通过总线2发起一个读操作,总线仲裁模块经过仲裁以后,通过与 FIFO控制模块之间的内存访问接口来对FIFO控制模块发起一次内存读操作(给 出读数据访问请求,然后等待读数据的返回),FIFO控制模块再通过它与总线仲 裁模块之间的总线接口发起一次内存读操作,总线仲裁模块再将这一路信号与 其他n路总线一起经过仲裁以后往真正的内存区域中多一次读操作(给出读控 制信号,包括片选,读地址等),经过若干时钟周期以后内存将读数据返回总线 仲裁模块,总线仲裁模块再将这个数据通过与FIFO控制模块之间的总线接口返 回给FIFO控制模块,然后FIFO控制模块再通过它与总线仲裁模块之间的内存 访问接口将读数据返回给总线仲裁模块,从而总线仲裁模块结束等待数据过程, 一次读数据操作完成。
在读数据的过程中,FIFO控制模块的动作流程如图8: 内存接口模块收到读使能信号后将读地址、读长度发送到FIFO主控模块; FIFO主控模块将读地址替换成当前读地址,发送读动作及读长度信号给读写指 针控制模块,并同时将读地址、读长度传递给总线接口模块;读写指针控制模 块收到FIFO主控模块发过来的读动作及读长度信号后,将读指针减读长度,当
指针位置到达FIFO内存的头部时,自动绕回到FIFO内存的尾部;总线接口模 块根据总线协议,产生读数据动作,将读数据返回给FIFO主控模块;FIFO主控 模块将读数据返回给内存接口模块,内存接口模块将读数据返回给总线仲裁模块。
一般来说,读数据方的读速率是要大于写数据方的写速率的,当FIFO内存 中的数据被读空,然后又发生了一次读操作时,需要中断产生模块给出空中断, 然后对读数据方进行控制,直到有数据到达才把新的数据给出。
由于FIFO控制寄存器中设置了基本空阔值,并将其传递给了中断产生模块, 当达到此阈值时,中断产生模块产生基本空中断,此时,写模块收到基本空中 断,然后去把FIF0内存写满,以保证读写双方的揭:作能够继续进行下去。
本发明所述的模块及方法并不仅限于具体实施方式
中所述的实施例,本领 域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技 术创新范围。
权利要求
1.一种复用性强的FIFO控制模块,包括如下组成结构--FIFO主控模块,用于接收总线仲裁模块发送来的内存读写信号,并根据读写指针控制模块所给出的读写指针位置向总线仲裁模块发出读写请求;--FIFO控制寄存器,用于外部设置FIFO所用内存的信息,并将这些信号传递给读写指针控制模块和中断产生模块;--读写指针控制模块,用于计算读写指针位置,并将读写指针位置传递给FIFO主控模块;--中断产生模块,用于根据当前的读写指针位置和设置在FIFO控制寄存器中的基本空/满阈值信息,产生中断;其中,FIFO主控模块与读写指针控制模块连接,FIFO控制寄存器分别与读写指针控制模块和中断产生模块连接。
2. 如权利要求1所述的复用性强的FIF0控制模块,其特征在于FIF0主 控模块通过内存接口模块和总线接口模块与总线仲裁模块连接。
3. 如权利要求2所述的复用性强的FIFO控制^t块,其特征在于所述的 内存接口模块的主要接口信号包括读写地址、读写长度、读写使能、读/写动 作。
4. 如权利要求1或2所述的复用性强的FIF0控制模块,其特征在于FIFO 控制寄存器设置的内存信息包括FIFO起始地址、长度、基本空阈值、基本满阈 值以及FIFO指针复位信号。
5. 如权利要求1或2所述的复用性强的FIFO控制模块,其特征在于中 断产生模块产生的中断类型包括空、满、基本空、基本满中断。
6. —种复用性强的FIFO控制模块管理内存的方法,包括向所管理的内存 中写数据和从所管理的内存中读数据的操作,其特征在于针对一个模块通过 一条总线发起的写操作或读操作,总线仲裁模块经过仲裁以后,通过与FIF0控 制模块之间的内存访问接口来对FIFO控制模块发起一次内存写操作或读操作, FIFO控制模块再通过它与总线仲裁模块之间的总线接口发起一次内存写操作或 读操作,总线仲裁模块再与其它n路总线一起经过仲裁以后向真正的内存区域 中做一次写操作或读操作。
7. 如权利要求6所述的复用性强的FIFO控制模块管理内存的方法,其特 征在于在写数据的过程中,FIFO控制模块的动作流程为内存接口模块收到 写使能信号后将写地址、写数据、写长度发送到FIF0主控模块;FIF0主控模块 将写地址替换成当前写地址,发送写动作及写长度信号给读写指针控制模块, 并同时将写数据、写地址、写长度传递给总线接口模块;读写指针控制模块收 到FIFO主控模块发过来的写动作及写长度信号后,将写指针加写长度,当指针 位置到达FIF0内存的尾部时,自动绕回到FIFO内存的头部;总线接口模块根 据总线协议,产生写数据动作。
8. 如权利要求6所述的复用性强的FIFO控制模块管理内存的方法,其特 征在于在读数据的过程中,总线仲裁模块向真正的内存区域中发出读控制信 号后,内存将读数据返回总线仲裁模块,总线仲裁模块再将这个数据通过与FIFO 控制模块之间的总线接口返回给FIFO控制模块,然后FIFO控制模块再通过它 与总线仲裁模块之间的内存访问接口将读数据返回给总线仲裁模块,从而总线 仲裁模块结束等待数据过程,完成一次读数据操作。
9. 如权利要求8所迷的复用性强的FIFO控制模块管理内存的方法,其特 征在于在读数据的过程中,FIFO控制模块的动作流程为内存接口模块收到 读使能信号后将读地址、读长度发送到FIFO主控模块;FIFO主控模块将读地址 替换成当前读地址,发送读动作及读长度信号给读写指针控制模块,并同时将 读地址、读长度传递给总线接口模块;读写指针控制模块收到FIFO主控模块发 过来的读动作及读长度信号后,将读指针减读长度,当指针位置到达FIFO内存 的头部时,自动绕回到FIFO内存的尾部;总线接口模块根据总线协议,产生读 数据动作,将读数据返回给FIFO主控模块;FIFO主控模块将读数据返回给内存 接口模块,内存接口模块将读数据返回给总线仲裁模块。
全文摘要
本发明涉及计算机领域的存储器控制技术,具体涉及一种复用性强的FIFO控制模块及其管理内存的方法。其组成结构包括FIFO主控模块、FIFO控制寄存器、读写指针控制模块、中断产生模块,FIFO主控模块与读写指针控制模块连接,FIFO控制寄存器分别与读写指针控制模块和中断产生模块连接。本发明所提供的FIFO控制模块无需任何修改就可以很方便的集成到各个SOC系统中去,使设计、验证的工作量大大降低,其可以很容易的用多级流水线来操作,能够达到很高的运行频率。
文档编号G06F9/38GK101344870SQ20081011797
公开日2009年1月14日 申请日期2008年8月19日 优先权日2008年8月19日
发明者李晓强 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1