CN107393578B - 一种内存训练的方法和装置 - Google Patents
一种内存训练的方法和装置 Download PDFInfo
- Publication number
- CN107393578B CN107393578B CN201610324007.8A CN201610324007A CN107393578B CN 107393578 B CN107393578 B CN 107393578B CN 201610324007 A CN201610324007 A CN 201610324007A CN 107393578 B CN107393578 B CN 107393578B
- Authority
- CN
- China
- Prior art keywords
- training
- value
- memory
- write
- memory controller
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1093—Input synchronization
-
- 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
- G06F13/1689—Synchronisation and timing concerns
Abstract
本发明适用于芯片技术领域,提供了一种内存训练的方法和装置,旨在解决现有技术中内存训练得到的满足训练要求的训练值裕量小,不满足批量化生产的问题。所述方法包括:对内存控制器进行初始化;对内存控制器参数进行内存训练,找到满足训练要求的所述内存控制器参数的训练值集合后完成所述内存训练;在所述训练值集合中选取最佳值,作为所述内存控制器参数的设置值。通过本发明的技术方案,实现了找到满足训练要求的内存控制器参数的训练值集合,并在该训练值集合中选取一个最佳值作为内存控制器参数的设置值,从而保证了内存控制器参数值的裕量最大,以满足不同品牌的内存兼容性,实现批量化生产。
Description
技术领域
本发明涉及芯片领域,尤其涉及一种内存训练的方法和装置。
背景技术
在实际PCB(Printed Circuit Board,印刷电路板)布线中,由于信号线阻抗差异和走线无法做到完全等长,往往会导致信号传输的时间不一致,1000密耳(mil)大约会产生160至180皮秒(picosecond),为了保证时序的完整性,使信号的建立和保持时间窗口一致,需要进行内存训练。
内存训练就是调整内存控制器参数的值,使信号的建立和保持时间充足,例如调整ADDR/CMD信号对CLK,以及DQ信号对DQS的延时等。
目前,在我们国产龙芯平台上,内存初始参数是基于龙芯的公板和公板上挑选适配的内存条经过算法计算得出的。其内存训练过程是找到第一个满足训练要求的值就退出内存训练。实际上这个满足训练要求的值的裕量很小,不满足批量化生产。
发明内容
本发明的目的在于提供一种内存训练的方法和装置,旨在解决现有技术中内存训练得到的满足训练要求的训练值裕量小,不满足批量化生产的问题。
本发明的第一方面,提供一种内存训练的方法,包括:
对内存控制器进行初始化;
对内存控制器参数进行内存训练,找到满足训练要求的所述内存控制器参数的训练值集合后完成所述内存训练;
在所述训练值集合中选取最佳值,作为所述内存控制器参数的设置值。
本发明的第二方面,提供一种内存训练的装置,包括:
初始化模块,用于对内存控制器进行初始化;
内存训练模块,用于对内存控制器参数进行内存训练,找到满足训练要求的所述内存控制器参数的训练值集合后完成所述内存训练;
最佳值选取模块,用于在所述训练值集合中选取最佳值,作为所述内存控制器参数的设置值。
本发明与现有技术相比存在的有益效果是:通过对内存控制器参数进行循环多次内存训练,从而找到满足训练要求的内存控制器参数的训练值集合,并在该训练值集合中选取一个最佳值作为内存控制器参数的设置值,从而保证了内存控制器参数值的裕量最大,以满足不同品牌的内存兼容性,实现批量化生产。
附图说明
图1是本发明实施例一提供的一种内存训练的方法的流程图;
图2是本发明实施例二提供的一种内存训练的方法的流程图;
图3是本发明实施例三提供的一种内存训练的方法的流程图;
图4是本发明实施例四提供的一种内存训练的装置的结构示意图;
图5是本发明实施例五提供的一种内存训练的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下结合具体附图对本发明的实现进行详细的描述。
实施例一:
图1是本发明实施例一提供的一种内存训练的方法的流程图,具体包括步骤S101至S103,详述如下:
S101、对内存控制器进行初始化。
具体地,对内存控制器进行初始化处理,使得内存控制器的所有寄存器的值被设置为初始默认值。
S102、对内存控制器参数进行内存训练,找到满足训练要求的内存控制器参数的训练值集合后完成内存训练。
具体地,对内存控制器参数进行循环多次的内存训练,该内存训练是通过调整内存控制器参数的值,找到能使信号的建立和保持时间充足的那些内存控制器参数的值作为训练值,并将所有找到的训练值归入训练值集合后,完成内存训练。
进一步地,内存控制器参数可以是写DQS(Bi-directional Data Strobe,双向数据控制引脚)延迟值。DQS用于内存和内存控制器之间的信号同步,由数位线(DQ,DataInput/Output)信号发送端发出DQS,DQ信号接收端根据DQS的上、下沿来触发数据的接收。
S103、在训练值集合中选取最佳值,作为内存控制器参数的设置值。
具体地,在找到的训练值集合中选取一个最佳值,作为内存控制器参数的设置值。
进一步地,该最佳值可以是与中间值的绝对差值最小的训练值,其中,中间值是指将得到的训练值集合中的写DQS延迟值的训练值以递增或者递减的次序依次排列时,如果训练值的数目是奇数,次序位于中间的那个训练值为中间值;如果训练值的数目是偶数,次序位于中间的两个训练值的平均值为中间值。
本实施例中,通过对内存控制器参数进行循环多次内存训练,从而找到满足训练要求的内存控制器参数的训练值集合,并在该训练值集合中选取一个最佳值作为内存控制器参数的设置值,从而保证了内存控制器参数值的裕量最大,以满足不同品牌的内存兼容性,实现批量化生产。
实施例二:
图2是本发明实施例二提供的一种内存训练的方法的流程图,具体包括步骤S201至S206,详述如下:
S201、对内存控制器进行初始化。
具体地,对内存控制器进行初始化处理,使得内存控制器的所有寄存器的值被设置为初始默认值。
S202、设置写DQS延迟值的初始训练值。
具体地,写DQS延迟值为需要进行内存训练的内存控制器参数,写DQS延迟值的初始训练值可以设置为0,即从初始训练值为0开始进行内存训练。
S203、进入写入均衡模式,该写入均衡模式为能够发起对应的写入均衡请求。
写入均衡(Write Leveling)模式为能够发起对应的写入均衡请求,从而进行内存训练。
具体地,通过设置和采样对应寄存器的值进入Write Leveling模式。
S204、发起写入均衡请求进行一次内存训练,当完成写入均衡请求时,对反馈寄存器进行采样,仅当反馈寄存器的值从0变为1时,本次内存训练成功,并记录本次内存训练的写DQS延迟值的训练值,否则本次内存训练失败。
具体地,进入Write Leveling模式后,通过设置对应寄存器的值发起写入均衡请求,即Write Leveling请求,并在完成一次Write Leveling请求后对反馈寄存器进行采样。
只有当反馈寄存器的值从0变为1,例如对反馈寄存器第一次采样的值为0,第二次采样的值为1时,说明内存训练是成功的,此时记录下本次成功的内存训练的写DQS延迟值的训练值;否则,其他情况都认为本次内存训练失败,即对反馈寄存器采样的值一直为1或者一直为0。
S205、当本次内存训练失败时,如果上一次内存训练成功,则内存训练结束,否则继续进行下一次内存训练,写DQS延迟值的训练值为本次内存训练之前累计完成内存训练的次数与初始训练值的和,所有内存训练成功的写DQS延迟值的训练值组成写DQS延迟值的训练值集合。
具体地,当本次内存训练失败时,如果上一次内存训练是成功的,即上一次内存训练的写DQS延迟值的训练值不为0,则结束全部内存训练,否则,即本次内存训练之前的内存训练都还没有成功过,继续进行下一次内存训练。
写DQS延迟值的训练值为本次内存训练之前累计完成内存训练的次数与初始训练值的和,所有内存训练成功的写DQS延迟值的训练值组成写DQS延迟值的训练值集合。
S206、在训练值集合中选取与中间值的绝对差值最小的训练值作为内存控制器参数的设置值。
具体地,中间值是指将得到的训练值集合中的写DQS延迟值的训练值以递增或者递减的次序依次排列时,如果训练值的数目是奇数,次序位于中间的那个训练值为中间值;如果训练值的数目是偶数,次序位于中间的两个训练值的平均值为中间值。
在训练值集合中,与中间值的绝对差值最小的训练值为最佳值,可以作为写DQS延迟值的设置值。
本实施例中,通过写入均衡请求对写DQS延迟值进行循环多次内存训练,当反馈寄存器的值从0变为1时认为本次内存训练成功,并记录本次内存训练的写DQS延迟值的训练值,否则认为本次内存训练失败并继续进行下一次内存训练,直到本次内存训练失败并且上一次内存训练成功,则结束内存训练,从而找到满足训练要求的写DQS延迟值的训练值集合,并在该训练值集合中选取与中间值的绝对差值最小的训练值作为写DQS延迟值的设置值,保证了内存控制器参数值即写DQS延迟值的裕量最大,以满足不同品牌的内存兼容性,实现批量化生产。
实施例三:
图3是本发明实施例三提供的一种内存训练的方法的流程图,具体包括步骤S301至S308,详述如下:
S301、对内存控制器进行初始化。
具体地,对内存控制器进行初始化处理,使得内存控制器的所有寄存器的值被设置为初始默认值。
需要说明的是,本实施例中涉及到的具体寄存器均基于国产龙芯平台。
S302、设置写DQS延迟值的初始训练值。
具体地,写DQS延迟值为需要进行内存训练的内存控制器参数,写DQS延迟值的初始训练值可以设置为0,即从初始训练值为0开始进行内存训练。
S303、设置均衡模式使能寄存器的值为1,使得对内存控制器开启写入均衡模式。
具体地,在国产龙芯平台中,均衡模式使能寄存器即Lv1_mode,初始值为0,表示处于正常功能模式。将Lv1_mode的值设置为1,表示开启WriteLeveling模式。
S304、对写入均衡准备寄存器进行持续采样,当写入均衡准备寄存器的值为1时,进入写入均衡模式。
具体地,写入均衡准备寄存器即Lv1_ready,初始值为0,当步骤S303开启WriteLeveling模式后,需要对Lv1_ready进行持续采样,如果Lv1_ready的值为0则继续等待,如果Lv1_ready的值为1,则表示可以对内存控制器发起Write Leveling请求,即进入WriteLeveling模式。
S305、设置寄存器Lv1_req的值为1。
当进入Write Leveling模式后,设置Lv1_req寄存器的值为1,表示向外发起写入均衡请求,即Write Leveling请求。
S306、采样Lv1_done寄存器,如果Lv1_done的值为0,则继续等待,直到Lv1_done的值为1为止。
当向外发起Write Leveling请求后,通过对Lv1_done寄存器进行采样来判断Write Leveling请求是否完成,当Lv1_done的值为1,则表示完成了一次Write Leveling请求,如果Lv1_done的值为0,则继续等待并持续采样,直到Lv1_done的值为1时,停止对Lv1_done寄存器的采样。
S307、对反馈寄存器进行采样,如果反馈寄存器的值为0,则执行步骤S310,否则继续执行步骤S308。
反馈寄存器具体为Lv1_resp_x,如果采样到的反馈寄存器的值为0,则继续对反馈寄存器进行采样,否则采样到的反馈寄存器的值为1,表示本次内存训练失败,继续执行步骤S308。
S308、本次内存训练失败,判断上一次内存训练是否成功,如果成功则执行步骤S315,否则继续执行步骤S309。
执行到此步骤,说明在本次内存训练中,对反馈寄存器采样的值一直为1,没有采样到0值,内存训练失败。
如果上一次内存训练成功,即上一次内存训练所记录的写DQS延迟值的训练值不为0,则认为内存训练结束,执行步骤S315,否则继续执行步骤S309。
S309、内存训练累计完成次数加1,返回步骤S305。
本次内存训练失败,将内存训练累计完成次数加1,并返回步骤S305重新发起写入均衡请求,进行下一次的内存训练。
S310、对反馈寄存器继续进行采样,如果反馈寄存器的值为1则执行步骤S314,否则继续执行步骤S311。
执行到此步骤,说明对反馈寄存器已经采样到0值。继续对反馈寄存器进行采样,如果反馈寄存器的值为1,则说明反馈寄存器的值从0变为1,此时认为本次内存训练成功,执行步骤S314,否则反馈寄存器的值为0,说明采样到的反馈寄存器的值一直为0,本次内存训练失败,继续执行步骤S311。
S311、本次内存训练失败,判断上一次内存训练是否成功,如果成功则执行步骤S315,否则继续执行步骤S312。
执行到此步骤,说明在本次内存训练中,对反馈寄存器采样的值一直为0,没有采样到1值,内存训练失败。
如果上一次内存训练成功,即上一次内存训练所记录的写DQS延迟值的训练值不为0,则认为内存训练结束,执行步骤S315,否则继续执行步骤S312。
S312、内存训练累计完成次数加1。
本次内存训练失败,将内存训练累计完成次数加1。
S313、发起并完成一次写入均衡请求,返回步骤S310。
重新发起并完成一次写入均衡请求,返回步骤S310进行下一次的内存训练。
需要说明的是,发起并完成一次写入均衡请求可以按照步骤S305至步骤S306的过程实现,即设置寄存器Lv1_req的值为1,并采样Lv1_done寄存器,如果Lv1_done的值为0,则继续等待,直到Lv1_done的值为1为止。
S314、本次内存训练成功,记录本次内存训练的写DQS延迟值的训练值,返回步骤S305。
执行到此步骤,说明反馈寄存器的值从0变为1,本次内存训练成功。
记录本次内存训练的写DQS延迟值的训练值,写DQS延迟值的训练值为本次内存训练之前累计完成内存训练的次数与初始训练值的和。
返回步骤S305继续进行下一次内存训练。
S315、内存训练结束,所有内存训练成功的写DQS延迟值的训练值组成写DQS延迟值的训练值集合。
执行到此步骤,说明本次内存训练失败并且上一次内存训练成功,即上一次内存训练记录的写DQS延迟值的训练值不为0,内存训练结束。
所有内存训练成功记录的写DQS延迟值的训练值,组成写DQS延迟值的训练值集合。
S316、在训练值集合中选取与中间值的绝对差值最小的训练值作为内存控制器参数的设置值。
具体地,中间值是指将得到的训练值集合中的写DQS延迟值的训练值以递增或者递减的次序依次排列时,如果训练值的数目是奇数,次序位于中间的那个训练值为中间值;如果训练值的数目是偶数,次序位于中间的两个训练值的平均值为中间值。
在训练值集合中,与中间值的绝对差值最小的训练值为最佳值,可以作为写DQS延迟值的设置值。
为了清楚解释本实施例,以下通过一个具体的应用说明本实施例内存训练的过程。
假设写DQS延迟值的初始训练值为1,从1开始进行内存训练;用n表示内存训练累计完成次数,n的初始值为0;用W0表示初始训练值,W0=1;用Wrdqs表示写DQS延迟值的训练值,Wrdqs的初始值为0。
第一次内存训练:训练失败,n=1,Wrdqs=0;
第二次内存训练:训练失败,n=2,Wrdqs=0;
第三次内存训练:训练成功,n=3,Wrdqs=W0+2=3;
第四次内存训练:训练成功,n=4,Wrdqs=W0+3=4;
第五次内存训练:训练成功,n=5,Wrdqs=W0+4=5;
第六次内存训练:训练失败,n=6,Wrdqs不为0,内存训练结束。
在第三次内存训练时,由于内存训练成功,并且本次内存训练之前累计完成内存训练次数为2,初始训练值W0为1,因此Wrdqs的计算结果为3。在第六次内存训练时,由于内存训练失败,并且第五次内存训练是成功的,也就是说第五次内存训练记录的Wrdqs不为0,因此内存训练结束。根据内存训练的结果得到Wrdqs的集合为{3,4,5},中间值为4,与中间值的绝对差值最小的训练值是4,因此4作为写DQS延迟值的设置值。
本实施例中,通过写入均衡请求对写DQS延迟值进行循环多次内存训练,当反馈寄存器的值从0变为1时认为本次内存训练成功,并记录本次内存训练的写DQS延迟值的训练值,否则认为本次内存训练失败并继续进行下一次内存训练,直到本次内存训练失败并且上一次内存训练成功,则结束内存训练,从而找到满足训练要求的写DQS延迟值的训练值集合,并在该训练值集合中选取与中间值的绝对差值最小的训练值作为写DQS延迟值的设置值,保证了内存控制器参数值即写DQS延迟值的裕量最大,以满足不同品牌的内存兼容性,实现批量化生产。
实施例四:
图4是本发明实施例四提供的一种内存训练的装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图4示例的用于内存训练的装置可以是前述实施例一提供的用于内存训练的方法的执行主体。图4示例的用于内存训练的装置主要包括:初始化模块41、内存训练模块42和最佳值选取模块43。各功能模块详细说明如下:
初始化模块41,用于对内存控制器参数进行初始化;
内存训练模块42,用于对内存控制器参数进行内存训练,找到满足训练要求的内存控制器参数的训练值集合后完成内存训练;
最佳值选取模块43,用于在训练值集合中选取最佳值,作为内存控制器参数的设置值。
本实施例提供的用于内存训练的装置中各模块实现各自功能的过程,具体可参考前述图1所示实施例的描述,此处不再赘述。
从上述图4示例的用于内存训练的装置可知,本实施例中,通过对内存控制器参数进行循环多次内存训练,从而找到满足训练要求的内存控制器参数的训练值集合,并在该训练值集合中选取一个最佳值作为内存控制器参数的设置值,从而保证了内存控制器参数值的裕量最大,以满足不同品牌的内存兼容性,实现批量化生产。
实施例五:
图5是本发明实施例五提供的一种内存训练的装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图5示例的用于内存训练的装置可以是前述实施例二和实施例三提供的用于内存训练的方法的执行主体。图5示例的用于内存训练的装置主要包括:初始化模块51、内存训练模块52和最佳值选取模块53。各功能模块详细说明如下:
初始化模块51,用于对内存控制器参数进行初始化;
内存训练模块52,用于对内存控制器参数进行内存训练,找到满足训练要求的内存控制器参数的训练值集合后完成内存训练;
最佳值选取模块53,用于在训练值集合中选取最佳值,作为内存控制器参数的设置值。
进一步地,内存训练模块52包括:
初始值设置子模块521,用于设置写DQS延迟值的初始训练值;
均衡模式进入子模块522,用于进入写入均衡模式,该写入均衡模式为能够发起对应的写入均衡请求;
单次训练处理子模块523,用于发起写入均衡请求进行一次内存训练,当完成写入均衡请求时,对反馈寄存器的值进行采样,仅当反馈寄存器的值从0变为1时,本次内存训练成功,并记录本次内存训练的写DQS延迟值的训练值,否则本次内存训练失败;
训练结束判断子模块524,用于当本次内存训练失败时,如果上一次内存训练成功,则内存训练结束,否则继续进行下一次内存训练,写DQS延迟值的训练值为本次内存训练之前累计完成内存训练的次数与初始训练值的和,所有内存训练成功的写DQS延迟值的训练值组成写DQS延迟值的训练值集合。
进一步地,均衡模式进入子模块522还用于:
设置均衡模式使能寄存器的值为1,使得对内存控制器开启写入均衡模式;
对写入均衡准备寄存器的值进行持续采样,当写入均衡准备寄存器的值为1时,进入写入均衡模式。
进一步地,最佳值选取模块53包括:
中间值选取子模块531,用于在训练值集合中选取与中间值的绝对差值最小的训练值作为内存控制器参数的设置值,中间值是指将得到的训练值集合中的写DQS延迟值的训练值以递增或者递减的次序依次排列时,如果训练值的数目是奇数,次序位于中间的那个训练值为中间值;如果训练值的数目是偶数,次序位于中间的两个训练值的平均值为中间值。
本实施例提供的用于内存训练的装置中各模块实现各自功能的过程,具体可参考前述图2和图3所示实施例的描述,此处不再赘述。
从上述图5示例的用于内存训练的装置可知,本实施例中,通过写入均衡请求对写DQS延迟值进行循环多次内存训练,当反馈寄存器的值从0变为1时认为本次内存训练成功,并记录本次内存训练的写DQS延迟值的训练值,否则认为本次内存训练失败并继续进行下一次内存训练,直到本次内存训练失败并且上一次内存训练成功,则结束内存训练,从而找到满足训练要求的写DQS延迟值的训练值集合,并在该训练值集合中选取与中间值的绝对差值最小的训练值作为写DQS延迟值的设置值,保证了内存控制器参数值即写DQS延迟值的裕量最大,以满足不同品牌的内存兼容性,实现批量化生产。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每一个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同或者相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
值得注意的是,上述装置实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
本领域普通技术人员可以理解,实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种内存训练的方法,其特征在于,包括:
对内存控制器进行初始化;
对内存控制器参数进行内存训练,找到满足训练要求的所述内存控制器参数的训练值集合后完成所述内存训练;
在所述训练值集合中选取最佳值,作为所述内存控制器参数的设置值;
其中,所述内存控制器参数为写双向数据控制引脚DQS延迟值;
所述对内存控制器参数进行内存训练,找到满足训练要求的所述内存控制器参数的训练值集合后完成所述内存训练包括:
设置所述写双向数据控制引脚DQS延迟值的初始训练值;
进入写入均衡模式,所述写入均衡模式为能够发起对应的写入均衡请求;
发起所述写入均衡请求进行一次内存训练,当完成所述写入均衡请求时,对反馈寄存器进行采样,仅当所述反馈寄存器的值从0变为1时,本次内存训练成功,并记录所述本次内存训练的所述写双向数据控制引脚DQS延迟值的训练值,否则所述本次内存训练失败;
当所述本次内存训练失败时,如果上一次内存训练成功,则内存训练结束,否则继续进行下一次内存训练,所述写双向数据控制引脚DQS延迟值的训练值为所述本次内存训练之前累计完成内存训练的次数与所述初始训练值的和,所有所述内存训练成功的写双向数据控制引脚DQS延迟值的训练值组成所述写双向数据控制引脚DQS延迟值的训练值集合。
2.根据权利要求1所述的内存训练的方法,其特征在于,所述进入写入均衡模式包括:
设置均衡模式使能寄存器的值为1,使得对所述内存控制器开启写入均衡模式;
对写入均衡准备寄存器进行持续采样,当所述写入均衡准备寄存器的值为1时,进入写入均衡模式。
3.根据权利要求1所述的内存训练的方法,其特征在于,所述在所述训练值集合中选取最佳值,作为所述内存控制器参数的设置值包括:
在所述训练值集合中选取与中间值的绝对差值最小的训练值作为所述内存控制器参数的设置值。
4.一种内存训练的装置,其特征在于,包括:
初始化模块,用于对内存控制器进行初始化;
内存训练模块,用于对内存控制器参数进行内存训练,找到满足训练要求的所述内存控制器参数的训练值集合后完成所述内存训练;
最佳值选取模块,用于在所述训练值集合中选取最佳值,作为所述内存控制器参数的设置值;
其中,所述内存控制器参数为写双向数据控制引脚DQS延迟值;
所述内存训练模块包括:
初始值设置子模块,用于设置所述写双向数据控制引脚DQS延迟值的初始训练值;
均衡模式进入子模块,用于进入写入均衡模式,所述写入均衡模式为能够发起对应的写入均衡请求;
单次训练处理子模块,用于发起所述写入均衡请求进行一次内存训练,当完成所述写入均衡请求时,对反馈寄存器进行采样,仅当所述反馈寄存器的值从0变为1时,本次内存训练成功,并记录所述本次内存训练的所述写双向数据控制引脚DQS延迟值的训练值,否则所述本次内存训练失败;
训练结束判断子模块,用于当所述本次内存训练失败时,如果上一次内存训练成功,则内存训练结束,否则继续进行下一次内存训练,所述写双向数据控制引脚DQS延迟值的训练值为所述本次内存训练之前累计完成内存训练的次数与所述初始训练值的和,所有所述内存训练成功的写双向数据控制引脚DQS延迟值的训练值组成所述写双向数据控制引脚DQS延迟值的训练值集合。
5.根据权利要求4所述的内存训练的装置,其特征在于,所述均衡模式进入子模块还用于:
设置均衡模式使能寄存器的值为1,使得对所述内存控制器开启写入均衡模式;
对写入均衡准备寄存器进行持续采样,当所述写入均衡准备寄存器的值为1时,进入写入均衡模式。
6.根据权利要求4所述的内存训练的装置,其特征在于,所述最佳值选取模块包括:
中间值选取子模块,用于在所述训练值集合中选取与中间值的绝对差值最小的训练值作为所述内存控制器参数的设置值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610324007.8A CN107393578B (zh) | 2016-05-16 | 2016-05-16 | 一种内存训练的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610324007.8A CN107393578B (zh) | 2016-05-16 | 2016-05-16 | 一种内存训练的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107393578A CN107393578A (zh) | 2017-11-24 |
CN107393578B true CN107393578B (zh) | 2020-07-28 |
Family
ID=60338052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610324007.8A Active CN107393578B (zh) | 2016-05-16 | 2016-05-16 | 一种内存训练的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107393578B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102433040B1 (ko) * | 2017-12-12 | 2022-08-18 | 삼성전자주식회사 | 메모리 모듈, 메모리 시스템 및 메모리 모듈의 동작 방법 |
CN108646984B (zh) | 2018-05-16 | 2020-01-03 | 华为技术有限公司 | 一种dqs位置调整方法和装置 |
CN110007970A (zh) * | 2019-03-04 | 2019-07-12 | 湖北三江航天万峰科技发展有限公司 | 一种COMe板的内核启动时长优化方法 |
CN110941454A (zh) * | 2019-11-08 | 2020-03-31 | 山东超越数控电子股份有限公司 | 一种实现内存自适应的方法及系统 |
CN111190540B (zh) * | 2019-12-25 | 2021-06-04 | 晶晨半导体(上海)股份有限公司 | 内存接口写入均衡的控制方法及装置 |
CN111221582B (zh) * | 2020-01-02 | 2024-04-12 | 深圳中电长城信息安全系统有限公司 | 一种内存训练的方法及系统 |
KR20210136480A (ko) * | 2020-05-07 | 2021-11-17 | 삼성전자주식회사 | 프로세싱 장치가 실장된 메모리 모듈을 포함하는 컴퓨팅 시스템의 부팅 방법 |
CN112257363B (zh) * | 2020-10-30 | 2023-04-18 | 上海兆芯集成电路有限公司 | 内存的选择方法及装置 |
CN112596963B (zh) * | 2020-12-14 | 2024-05-03 | 成都海光集成电路设计有限公司 | 一种快速内存训练的方法及系统 |
CN112612608B (zh) * | 2020-12-16 | 2022-07-29 | 海光信息技术股份有限公司 | 一种内存训练的方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364425A (zh) * | 2007-08-08 | 2009-02-11 | 联发科技股份有限公司 | 存储器控制方法及其电路 |
CN102347081A (zh) * | 2010-07-30 | 2012-02-08 | 联芯科技有限公司 | 用于ddr控制器中dqs延迟的相位校准方法及装置 |
CN102637155A (zh) * | 2012-01-10 | 2012-08-15 | 江苏中科梦兰电子科技有限公司 | 通过训练加修正配置ddr3中数据选通信号延时的方法 |
CN102981781A (zh) * | 2012-10-15 | 2013-03-20 | 威盛电子股份有限公司 | 数据储存装置、储存介质控制器与控制方法 |
CN105371917A (zh) * | 2015-10-14 | 2016-03-02 | 国网浙江三门县供电公司 | 水位监测方法、装置和系统及排水控制方法、装置和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW559694B (en) * | 2002-06-21 | 2003-11-01 | Via Tech Inc | Method and system of calibrating the control delay time |
US7952945B2 (en) * | 2009-03-30 | 2011-05-31 | Cadence Design Systems, Inc. | Method and apparatus for determining write leveling delay for memory interfaces |
-
2016
- 2016-05-16 CN CN201610324007.8A patent/CN107393578B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364425A (zh) * | 2007-08-08 | 2009-02-11 | 联发科技股份有限公司 | 存储器控制方法及其电路 |
CN102347081A (zh) * | 2010-07-30 | 2012-02-08 | 联芯科技有限公司 | 用于ddr控制器中dqs延迟的相位校准方法及装置 |
CN102637155A (zh) * | 2012-01-10 | 2012-08-15 | 江苏中科梦兰电子科技有限公司 | 通过训练加修正配置ddr3中数据选通信号延时的方法 |
CN102981781A (zh) * | 2012-10-15 | 2013-03-20 | 威盛电子股份有限公司 | 数据储存装置、储存介质控制器与控制方法 |
CN105371917A (zh) * | 2015-10-14 | 2016-03-02 | 国网浙江三门县供电公司 | 水位监测方法、装置和系统及排水控制方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107393578A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107393578B (zh) | 一种内存训练的方法和装置 | |
US20170286330A1 (en) | Read training a memory controller | |
US10580476B2 (en) | Simulating a single data rate (SDR) mode on a dual data rate (DDR) memory controller for calibrating DDR memory coarse alignment | |
US9740556B2 (en) | Semiconductor memory apparatus and operating method thereof | |
KR102645688B1 (ko) | 온 다이 터미네이션 기능을 갖는 반도체 장치 | |
TWI271744B (en) | Semiconductor memory device having advanced data strobe circuit | |
US20140089573A1 (en) | Method for accessing memory devices prior to bus training | |
TW201907411A (zh) | 雙倍資料速率同步動態隨機存取記憶體(ddr sdram)資料選通信號校準 | |
US10297311B1 (en) | Systems and methods for memory protocol training | |
JP2009237678A (ja) | メモリコントローラデバイス、メモリコントローラデバイスの制御方法およびデータ受信デバイス | |
US20180366201A1 (en) | Semiconductor memory device | |
US10802721B2 (en) | Memory devices configured to latch data for output in response to an edge of a clock signal generated in response to an edge of another clock signal | |
US10127973B2 (en) | Training controller, and semiconductor device and system including the same | |
US20110185218A1 (en) | Adjustment of Write Timing Based on a Training Signal | |
US10192599B2 (en) | Semiconductor device | |
US9396774B1 (en) | CAS latency setting circuit and semiconductor memory apparatus including the same | |
US9543043B2 (en) | Method for testing array fuse of semiconductor apparatus | |
CN107180653A (zh) | 一种获取ddr odt参数的方法和装置 | |
JP6356837B1 (ja) | 半導体記憶装置および読出し方法 | |
JP2009015964A (ja) | 半導体集積回路装置 | |
WO2023134001A1 (zh) | 一种时钟电路、时钟对齐系统和时钟对齐方法 | |
TWI744105B (zh) | 運用於記憶體系統的多循環寫入均衡程序的處理方法 | |
US10623211B2 (en) | Voltage correction computations for memory decision feedback equalizers | |
US10867648B2 (en) | Memory system and operating method thereof | |
US20200252244A1 (en) | Memory decision feedback equalizer |
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 |