买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种基于DDRx存储器的大容量FIFO控制器_西安微电子技术研究所_201810622242.2 

申请/专利权人:西安微电子技术研究所

申请日:2018-06-15

公开(公告)日:2022-11-29

公开(公告)号:CN108897696B

主分类号:G06F12/02

分类号:G06F12/02

优先权:

专利状态码:有效-授权

法律状态:2022.11.29#授权;2018.12.21#实质审查的生效;2018.12.21#实质审查的生效 ;2018.11.27#公开

摘要:本发明公开了一种基于DDRx存储器的大容量FIFO控制器,将存储器封装一个或多个异步FIFO控制模块,且异步FIFO控制模块通过存储器接口时序控制模块与存储器连接;所述异步FIFO控制模块包括:写端口同步模块、读端口同步模块、写端口访问请求模块、读端口访问请求模块、读写指针管理模块和端口调度轮询模块。将存储器封装为异步FIFO控制器接口,在使用存储器作为先入先出数据缓存时,在保证具有存储器大容量空间、高带宽特性的同时,将应用接口简化。

主权项:1.一种基于DDRx存储器的大容量FIFO控制器,其特征在于,包括一个或多个异步FIFO控制模块,且异步FIFO控制模块通过端口调度轮询模块6和存储器接口时序控制模块7与存储器连接;所述异步FIFO控制模块包括:写端口同步模块1、读端口同步模块5、写端口访问请求模块3、读端口访问请求模块4和读写指针管理模块2;写端口同步模块1,将写入该FIFO控制器的数据通过端口调度轮询模块6同步到存储器接口时序控制模块7上;读端口同步模块5,将该FIFO控制器的数据从存储器接口时序控制模块7中通过端口调度轮询模块6读出并进行缓存;写端口访问请求模块3,获取写端口同步模块1需要写入到存储器中的数据的个数,并且向端口调度轮询模块6发起写访问请求;读端口访问请求模块4,获取读端口同步模块5能够读取存储器中的数据的个数,并且向端口调度轮询模块6发起读访问请求;端口调度轮询模块6,轮询各个异步FIFO控制模块对存储器的读或写访问请求;存储器接口时序控制模块7,响应异步FIFO控制模块的读或写操作请求,并且对DDRx存储区进行相应的访问。

