提高sdram数据传输效率的方法

文档序号:6369363阅读:295来源:国知局
专利名称:提高sdram数据传输效率的方法
技术领域
本发明涉及数据存储及处理技术领域,尤其是数据通信的数据存储及处理中提高SDRAM数据传输效率的方法。
背景技术
随着通信技术的发展,需要处理的数据量越来越大,数据的流量控制要求越来越尚,这都要求数据存储和处通能力的提闻,而数据处通能力的提闻,提闻接ロ效率是一种有效的方法。目前的硬件设计中,FPGA (Field Programmable Gate-Array现场可编程阵列)和双倍速率同步动态随机存储器DDR2 SDRAM的结合应用非常普遍。FPGA和DDR2 SDRAM连接处理内容主要是数据读写,DDR2 SDRAM支持的常用命令有7种空操作(NOP)、激活操作(Active)、突发读(Burst Read)、突发写(Burst Write)、自动刷新(Autorefresh)、关 闭(Precharge)、模式寄存器配置(Mode Register Set)。所有的操作命令都是通过信号线RAS_N、CAS_N、WE_N共同控制来实现的。在对DDR2 SDRAM进行存取数据操作之前,首先要对其初始化,即设置DDR2 SDRAM的普通模式寄存器和扩展模式寄存器,确定DDRSDRAM的工作方式,这些设置包括突发长度、突发类型、CAS潜伏期和工作模式以及扩展模式寄存器中的对DDR2 SDRAM内部延迟锁定回路(DLL)的使能与输出驱动能力的设置。初始化完成之后,DDR2 SDRAM便进入正常的工作状态,此时便可对存储器进行读写和刷新。DDR2 SDRAM在ー对差分时钟的控制下工作,命令(地址和控制信号)在每个时钟的上升沿被触发。对DDR2 SDRAM的读和写操作是基于突发的,即从ー个选定的地址单元开始,连续存取已设置长度的地址单元,该长度就是所谓的突发长度。DDR2 SDRAM提供的可编程的读或写的突发长度为2,4或8。数据的存取以ー个激活命令(Active)开始,接着便是读(Burst Read)或写(Burst Write)命令。与激活命令一起被触发的地址位用来选择将要存取的区和页(或行),与读或写命令一起被触发的地址位用来选择突发存取的起始列单元。读命令被触发后,数据将在I. 5 3个时钟周期之后出现在数据总线上。这个延迟就是所谓的CAS潜伏期(CAS latency),即从DDR2SDRAM内核读出数据到数据出现在数据总线上所需要的时间。CAS潜伏期的大小与SDRAM的速度和存储器的时钟频率有夫。当要存取ー个不同行的地址单元吋,需要通过ー个关闭(Precharge)操作关闭当前行,以下将Precharge命令称为关闭命令。自动刷新(Autorefresh)命令用来周期性地刷新DDR SDRAM,以保持其内部的数据不丢失。,现有技术采用FPGA作为控制器来控制DDR2 SDRAM的读写操作,FPGA控制器的主要功能包括(I)初始化DDR2 SDRAM ; (2)简化DDR2SDRAM的读写时序。在对DDR2 SDRAM初
始化完成之后,就可进行读、写或其他操作。在执行读/写命令之前,先要激活将要读/写的行,之后便可对该行进行突发读/写。这样当一次读写突发长度结束后,如果需要发起下一次读写,就需要发关闭命令结束这一行,然后发激活命令开启下一行,这样才能开始写下一次数据。如何简化读写时序,提高数据处理效率是FPGA控制器设计的主要难题,通常的控制器时序都保留了相当多的空操作,按照激活、读/写、关闭,然后再开启激活的循环次序控制SDRAM读写,数据处理效率不高。

