CN108897696B - 一种基于DDRx存储器的大容量FIFO控制器 - Google Patents
一种基于DDRx存储器的大容量FIFO控制器 Download PDFInfo
- Publication number
- CN108897696B CN108897696B CN201810622242.2A CN201810622242A CN108897696B CN 108897696 B CN108897696 B CN 108897696B CN 201810622242 A CN201810622242 A CN 201810622242A CN 108897696 B CN108897696 B CN 108897696B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- read
- memory
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于DDRx存储器的大容量FIFO控制器,将存储器封装一个或多个异步FIFO控制模块,且异步FIFO控制模块通过存储器接口时序控制模块与存储器连接;所述异步FIFO控制模块包括:写端口同步模块、读端口同步模块、写端口访问请求模块、读端口访问请求模块、读写指针管理模块和端口调度轮询模块。将存储器封装为异步FIFO控制器接口,在使用存储器作为先入先出数据缓存时,在保证具有存储器大容量空间、高带宽特性的同时,将应用接口简化。
Description
技术领域
本发明属于FIFO控制器架构技术领域;具体涉及一种基于DDRx存储器的大容量FIFO 控制器。
背景技术
目前,在大多数的电子产品项目设计实施过程中,FPGA加DDR2/DDR3存储器的数据缓存架构得到越来越多的应用。虽然FPGA厂商大都提供了DDRx控制器的IP核,但是对于FPGA 设计人员来说,还是需要做大量的FPGA数字逻辑电路设计工作来完成数据处理和DDRx控制器内部接口时序的功能,这不但增加了项目的设计难度还有可能影响项目进度。
现有公开的技术提出的方案为FPGA连接两片DDRx芯片,使用乒乓操作的方式实现数据无间断传输,这种方法在很多情况会有缓存资源的浪费和逻辑设计难度的增加。
FPGA供应商为其部分FPGA提供了基于FIFO接口的DDRx接口的控制器IP,但其控制时序较为复杂,且仅能应用与几款特定的FPGA芯片,不具有通用性。
发明内容
本发明提供了一种基于DDRx存储器的大容量FIFO控制器;将存储器封装为异步FIFO 控制器接口,在使用存储器作为先入先出数据缓存时,在保证DDRx存储器大容量、高带宽特性的同时,将应用接口简化。
本发明的技术方案是:一种基于DDRx存储器的大容量FIFO控制器,包括一个或多个异步FIFO控制模块,且异步FIFO控制模块通过端口调度轮询模块和存储器接口时序控制模块与存储器连接;所述异步FIFO控制模块包括:写端口同步模块、读端口同步模块、写端口访问请求模块、读端口访问请求模块和读写指针管理模块;写端口同步模块,将写入该FIFO控制器的数据通过端口调度轮询模块同步到存储器接口时序控制模块上;读端口同步模块,将该 FIFO控制器的数据从存储器接口时序控制模块中通过端口调度轮询模块读出并进行缓存;写端口访问请求模块,获取写端口同步模块需要写入到存储器中的数据的个数,并且向端口调度轮询模块发起写访问请求;读端口访问请求模块,获取读端口同步模块能够读取存储器中的数据的个数,并且向端口调度轮询模块发起读访问请求;端口调度轮询模块,轮询各个异步FIFO 控制模块对存储器的读或写访问请求;存储器接口时序控制模块,响应异步FIFO控制模块的读或写操作请求,并且对DDRx存储区进行相应的访问。
更进一步的,本发明的特点还在于:
其中异步FIFO控制模块还包括读写指针管理模块,读写指针管理模块完成该FIFO控制器的读或写的指针操作,并计算该FIFO控制器中的数据的个数;在进行数据的读或写操作后,读写指针管理模块进行该FIFO控制器中的数据个数的更新以及对存储器的读写地址的更新。
其中读端口同步模块中读出的数据为将读写指针管理模块读指针指向的数据。
其中写端口访问请求模块中获取写端口同步模块需要写入到存储器中的数据的个数的过程是:获取需要传输的数据的个数n,当存储器的剩余空间能够存放n个数据时,则写端口访问请求模块输出的写请求的数据个数为n;当存储器的剩余空间能够存放m个数据,且m<n,则写端口访问请求模块输出的写请求的数据个数为m。
其中读端口访问请求模块获取存储器中能够写入到读端口同步模块中的数据的个数的具体过程是:获取需要传输的数据的个数x,当读端口同步模块中的剩余空间能够存放x个数据时,则读端口访问请求模块输出的读请求的数据个数为x;当读端口同步模块中的剩余空间能够存放y个数据时,且y<x,则读端口访问请求模块输出的读请求的数据个数为y。
其中存储器接口时序控制模块在相应读操作时,将存储器中的数据读出,并写入读端口同步模块中。
其中存储器接口时序控制模块在相应写操作时,将写端口同步模块中的数据读出,并写入到存储器中。
与现有技术相比,本发明的有益效果是:该FIFO控制器与标准的异步FIFO接口相同,其接口通用、简单,使用方便;本发明采用突发传输和流水线设计技术,即采用存储器接口时序控制模块和端口调度轮询模块实现对多个异步FIFO控制模块进行轮询读写操作,提高了数据的传输效率,保证了存储器的读写访问高带宽;本发明的FIFO控制器配置为1个或多个异步FIFO控制模块,配置灵活,适用于不同带宽的使用场景。
附图说明
图1为本发明的结构示意图。
图中:1为写端口同步模块;2为读写指针管理模块;3为写端口访问请求模块;4为读端口访问请求模块;5为读端口同步模块;6为端口调度轮询模块;7为存储器接口时序控制模块。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进一步说明。
本发明提供了一种基于DDRx存储器的大容量FIFO控制器,包括一个或多个异步FIFO 控制模块,异步FIFO控制模块通过端口调度轮询模块6和存储器接口时序控制模块7与存储器连接。如图1所示,该实施例中的FIFO控制器有两个异步FIFO控制模块。
如图1所示,异步FIFO控制模块包括端口同步模块1、读端口同步模块5、写端口访问请求模块3、读端口访问请求模块4和读写指针管理模块2。
其中,写端口同步模块1用于将该FIFO控制器写入的数据同步到存储器接口时序控制模块7下,并且写入到存储器中;该模块由一个异步FIFO控制模块实现,当写端口同步模块1 需要写入的数据满足写入DDRx的条件时,端口调度轮询模块6将写端口同步模块1中的数据,读出并通过存储器接口时序控制模块7写入到存储器中。
读端口同步模块5用于将该FIFO控制器需要读取的数据(即读指针指向的数据)从存储器中读出并进行缓存;该模块由一个异步FIFO控制模块实现,当用户需要从该FIFO控制器中读出数据时,用户通过操作读端口同步模块5将数据读出。
写端口访问请求模块3通过判断写端口同步模块1中的数据个数和存储器中的数据个数以及写端口同步模块中的数据超时情况,计算出写端口同步模块1需要写入到存储器中的数据个数,并向端口调度轮询模块6发起DDRx写访问请求。
其中写端口访问请求模块3中获取写端口同步模块1需要写入到存储器中的数据的个数的过程是:获取需要传输的数据的个数n,当存储器的剩余空间能够存放n个数据时,则写端口访问请求模块3输出的写请求的数据个数为n;当存储器的剩余空间能够存放m个数据,且 m<n,则写端口访问请求模块3输出的写请求的数据个数为m。
读端口访问请求模块4通过判断读端口同步模块5中的数据个数和存储器中的数据个数以及存储器中的数据超时情况,计算出存储器中可以写入到读端口同步模块中5的数据个数,并向端口调度轮询模块6发起DDRx读访问请求。
读端口访问请求模块4获取存储器中能够写入到读端口同步模块5中的数据的个数的具体过程是:获取需要传输的数据的个数x,当读端口同步模块5中的剩余空间能够存放x个数据时,则读端口访问请求模块4输出的读请求的数据个数为x;当读端口同步模块5中的剩余空间能够存放y个数据时,且y<x,则读端口访问请求模块4输出的读请求的数据个数为y。
端口调度轮询模块6为核心控制模块,通过状态机来轮询各个异步FIFO控制模块对存储器的读或写访问请求,当某个异步FIFO控制模块有读写访问请求时,则跳转至相应的处理状态对请求进行响应,并控制存储器接口时序控制模块7将请求的数据从写端口同步模块1写入至存储器中该FIFO控制器写指针指向的地址,或将该FIFO控制器读指针指向的地址数据读出并缓存至读端口同步模块5中。
读写指针管理模块2负责实现该FIFO控制器的读写指针计算并实时计算该异步FIFO控制模块中的数据个数,当有数据从存储器中读出或有数据写入到存储器中时,进行DDRx的读写地址更新和数据个数更新。
存储器接口时序控制模块7响应读写操作请求,完成存储器的读写访问。响应写数据操作请求时,将写端口同步模块1中的数据读出并写入到存储器中;响应读数据操作时,将存储器中的数据读出并写入到读端口同步模块5中。
优选的,本发明所述的存储器为DDR2存储器或DDR3存储器等,相应的存储器接口时序控制模块7为DDR2或DDR3接口时序控制模块,实现对DDR2或DDR3存储器实现相应的操作。
如图1所示,本发明的FIFO控制器具有左右两个对称分布的异步FIFO控制模块,其工作方式为:同一个异步FIFO控制模块(左侧或者右侧的异步FIFO控制模块)的写端口同步模块1将其写入的数据同步到存储器接口时序控制模块7下,并且写端口同步模块1的数据达到写入存储器的条件时,端口调度轮询模块6将写端口同步模块1中的数据读出并写入到存储器中。同一个异步FIFO控制模块的读写指针管理模块2用于实现该异步FIFO控制模块的读写指针计算并计算该异步FIFO控制模块中数据的个数,当有数据从存储器中读出或写入到存储器中时,进行存储器中读写地址的更新和其具有的数据个数的更新。
同一个异步FIFO控制模块的写端口访问请求模块3计算出其写端口同步模块1中需要写入到存储器中的数据的个数,具体的,当该异步FIFO控制模块的写端口同步模块1的写端口连续有数据写入时,写端口访问请求模块3会一直等到该写端口同步模块1中的数据个数达到设定值(例如设定为64)个数据时,发起写入存储器的请求,这种处理方式能够尽可能的使写入通道的数据实现突发传输,提高写通道总线利用率和传输带宽,当该写端口需要写入的数据不足设定值(64)个时,写端口访问请求模块3设定一个超时值(如512ns),数据在写端口同步模块1中存储的时间超过512ns时,写端口访问请求模块3也会发起将数据写入存储器的写入请求,从而保证了同一个异步FIFO控制模块的写端口到读端口的数据延迟在一个确定的范围内。其中写入请求的数据个数的计算方式为:按照上述方式得到需要传输的数据个数n,当存储器的剩余空间能够存放n个数据时,则写端口访问请求模块3的写请求的数据个数为n;当存储器的剩余空间能够存储m个数据,且m<n时,则写端口访问请求模块3的写请求的数据个数为m。
同一个异步FIFO控制模块的读端口访问请求模块4计算出从存储器传输到读端口同步模块5中的数据个数,当存储器中的有效数据持续增加时,读端口访问请求模块4会一直等到该异步FIFO控制模块的DDRx缓存区中的数据达到设定值(例如64个)个数据时,然后发起读入存储器中数据的请求,这种处理方式能够尽可能的使读通道的数据实现突发传输,提高读通道总线利用率和传输带宽;当该异步FIFO控制模块的DDRx缓存区中的数据不足64个时,读端口访问请求模块4会有一个可设定的超时值(如512ns),数据在DDRx缓存区中存储的时间超过512ns时,读端口访问请求模块4会发起读存储器中数据的操作申请,从而保证从该异步FIFO控制模块的写端口到读端口的数据延迟在一个确定范围内。读请求的数据个数的计算方法为:按照上述读请求产生的方式可以得到一个需要传输的数据个数x,当读端口同步模块5剩余空间能够存放x个数据时,则读端口访问请求模块4输出的读请求的数据个数为x;当读端口同步模块5剩余空间能够存放y个数据,且y<x时,读端口访问请求模块4输出的读请求的数据个数为y。
同一个异步FIFO控制模块的读端口同步模块5将该异步FIFO控制模块读指针指向的数据从存储器中读出并进行缓存,当用户需要从该异步FIFO控制模块中读出数据,则用户通过操作读端口将数据读出。
端口调度轮询模块6为该FIFO控制器的核心控制模块,通过状态机来轮询两个异步FIFO 控制模块的四个端口(2个读端口和2个写端口)的对存储器的读写访问请求,当某个读或写端口有相应的访问请求并且请求传输的数据个数大于0时,则跳转至相应的处理状态对请求进行响应。该模块在进行轮询调度时采用的方法是平均逐个端口轮询,每个端口的优先级是相同的,在带宽允许的范围内,能够保证每个端口的数据都能得到有效传输处理。在进行数据传输过程中,对FIFO进行读写操作的同时使用流水线的方式产生存储器应用接口时序,使得数据传输效率的最大化。
存储器接口时序控制模块7,该模块在端口调度轮询模块6响应读写操作请求时,实现数据的传输的时序转换。响应写数据操作请求时,将写端口同步模块1中的数据读出并写入到存储器中;响应读数据操作时,将存储器中的数据读出并写入到读端口同步模块5中。
根据本发明提出的大容量FIFO控制器,用Verilog HDL语言对控制器的逻辑设计进行描述,并应用到某双路视频采集卡产品设计中,并对控制器的功能和性能进行测试。测试结果表明本发明具有很好的可实施性,且性能满足预期。
Claims (7)
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存储区进行相应的访问。
2.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述异步FIFO控制模块还包括读写指针管理模块(2),读写指针管理模块(2)完成该FIFO控制器的读或写的指针操作,并计算该FIFO控制器中的数据的个数;在进行数据的读或写操作后,读写指针管理模块(2)进行该FIFO控制器中的数据个数的更新以及对存储器的读写地址的更新。
3.根据权利要求2所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述读端口同步模块(5)中读出的数据为将读写指针管理模块(2)读指针指向的数据。
4.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述写端口访问请求模块(3)中获取写端口同步模块(1)需要写入到存储器中的数据的个数的过程是:获取需要传输的数据的个数n,当存储器的剩余空间能够存放n个数据时,则写端口访问请求模块(3)输出的写请求的数据个数为n;当存储器的剩余空间能够存放m个数据,且m<n,则写端口访问请求模块(3)输出的写请求的数据个数为m。
5.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述读端口访问请求模块(4)获取存储器中能够写入到读端口同步模块(5)中的数据的个数的具体过程是:获取需要传输的数据的个数x,当读端口同步模块(5)中的剩余空间能够存放x个数据时,则读端口访问请求模块(4)输出的读请求的数据个数为x;当读端口同步模块(5)中的剩余空间能够存放y个数据时,且y<x,则读端口访问请求模块(4)输出的读请求的数据个数为y。
6.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述存储器接口时序控制模块(7)在相应读操作时,将存储器中的数据读出,并写入读端口同步模块(5)中。
7.根据权利要求1所述的基于DDRx存储器的大容量FIFO控制器,其特征在于,所述存储器接口时序控制模块(7)在相应写操作时,将写端口同步模块(1)中的数据读出,并写入到存储器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810622242.2A CN108897696B (zh) | 2018-06-15 | 2018-06-15 | 一种基于DDRx存储器的大容量FIFO控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810622242.2A CN108897696B (zh) | 2018-06-15 | 2018-06-15 | 一种基于DDRx存储器的大容量FIFO控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108897696A CN108897696A (zh) | 2018-11-27 |
CN108897696B true CN108897696B (zh) | 2022-11-29 |
Family
ID=64345309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810622242.2A Active CN108897696B (zh) | 2018-06-15 | 2018-06-15 | 一种基于DDRx存储器的大容量FIFO控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897696B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111581132B (zh) * | 2020-04-27 | 2022-03-25 | 武汉中科牛津波谱技术有限公司 | 一种基于fpga的可扩展的多端口ddr3控制器 |
CN112416823B (zh) * | 2020-11-15 | 2024-05-03 | 珠海一微半导体股份有限公司 | 一种突发模式下的传感器数据读写控制方法、***及芯片 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
CN106959929A (zh) * | 2017-03-17 | 2017-07-18 | 数据通信科学技术研究所 | 一种多端口访问的存储器及其工作方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610433B2 (en) * | 2004-02-05 | 2009-10-27 | Research In Motion Limited | Memory controller interface |
-
2018
- 2018-06-15 CN CN201810622242.2A patent/CN108897696B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
CN106959929A (zh) * | 2017-03-17 | 2017-07-18 | 数据通信科学技术研究所 | 一种多端口访问的存储器及其工作方法 |
Non-Patent Citations (2)
Title |
---|
基于FPGA的DDR3 SDRAM控制器设计;董岱岳;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20160215(第2期);I137-30 * |
基于FPGA的DDR3多端口读写存储管理设计;吴连慧 等;《单片机与嵌入式***应用》;20150310(第1期);71-74 * |
Also Published As
Publication number | Publication date |
---|---|
CN108897696A (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035389B (zh) | 一种plb-axi总线转换桥及其工作方法 | |
CN109800193B (zh) | 一种ahb总线访问片上sram的桥接装置 | |
KR102520983B1 (ko) | 이진화 알고리즘 기반의 액셀러레이션 제어 시스템, 칩 및 로봇 | |
US20230315298A1 (en) | Flash controller for asic and control method therefor | |
US20070055813A1 (en) | Accessing external memory from an integrated circuit | |
CN110058816B (zh) | 一种基于ddr的高速多用户队列管理器及方法 | |
CN108897696B (zh) | 一种基于DDRx存储器的大容量FIFO控制器 | |
GB2500082A (en) | Delaying the transmission of data from a memory device until the output buffer of the memory device contains the data for the transfer | |
CN113900974A (zh) | 一种存储装置、数据存储方法及相关设备 | |
CN114827048B (zh) | 一种动态可配高性能队列调度方法、***、处理器及协议 | |
US20240021239A1 (en) | Hardware Acceleration System for Data Processing, and Chip | |
US7774513B2 (en) | DMA circuit and computer system | |
US20090119429A1 (en) | Semiconductor integrated circuit | |
CN115328832B (zh) | 一种基于pcie dma的数据调度***与方法 | |
KR20210061583A (ko) | 적응형 딥러닝 가속 장치 및 방법 | |
CN116107923A (zh) | 一种基于bram的多对多高速访存架构和访存*** | |
CN112286863B (zh) | 处理暨存储电路 | |
CN115237349A (zh) | 数据读写控制方法、控制装置、计算机存储介质和电子设备 | |
US8301816B2 (en) | Memory access controller, system, and method | |
CN112231261A (zh) | 一种用于axi总线的id号压缩装置 | |
CN112100098A (zh) | Ddr控制***及ddr存储*** | |
CN221175403U (zh) | 一种内置dma控制模块的读取装置 | |
Zhao et al. | A novel design of high-speed multi-port memory interface for digital signal processor | |
Nguyen et al. | A flexible high-bandwidth low-latency multi-port memory controller | |
CN117420342B (zh) | 多通道采集方法、装置、***、fpga及采样示波器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |