本发明涉及ddr内存控制器技术领域,尤其涉及一种ddr内存控制器的dq与dqs信号占空比的训练方法和系统。
背景技术:
ddrsdram(双倍速率同步动态随机存取存储器)一般习惯称为ddr,是一种数据传输速率为sdram存储器数据传输速率两倍的存储器。在ddr中,输入输出数据与时钟的上升沿和下降沿同步。
现有的ddr无法与cpu直接交换数据,需要通过内存控制器进行数据传输,因此内存控制器的读写速度直接决定了计算机系统的性能。内存控制器和ddr的接口电路如图1所示,其中phy表示物理层接口,iob表示输入输出缓冲电路。
随着ddrsdram性能的不断提升,要求工作在更高的数据传输速率,窗口的宽度也相应的不断减小,iob和phy的信号占空比精度需要不断提升。但是,这也导致dq与dqs信号的占空比失真越来越严重。dq与dqs占空比失真限制内存控制器的读写速度。
技术实现要素:
有鉴于此,本发明提供一种ddr内存控制器的dq与dqs信号占空比的训练方法和系统,能够解决dq与dqs信号占空比失真问题。
第一方面,本发明提供一种ddr内存控制器的dq与dqs信号占空比的训练方法,包括:
初始化第一占空比调整电路的第一占空比控制信号和第二占空比调整电路的第二占空比控制信号,以使所述第一占空比调整电路根据所述第一占空比控制信号调整dq信号的占空比,所述第二占空比调整电路根据所述第二占空比控制信号调整dqs信号的占空比;
根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
保持所述第二占空比控制信号不变,逐次调整所述第一占空比控制信号以使所述第一占空比调整电路改变dq信号的占空比,在每次调整所述第一占空比控制信号之后,根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口,直至dq眼图窗口不再变大;
记录当前最大的眼图窗口对应的最佳第一占空比控制信号以及当前最大的眼图窗口;
保持所述第一占空比调整电路输入所述最佳第一占空比控制信号,逐次调整所述第二占空比控制信号以使所述第二占空比调整电路改变dqs信号的占空比,在每次调整所述第二占空比控制信号之后,根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口,直至dq眼图窗口不再变大;
记录最终最大的眼图窗口对应的最佳第二占空比控制信号。
可选地,所述保持所述第二占空比控制信号不变,逐次调整所述第一占空比控制信号以使所述第一占空比调整电路改变dq信号的占空比,在每次调整所述第一占空比控制信号之后,根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口,直至dq眼图窗口不再变大包括:
第一次增大第一占空比控制信号;
根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
判断第一次增大第一占空比控制信号之后得到的dq眼图窗口是否大于此次增大第一占空比控制信号之前得到的dq眼图窗口;
若是,则再次增大第一占空比控制信号;
根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
判断再次增大第一占空比控制信号之后得到的dq眼图窗口是否大于此次增大第一占空比控制信号之前得到的dq眼图窗口;
若是,则返回再次增大第一占空比控制信号的步骤;
否则执行步骤:记录当前最大的眼图窗口对应的最佳第一占空比控制信号以及当前最大的眼图窗口。
可选地,还包括:
若第一次增大第一占空比控制信号之后得到的dq眼图窗口小于增大第一占空比控制信号之前的dq眼图窗口,则减小第一占空比控制信号;
根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
判断减小第一占空比控制信号之后得到的dq眼图窗口是否大于此次减小第一占空比控制信号之前得到的dq眼图窗口;
若是,则返回减小第一占空比控制信号的步骤;
否则执行步骤:记录当前最大的眼图窗口对应的最佳第一占空比控制信号以及当前最大的眼图窗口。
可选地,所述保持所述第一占空比调整电路输入所述最佳第一占空比控制信号,逐次调整所述第二占空比控制信号以使所述第二占空比调整电路改变dqs信号的占空比,在每次调整所述第二占空比控制信号之后,根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口,直至dq眼图窗口不再变大包括:
第一次增大第二占空比控制信号;
根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
判断第一次增大第二占空比控制信号之后得到的dq眼图窗口是否大于此次增大第二占空比控制信号之前得到的dq眼图窗口;
若是,则再次增大第二占空比控制信号;
根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
判断再次增大第二占空比控制信号之后得到的dq眼图窗口是否大于此次增大第二占空比控制信号之前得到的dq眼图窗口;
若是,则返回再次增大第二占空比控制信号的步骤;
否则执行步骤:记录最终最大的眼图窗口对应的最佳第二占空比控制信号。
可选地,还包括:
若第一次增大第二占空比控制信号之后得到的dq眼图窗口小于增大第二占空比控制信号之前的dq眼图窗口,则减小第二占空比控制信号;
根据所述第一占空比调整电路处理后的dq信号得到dq眼图,并根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
判断减小第二占空比控制信号之后得到的dq眼图窗口是否大于此次减小第二占空比控制信号之前得到的dq眼图窗口;
若是,则返回减小第二占空比控制信号的步骤;
否则执行步骤:记录最终最大的眼图窗口对应的最佳第二占空比控制信号。
可选地,所述根据所述第二占空比调整电路处理后的dqs信号得到dq眼图窗口包括:
控制dqs信号的延迟,使dqs信号向左右两个方向进行扫描,以得到dq眼图窗口。
第二方面,本发明提供一种ddr内存控制器的dq与dqs信号占空比的训练系统,包括:第一占空比调整电路、第二占空比调整电路和控制电路,其中,
所述第一占空比调整电路,用于根据输入的第一占空比控制信号调整dq信号的占空比;
所述第二占空比调整电路,用于根据输入的第二占空比控制信号调整dqs信号的占空比;
所述控制电路,用于实现上述ddr内存控制器的dq与dqs信号占空比的训练方法。
可选地,所述第一占空比调整电路与所述第二占空比调整电路结构相同,均包括:第一pmos管、第二pmos管、第一nmos管和第二nmos管,其中,
第一pmos管的源极接电源,第一pmos管的漏极连接至第二pmos管的源极,第一pmos管的栅极输入占空比控制信号;
第二pmos管和第一nmos管各自的栅极相连作为输入端,各自的漏极相连作为输出端;
第二nmos管的漏极连接至第一nmos管的源极,第二nmos管的源极接地,第二nmos管的栅极输入占空比控制信号。
可选地,所述控制电路为基于fpga的ddr内存控制器软核。
第三方面,本发明提供一种基于fpga的ddr内存控制器,包括上述ddr内存控制器的dq与dqs信号占空比的训练系统。
本发明提供的ddr内存控制器的dq与dqs信号占空比的训练方法和系统,先给一个初始占空比,通过延迟dqs信号,找出dq眼图的大小,软逻辑记录dq眼图大小,然后改变占空比控制信号的值,找出新的dq眼图的大小,再检查dq眼图是否变大,就这样重复把dq眼图调到最大,从而得到dq眼图窗口最大时对应的dq和dqs占空比设置。将最佳占空比设置保存到闪存中,在每次内存控制器开启时内存控制器采用这个最佳占空比设置,能够解决dq与dqs信号占空比失真问题,提高内存控制器的读写速度和可靠性。
附图说明
图1为现有技术中内存控制器和ddr之间的接口示意图;
图2为本发明一实施例提供的ddr内存控制器的dq与dqs信号占空比的训练方法的流程示意图;
图3为本发明一实施例提供的ddr内存控制器的dq与dqs信号占空比的训练方法的流程示意图;
图4为写dq/dqs时序波形和dqs信号左右扫描的示意图;
图5为本发明一实施例提供的ddr内存控制器的dq与dqs信号占空比的训练系统的示意图;
图6为第一/第二占空比调整电路的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供一种ddr内存控制器的dq与dqs信号占空比的训练方法,如图2所示,该方法包括:
s201、初始化第一占空比调整电路的第一占空比控制信号和第二占空比调整电路的第二占空比控制信号,以使第一占空比调整电路根据第一占空比控制信号调整dq信号的占空比,第二占空比调整电路根据第二占空比控制信号调整dqs信号的占空比;
s202、根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
s203、保持第二占空比控制信号不变,逐次调整第一占空比控制信号以使第一占空比调整电路改变dq信号的占空比,在每次调整第一占空比控制信号之后,根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口,直至dq眼图窗口不再变大;
s204、记录当前最大的眼图窗口对应的最佳第一占空比控制信号以及当前最大的眼图窗口;
s205、保持第一占空比调整电路输入最佳第一占空比控制信号,逐次调整第二占空比控制信号以使第二占空比调整电路改变dqs信号的占空比,在每次调整第二占空比控制信号之后,根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口,直至dq眼图窗口不再变大;
s206、记录最终最大的眼图窗口对应的最佳第二占空比控制信号。
本实施例提供的ddr内存控制器的dq与dqs信号占空比的训练方法,先给一个初始占空比,通过延迟dqs信号,找出dq眼图的大小,软逻辑记录dq眼图大小,然后改变占空比控制信号的值,找出新的dq眼图的大小,再检查dq眼图是否变大,就这样重复把dq眼图调到最大,从而得到dq眼图窗口最大时对应的dq和dqs占空比设置。将最佳占空比设置保存到闪存中,在每次内存控制器开启时内存控制器采用这个最佳占空比设置,能够解决dq与dqs信号占空比失真问题,提高内存控制器的读写速度和可靠性。
具体地,图3为本实施例的一种具体实现过程。如图3所示,包括以下步骤:
s301、初始化第一占空比调整电路的第一占空比控制信号和第二占空比调整电路的第二占空比控制信号,以使第一占空比调整电路根据第一占空比控制信号调整dq信号的占空比,第二占空比调整电路根据第二占空比控制信号调整dqs信号的占空比;
s302、根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
s303、第一次增大第一占空比控制信号;
s304、根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
s305、判断第一次增大第一占空比控制信号之后得到的dq眼图窗口是否大于此次增大第一占空比控制信号之前得到的dq眼图窗口,若是,执行步骤s306,否则,跳转到步骤s309;
s306、再次增大第一占空比控制信号;
s307、根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
s308、判断再次增大第一占空比控制信号之后得到的dq眼图窗口是否大于此次增大第一占空比控制信号之前得到的dq眼图窗口,若是,返回步骤s306,否则,直接执行步骤s312;
s309、减小第一占空比控制信号;
s310、根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
s311、判断减小第一占空比控制信号之后得到的dq眼图窗口是否大于此次减小第一占空比控制信号之前得到的dq眼图窗口,若是,返回步骤s309,否则,执行步骤s312;
s312、记录当前最大的眼图窗口对应的最佳第一占空比控制信号以及当前最大的眼图窗口。将最后一次增大第一占空比控制信号之前得到的第一占空比控制信号作为最佳第一占空比控制信号。或者,将最后一次减小第一占空比控制信号之前得到的第一占空比控制信号作为最佳第一占空比控制信号。特殊地,若第一次减小第一占空比控制信号之后得到的dq眼图窗口小于减小第一占空比控制信号之前的dq眼图窗口,则初始窗口就是最大窗口,初始化的第一占空比控制信号就是最佳第一占空比控制信号。
s313、第一次增大第二占空比控制信号;
s314、根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
s315、判断第一次增大第二占空比控制信号之后得到的dq眼图窗口是否大于此次增大第二占空比控制信号之前得到的dq眼图窗口,这里所说的此次增大第二占空比控制信号之前得到的dq眼图窗口即为步骤s312记录的最大眼图窗口,若是,执行步骤s316,否则,跳转到步骤s319;
s316、再次增大第二占空比控制信号;
s317、根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
s318、判断再次增大第二占空比控制信号之后得到的dq眼图窗口是否大于此次增大第二占空比控制信号之前得到的dq眼图窗口,若是,返回步骤s316,否则直接执行步骤s322;
s319、减小第二占空比控制信号;
s320、根据第一占空比调整电路处理后的dq信号得到dq眼图,并根据第二占空比调整电路处理后的dqs信号得到dq眼图窗口;
s321、判断减小第二占空比控制信号之后得到的dq眼图窗口是否大于此次减小第二占空比控制信号之前得到的dq眼图窗口,若是,返回步骤s319,否则,执行步骤s322;
s322、记录最终最大的眼图窗口对应的最佳第二占空比控制信号。将最后一次增大第二占空比控制信号之前得到的第二占空比控制信号作为最佳第二占空比控制信号。或者,将最后一次减小第二占空比控制信号之前得到的第二占空比控制信号作为最佳第二占空比控制信号。
需要说明的是,本实施例中,通过控制dqs信号的延迟,使dqs信号向左右两个方向进行扫描,以得到dq眼图窗口。图4为dqs信号左右扫描的示意图,由向左(右)扫dqs信号寻找dq的左(右)边缘以测出的眼图窗口。最终的dq延迟为最左边缘延迟加最右边缘延迟除以二。这可以由向dram写数据和回读完成。
为了实现上述实施例中的ddr内存控制器的dq与dqs信号占空比的训练方法,本实施例提供一种ddr内存控制器的dq与dqs信号占空比的训练系统,如图5所示,该系统包括:第一占空比调整电路501、第二占空比调整电路502和控制电路503,其中,
第一占空比调整电路501,用于根据输入的第一占空比控制信号dc1调整dq信号的占空比;
第二占空比调整电路502,用于根据输入的第二占空比控制信号dc2调整dqs信号的占空比;
控制电路503,用于实现上述ddr内存控制器的dq与dqs信号占空比的训练方法中的各步骤。
如图5所示,第一占空比调整电路501和第二占空比调整电路502位于phy和iob之间,第一占空比调整电路501处理过的dq信号经iob(输入输出缓冲电路)输出,第二占空比调整电路502处理过的dqs信号经iob(输入输出缓冲电路)输出。
可选地,第一占空比调整电路501和第二占空比调整电路502采用相同的电路结构,图6为一种具体的实现形式,如图6所示,包括:第一pmos管pm1、第二pmos管pm2、第一nmos管nm1和第二nmos管nm2,其中,第一pmos管pm1的源极接电源,第一pmos管pm1的漏极连接至第二pmos管pm2的源极,第一pmos管pm1的栅极输入占空比控制信号;第二pmos管pm2和第一nmos管nm1各自的栅极相连作为输入端,各自的漏极相连作为输出端;第二nmos管nm2的漏极连接至第一nmos管nm1的源极,第二nmos管nm2的源极接地,第二nmos管nm2的栅极输入占空比控制信号。
可选地,控制电路503为基于fpga的ddr内存控制器软核。
本实施例提供的ddr内存控制器的dq与dqs信号占空比的训练系统,先给一个初始占空比,通过延迟dqs信号,找出dq眼图的大小。软逻辑记录dq眼图大小。然后改变占空比控制信号的值,找出新的dq眼图的大小,再检查dq眼图是否变大,就这样重复把dq眼图调到最大,从而得到dq眼图窗口最大时对应的最佳第一占空比控制信号和最佳第二占空比控制信号。将最佳第一占空比控制信号和最佳第二占空比控制信号保存到闪存中,在每次内存控制器开启时内存控制器采用这个最佳占空比设置,能够提高内存控制器的读写速度和可靠性。
本实施例还提供一种基于fpga的ddr内存控制器,包括上述ddr内存控制器的dq与dqs信号占空比的训练系统。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。