发明内容
本发明的主要目的是为了解决现有的问题,提供了一种用FPGA控制DDR2 SDRAM的数据存储的方法,充分利用单次读写过程中的空闲时钟,提高了数据处理效率,降低了DDR2 SDRAM的设计难度及产生问题的可能性。—种提高SDRAM数据传输效率的方法,应用于采用现场可编程阵列FPGA控制双倍速率同步动态随机存储器DDR2 SDRAM的读写操作,包括步骤如下步骤I、选定将要采用的SDRAM芯片,根据芯片参数,确定完成单个突发长度读或写操作命令需要的最小时钟数目,定义为tl ;步骤2、根据芯片单个突发长度对应的时钟数目,定义为t2 ;步骤3、确定总周期,如果tl的值大于t2与SDRAM芯片存储库数目的乘积,那么总周期是tl,否则总周期是t2与存储库数目的乘积; 步骤4、根据总周期数,编排控制命令表,从第一个时钟开始,逐个编排每个存储库的命令,使存储库之间相同的命令相差t2个时钟数目,使所有的命令都控制在总时钟周期内,超过总时钟周期范围的,就返回到控制命令表的前面,向后逐个找空闲的时钟周期,如果当前编排的命令和已经安排的存储库的命令位置冲突,将已安排的存储库的命令向后挪动一个时钟位置;步骤5、按照控制命令表控制SDRAM读写。进一步地,所述提高SDRAM数据传输效率的方法,还包括控制命令表编排完后,进行微调,以配合FPGA的时序关键路径要求。所述微调是根据FPGA电路设计确定每个命令占用的时钟数目,对于某个命令,当电路一个时钟内不能提供运算结果,那么就再加一个时钟的时间处理,把整体的控制命令表处理周期增加一个时钟。进一步地,所述步骤3包括步骤步骤3. I、首先确定库存储库O的命令表,第一个时钟位置放置激活命令,然后向后偏移SDRAM芯片参数允许的激活命令与读/写命令之间最小时钟数目,放置读或写命令,接着继续向后偏移SDRAM芯片参数允许的读或写到关闭的时间,放置关闭命令;步骤3. 2、在控制命令表内增加存储库I的命令。在存储库O的激活命令向后偏移t2时钟周期,放置存储库I的激活命令,依次类推,在存储库O的读或写命令向后偏移t2时钟周期放置存储库I的读或写命令,最后放置关闭命令;步骤3. 3、依次类推,确定所有存储库的命令编排,原则上要求所有的命令都控制在总时钟周期内,超过总时钟周期范围的,就返回到控制命令表的前面,向后逐个找空闲的时钟周期,如果当前编排的命令和已经安排的存储库的命令位置冲突,将已安排的存储库的命令向后挪动一个时钟位置。其中,所述当前编排的命令和已经安排的存储库的命令位置冲突时,如果tl的值大于t2与存储库数目的乘积,将已安排的存储库的命令向后挪动一个时钟位置,相应的总周期数增加一个时钟周期;如果tl的值小于t2与存储库数目的乘积,将已安排的存储库的命令向后挪动,总周期数不变,但挪动的数目不能超过总周期数与tl的差。、
其中,所述11为激活命令时间,读或写到关闭时间,关闭时间的和。其中,所述SDRAM芯片參数允许的激活命令与读/写命令之间最小时钟数目为tRCD与AL的差,其中tRCD为行寻址到列寻址的延迟,AL为附加反应时间。其中,所述SDRAM芯片參数允许的读或写到关闭的时间具体是指实际的读或写到关闭时间与芯片參数tRAS两者间的大值,所述tRAS是芯片激活至关闭时间。本发明的有益效果是FPGA对DDR2 SDRAM的数据处理命令根据时钟统ー编排,确定每个时钟对应的命令,编排的策略是首先找到读或写周期的最短时间,时间越短,效率越高,最后整个命令表的整个时间周期,接近DDR2 SDRAM允许的最短时间,保证了数据处理效率。命令表把命令有规律的流程化,简化了设计组合,減少了产生问题的可能性。同吋,配合FPGA的时序关键路径要求,允许微调命令表,増加了应用的灵活性。排除DDR2SDRAM周期性的自刷新影响,单纯的DDR2SDRAM的4个bank循环读效率可以达到100%,单纯的DDR2 SDRAM的4个bank循环写效率可以达到80%。