全文数据:一种基于DDRx存储器的大容量FIF0控制器技术领域[0001]本发明属于FIFO控制器架构技术领域;具体涉及一种基于DDRx存储器的大容量FIFO控制器。背景技术[0002]目前,在大多数的电子产品项目设计实施过程中,FPGA加DDR2DDR3存储器的数据缓存架构得到越来越多的应用。虽然FPGA厂商大都提供了DDRx控制器的IP核,但是对于FPGA设计人员来说,还是需要做大量的FPGA数字逻辑电路设计工作来完成数据处理和DDRx控制器内部接口时序的功能,这不但增加了项目的设计难度还有可能影响项目进度。[0003]现有公开的技术提出的方案为FPGA连接两片DDRx芯片,使用乒乓操作的方式实现数据无间断传输,这种方法在很多情况会有缓存资源的浪费和逻辑设计难度的增加。[0004]FPGA供应商为其部分FPGA提供了基于FIFO接口的DDRx接口的控制器IP,但其控制时序较为复杂,且仅能应用与几款特定的FPGA芯片,不具有通用性发明内容[0005]本发明提供了一种基于DDRx存储器的大容量FIFO控制器;将存储器封装为异步FIFO控制器接口,在使用存储器作为先入先出数据缓存时,在保证DDRx存储器大容量、高带宽特性的同时,将应用接口简化。[0006]本发明的技术方案是:一种基于DDRx存储器的大容量FF0控制器,将存储器封装一个或多个异步FIFO控制模块,且异步FIFO控制模块通过端口调度轮询模块和存储器接口时序控制模块与存储器连接;所述异步FIFO控制模块包括:写端口同步模块、读端口同步模块、写端口访问请求模块、读端口访问请求模块和读写指针管理模块;写端口同步模块,将写入该HF0控制器的数据通过端口调度轮询模块同步到存储器接口时序控制模块上;读端口同步模块,将该FIFO控制器的数据从存储器接口时序控制模块中通过端口调度轮询模块读出并进行缓存;写端口访问请求模块,获取写端口同步模块需要写入到存储器中的数据的个数,并且向端口调度轮询模块发起写访问请求;读端口访问请求模块,获取读端口同步模块能够读取存储器中的数据的个数,并且向端口调度轮询模块发起读访问请求;端口调度轮询模块,轮询各个异步FIFO控制模块对存储器的读或写访问请求;存储器接口时序控制模块,响应异步FIFO控制模块的读或写操作请求,并且对DDRx存储区进行相应的访问。[0007]更进一步的,本发明的特点还在于:[0005]其中异步FIFO控制模块还包括读写指针管理模块,读写指针管理模块完成该FIF〇控制器的读或写的指针操作,并计算该FIR控制器中的数据的个数;在进行数据的读或写操作后,读写指针管理模块进行该FIFO控制器中的数据个数的更新以及对存储器的读写地址的更新。[0009]其中读端口同步模块中读出的数据为将读写指针管理模块读指针指向的数据。[0010]其中写端口访问请求模块中获取写端口同步模块需要写入到存储器中的数据的个数的过程是:获取需要传输的数据的个数n,当存储器的剩余空间能够存放n个数据时,则写端口请求模块输出的写请求的数据个数为n;当存储器的剩余空间能够存放m个数据,且mn,则写端口请求模块输出的写请求的数据个数为m。[0011]其中读端口访问请求模块获取存储器中能够写入到读端口同步模块中的数据的个数的具体过程是:获取需要传输的数据的个数x,当读端口同步模块中的剩余空间能够存放x个数据时,则读端口访问请求模块输出的读请求的数据个数为x;当读端口同步模块中的剩余空间能够存放y个数据时,且yx,则读端口访问请求模块输出的读请求的数据个数为y。[0012]其中存储器接口时序控制模块在相应读操作时,将存储器中的数据读出,并写入读端口同步模块中。[0013]其中存储器接口时序控制模块在相应写操作时,将写端口同步模块中的数据读出,并写入到存储器中。[0014]与现有技术相比,本发明的有益效果是:该Firo控制器与标准的异步FIFO接口相同,其接口通用、简单,使用方便;本发明采用突发传输和流水线设计技术,即采用存储器接口时序控制模块和端口调度轮询模块实现对多个异步FIFO控制模块进行轮询读写操作,提高了数据的传输效率,保证了存储器的读写访问高带宽;本发明的FIFO控制器配置为1个或多个异步FIFO控制模块,配置灵活,适用于不同带宽的使用场景。附图说明[0015]图1为本发明的结构示意图。_6]图中:1为写端口同步模块;2为读写指针管理模块;3为写端口访问请求模块;4为读端口访问请求模块;5为读端口同步模块;6为端口调度轮询模块;7为存储器接口时序棹制模块。具体实施方式[0017]下面结合附图和具体实施例对本发明的技术方案进一步说明。[0018]本发明提供了一种基于DDRx存储器的大容量FIFO控制器,包括一个或多个异步FIFO控制模块,异步FIFO控制模块通过端□调度轮询模块6和存储器接□时序控制模块存储器连接。如图1所示,该实施例中的FIFO控制器有两个异步FIFO控制模块。[0019]如图1所示,异步FIFO控制模块包括端口同步模块1、读端口同步模块5、写端口访问请求模块3、读端口访问请求模块4和读写指针管理模块2。[0020]其中,写端口同步模块1用于将该FIFO控制器写入的数据同步到存储器接口时序控制模块7下,并且写入到存储器中;该模块由一个异步FIFO控制模块实现,当写端口同步模块1需要写入的数据满足写入DDRx的条件时,端口调度轮询模块6将写端口同步模块的数据,读出并通过存储器接口时序控制模块7写入到存储器中。[0021]读端口同步模块5用于将该FIFO控制器需要读取的数据(即读指针指向的数据从存储器中读出并进行缓存;该模块由一个异步Firo控制模块实现,当用户需要从该FIF〇控制器中读出数据时,用户通过操作读端口同步模块5将数据读出。I[0022]写端口访问请求模块3通过判断写端口同步模块1中的数据个数和存储器中的数据个数以及写端口同步模块中的数据超时情况,计算出写端口同步模块1需要写入到存储器中的数据个数,并向端口调度轮询模块6发起DDRx写访问请求。[0023]其中写端口访问请求模块3中获取写端口同步模块1需要写入到存储器中的数据的1数的过程是:获取需要传输的数据的个数n,当存储器的剩余空间能够存放n个数据时,则写端口请求模块3输出的写请求的数据个数为n;当存储器的剩余空间能够存放111个数据,且m〈n,则写端口请求模块3输出的写请求的数据个数为m。[0024]读端口访问请求模块4通过判断读端口同步模块5中的数据个数和存储器中的数据个数以及存储器中的数据超时情况,计算出存储器中可以写入到读端口同步模块中5的数据个数,并向端口调度轮询模块6发起DDRx读访问请求。[0025]读端口访问请求模块4获取存储器中能够写入到读端口同步模块5中的数据的个数的具体过程是:获取需要传输的数据的个数X,当读端口同步模块5中的剩余空间能够存放x个数据时,则读端口访问请求模块4输出的读请求的数据个数为x;当读端口同步模块5中的剩余空间能够存放y个数据时,且yx,则读端口访问请求模块4输出的读请求的数据个数为y。[0026]端口调度轮询模块6为核心控制模块,通过状态机来轮询各个异步FIF〇控制模块对存储器的读或写访问请求,当某个异步FIFO控制模块有读写访问请求时,则跳转至相应的处理状态对请求进行响应,并控制存储器接口时序控制模块7将请求的数据从写端口同步模块1写入至存储器中该FIR控制器写指针指向的地址,或将该FIFO控制器读指针指向的地址数据读出并缓存至读端口同步模块5中。[0027]读写指针管理模块2负责实现该FIFO控制器的读写指针计算并实时计算该异步FIFO控制模块中的数据个数,当有数据从存储器中读出或有数据写入到存储器中时,进行DDRx的读写地址更新和数据个数更新。[0028]存储器接口时序控制模块7响应读写操作请求,完成存储器的读写访问。响应写数据操作请求时,将写端口同步模块1中的数据读出并写入到存储器中;响应读数据操作时,将存储器中的数据读出并写入到读端口同步模块5中。’[0029]优选的,本发明所述的存储器为DDR2存储器或DDR3存储器等,相应的存储器接口时序控制模块7为DDR2或DDR3接口时序控制模块,实现对DDR2或DDR3存储器实现相应的操作。[0030]如图1所不,本发明的FIFO控制器具有左右两个对称分布的异步FIF0控制模块,其工作方式为:同一个异步FIFO控制模块左侧或者右侧的异步FIF0控制模块的写端口同步模块1将其写入的数据同步到存储器接口时序控制模块7下,并且写端口同步模块1的数据达到写入存储器的条件时,端口调度轮询模块6将写端口同步模块1中的数据读出并写入到存储^中。同一个异步FIFO控制模块的读写指针管理模块2用于实现该异步FIF〇控制模块的读写指针计算并计^该异步FIFO控制模块中数据的个数,当有数据从存储器中读出或写入到存储器中时,进行存储器中读写地址的更新和其具有的数据个数的更新。[0031]同一个异步FIF0控制模块的写端口访问请求模块3计算出其写端口同步模块丄中需要与入到存储器中的数据的个数,具体的,当该异步FIFO控制模块的写端口同步模块丄的与端口连续有数据与入时,与端口访问请求模块3会一直等到该写端口同步模块丨中的数据个数达到设定值例如设定为64个数据时,发起写入存储器的请求,这种处理方式能够尽可能的使写入通道的数据实现突发传输,提高写通道总线利用率和传输带宽,当该写端口需要写入的数据不足设定值64个时,写端口访问请求模块3设定一个超时值如512ns,数据在写端口同步模块1中存储的时间超过512ns时,写端口访问请求模块3也会发起将数据写入存储器的写入请求,从而保证了同一个异步FIFO控制模块的写端口到读端口的数据延迟在一个确定的范围内。其中写入请求的数据个数的计算方式为:按照上述方式得到需要传输的数据个数n,当存储器的剩余空间能够存放n个数据时,则写端口访问请求模块3的写请求的数据个数为n;当存储器的剩余空间能够存储m个数据,且mn时,则写端口访问请求模块3的写请求的数据个数为tn。[OO32]同一个异步FIFO控制模块的读端口访问请求模块4计算出从存储器传输到读端口同步模块5中的数据个数,当存储器中的有效数据持续增加时,读端口访问请求模块4会一直等到该异步FIFO控制模块的DDRx缓存区中的数据达到设定值例如64个个数据时,然后发起读入存储器中数据的请求,这种处理方式能够尽可能的使读通道的数据实现突发传输,提高读通道总线利用率和传输带宽;当该异步FIFO控制模块的DDRx缓存区中的数据不足64个时,读端口访问请求模块4会有一个可设定的超时值如512ns,数据在DDRx缓存区中存储的时间超过512ns时,读端口访问请求模块4会发起读存储器中数据的操作申请,从而保证从该异步FIFO控制模块的写端口到读端口的数据延迟在一个确定范围内。读请求的数据个数的计算方法为:按照上述读请求产生的方式可以得到一个需要传输的数据个数X,当读端口同步模块5剩余空间能够存放x个数据时,则读端口访问请求模块4输出的读请求的数据个数为X;当读端口同步模块5剩余空间能够存放y个数据,且yx时,读端口访问请求模块4输出的读请求的数据个数为y。[0033]同一个异步FIFO控制模块的读端口同步模块5将该异步FIFO控制模块读指针指向的数据从存储器中读出并进行缓存,当用户需要从该异步FIFO控制模块中读出数据,则用户通过操作读端口将数据读出。[0034]端口调度轮询模块6为该FIFO控制器的核心控制模块,通过状态机来轮询两个异步FIR控制模块的四个端口(2个读端口和2个写端口)的对存储器的读写访问请求,当某个读或写端口有相应的访问请求并且请求传输的数据个数大于0时,则跳转至相应的处理状态对请求进行响应。该模块在进行轮询调度时采用的方法是平均逐个端口轮询,每个端口的优先级是相同的,在带宽允许的范围内,能够保证每个端口的数据都能得到有效传输处理。在进行数据传输过程中,对FIFO进行读写操作的同时使用流水线的方式产生存储器应用接口时序,使得数据传输效率的最大化。[0035]存储器接口时序控制模块7,该模块在端口调度轮询模块6响应读写操作请求时,实现数据的传输的时序转换。响应写数据操作请求时,将写端口同步模块1中的数据读出并写入到存储器中;响应读数据操作时,将存储器中的数据读出并写入到读端口同步模块5中。[0036]根据本发明提出的大容量Firo控制器,用VerilogHDL语言对控制器的逻辑设计进行描述,并应用到某双路视频采集卡产品设计中,并对控制器的功能和性能进行测试。测试结果表明本发明具有很好的可实施性,且性能满足预期。

权利要求:1.一种基于DDRx存储器的大容量FIFO控制器,其特征在于,将存储器封装一个或多个异步FIFO控制模块,且异步FIFO控制模块通过端口调度轮询模块⑹和存储器接口时序控制模块7与存储器连接;所述异步FIFO控制模块包括:写端口同步模块1、读端口同步模块⑸、写端口访问请求模块3、读端口访问请求模块⑷和读写指针管理模块2;写端口同步模块(1,将与入该FIFO控制器的数据通过端口调度轮询模块6同步到存储器接口时序控制模块7上;读端口同步模块5,将该FIR控制器的数据从存储器接口时序控制模块7中通过端口调度轮询模块6读出并进行缓存;写端口访问请求模块(3,获取写端口同步模块(D需要写入到存储器中的数据的个数,并且向端口调度轮询模块⑹发起写访问请求;读端口访问请求模块4,获取读端口同步模块¾能够读取存储器中的数据的个数,并且向端口调度轮询模块6发起读访问请求;’端口调度轮询模块⑹,轮询各个异步FIFO控制模块对存储器的读或写访问请求;存储器接口时序控制換块7,响应异步FIFO控制模块的读或写操作请求,并且对ddRx存储区进行相应的访问。2.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述异步FIFO控制模块还包括读写指针管理模块2,读写指针管理模块⑵完成该FIF0控制器的读或写的指针操作,并计算该FIFO控制器中的数据的个数;在进行数据的读或写操作后,读写指针管理模块(2进行该FIFO控制器中的数据个数的更新以及对存储器的读写地址的更新。3.根据权利要求2所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述读端口同步模块5中读出的数据为将读写指针管理模块2读指针指向的数据。4.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述写端口访问请求模块3中获取写端口同步模块(1需要写入到存储器中的数据的个数的过程是:获取需要传输的数据的个数n,当存储器的剩余空间能够存放〇个数据时,则写端口请求模块⑶输出的写请求的数据个数为n;当存储器的剩余空间能够存放„!个数据,且mn,则写端口请求模块⑶输出的写请求的数据个数为m。5.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述读端口访问请求模块4获取存储器中能够写入到读端口同步模块¾中的数据的个数的具体过程是:获取需要传输的数据的个数x,当读端口同步模块5中的剩余空间能够存放x个数据时,则读端口访问请求模块4输出的读请求的数据个数为x;当读端口同步模块5中的剩余空间能够存放y个数据时,且yx,则读端口访问请求模块⑷输出的读请求的数据个数为y。6.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述存储器接口时序控制模块7在相应读操作时,将存储器中的数据读出,并写入读端口同步模块⑸中。7.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述存储器接口时序控制模块7在相应写操作时,将写端口同步模块(1中的数据读出,并写入到存储器中。

百度查询: 西安微电子技术研究所 一种基于DDRx存储器的大容量FIFO控制器

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。