CN112052205B - 基于fpga的ddr3多端口读写存储管理方法 - Google Patents
基于fpga的ddr3多端口读写存储管理方法 Download PDFInfo
- Publication number
- CN112052205B CN112052205B CN202010893761.XA CN202010893761A CN112052205B CN 112052205 B CN112052205 B CN 112052205B CN 202010893761 A CN202010893761 A CN 202010893761A CN 112052205 B CN112052205 B CN 112052205B
- Authority
- CN
- China
- Prior art keywords
- data
- command
- read
- write
- request
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及存储领域,尤其涉及一种基于FPGA的DDR3多端口读写存储管理方法,包括:采用BANK轮询的方式从多个队列请求中仲裁出一个用户请求命令;根据要求将仲裁出来的用户请求命令切割成多个子命令;子命令信息提取以及转换并翻译成可执行的命令格式;将待写数据送入写数据缓存;根据用户接口读命令请求,将存储的数据回送用户接口。本发明基于DDR芯片的BANK轮询机制既提高了DDR芯片的读写效率,又解决了多端口读写同一片DDR芯片冲突问题,极大的提高DDR芯片的工作效率。
Description
技术领域
本发明涉及存储领域,尤其涉及一种基于FPGA的DDR3多端口读写存储管理方法。
背景技术
自集成电路诞生以来,存储芯片行业就在不断飞速发展。过去几十年来,集成电路的进步与发展一直遵循着摩尔定律。摩尔定律指出,半导体集成电路单位面积可集成的晶体管数目每隔18个月增长一倍,处理器的性能也提高一倍。集成电路工艺技术的进步为微处理器的设计带来了新的机遇,也为存储系统带来了巨大的挑战。随着工艺水平的进步,特别是处理器体系结构的发展,处理器的速度已远远超过存储器的速度。自从上世纪八十年代以来,微处理器性能持续快速增长,年平均增长速度达40%;存储器性能虽然也在不断提高,但其年平均增长速度只有7%,由此产生了著名的“存储墙”问题。
虽然多线程、前瞻、乱序执行、预取等处理器技术以及多级高速缓存等技术的采用有助于将存储器的访问延迟来隐藏,即使这样,在处理器中,访存延迟带来的停顿时间所占的比例越来越大,存储器的访问速度相对还是较慢。
发明内容
为解决上述问题,本发明提出一种基于FPGA的DDR3多端口读写存储管理方法。
一种基于FPGA的DDR3多端口读写存储管理方法,包括:
采用BANK轮询的方式从多个队列请求中仲裁出一个用户请求命令;
根据要求将仲裁出来的用户请求命令切割成多个子命令;
子命令信息提取以及转换并翻译成可执行的命令格式;
将待写数据送入写数据缓存;
根据用户接口读命令请求,将存储的数据回送用户接口。
优选的,所述采用BANK轮询的方式从多个队列请求中仲裁出一个用户请求命令包括:
将上个命令操作的BANK号锁存,在当前命令仲裁时将此锁存BANK号和当前各队列请求操作的BANK号进行比较,优先响应BANK号不同的队列请求,只有在其它队列请求都没有请求的情况下才响应BANK冲突的队列请求;
对各队列请求进行译码,并得出一个仲裁结果。
优选的,所述根据要求将仲裁出来的用户请求命令切割成多个子命令包括:
当用户请求命令中的读写数据操作长度大于设定字节数,则进行命令切割;
对切割操作进行计数以判断当前请求是否切割完毕。
优选的,所述子命令信息提取以及转换并翻译成可执行的命令格式包括:
将命令信息从缓存中读出,并进行信息提取;
若为写命令,则将写信息送入到数据写入模块,若为读命令,则将读信息送入到数据读取模块。
优选的,所述将待写数据送入写数据缓存包括:
在检测到控制器接口发送的命令信息数据有效指示且待写数据信号握手信号有效时,将用户请求命令的操作长度值加1后作为需要操作的字节数,当app_wdf_data_rdy信号有效时,字节计数值自减1,同时生成待写数据读基地址累加使能,字节计数值减1,待写数据读基地址加1;
当读命令缓存非空且字节计数值减至0时,将操作信息锁存;
将待写数据读使能wrbuf_rdata_rden和对应端口读数据wrbuf_rdata送往控制器接口,作为写数据缓存写使能app_wdf_wren和写数据app_wdf_data。
优选的,所述根据用户接口读命令请求,将存储的数据回送用户接口包括:
在检测到读命令缓存非空时,将用户请求命令的操作长度值加1后作为需要操作的字节数,当接收到读数据指示时,字节计数值自减1;
当读命令缓存非空且字节计数值减至0时,将操作信息锁存;
根据锁存的操作信息中的端口号生成相对应读端口回读数据写使能信号,当回送数据命令有效时,回读数据写使能置高,各端口回读数据的写基地址从锁存的地址中获取,数据回送至用户相应地址的数据缓存中。
优选的,还包括:
检测数据在传输过程中是否出现错误。
优选的,所述检测数据在传输过程中是否出现错误包括:
将自校验数据送入写数据缓存;
将存储的自校验数据回送用户接口;
比较写入的自校验数据和读取的自校验数据,若两者数据不同,则判断异常,若两者数据相同,则判断正常。
通过使用本发明,可以实现以下效果:基于DDR芯片的BANK轮询机制既提高了DDR芯片的读写效率,又解决了多端口读写同一片DDR芯片冲突问题,极大的提高DDR芯片的工作效率;将用户端口操作DDR较长字节的数据命令切割成较短的操作长度,适用DDR芯片的突发burst模式,极大提用户端口操作 DDR效率;数据读取、数据写入极大的简化用户端口的操作复杂度,用户只需产生简单的读写DDR请求并准备待写DDR的数据,维护自身端口的待写、回读数据缓存,就可以将待写数据写入DDR或者从DDR中回读数据;不断产生自校验读写DDR请求,并对比写入和回读数据是否一致,极大提高读写DDR芯片的可靠性。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明实施例一种基于FPGA的DDR3多端口读写存储管理方法的示意流程图;
图2是本发明实施例一种基于FPGA的DDR3多端口读写存储管理方法中步骤 S1的示意流程图;
图3是本发明实施例一种基于FPGA的DDR3多端口读写存储管理方法中步骤 S2的示意流程图;
图4是本发明实施例一种基于FPGA的DDR3多端口读写存储管理方法中步骤 S3的示意流程图;
图5是本发明实施例一种基于FPGA的DDR3多端口读写存储管理方法中步骤 S4的示意流程图;
图6是本发明实施例一种基于FPGA的DDR3多端口读写存储管理方法中步骤 S5的示意流程图;
图7是本发明实施例一种基于FPGA的DDR3多端口读写存储管理方法中步骤S6的示意流程图;
图8是本发明实施例一种基于FPGA的DDR3多端口读写存储管理方法中步骤 S6的具体示意流程图。
具体实施方式
以下结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。
本发明实施例提出一种基于FPGA的DDR3多端口读写存储管理方法,如图 1所示,包括以下步骤:
S1:采用BANK轮询的方式从多个队列请求中仲裁出一个用户请求命令。
针对执行多端口队列请求的调度,其内部维护1个已仲裁出来的命令,一旦检测到DDR控制器中的命令系统中app_rdy信号有效,则立即将已仲裁出来的命令送入步骤S2。用户请求队列经过处理后,最终会调度出一个执行队列,仲裁出来的队列请求和请求信息将送往下命令切割步骤,其中队列的请求信息包含用户读写数据缓存的基地址、DDR操作地址、读写数据操作长度、用户回告信息。本发明基于DDR芯片的BANK轮询机制既提高了DDR芯片的读写效率,又解决了多端口读写同一片DDR芯片冲突问题,极大的提高DDR芯片的工作效率。
如图2所示,步骤S1包括以下子步骤:
S11:将上个命令操作的BANK号锁存,在当前命令仲裁时将此锁存BANK 号和当前各队列请求操作的BANK号进行比较,优先响应BANK号不同的队列请求,只有在其它队列请求都没有请求的情况下才响应BANK冲突的队列请求。
用户请求队列指示有效后,执行DDR芯片BANK轮询原则,并最终仲裁出一个用户请求,用户请求信息送往命令切割在步骤。这些信息经过命令切割后,送往控制器接口并缓存,同时也进行用户信息提取以及命令判断。若为读命令,将读信息送往数据读取缓存中,同时将读命令送往控制器接口,数据读取模块将读信息解析后送入个端口,各端口按照解析的命令进行相应的数据搬运工作,数据搬运结束时将反馈信息至用户端口。若为写命令,将写命令送往数据写入步骤,写信息经过命令解析后,各端口按照解析的命令进行相应的数据搬运工作,数据搬运结束后反馈至控制器接口,控制器接口将写命令送往命令系统。
在一实施例中,请求操作主要有上行MAC地址/ACL查表(读)、下行MAC 地址查表/ACL(读)、上行表项老化请求(读)、下行表项老化(读)、上行表项老化请求(写)、下行表项老化请求(写)、用户请求1(写)、用户请求2(写)、自检验(读)、自检验(写)、CPU(读)、CPU(写)等业务。在设计的过程中, CPU的读写公用一个端口、自检验(CHK)的读写公用一个端口,所以12个用户请求可以简化为10个队列的调度请求。
将10个请求队列,按照读写操作的不同划分为两组。将上行MAC地址/ACL 查表(读)、下行MAC地址查表/ACL(读)、上行表项老化请求(读)、下行表项老化(读)划分为组0;上行表项老化请求(写)、下行表项老化请求(写)、用户请求1(写)、用户请求2(写)划分为组1;CPU、自检验(CHK)请求各自为一组,它们不参加一级查表仲裁,只参加二级译码仲裁,在仲裁的过程中,它们各自维护自身信息参与二级仲裁。
组0和组1通过一级仲裁模块进行一级仲裁,一级仲裁的规则配置在ROM 表中。对于DDR芯片而言,执行BANK轮询操作效率最高。因此,在命令仲裁时要尽量避免当前仲裁的命令和上个命令操作同一BANK。设计中,将上个命令操作的BANK号锁存,在当前命令仲裁时将此锁存BANK号和当前各队列操作的BANK号进行比较,优先响应BANK号不同的队列请求,只有在其它队列都没有请求的情况下才响应BANK冲突的队列请求。
对组0成员操作DDR BANK号和优先级划分:上行ACL/MAC查表(读) 请求(对应Bank0)即端口0;下行MAC地址/ACL查表(读)请求(对应Bank1) 即端口1;上行表项老化(读)请求操作(对应Bank0)即端口2;下行表项老化(读)请求操作(对应Bank1)即端口3。
一级仲裁的过程(假设同一Bank中,查表操作优先级高)总原则如下:
当前操作的Bank号为0时,则下一次操作轮到组0,BANK1对应的请求队列优先操作;
当前操作的Bank号为1时,则下一次操作轮到组0,BANK0对应的请求队列优先操作;
当前操作的Bank号既不为0也不为1,则下一次操作轮到组0,各请求队列按照预先设定的优先级进行仲裁操作。
以上4个队列的请求仲裁的规则配置在ROM里面,ROM表项里面。ROM 表项的地址是由上次操作的BANK号bank_last(3bit)以及各个端口参与仲裁请求非空信号req(位宽为1bit,4个端口共4bit信号)排列组合。仲裁器输出结果为端口号req_port0[3:0]、BANK冲突指示bank_conflict0、组0有效请求指示信号 req_valid0(该信号组内所有队列请求有效指示信号的“或”操作)。由上可知,参与仲裁的所有信号的位宽为7bit,输出结果为5bit,使用ROM查找表实现,查表地址寻址空间为128。
下面以上次操作的Last_bank号0为例,当前4个请求队列都有效,即ROM 的地址为7’b0001111。此时由于上次操作的Bank为0,所以此次操作的Bank 号尽量不要为0,与之对应的请求有下行MAC地址/ACL查表(读)请求(对应 Bank1)和下行表项老化(读)请求操作(对应Bank1),假设查表的优先级高,则表项里面的内容为5’b00001。所以此次仲裁出的队列是下行ACL/MAC查表 (读)请求。
组1仲裁原则与组0类似,不再赘述。
S12:对各队列请求进行译码,并得出一个仲裁结果。
经过以上操作流程,组0、组1、CPU请求、CHK请求将各自的信息(冲突指示信号bank_conflict、请求有效指示信号req_vaild、各自的端口号(中组0、组1为一级仲裁出来的端口号),其送入二级仲裁模块。二级仲裁模块为直接译码,并最终会得出一个仲裁结果。二级仲裁过程包括以下步骤:
步骤1;首先检查组0得出的请求有效指示req_valid0。若req_valid0无效,则直接进入步骤5,若有效,进入步骤2;
步骤2:检查冲突指示信号bank_conflict0信号是否为0;若bank_conflict0 为0,说明BANK不冲突,仲裁结果得出,即为组0得出的端口号req_port0[3:0];若bank_conflict0为1,则进入步骤3;
步骤3:检查组1得出的请求有效指示req_valid1,若无效,则直接进入步骤 4;若req_valid1有效,检查bank_conflict1是否为0,若为0,说明BANK不冲突,仲裁结果得出,即为组1得出的端口号req_port1[:3:0];若bank_conflict1为 1,则进入步骤4;
步骤4:检查CPU端口的请求有效指示req_valid_cpu,若req_valid_cpu有效,检查bank_conflict_cpu是否为0,若为0,说明BANK不冲突,仲裁结果得出,即为CPU得出的端口号;若bank_conflict_cpu为1,此次仲裁的结果为组0 得出的端口号req_port0[3:0];若req_valid_cpu无效则,则此次仲裁的结果也为组 0得出的端口号req_port0[3:0];
步骤5:检查组1得出的请求有效指示req_valid1,若无效,直接进入步骤7;若req_valid1有效,检查bank_conflict1是否为0,若为0,说明BANK不冲突,仲裁结果得出,即为组1得出的端口号req_port1[:3:0];若bank_conflict1为1,则进入步骤6;
步骤6:检查CPU得出的请求有效指示req_valid_cpu,若req_valid_cpu有效,检查bank_conflict_cpu是否为0,若为0,说明BANK不冲突,仲裁结果得出,即为CPU得出的端口号;若bank_conflict_cpu为1,此次仲裁的结果为组1 得出的端口号req_port1[3:0];若req_valid_cpu无效,则此次仲裁的结果也为组1 得出的端口号req_port1[3:0];
步骤7:检查CPU得出的请求有效指示req_valid_cpu,若无效则直接进入步骤8。若req_valid_cpu有效,检查bank_conflict_cpu是否为0,若为0,说明BANK 不冲突,仲裁结果得出,即为CPU得出的端口号;若bank_conflict_cpu是不为0,则仲裁出来的结果仍为CPU端口号;
步骤8:检查CHK得出的请求有效指示req_valid_chk,若无效直接进入步骤 9;若有效,则此次仲裁出来的结果为CHK请求的端口号;
步骤9:此次仲裁无效。
S2:根据要求将仲裁出来的用户请求命令切割成多个子命令。
将请求缓存中存储的不同DDR读写操作长度,切割为长度固定为32字节的操作命令,操作长度小于32字节,不进行命令切割操作,这样操作主要是为了适应DDR芯片的BurstChop(突发突变)模式。将用户端口操作DDR较长字节的数据命令切割成较短的操作长度,适用DDR芯片的突发burst模式,极大提用户端口操作DDR效率。
如图3所示,步骤S2包括以下子步骤:
S21:当用户请求命令中的读写数据操作长度大于设定字节数,则进行命令切割。
若请求操作读写DDR数据长度大于32字节,则进行命令切割,最大支持 1024字节,最多可切割为32个命令,只有在控制器接口命令缓存不满且命令切割子模块中用户信息缓存非空时才开始下一个请求的切割。
S22:对切割操作进行计数以判断当前请求是否切割完毕。
切割的过程中进行切割命令计数,计数值为操作长度(操作长度指示,单位为16字节,最大操作长度为64乘16字节等于1024字节,0表示1个Burst),左移后的数值也即操作长度除以2,其计数范围为1-32,值为0说明当前请求切割完毕,可将下一个请求读出。每切割生成一个32字节请求,则长度计数器自减1,同时将请求写入命令缓存,直至长度计数器减至1。由于切片的最小长度为32字节,而操作长度指示的单位为16字节,因此需将操作长度指示右移1 位,并加1。若操作长度是16字节的整数倍,但不是32字节的整数倍,如16 字节、48字节等,则经过上述处理后长度增加了16字节,因此对于这种情况,最后一次操作的长度必须设为16字节。
将一个操作长度比较长的命令切割成为若干个操作长度短的命令去执行,并将切割之后的命令一部分送入命令缓存(FIFO)中,另一部分命令送入读写命令缓存。
S3:子命令信息提取以及转换并翻译成可执行的命令格式。
如图4所示,步骤S3包括以下子步骤:
S31:将命令信息从缓存中读出,并进行信息提取。
从子命令缓存中,将命令信息从缓存FIFO中读出,并进行信息提取、命令形式判断。
S32:若为写命令,则将写信息送入到数据写入模块,若为读命令,则将读信息送入到数据读取模块。
命令判断过程中,若为写命令,将写信息送入到数据写入模块,待数据写入步骤完全将数据从用户端口搬运至DDR控制器写数据缓存,再将写命令送往 DDR控制器命令系统。命令判断过程中,若为读命令,此时(数据读取模块缓存不满)将读信息送入到数据读取命令缓存中;同时将读命令送入DDR控制器命令系统中。
S4:将待写数据送入写数据缓存。
将各端口待写数据送入DDR控制器写数据缓存,供MIG控制器执行写操作时数据的读取。由于MIG控制器写命令与写数据在时序上有一定的要求(写数据不能够晚于写命令2个周期)。整体上的处理原则是,将送出来的命令信息写入到数据写入步骤对命令信息作相应的处理(即当用户端口按照命令信息里面的内容要求,将端口待写数据全部搬运至DDR控制器接口的写数据缓存后,再将命令信息送往DDR控制器命令系统)。这样的操作,使得数据先于命令到达DDR 控制器接口,原则就不会出现数据晚于命令的情况。
如图5所示,步骤S4包括以下子步骤:
S41:在检测到控制器接口发送的命令信息数据有效指示且待写数据信号握手信号有效时,将用户请求命令的操作长度值加1后作为需要操作的字节数,当 app_wdf_data_rdy信号有效时,字节计数值自减1,同时生成待写数据读基地址累加使能,字节计数值减1,待写数据读基地址加1;
计数初始值为0,在送过来的命令信息数据有效指示且MIG IP核控制器待写数据信号握手信号有效时,将请求的操作长度值加1后赋给字节计数器,作为接下来需要操作的字节数。当MIG数据系统中,app_wdf_data_rdy信号有效时,长度计数值自减1;与此同时生成待写数据读基地址累加使能,长度计数器值减 1,待写数据读基地址加1。
S42:当读命令缓存非空且字节计数值减至0时,将操作信息锁存。
当前写命令的信息有效且长度计数器值为0时,将端口号、操作长度、读数据基地址、反馈信息锁存下来,操作信息在当前命令的处理周期内保持不变。
S43:将待写数据读使能wrbuf_rdata_rden和对应端口读数据wrbuf_rdata送往控制器接口,作为写数据缓存写使能app_wdf_wren和写数据app_wdf_data。
将待写数据读使能wrbuf_rdata_rden由地址累加使能wdata_raddr_inc延时两个周期产生,送往待写数据端口。然后将待写数据读使能wrbuf_rdata_rden和对应端口读数据wrbuf_rdata送往MIG接口,作为MIG接口写数据缓存写使能 app_wdf_wren和写数据app_wdf_data。
S5:根据用户接口读命令请求,将存储的数据回送用户接口。
首先将命令信息作一级缓存,这样的处理主要原因是DDR控制器初始工作阶段,其命令缓存,会在短时间内生成大量读命令,而此时DDR芯片中的数据无法及时搬运DDR控制器读数据缓存。
同时为避免从该命令缓存读出命令造成的延迟,在命令缓存的出口处先缓存一个预取命令。当前命令一执行完毕,即将该预取命令作为当前命令执行,同时,从命令缓存中读取一个命令,作为新的预取命令。
如图6所示,步骤S5包括以下子步骤:
S51:在检测到读命令缓存非空时,将用户请求命令的操作长度值加1后作为需要操作的字节数,当接收到读数据指示时,字节计数值自减1。
计数初始值为0,在检测到读命令缓存非空时,将用户请求的操作长度值加 1,作为需要操作的字节数。当MIG控制器送过来读数据指示时,字节计数值自减1(计数器每自减1次,代表从MIG读数据缓存端口搬运至用户端口一次数据)。
S52:当读命令缓存非空且字节计数值减至0时,将操作信息锁存。
当读命令缓存非空且字节计数器值减至0时,将端口号、操作长度、读数据基地址、以及反馈信息锁存下来,这些操作信息在当前命令的处理周期内保持不变。
S53:根据锁存的操作信息中的端口号生成相对应读端口回读数据写使能信号,当回送数据命令有效时,回读数据写使能置高,各端口回读数据的写基地址从锁存的地址中获取,数据回送至用户相应地址的数据缓存中。
根据锁存的端口号生成相对应读端口回读数据写使能信号,当MIG IP回送数据指示有效时,回读数据写使能置高。各端口回读数据的写基地址可由锁存下来的地址中获取,计数值自减1则基地址自加1。数据回送至用户相应地址的数据缓存中。
数据读取、数据写入极大的简化用户端口的操作复杂度,用户只需产生简单的读写DDR请求并准备待写DDR的数据,维护自身端口的待写、回读数据缓存,就可以将待写数据写入DDR或者从DDR中回读数据。
在一实施例中,如图7所示,本方法还包括步骤:
S6:检测数据在传输过程中是否出现错误。
将产生随机数据写入DDR芯片固定位置,一段时间后再将写进去的数据回读出来并作对比,来检测数据在传输是否出现错误。
如图8所示,步骤S6包括以下子步骤:
S61:将自校验数据送入写数据缓存;
S62:将存储的自校验数据回送用户接口;
S63:比较写入的自校验数据和读取的自校验数据,若两者数据不同,则判断异常,若两者数据相同,则判断正常。
通过周期性产生检测脉冲信号,不断产生自校验读写DDR请求,并对比写入和回读数据是否一致,极大提高读写DDR芯片的可靠性。
本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (5)
1.一种基于FPGA的DDR3多端口读写存储管理方法,其特征在于,包括:
采用BANK轮询的方式从多个队列请求中仲裁出一个用户请求命令;
根据要求将仲裁出来的用户请求命令切割成多个子命令;
子命令信息提取以及转换并翻译成可执行的命令格式;
将待写数据送入写数据缓存;
根据用户接口读命令请求,将存储的数据回送用户接口;
所述采用BANK轮询的方式从多个队列请求中仲裁出一个用户请求命令包括:
将上个命令操作的BANK号锁存,在当前命令仲裁时将此锁存BANK号和当前各队列请求操作的BANK号进行比较,优先响应BANK号不同的队列请求,只有在其它队列请求都没有请求的情况下才响应BANK冲突的队列请求;
对各队列请求进行译码,并得出一个仲裁结果;
所述将待写数据送入写数据缓存包括:
在检测到控制器接口发送的命令信息数据有效指示且待写数据信号握手信号有效时,将用户请求命令的操作长度值加1后作为需要操作的字节数,当app_wdf_data_rdy信号有效时,字节计数值自减1,同时生成待写数据读基地址累加使能,字节计数值减1,待写数据读基地址加1;
当读命令缓存非空且字节计数值减至0时,将操作信息锁存;
将待写数据读使能wrbuf_rdata_rden和对应端口读数据wrbuf_rdata送往控制器接口,作为写数据缓存写使能app_wdf_wren和写数据app_wdf_data;
所述根据用户接口读命令请求,将存储的数据回送用户接口包括:
在检测到读命令缓存非空时,将用户请求命令的操作长度值加1后作为需要操作的字节数,当接收到读数据指示时,字节计数值自减1;
当读命令缓存非空且字节计数值减至0时,将操作信息锁存;
根据锁存的操作信息中的端口号生成相对应读端口回读数据写使能信号,当回送数据命令有效时,回读数据写使能置高,各端口回读数据的写基地址从锁存的地址中获取,数据回送至用户相应地址的数据缓存中。
2.根据权利要求1所述的一种基于FPGA的DDR3多端口读写存储管理方法,其特征在于,所述根据要求将仲裁出来的用户请求命令切割成多个子命令包括:
当用户请求命令中的读写数据操作长度大于设定字节数,则进行命令切割;
对切割操作进行计数以判断当前请求是否切割完毕。
3.根据权利要求1所述的一种基于FPGA的DDR3多端口读写存储管理方法,其特征在于,所述子命令信息提取以及转换并翻译成可执行的命令格式包括:
将命令信息从缓存中读出,并进行信息提取;
若为写命令,则将写信息送入到数据写入模块,若为读命令,则将读信息送入到数据读取模块。
4.根据权利要求1~3任一项所述的一种基于FPGA的DDR3多端口读写存储管理方法,其特征在于,还包括:
检测数据在传输过程中是否出现错误。
5.根据权利要求4所述的一种基于FPGA的DDR3多端口读写存储管理方法,其特征在于,所述检测数据在传输过程中是否出现错误包括:
将自校验数据送入写数据缓存;
将存储的自校验数据回送用户接口;
比较写入的自校验数据和读取的自校验数据,若两者数据不同,则判断异常,若两者数据相同,则判断正常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010893761.XA CN112052205B (zh) | 2020-08-31 | 2020-08-31 | 基于fpga的ddr3多端口读写存储管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010893761.XA CN112052205B (zh) | 2020-08-31 | 2020-08-31 | 基于fpga的ddr3多端口读写存储管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112052205A CN112052205A (zh) | 2020-12-08 |
CN112052205B true CN112052205B (zh) | 2022-07-08 |
Family
ID=73607981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010893761.XA Active CN112052205B (zh) | 2020-08-31 | 2020-08-31 | 基于fpga的ddr3多端口读写存储管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112052205B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463415B (zh) * | 2020-12-17 | 2024-02-06 | 苏州盛科通信股份有限公司 | 基于随机地址的多端口共享内存管理系统及方法 |
CN113360424B (zh) * | 2021-06-16 | 2024-01-30 | 上海创景信息科技有限公司 | 基于多通路独立axi总线的rldram3控制器 |
CN113900818A (zh) * | 2021-10-19 | 2022-01-07 | 瓴盛科技有限公司 | Ddr存储器数据读写调度方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63262740A (ja) * | 1987-04-20 | 1988-10-31 | Mitsubishi Electric Corp | キヤツシユメモリ制御装置 |
US7730276B1 (en) * | 2005-10-25 | 2010-06-01 | Xilinx, Inc. | Striping of data into memory of a network data switch to prevent read and write collisions |
CN102684976A (zh) * | 2011-03-10 | 2012-09-19 | 中兴通讯股份有限公司 | 一种基于ddr sdram进行数据读写的方法、装置及系统 |
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
CN109446125A (zh) * | 2018-10-09 | 2019-03-08 | 武汉正维电子技术有限公司 | Ddr读写仲裁器及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9575908B2 (en) * | 2011-02-08 | 2017-02-21 | Diablo Technologies Inc. | System and method for unlocking additional functions of a module |
-
2020
- 2020-08-31 CN CN202010893761.XA patent/CN112052205B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63262740A (ja) * | 1987-04-20 | 1988-10-31 | Mitsubishi Electric Corp | キヤツシユメモリ制御装置 |
US7730276B1 (en) * | 2005-10-25 | 2010-06-01 | Xilinx, Inc. | Striping of data into memory of a network data switch to prevent read and write collisions |
CN102684976A (zh) * | 2011-03-10 | 2012-09-19 | 中兴通讯股份有限公司 | 一种基于ddr sdram进行数据读写的方法、装置及系统 |
CN103198856A (zh) * | 2013-03-22 | 2013-07-10 | 烽火通信科技股份有限公司 | 一种ddr控制器及请求调度方法 |
CN109446125A (zh) * | 2018-10-09 | 2019-03-08 | 武汉正维电子技术有限公司 | Ddr读写仲裁器及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112052205A (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112052205B (zh) | 基于fpga的ddr3多端口读写存储管理方法 | |
CN112052206B (zh) | 基于仲裁的多端口数据存储系统 | |
US7222224B2 (en) | System and method for improving performance in computer memory systems supporting multiple memory access latencies | |
US7707366B2 (en) | Memory control device | |
US7249236B2 (en) | Method and system for controlling memory accesses to memory modules having a memory hub architecture | |
JP4866646B2 (ja) | メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム | |
US7447805B2 (en) | Buffer chip and method for controlling one or more memory arrangements | |
KR100724557B1 (ko) | 아웃 오브 오더 dram 시퀀서 | |
EP1137995B1 (en) | Queue based memory controller | |
CN103198856B (zh) | 一种ddr控制器及请求调度方法 | |
US8412870B2 (en) | Optimized arbiter using multi-level arbitration | |
KR20150017526A (ko) | 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법 | |
US20120239873A1 (en) | Memory access system and method for optimizing SDRAM bandwidth | |
US6615326B1 (en) | Methods and structure for sequencing of activation commands in a high-performance DDR SDRAM memory controller | |
JP4846182B2 (ja) | コマンドごとのポスト式書込みを有するメモリデバイス | |
US10157123B1 (en) | Methods and apparatus for a scheduler for memory access | |
US8285892B2 (en) | Quantum burst arbiter and memory controller | |
US20040088450A1 (en) | Memory transaction ordering | |
US20230267079A1 (en) | Processing apparatus, method and system for executing data processing on a plurality of channels | |
CN107577614B (zh) | 数据写入方法及内存系统 | |
US20020073280A1 (en) | Dual-L2 processor subsystem architecture for networking system | |
WO2023093335A1 (zh) | 数据处理电路及人工智能芯片、数据处理方法和装置 | |
US20040059880A1 (en) | Low latency memory access method using unified queue mechanism | |
JPH06295258A (ja) | 半導体記憶装置及び記憶装置 | |
CN115633098B (zh) | 众核系统的存储管理方法、装置和集成电路 |
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 |