图I为本发明提高SDRAM数据传输效率的方法流程图;图2为根据本发明方法确立的具体应用的读命令表;图3为根据本发明方法确立的具体应用的写命令表。
具体实施例方式下面结合附图和实施例对本发明技术方案做进ー步详细说明,以下实施例不构成对本发明的限定。本发明涉及FPGA来控制DDR2 SDRAM的具体应用方法,在本实施例中具体应用的DDR2 SDRAM芯片规格及配置如下Speed Grade (速度等级)37E ;存储库Bank数目4;CAS latency (读命令到数据输出的时间对应的时钟数目,简称CL) :CL=4 ;Posted CAS additive latency (附加反应时间,简称 AL) :AL=3 ;Burst Length (每次读或写命令对应的能够访问的最大的DDR2SDRAM列数目,简称突发长度BL) BL=8 ;行寻■址到列寻■址的延迟tRCD (RAS to CAS Delay) : 15ns ;读命令和关闭命令之间的时间间隔tRTP(Read to Precharge) :7.5ns;激活至关闭时间tRAS (Active to Precharge Delay) :40ns ;关闭tRP(RAS Precharge Time) 15ns ; FPGA和DDR2 SDRAM时钟工作频率可以达到250MHZ,时钟周期时间tCK为4ns。每个DDR2系列的芯片都会有规定的性能參数,以上述的37E系列芯片为例,它的tRCD(ns)规定是15ns,也就是说同一 bank,进行active命令后,最少15ns后才能发起读写命令,如果我们的FPGA的工作频率是250MHZ,每个时钟周期是4ns,那么最少要4个时钟(4X4=16ns>15ns),才可以发起读或者写命令。为了体现灵活性,DDR2芯片的读写命令可以在tRCD (ns)的时间还没有到的时候发送,这就需要在DDR2芯片初始化的时候,设置提前具体几个时钟数目,这个 时钟数目值称为AL。本实施例中采用的AL值设置为3,也就是说,本来需要4个时钟后,才可以发送读写命令,现在可以在I个时钟后发送读写命令。也就是说本实施例选用的DDR2 SDRAM芯片参数允许的激活命令与读/写命令之间最小时钟数目为I。总之芯片参数允许的最小时钟数目取决于选定的DDR2芯片,和DDR2初始化配置的AL,不过一旦时钟和DDR2芯片确定后,同时DDR2初始化完成后,这个芯片参数允许的最小时钟数目就固定了。本实施例设计为I个时钟,也就是active后就可以直接进行读写命令。本发明用FPGA控制DDR2 SDRAM提高数据传输效率的方法流程如图I所示,包括步骤步骤101、选定将要采用的SDRAM芯片,根据芯片参数,确定单次完成突发长度读或写操作命令需要的最小时钟数目,定义为tl。步骤102、根据芯片单个突发长度对应的时钟数目,定义为t2。步骤103、确定总周期,如果tl的值大于t2和bank数目的乘积,即tl>(t2*bank个数),那么总周期是tl,如果tl的值大于t2和bank数目的乘积,即tl> (t2*bank个数),那么总周期是t2*bank个数。步骤104、初步编排控制命令表,表里面每一个位置占用一个时钟周期,首先确定bankO的命令表。第一个时钟位置放置active命令,然后向后偏移DDR2 SDRAM芯片参数允许的激活命令与读/写命令之间最小时钟数目,放置read或write命令。接着继续向后偏移DDR2 SDRAM芯片参数允许的读/写至关闭最小时钟数目,放置precharge命令。在控制命令表内增加bankl的命令。在bankO的active命令向后偏移t2时钟周期,放置bankl的active命令。依次类推,在bankO的read或write命令向后偏移t2时钟周期放置bankl的read或write命令,最后放置precharge命令。依次类推,确定所有bank的命令编排。原则上要求所有的命令都控制在总时钟周期内。超过总时钟周期范围的,就返回到控制命令表的前面,向后逐个找空闲的时钟周期。另外,如果当前编排的命令和已经安排的bank的命令位置冲突,将已经安排的bank的命令向后挪动一个时钟位置。这样总周期会增加I个时钟。如果tl的值大于t2和bank数目的乘积,即tl>(t2*bank个数),向后挪动一个时钟位置会使总周期数增加一个时钟周期,如果tl的值小于t2和bank数目的乘积,即tl〈 (t2*bank个数),编排首个bank时,最后的precharge命令可以向后挪动,而不影响总周期数,但挪动的数目不能超过(t2*bank个数)-tl。步骤105、FPGA按照控制命令表控制SDRAM读写,实现高效率的数据传输。具体地,读控制命令表编排如图2所示。一次完整的命令包括激活(active),读/ 写(read 或 write),关闭(precharge)。首先根据 DDR2 SDRAM 参数,确定 DDR2 SDRAM 的read命令的最小周期,按照下述公式tl=active+max(tRAS, (AL+BL/2+max(tRTP or 2CK) _2CK))+tRP其中CK为时钟周期,计算结果为15个时钟周期,即tl等于15 ;本实施例BurstLength是8,需要4个时钟,t2为4。
由于4个库的单个突发长度的读写周期为16,即t2*4>tl,所以确定总周期为16个时钟。首先确定bankO的命令表。第一个时钟放置bankO的active命令,第二个时钟放read命令,然后选择max (tRAS, (AL+BL/2+max (tRTP or 2CK) - 2CK)放置关闭命令,因为tRAS为10,所以precharge命令放到第^ 个时钟;然后确定bankl的命令表。第五个时钟放置bankl的active命令,第六个时钟放read命令,precharge命令放到第十五个时钟;然后确定bank2的命令表。第九个时钟放置bank2的active命令,第十个时钟放read命令,第十个时钟放bankl的read命令,第三个时钟放bank2的precharge命令。
依次类推,确定bank3的命令表。具体地,写控制命令表编排如图3所示,对于写write命令的最小周期,按照下述公式tl=l+max (tRAS, (AL+CL+BL/2+tffR) +tRP其中,tWR为写4个时钟,计算出tl为20。由于tl=20> (t2*4)=16,因此确定写控制命令表总周期是20。首先确定bankO的命令表。第一个时钟位置放置active命令。向后偏移DDR2SDRAM芯片參数允许的激活命令与读/写命令之间最小时钟数目计算是I个时钟周期,在第二个时钟,放置write命令。后偏移DDR2SDRAM芯片參数允许的写至关闭最小时钟数目,根据max (tRAS, (AL+CL+BL/2+tffR),是15个时钟周期,所以在第十六个时钟放置precharge命令。这样,bankO的命令编写完毕。继续确定bankl的命令表,在bankO的active命令向后偏移t2时钟周期,t2是4个时钟周期,因此,从第一个时钟向后移动4个时钟周期,在第五个时钟,放置active命令,同样,write命令和precharge命令都向后移动4个时钟周期,bankO的write命令和precharge命令在第二个和第十六个时钟,相应的bankl的write命令和precharge命令,放置在第六个和第二十个。继续确定bank2的命令表,和bankl的命令表类似。这里的不同是在放置bank2的precharge命令时,需要放到第二十四个时钟,超过了总周期tl,根据前面的规则,超过tl范围的,就返回到控制命令表的前面,向后逐个找空闲的时钟周期,这样就可以从命令表的位置逐步查找,确定第四个时钟放置bank2的precharge命令。继续确定bank3的命令表,和bank2的命令表类似。通常在具体电路设计中,第一个时钟运算的判决结果确定好以后,第二个时钟开始时必须要拿到第一个时钟处理的結果,才能进行判決,依次类推,每ー时刻的电路必须拿到上ー时钟的运算結果。如果要求时钟频率比较高,有些电路可能不能及时提供结果,就可以做ー些优化,当电路ー个时钟内不能提供运算结果,那么就再加ー个时钟的时间处理,这样,该电路需要两个时钟来处理原来一个时钟处理的事情,这样就减小了设计的压力。当然,这样做会把整体的处理周期増加一个时钟,效率也相应降低些。为了提高效率,本发明的目标是在20个时钟内把上述的命令完成,如果实现有困难,就把总目标放宽,21,22,23个等,比较差的情况,是40个时钟完成,这个时候效率降低了一半,当然,设计难度就降低很多。
排除DDR2 SDRAM周期性的自刷新影响,单纯的DDR2 SDRAM的4个bank循环读效率可以达到100%。读命令周期表建立完成后,写命令周期表建立方法类似。单纯的DDR2SDRAM的4个bank循环写效率可以达到80%。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的一般技术人员来说,本发明还可以有各种更改和变化。在不脱离本发明原 理的前提下,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种提高SDRAM数据传输效率的方法,应用于采用现场可编程阵列FPGA控制双倍速率同步动态随机存储器DDR2 SDRAM的读写操作,其特征在于,包括步骤如下 步骤I、选定将要采用的SDRAM芯片,根据芯片参数,确定完成单个突发长度读或写操作命令需要的最小时钟数目,定义为tl ; 步骤2、根据芯片单个突发长度对应的时钟数目,定义为t2 ; 步骤3、确定总周期,如果tl的值大于t2与SDRAM芯片存储库数目的乘积,那么总周期是tl,否则总周期是t2与存储库数目的乘积; 步骤4、根据总周期数,编排控制命令表,从第一个时钟开始,逐个编排每个存储库的命令,使存储库之间相同的命令相差t2个时钟数目,使所有的命令都控制在总时钟周期内,超过总时钟周期范围的,就返回到控制命令表的前面,向后逐个找空闲的时钟周期,如果当前编排的命令和已经安排的存储库的命令位置冲突,将已安排的存储库的命令向后挪动一个时钟位置; 步骤5、按照控制命令表控制SDRAM读写。
2.根据权利要求I所述的提高SDRAM数据传输效率的方法,其特征在于,所述提高SDRAM数据传输效率的方法,还包括 控制命令表编排完后,进行微调,以配合FPGA的时序关键路径要求。
3.根据权利要求2所述的提高SDRAM数据传输效率的方法,其特征在于,所述微调是根据FPGA电路设计确定每个命令占用的时钟数目,对于某个命令,当电路一个时钟内不能提供运算结果,那么就再加一个时钟的时间处理,把整体的控制命令表处理周期增加一个时钟。
4.根据权利要求I所述的提高SDRAM数据传输效率的方法,其特征在于,所述步骤3包括步骤 步骤3. I、首先确定库存储库O的命令表,第一个时钟位置放置激活命令,然后向后偏移SDRAM芯片参数允许的激活命令与读/写命令之间最小时钟数目,放置读或写命令,接着继续向后偏移SDRAM芯片参数允许的读或写到关闭的时间,放置关闭命令; 步骤3. 2、在控制命令表内增加存储库I的命令,在存储库O的激活命令向后偏移t2时钟周期,放置存储库I的激活命令,依次类推,在存储库O的读或写命令向后偏移t2时钟周期放置存储库I的读或写命令,最后放置关闭命令; 步骤3. 3、依次类推,确定所有存储库的命令编排,原则上要求所有的命令都控制在总时钟周期内,超过总时钟周期范围的,就返回到控制命令表的前面,向后逐个找空闲的时钟周期,如果当前编排的命令和已经安排的存储库的命令位置冲突,将已安排的存储库的命令向后挪动一个时钟位置。
5.根据权利要求I或4所述的提高SDRAM数据传输效率的方法,其特征在于,所述当前编排的命令和已经安排的存储库的命令位置冲突时,如果tl的值大于t2与存储库数目的乘积,将已安排的存储库的命令向后挪动一个时钟位置,相应的总周期数增加一个时钟周期;如果tl的值小于t2与存储库数目的乘积,将已安排的存储库的命令向后挪动,总周期数不变,但挪动的数目不能超过总周期数与tl的差。
6.根据权利要求I所述的提高SDRAM数据传输效率的方法,其特征在于,所述tl为激活命令时间,读或写到关闭时间,关闭时间的和。
7.根据权利要求4所述的提高SDRAM数据传输效率的方法,其特征在于,所述SDRAM芯片参数允许的激活命令与读/写命令之间最小时钟数目为tRCD与AL的差,其中tRCD为行寻址到列寻址的延迟,AL为附加反应时间。
8.根据权利要求4所述的提高SDRAM数据传输效率的方法,其特征在于,所述SDRAM芯片参数允许的读或写到关闭的时间具体是指实际的读或写到关闭时间与芯片参数tRAS两者间的大值,所述tRAS是芯片激活至关闭时间。
全文摘要
本发明公开了一种提高SDRAM数据传输效率的方法,应用于采用现场可编程阵列FPGA控制双倍速率同步动态随机存储器DDR2SDRAM的读写操作,首先选定采用的SDRAM芯片,确定读或写命令周期,然后依次编排命令,实现命令周期内时序得到最高的利用,最后由FPGA控制进行数据的高速传输。采用本方法提高了数据处理效率,降低了DDR2SDRAM的设计难度及产生问题的可能性。
文档编号G06F12/02GK102708059SQ201210144990
公开日2012年10月3日 申请日期2012年5月10日 优先权日2012年5月10日
发明者周其仲, 张俊, 梁凯平, 王文华 申请人:Ut斯达康通讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1