一种虚拟先入先出内存的实现方法和控制装置的制作方法

文档序号:6563658阅读:159来源:国知局
专利名称:一种虚拟先入先出内存的实现方法和控制装置的制作方法
技术领域
本发明涉及内存控制技术领域,特别涉及一种虚拟先入先出内存的实现方法和控制装置。
背景技术
随着片上系统(System on Chip,SOC)芯片技术的发展,一颗芯片上集成的模块越来越多,这些模块包括中央处理器(CPU)、数字信号处理器(Digital Signal Processor,DSP)、专用硬件电路等,因此对内存的需求也越来越多。按照内存分布的位置划分,可分为片上内存和片外内存。由于片上内存是集成在芯片上的,为了控制成本,片上内存的容量一般不大。因此如何高效地利用片上内存成为越来越重要的问题。
现有技术中,常采用先入先出((First-In First-Out,FIFO)内存作为片上内存,并且FIFO内存作为一个专用内存给一个或者多个硬件模块使用,无法共享给其他模块。因此为某些硬件专门配置的FIFO内存,在该硬件不工作或者所用到的容量小于所配置的FIFO内存容量时,未被用到的FIFO内存容量就被浪费了,这就导致现有技术中对片上内存的利用效率不高。

发明内容
有鉴于此,本发明的目的在于,提出一种虚拟FIFO内存的实现方法,可以充分利用片上内存的存储空间。该方法包括如下步骤A、硬件模块的总线给出读/写请求和读/写地址,根据所述读/写请求和读/写地址生成虚拟FIFO指针;B、根据所述虚拟FIFO指针对片上内存执行读/写操作。
步骤A所述硬件模块的总线给出读/写请求和读/写地址之后,进一步包括判断是否使用虚拟FIFO内存对片上内存进行操作,若是则执行步骤A所述后续步骤,否则按照现有技术对片上内存进行读/写操作。
所述判断为判断所述硬件模块的读/写通道是否属于预设的虚拟FIFO内存的读/写通道,和/或判断所述读/写地址是否属于预设的虚拟FIFO内存的地址。
若所述步骤A硬件模块总线给出写请求和写地址,则所述步骤B包括B11、根据所述虚拟FIFO指针对片上内存执行写操作;B12、判断所述虚拟FIFO内存所存储的数据是否达到满阈值,若是则给出基本满中断信号,否则改变所述虚拟FIFO指针指向的地址并转至步骤B11。
所述改变所述虚拟FIFO指针指向的地址为对所述虚拟FIFO指针进行加1操作,若所述虚拟FIFO指针到达虚拟FIFO内存顶部则跳回所述虚拟FIFO内存底部。
若所述步骤A硬件模块总线给出读请求和读地址,则所述步骤B包括B21、根据所述虚拟FIFO指针对片上内存执行读操作;B22、判断所述虚拟FIFO内存所存储的数据是否达到空阈值,若是则给出基本空中断信号,否则改变所述虚拟FIFO指针指向的地址并转至步骤B21。
所述改变所述虚拟FIFO指针指向的地址为对所述虚拟FIFO指针进行加1操作,若所述虚拟FIFO指针到达虚拟FIFO内存顶部则跳回所述虚拟FIFO内存底部。
本发明的目的还在于,提出一种虚拟FIFO内存的控制装置,可以充分利用片上内存的存储空间。所述控制装置包括FIFO指针控制模块,用于控制虚拟FIFO内存的读写指针,并根据当前虚拟FIFO内存的状态,产生并向总线接口发送读写控制信号,和/或产生并向硬件模块总线发送中断信号;
总线接口,用于根据来自硬件模块的读/写请求和读/写地址,以及来自FIFO指针控制模块的读写控制信号对片上内存执行相应的读/写操作。
较佳地,该控制装置进一步包括FIFO控制寄存器,用于存储虚拟FIFO内存的设置信息;FIFO模式判定模块,用于接收来自硬件模块总线的地址信息,判断所接收的地址信息和/或所述硬件模块总线的通道信息是否符合FIFO控制寄存器中的设置信息,并根据判断结果向FIFO指针控制模块发送FIFO使能信号;则所述FIFO指针控制模块进一步包括使能信号判断单元,用于判断是否接收到FIFO使能信号,根据判断结果启动FIFO指针控制模块的所述操作。
较佳地,所述设置信息包括起始/结束地址、虚拟FIFO内存的大小、满阈值/空阈值、虚拟FIFO内存对应的总线通道、虚拟FIFO内存的行为控制或以上信息的任意组合。
该控制装置进一步包括地址复用器,用于接收硬件模块总线的读/写地址、FIFO指针控制模块的读/写指针以及FIFO模式判定模块的FIFO使能信号,根据所述FIFO使能信号对所述读/写地址和读/写指针进行选择,将选择的结果发送至所述总线接口。
从以上技术方案可以看出,在片上内存中动态配置虚拟FIFO内存的大小,通过虚拟FIFO内存进行读写操作可以大大节省片上内存的存储空间。并且,本发明方案可以通过通道复用,实现多个硬件共享片上内存,从而大大提高片上内存的使用效率。


图1为本发明实施例的虚拟FIFO内存控制装置的结构框图;图2为本发明实施例JPEG模块通过虚拟FIFO内存写片上内存的流程图;
图3为本发明实施例手机基带通过虚拟FIFO内存读片上内存的流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细阐述。
本发明实施例提出一种虚拟FIFO内存控制装置,该模块作为内存控制模块的子模块。若硬件模块直接访问内存,由硬件模块自己控制内存上所要访问的地址段(包括起始地址和结束地址),如果存在多个硬件模块,每个硬件模块所能访问的地址段必须各不相同;也就是说,需要为每个硬件模块分配单独的地址段。而通过虚拟FIFO内存控制装置来访问内存时,硬件模块只需知道内存映射到虚拟FIFO内存的地址段,通过该虚拟FIFO内存的地址进行访问,而内存的地址段对于不同的硬件模块来说是可以动态变化的。
对硬件模块本身来说,通过虚拟FIFO内存访问机制访问内存和直接访问内存并没有什么区别,因此可以认为虚拟FIFO内存访问机制对于硬件模块基本透明。
本发明实施例的虚拟FIFO内存控制装置如图1所示,包括如下部分FIFO模式判定模块101,用于接收来自硬件模块总线的地址信息,将所接收的地址信息与FIFO控制寄存器105中存储的FIFO内存的起始和结束地址进行比较,判断所接收的地址信息是否属于FIFO内存起始和结束地址所对应的地址段;并判断总线的读写通道是否为FIFO控制寄存器105中设置的虚拟FIFO内存的读写通道,若以上两个判断同时为真,则认为硬件模块采用虚拟FIFO内存访问机制,向地址复用模块102以及FIFO指针控制模块103发送FIFO使能信号。
所谓总线的读写通道指就是每一条总线对内存进行数据或信令交互的通路,多个硬件模块可以复用该总线的读写通道,即通过同一条通路与内存实现数据或信令的交互,这样就可以实现多个应用模块共享片上内存106。
地址复用模块102,用于接收来自硬件模块总线的地址信息以及来自FIFO指针控制模块103的读写指针,如果收到FIFO使能信号,说明收到的地址信息为虚拟FIFO内存的地址,将所接收的地址信息转换为片上内存106的实际地址并将所得片上内存106的实际地址发送至总线接口104;如果没有收到FIFO使能信号,说明收到的地址就是片上内存106的实际地址,则将所收到的地址信息直接发送至总线接口104。
FIFO指针控制模块103,用于根据总线接口的读写信号和/或来自硬件模块总线的写同步信号来控制读写指针,将所述读写指针发送至地址复用器102,并根据当前虚拟FIFO内存的状态,产生并向总线接口104发送各种读写控制信号,和/或产生并向硬件模块总线发送各种中断信号。例如,该FIFO通道所分配的片上内存为空时,产生写保持信号,使得片上片上内存106一直不响应总线上的读信号;FIFO内存保存足够数据以后,产生写无效信号,使得总线不再写数据保存到片上内存106中;在FIFO内存写操作时,判断虚拟FIFO内存中已写入数据的容量是否等于满阈值,若是则给出基本满中断;在FIFO内存读操作时,判断虚拟FIFO内存中已写入数据的容量是否等于空阈值,若是则给出基本空中断;在虚拟FIFO内存中已写入数据的容量分别等于最小值和最大值时,分别给出空中断和满中断;在存取足够数据后,给出帧完成中断。
其中,所谓写同步信号是在某些应用场合用于控制写入的信号,例如写同步信号可以看做一个JPEG图片的帧起始信号,在一个通道的FIFO模式启动后,如果设置了有写同步信号,那么该总线通道的数据只有在写同步信号到达后才会被保存下来。
FIFO指针控制模块103中还包括使能信号判定单元,用于判断是否收到来自FIFO模式判定模块的FIFO使能信号,若是,则FIFO指针控制模块103执行上述操作,否则不进行任何操作。
总线接口104,用于根据来自地址复用器102的地址、来自硬件模块总线的读写请求、来自FIFO指针控制模块的读写控制信号对片上内存106执行相应的读写操作。图1中为了简洁起见,只画出一个总线接口,实际上对于不同的硬件模块,有与其对应的总线接口。
FIFO控制寄存器105,用于存储以下设置信息FIFO内存的起始和结束地址,虚拟FIFO内存的大小、阈值,虚拟FIFO内存对应的总线通道,FIFO内存的行为控制。
其中,阈值包括满阈值和空阈值,满阈值小于等于虚拟FIFO内存的最大容量,用于表明虚拟FIFO内存处于接近于满的状态;空阈值大于等于零,用于表明虚拟FIFO内存处于接近于空的状态。虚拟FIFO内存对应的总线通道指该虚拟FIFO内存的读/写通道,分别用通道号表示;FIFO内存行为控制包括各种行为控制信号,例如写同步信号,读空时保持,写满时停止,帧个数,帧间隔,FIFO内存有效,FIFO内存指针复位等。对于不同的应用场合需要不同的行为控制信号(或其组合)。例如,拍照需要硬件能在保存一定数据以后自动停止下来,这就需要用到写同步信号。帧个数、帧间隔都是针对写同步信号而言,这里一帧指两个写同步信号之间的数据。读空时保持可以使得该FIFO内存支持更多的应用,不至于频繁产生错误中断。写满时停止主要是为了错误恢复使用。
下面以实现手机拍照功能的实现这一具体实施例,对本发明方法进行详细说明。
在这个具体例子中,手机的摄像头拍摄得到的影像数据,由手机主板上的硬件联合图像专家组(Joint Photographic Expert Group,JPEG)模块进行压缩,压缩后的数据存到片上内存中;再由手机基带(Baseband)读取片上内存中的压缩数据,将其存储到手机的内存,如手机的内存或SD卡中。对于片上内存来说,JPEG模块对其进行写操作,JPEG模块对片上内存的访问通道为写通道;手机基带对其进行读操作,手机基带对片上内存的访问通道为读通道。
需要在FIFO控制寄存器105中预先设置的值包括FIFO内存起始地址和结束地址、FIFO内存大小、满阈值和空阈值、需要保存的帧数,以及虚拟FIFO内存对应的读/写总线通道。本例中,写通道为JPEG模块总线对虚拟FIFO内存的访问通道,读通道为手机基带总线对虚拟FIFO内存的访问通道。
启动拍照模式以后,JPEG模块不停地通过虚拟FIFO内存控制装置向片上内存106写数据,写数据的具体过程如图2所示,包括如下步骤步骤201JPEG模块的总线上给出写数据请求以及写地址,本实施例中,所述写地址为片上内存106的虚拟地址。
步骤202FIFO模式判定模块101根据所述来自总线的写地址以及FIFO控制寄存器105的配置信息,判断是否采用虚拟FIFO内存模式写数据,若是则给出FIFO使能信号。
本步骤的具体做法为模式判定模块101判断是否满足如下两个条件条件a、总线给出的读/写地址符合设定的虚拟FIFO内存地址的范围;条件b、所述硬件模块的通道号为设定的虚拟FIFO内存的通道号;若两者均符合,则认为采用虚拟FIFO内存模式写数据,并给出FIFO使能信号;否则按照现有技术对片上内存进行读/写操作。
步骤203地址复用模块102判断FIFO使能信号是否为使能,若是,根据所述虚拟地址,将FIFO指针控制模块103的当前指针指向片上内存的实际地址输出到总线接口104;否则将总线给出的写地址直接输出至总线接口104。其中,FIFO指针控制模块103的当前指针指向虚拟FIFO内存中的空地址。
若选择总线地址,则不使用虚拟FIFO内存,直接根据总线地址访问片上内存106,这就相当于兼容了现有的片上内存访问技术;若选择FIFO指针控制模块103的当前指针,则使用本发明的通过虚拟FIFO内存访问片上内存的方法。本例中,地址复用模块102选择FIFO指针控制模块103的当前指针,给出所述当前指针对应的片上内存106的地址。
步骤204总线接口104根据JPEG模块总线上的写请求和地址复用模块102给出的片上内存地址,对片上内存进行写操作;步骤205FIFO指针控制模块103判断虚拟FIFO内存所存储的数据是否达到满阈值,若是,则执行步骤207;否则执行步骤206;步骤206FIFO指针控制模块103进行写指针加1操作,若写指针到达虚拟FIFO内存区域顶部则跳回FIFO内存区域底部,并跳转步骤204;步骤207FIFO指针控制模块103给出基本满中断。
上述步骤201至步骤207为JPEG模块向虚拟FIFO内存中写数据,直到将虚拟FIFO内存写满。FIFO指针控制模块103给出基本满中断说明虚拟FIFO内存已经写满,下面执行手机基带读取虚拟FIFO内存的过程,如图3所示,包括如下步骤步骤301手机基带收到基本满中断,则向总线接口模块104给出读数据请求以及向FIFO模式判定模块101给出读地址。
步骤302FIFO模式判定模块101根据读地址以及FIFO控制寄存器105的配置信息,给出FIFO使能信号;本步骤的具体做法与图2中的步骤202类似。
步骤303地址复用模块102根据FIFO使能信号在总线地址、FIFO指针控制模块103的当前指针中进行选择,给出将要读取数据的片上内存地址。
步骤304总线接口根据手机基带总线上的读请求和地址复用模块102给出的片上内存地址,读取片上内存的数据。
步骤305FIFO指针控制模块103判断虚拟FIFO内存所存储的数据是否到达空阈值,若是则执行步骤307;否则执行步骤306。
步骤306FIFO指针控制模块103进行读指针加1操作,并在到达虚拟FIFO内存区域顶部时跳回虚拟FIFO内存区域底部并返回步骤304。
步骤307FIFO指针控制模块103给出基本空中断并完成本次读操作。
步骤301至步骤307为手机基带从虚拟FIFO内存中读数据,直到将虚拟FIFO内存读空。步骤307之后,JPEG模块收到基本空中断则又可以从步骤201开始写数据。
本发明方案特别适用于对内存交替进行读写操作的应用场景中。在上面所举的实施例中,片上内存中设置一定地址范围的存储空间作为虚拟FIFO内存,JPEG模块先在虚拟FIFO内存中写入数据,当达到满阈值时发出基本满中断;这时JPEG模块停止写入,而手机基带读取虚拟FIFO内存中已写入的数据,由于读操作比写操作快得多,在手机基带读取数据的同时,JPEG模块还可以继续在虚拟FIFO内存中写入数据;当达到空阈值时发出基本空中断,这时手机基带不再读取数据,JPEG模块继续写入数据,直到达到满阈值时发出基本满中断并如此循环进行上述读写操作。
通过本发明方案,可以在片上内存中动态配置虚拟FIFO内存的大小,通过虚拟FIFO内存进行读写操作可以大大节省片上内存的存储空间;通过通道复用还可以实现多个硬件共享片上内存,从而大大提高片上内存的使用效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种虚拟先入先出FIFO内存的实现方法,其特征在于,该方法包括如下步骤A、硬件模块的总线给出读/写请求和读/写地址,根据所述读/写请求和读/写地址生成虚拟FIFO指针;B、根据所述虚拟FIFO指针对片上内存执行读/写操作。
2.根据权利要求1所述的方法,其特征在于,步骤A所述硬件模块的总线给出读/写请求和读/写地址之后,进一步包括判断是否使用虚拟FIFO内存对片上内存进行操作,若是则执行步骤A所述后续步骤,否则按照现有技术对片上内存进行读/写操作。
3.根据权利要求2所述的方法,其特征在于,所述判断为判断所述硬件模块的读/写通道是否属于预设的虚拟FIFO内存的读/写通道,和/或判断所述读/写地址是否属于预设的虚拟FIFO内存的地址。
4.根据权利要求1所述的方法,其特征在于,若所述步骤A硬件模块总线给出写请求和写地址,则所述步骤B包括B11、根据所述虚拟FIFO指针对片上内存执行写操作;B12、判断所述虚拟FIFO内存所存储的数据是否达到满阈值,若是则给出基本满中断信号,否则改变所述虚拟FIFO指针指向的地址并转至步骤B11。
5.根据权利要求4所述的方法,其特征在于,所述改变所述虚拟FIFO指针指向的地址为对所述虚拟FIFO指针进行加1操作,若所述虚拟FIFO指针到达虚拟FIFO内存顶部则跳回所述虚拟FIFO内存底部。
6.根据权利要求1所述的方法,其特征在于,若所述步骤A硬件模块总线给出读请求和读地址,则所述步骤B包括B21、根据所述虚拟FIFO指针对片上内存执行读操作;B22、判断所述虚拟FIFO内存所存储的数据是否达到空阈值,若是则给出基本空中断信号,否则改变所述虚拟FIFO指针指向的地址并转至步骤B21。
7.根据权利要求6所述的方法,其特征在于,所述改变所述虚拟FIFO指针指向的地址为对所述虚拟FIFO指针进行加1操作,若所述虚拟FIFO指针到达虚拟FIFO内存顶部则跳回所述虚拟FIFO内存底部。
8.一种虚拟FIFO内存控制装置,其特征在于,包括FIFO指针控制模块,用于控制虚拟FIFO内存的读写指针,并根据当前虚拟FIFO内存的状态,产生并向总线接口发送读写控制信号,和/或产生并向硬件模块总线发送中断信号;总线接口,用于根据来自硬件模块的读/写请求和读/写地址,以及来自FIFO指针控制模块的读写控制信号对片上内存执行相应的读/写操作。
9.根据权利要求8所述的控制装置,其特征在于,该控制装置进一步包括FIFO控制寄存器,用于存储虚拟FIFO内存的设置信息;FIFO模式判定模块,用于接收来自硬件模块总线的地址信息,判断所接收的地址信息和/或所述硬件模块总线的通道信息是否符合FIFO控制寄存器中的设置信息,并根据判断结果向FIFO指针控制模块发送FIFO使能信号;则所述FIFO指针控制模块进一步包括使能信号判断单元,用于判断是否接收到FIFO使能信号,根据判断结果启动FIFO指针控制模块的所述操作。
10.根据权利要求9所述的控制装置,其特征在于,所述设置信息包括起始/结束地址、虚拟FIFO内存的大小、满阈值/空阈值、虚拟FIFO内存对应的总线通道、虚拟FIFO内存的行为控制或以上信息的任意组合。
11.根据权利要求9所述的控制装置,其特征在于,该控制装置进一步包括地址复用器,用于接收硬件模块总线的读/写地址、FIFO指针控制模块的读/写指针以及FIFO模式判定模块的FIFO使能信号,根据所述FIFO使能信号对所述读/写地址和读/写指针进行选择,将选择的结果发送至所述总线接口。
全文摘要
本发明公开了一种虚拟先入先出(FIFO)内存的实现方法,包括如下步骤A.硬件模块的总线给出读/写请求和读/写地址,根据所述读/写请求和读/写地址生成虚拟FIFO指针;B.根据所述虚拟FIFO指针对片上内存执行读/写操作。本发明还公开了一种虚拟FIFO内存的控制装置。本发明方案可以实现通过虚拟FIFO内存对片上内存进行读写操作,从而大大节省片上内存的存储空间。
文档编号G06F3/06GK1949163SQ20061016085
公开日2007年4月18日 申请日期2006年11月30日 优先权日2006年11月30日
发明者李晓强 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1