读写校准方法和电路与流程

文档序号:29209341发布日期:2022-03-12 03:52阅读:187来源:国知局
读写校准方法和电路与流程

1.本技术涉及存储器技术领域,尤其涉及一种读写校准方法和电路。


背景技术:

2.存储器由于体积以及功耗的优势,广泛运用于手机、电子词典等消费类电子产品,存储器的读写准确性决定了电子产品的性能。因此,在存储器芯片的设计和生产过程中需要操作存储器颗粒,以保证存储器读写的正确性。对于传统的存储控制器,在不同时钟频率下,需要手动对存储控制器的时钟通道或数据通道进行延时调节,进而调节存储器控制器的时钟信号与存储器的时钟信号之间的相位差,以保证读写数据的正确性,费时费力,并且不够灵活和可靠。


技术实现要素:

3.为了解决现有技术中的对存储器进行延时调节时需要手动调节,费时费力且准确度不高的技术问题。本技术提供了一种读写校准方法和电路,其主要目的在于自动找出存储控制器与存储模块的最优相位差,以对存储控制器的读写准确性进行校准。
4.为实现上述目的,本技术提供了一种读写校准方法,该方法包括:
5.根据读写一致性数据对工作于不同的第一相位下的存储控制器的读写准确性分别进行验证,所述读写一致性数据包括:工作于所述第一相位下从存储模块的同一个存储地址读出的数据与写入的数据是否相同,其中,所述第一相位为提供给所述存储控制器的第一时钟信号的相位;
6.当工作于所述第一相位下的存储控制器的读写准确性验证通过时,将所述第一相位与所述存储模块所工作的第二相位的相位差作为候选相位差,其中,所述第二相位为提供给所述存储模块的第二时钟信号的相位;
7.按照预设规则从候选相位差中选取一目标相位差;
8.对存储控制器的第一时钟信号的第一相位进行调节,使存储控制器工作在目标相位差对应的第一相位下。
9.此外,为实现上述目的,本技术还提供了一种读写校准电路,该电路包括连接的时钟模块、校准模块和存储控制器;
10.时钟模块用于为存储控制器和校准模块提供第一时钟信号、为存储模块提供第二时钟信号,其中,第一时钟信号的第一相位与第二时钟信号的第二相位存在相位差;
11.存储控制器用于工作于第一时钟信号下以对工作于第二时钟信号下的存储模块进行数据读写;
12.校准模块包括:
13.第一调节模块,用于通过时钟模块调节第一时钟信号的第一相位,以调节第一相位与第二时钟信号之间的相位差;
14.验证模块,用于根据读写一致性数据对工作于不同的第一相位下的存储控制器的
读写准确性分别进行验证,所述读写一致性数据包括:工作于所述第一相位下从存储模块的同一个存储地址读出的数据与写入的数据是否相同,其中,所述第一相位为提供给所述存储控制器的第一时钟信号的相位;
15.第一筛选模块,用于当工作于所述第一相位下的存储控制器的读写准确性验证通过时,将所述第一相位与所述存储模块所工作的第二相位的相位差作为候选相位差,其中,所述第二相位为提供给所述存储模块的第二时钟信号的相位;
16.第二筛选模块,用于按照预设规则从候选相位差中选取一目标相位差;
17.第二调节模块,对存储控制器的第一时钟信号的第一相位进行调节,使存储控制器工作在目标相位差对应的第一相位下。
18.本技术提出的读写校准方法和电路,通过自动调节存储控制器与存储模块之间的相位差,以验证工作于不同第一相位下的存储控制器的读写准确性,以从不同第一相位所对应的不同相位差中找出最优相位差,进而使存储控制器最终工作于最优相位差所对应的第一相位下,实现了对存储控制器的读写准确性进行自动校准,保证读写数据的正确性。
附图说明
19.图1为本技术一实施例中读写校准方法的流程示意图;
20.图2为本技术一实施例中读写校准电路的结构框图;
21.图3为本技术另一实施例中读写校准电路的结构框图。
22.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
23.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
24.图1为本技术一实施例中读写校准方法的流程示意图。参考图1,以该方法应用在校准模块或校准设备中为例进行说明。该读写校准方法包括以下步骤s100-s400。
25.s100:根据读写一致性数据对工作于不同的第一相位下的存储控制器的读写准确性分别进行验证,读写一致性数据包括:工作于所述第一相位下从存储模块的同一个存储地址读出的数据与写入的数据是否相同,其中,第一相位为提供给所述存储控制器的第一时钟信号的相位。
26.具体地,存储控制器在第一相位下工作,存储模块在第二相位下工作,不同的第一相位与第二相位的相位差均不同,第二相位为提供给存储模块的第二时钟信号的相位。存储控制器用于对存储模块中的存储颗粒进行读写等操作,即,将数据写入存储模块的存储颗粒中或从存储模块的存储颗粒中读取数据等其他操作。存储模块为一种存储器,具体可以为一种psram(pseudo static random access memory)伪随机存储器。psram的最高工作时钟为200mhz,位宽支持4/8/16bit,采用时钟双沿的方式进行读写访问。
27.数据需要通过时钟的上下边沿进行采样,要保证采样数据的准确性需要将采样时
钟调整到合适的状态下,否则数据的采样过程中从存储器读取数据时极易产生误码或亚稳态。时钟模块可以为存储控制器提供多种具有不同第一相位的第一时钟信号,以及为存储模块提供第二时钟信号,第一时钟信号为存储控制器的工作时钟,第二时钟信号为存储模块的工作时钟。存储控制器根据第一时钟信号控制存储模块进行数据的读写操作,其中,存储模块受控于第二时钟信号,由第二时钟信号驱动。第一时钟信号和第二时钟信号的相位差是数据能够从存储模块中正确读取的关键因素。
28.针对每个第一相位,对应的读写一致性数据为:工作于该第一相位下的存储控制器从存储模块的同一个存储地址读出的数据与写入的数据是否相同。
29.在一个具体实施例中,在步骤s100之前,先对校准模块进行配置,例如,配置循环检测的最大次数和扫描窗口。循环检测的最大次数为每个相位差下对存储控制器进行读写验证的预设验证次数或最大验证次数;扫描窗口为相邻两个相位差的差值或从当前相位差得到下一个相位差的步长。配置为存储控制器提供第一时钟信号和第二时钟信号的时钟模块的时钟频率以及第一时钟信号和第二时钟信号的初始相位差。例如,可以将时钟频率配置为0~200mhz的任意频点,可以将初始相位差配置为30
°
。配置读写校准的模式,例如自动校准模式和手动校准模块。本技术是在自动校准模式下实现的。
30.时钟模块为存储控制器提供不同第一相位的第一时钟信号,为存储模块提供相同第二相位的第二时钟信号,存储控制器在不同的第一相位下控制存储模块的写读操作。校准模块分别对工作在不同的第一相位的存储控制器写入的数据与读出的数据进行比对,以验证存储控制器在不同的第一相位下的读写准确性,其中,工作于第一相位的存储控制器与工作于第二相位的存储模块存在相位差,该相位差为第一相位与第二相位之差。根据相位差和第二相位可以计算得到第一相位,即,第一相位与相位差具有对应关系。例如,校准模块对工作在初始相位下的存储控制器从同一个存储地址读出的数据与在前写入的数据进行比对,判断初始相位下的存储控制器读出的数据与写入的数据是否相同。具体地,第一相位为第二相位与当前相位差之和,当前相位差为上一个相位差与预设的扫描窗口之和,当前相位差的初始值为预设的初始相位差,当前相位差小于或等于截止相位差,也就是说,当前相位差的截止值为截止相位差,第一相位的截止值为第二相位与截止相位差之和;其中,初始相位差为预先设置的相位差起点,截止相位差为预设设置的相位差终点。具体地,在一个可选的实施方式中,不同的第一相位分别为初始相位、初始相位+1*扫描窗口、初始相位+2*扫描窗口、
……
、初始相位+n*扫描窗口、
……
、截止相位,其中,n为自然数。
31.为了保证读写准确性验证的可靠性和真实性,校准模块可以分别对工作于同一个第一相位下的存储控制器的读写准确性进行多次验证。如果在多次验证中,工作在同一个第一相位下的存储控制器从同一个存储地址读出的数据与在前写入的数据都相同,则判定存储控制器在该第一相位下的读写准确性正常。如果在多次验证中,出现任何一次存储控制器从同一个存储地址读出的数据与在前写入的数据不同,则判定存储控制器在该第一相位下的读写准确性不正常。
32.其中,校准模块可以由fpga/cpld器件组成,fpga/cpld是可重构的器件,电路是可编程的,通过修改编程文件可生成不同的电路。而传统的asic器件,电路一旦生成就不可再进行二次修改。因此,使用fpga/cpld器件可以实现对工作于不同时钟频率、不同位宽、不同相位下的存储控制器的读写准确性进行验证和校准。
33.时钟模块可以是pll(phase locked loop):锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。
34.本步骤实现了通过调节第一相位和第二相位的相位差以对第一相位进行调节,并对工作于不同的第一相位下的读写控制器从相同存储地址读出的数据与写入的数据进行一致性验证,以对工作在各个第一相位下的读写控制器分别进行读写验证。
35.s200:当工作于第一相位下的存储控制器的读写准确性验证通过时,将第一相位与存储模块所工作的第二相位的相位差作为候选相位差,其中,第二相位为提供给所述存储模块的第二时钟信号的相位。
36.具体地,如果读写一致性数据为存储控制器工作在同一个第一相位下,且从同一个存储地址读出的数据与在前写入的数据相同,则该第一相位与存储模块的第二相位的相位差为候选相位差。
37.s300:按照预设规则从候选相位差中选取一目标相位差。
38.s400:对存储控制器的第一时钟信号的第一相位进行调节,使存储控制器工作在目标相位差对应的第一相位下。
39.具体地,目标相位差作为存储控制器的最终工作的目标第一相位与第二相位的相位差,为候选相位差中的最优相位差,也可以是任意一个候选相位差。例如可以选取候选相位差中为中间值的一个候选相位差作为目标相位差。根据目标相位差和第二相位之和得到目标第一相位,通过对第一时钟信号进行延迟调节,以将存储控制器的第一时钟信号相位回调至目标第一相位,存储控制器即可工作在目标第一相位下。工作于目标第一相位下的存储控制器能够保证读写数据的正确性。
40.本实施例通过校准模块自动筛选出存储控制器与存储模块的第一时钟信号和第二时钟信号之间的最优相位差,并将存储控制器的第一时钟信号调节至最优相位差所对应的第一相位下,实现了对任意工作频率或数据位宽下的存储控制器的读写校准,保证了读写数据的准确性。
41.在一个实施例中,步骤s100具体包括:
42.针对当前第一相位,分别验证工作于从初始相位到截止相位之间任意一个第一相位下的存储控制器的读写准确性:
43.控制存储控制器在当前第一相位下向工作于第二相位下的存储模块的任一可用地址写入数据;
44.其中,该写入数据为写入结果。
45.控制存储控制器在当前第一相位下从工作于第二相位下的存储模块的可用地址读取数据;
46.其中,该读取数据为读取结果。
47.比较存储控制器在当前第一相位下写入的数据与读出的数据是否相同;
48.其中,比较前两个步骤中分别得到的写入结果和读取结果是否相同。
49.对工作于当前第一相位下的存储控制器的读写准确性验证的验证次数进行累加;
50.若存储控制器在当前第一相位下写入的数据与读出的数据相同且累加的验证次数未达到预设验证次数,则循环执行控制存储控制器在当前第一相位下向工作于第二相位下的存储模块的任一可用地址写入数据的步骤至对工作于当前第一相位下的存储控制器
的读写准确性验证的验证次数进行累加的步骤;
51.若存储控制器在当前第一相位下写入的数据与读出的数据相同且累加的验证次数达到预设验证次数,则结束对工作于当前第一相位下的存储控制器的读写准确性验证;
52.若存储控制器在当前第一相位下写入的数据与读出的数据不同,则结束对工作于当前第一相位下的存储控制器的读写准确性验证。
53.具体地,如上所述,初始相位到截止相位之间的任意一个第一相位均为对应的相位差与第二相位之和,因此,第一相位与相位差具有对应关系。从初始相位差到截止相位差对应初始相位至截止相位。截止相位差为预先设置的相位差的终点。包括初始相位差和截止相位差在内,从初始相位差到截止相位差包括多个不同的相位差且相邻相位差的差值相等或从当前相位差到下一个相位差的步长相等。1个步长的延迟值为时钟模块的配置参数中vco频率的1/8周期。
54.存储控制器和校准模块所在的系统初始化时,校准模块进入空闲状态(idle);当校准模块检测到存储控制器发送的初始化标志信号cfg_done为高后,表示存储控制器所控制的存储模块(例如psram的存储颗粒)已初始化完成,校准模块进入写数据状态wr_data。
55.时钟模块为存储控制器提供第一时钟信号,为存储模块提供第二时钟信号,第一时钟信号和第二时钟信号存在一个相位差,该相位差为始相位差和截止相位差之间某个相位差,当前相位差为存储控制器所工作的当前第一相位与存储模块的第二相位之间的相位差。
56.校准模块在写数据状态wr_data下,向工作于当前第一相位下的存储控制器发送写请求wr_req,工作于当前第一相位下的存储控制器接收到该写请求wr_req后向校准模块返回一个准备写信号wr_rdy,该准备写信号wr_req表示工作于当前第一相位下的存储控制器处于已准备好写的状态。校准模块接收到该准备写信号wr_rdy后向工作于当前第一相位下的存储控制器发送待写入数据wr_data和待写入地址wr_addr,工作于当前第一相位下的存储控制器将该待写入数据wr_data写入到存储模块的该待写入地址wr_addr中,写完成后,当前第一相位下的存储控制器向校准模块发送一个写完成信号wr_done。
57.校准模块接收到写完成信号wr_done后进入读数据状态rd_data。在读数据状态rd_data下,校准模块向工作于当前第一相位下的存储控制器发送读请求red_req,工作于当前第一相位下的存储控制器接收到该读请求rd_req后向校准模块返回一个读有效信号rd_valid,该读有效信号rd_valid表示工作于当前第一相位下的存储控制器当前可以读取数据。校准模块接收到该读有效信号rd_valid后向工作于当前第一相位下的存储控制器发送待读取地址rd_addr,工作于当前第一相位下的存储控制器从存储模块的该待读取地址rd_addr中读取数据rd_data并返回给校准模块,读完成后,当前第一相位下的存储控制器向校准模块发送一个读完成信号rd_done。
58.校准模块接收到读完成信号rd_done后进入sample状态,并对工作于当前第一相位下的存储控制器的验证次数进行累加,即,计数器loop_cnt累加1。计数器loop_cnt用于对同一个第一相位下的存储控制器的验证次数进行累加。当存储控制器工作于另外一个第一相位下时计数器loop_cnt会清零后重新计数。
59.如果存储控制器在当前第一相位下写入的数据与读出的数据相同且累加的验证次数未达到预设验证次数,则循环执行上述步骤重新进入wr_data状态,再次通过工作于当
前第一相位下的存储控制器向存储模块的某个存储地址写入数据,并从相同的该存储地址中读取数据,比较写入的数据与读出的数据是否相同,以验证工作于当前第一相位下的存储控制器的读写功能,以及累加验证次数,直到累加验证次数达到预设验证次数或存储控制器在当前第一相位下写入的数据与读出的数据出现不同,则停止对当前第一相位下的存储控制器进行读写准确性验证。
60.如果存储控制器在当前第一相位下写入的数据与读出的数据相同且累加的验证次数达到预设验证次数,或,存储控制器在当前第一相位下写入的数据与读出的数据不同,则结束对工作于当前第一相位下的存储控制器进行读写准确性验证。
61.即,若工作于当前第一相位下的存储控制器写入的数据与读出的数据不同且累加的验证次数未达到预设验证次数,则结束对工作于当前第一相位下的存储控制器的读写准确性验证;若工作于当前第一相位下的存储控制器写入的数据与读出的数据不同且累加的验证次数达到预设验证次数,则结束对工作于当前第一相位下的存储控制器的读写准确性验证。
62.校准模块中设有寄存器,用于存储每次验证的结果。如果出现存储控制器在当前第一相位下写入的数据与读出的数据不同,则该寄存器对应error位为高,表示当前的验证阶段有误码,此时校准模块不再对工作于当前第一相位下的存储控制器进行读写准确性验证。而且如果当前第一相位不为截止相位,存储控制器会工作于下一个第一相位,校准模块会对工作于下一个第一相位的存储控制器按照上述相同的方法进行至少一次的读写准确性验证。
63.存储控制器不管工作在哪个第一相位下,在该第一相位下存储控制器的验证次数至少为一次,最大验证次数不超过预设验证次数。设置的预设验证次数越大,对存储控制器的验证越到位越可信。预设验证次数可以根据实际情况预先设置,例如为200次,则实际验证次数不超过200次。
64.本实施例实现了自动对工作于不同的第一相位下的存储控制器的读写准确性的验证。
65.在一个实施例中,初始相位为第二相位与初始相位差之和,截止相位为所述第二相位与截止相位差之和。
66.步骤s100还包括:
67.在结束对工作于当前第一相位下的存储控制器的读写准确性验证之后,若当前第一相位与第二相位之间的当前相位差不为截止相位差,则对当前相位差按照扫描窗口进行扫描得到下一个相位差;
68.根据下一个相位差和第二相位之和得到下一个第一相位,对第一时钟信号的第一相位进行调节,使存储控制器工作于下一个第一相位,将下一个第一相位作为当前第一相位;也就是说,根据下一个相位差和第二相位之和得到下一个第一相位,根据下一个第一相位对当前第一相位进行更新;根据更新后的当前第一相位对第一时钟信号的相位进行调节,使存储控制器工作于更新后的当前第一相位。
69.在结束对工作于当前第一相位下的存储控制器的读写准确性验证之后,若当前第一相位与所述第二相位之间的当前相位差为截止相位差,则结束验证工作于不同的第一相位下的存储控制器的读写准确性。
70.具体地,如果出现存储控制器在当前第一相位下写入的数据与读出的数据不同,此时校准模块不再对工作于当前第一相位下的存储控制器进行读写准确性验证,而是调节相位差以对存储控制器的第一相位进行调节,使存储控制器工作于下一个第一相位下,并对工作于下一个相位的存储控制器的读写准确性进行验证。下一个第一相位为下一个相位差与第二相位之和,下一个相位差是通过对当前相位差按照扫描窗口扫描得到。
71.停止对工作于当前第一相位下的存储控制器的读写准确性验证后,校准模块进入到adjust状态。在adjust状态,如果当前第一相位与第二相位的相位差不为截止相位差,则校准模块在当前相位差的基础下根据扫描窗口对第一时钟信号和第二时钟信号的相位差进行调节,使得下一个相位差为当前相位差与扫描窗口相加得到。具体的相位差调节是校准模块对第一时钟信号的第一相位进行调节,第二时钟信号的第二相位保持不变,以达到调节二者的相位差的目的。
72.例如,当前相位差为30
°
,扫描窗口为30
°
,则下一个相位差为60
°
。同理,同样的扫描窗口为30
°
,如果当前相位差为60
°
,则下一个相位差为90
°
。扫描窗口是预先配置的,还可以通过设置最大扫描步数来限制扫描窗口或步长。例如,限制最大扫描步数不超过12step,则根据初始相位差和截止相位差,可以得到扫描窗口的取值范围。
73.再者,如果当前相位差为截止相位差,则当前相位差是最后一个需要验证的相位差,因此在结束对工作于当前第一相位下的存储控制器的读写准确性验证之后,完成了对所有可能的相位差的验证,可以停止验证的步骤。
74.在一个实施例中,步骤s200具体包括:
75.将累加的验证次数达到预设验证次数、且每次验证存储控制器写入的数据与读出的数据均相同的情况下,存储控制器所工作的当前第一相位与存储模块所工作的第二相位的相位差作为候选相位差。也就是说,当累加的验证次数达到预设验证次数且每次验证存储控制器写入的数据与读出的数据均相同时,工作于该第一相位下的存储控制器的读写准确性验证通过。
76.具体地,例如初始相位差为30
°
,截止相位差为180
°
,扫描窗口为30
°
,则所有相位差包括:30
°
、60
°
、90
°
、120
°
、150
°
、180
°
。分别根据30
°
、60
°
、90
°
、120
°
、150
°
、180
°
这6个相位差与第二相位之和得到每个相位差对应的第一相位。对工作于每个第一相位下的存储控制器进行至多200次的读写准确性验证。扫描完30
°
~180
°
后,如果只有分别在90
°
、120
°
、150
°
这3个相位差所对应的第一相位下的存储控制器在各自的200次读写准确性验证中每次读写控制器从相同存储地址读出的数据与在前写入的数据都相同,则取90
°
、120
°
、150
°
作为候选相位差。
77.在一个实施例中,步骤s300具体包括:
78.选取数量最多且连续的候选相位差中、相位差为中间值的候选相位差为目标相位差。具体地,从候选相位差中选取一个或多个连续相位差序列,其中,连续相位差序列中每相邻的两个所述候选相位差之差为预设的扫描窗口;选取候选相位差数量最多的连续相位差序列,将选取的连续相位差序列中相位差为中间值的候选相位差为目标相位差。
79.具体地,目标相位差即一段连续正确相位差的中间值。例如,上述中90
°
、120
°
、150
°
为候选相位差,则取120
°
作为目标相位差。
80.又如,扫描窗口为10
°
,候选相位差为30
°
、40
°
、50
°
、60
°
、70
°
、120
°
、130
°
、140
°
,于
是,连续相位差序列1为:[30
°
、40
°
、50
°
、60
°
、70
°
],连续相位差序列2为[120
°
、130
°
、140
°
],连续相位差序列1中候选相位差的数据为5,连续相位差序列2中候选相位差的数据为3,选择连续相位差序列1的中间值50
°
为目标相位差。进一步地,若连续相位差序列1为:[30
°
、40
°
、50
°
、60
°
],候选相位差的数量为偶数,则中间值分别为40
°
和50
°
,这两个值均可以作为目标相位差。
[0081]
在一个实施例中,比较存储控制器在当前相位差下写入的数据与读出的数据是否相同,包括:
[0082]
获取存储控制器的读延迟;
[0083]
根据读延迟,对存储控制器在当前第一相位下写入的数据与读出的数据进行对齐处理;
[0084]
对对齐处理后写入的数据与对应读出的数据进行比对以判断是否相同。
[0085]
具体地,存储控制器的读延迟是一种固有的属性,一般与系统的硬件性能有关(例如与频率有关、芯片有关)且是无法完全避免的。前面的所有状态是为了找到最佳时钟采样窗口,得出最佳的相位差。但会存在高低字节取反或者错开一个时钟周期的情况,需要进行自动字节对齐。
[0086]
获取存储控制器从同一个存储地址写入的数据与读出的数据,对从同一个存储地址写入的数据与读出的数据进行对齐操作,获取该对齐操作过程中的对齐数值,根据对齐数值得到存储控制器的读延迟。由于读延迟是固有属性,因此得到的读延迟适用于各个阶段。在每次对存储控制器进行读写准确性验证的时候都需要先对写入的数据与读出的数据进行对齐处理,以排除读延迟对于验证结果的干扰。
[0087]
在一个实施例中,该方法还包括:获取存储控制器的读延迟;根据读延迟,对工作于目标相位差所对应的第一相位下的存储控制器的每次读出的数据进行对齐处理,将对齐处理后的读出的数据作为最终的读取数据。
[0088]
具体地,即使在目标相位差下同样存在读延迟,因此,工作于目标相位差下的存储控制器读出的数据也同样需要经过对齐处理后才是正确读出的数据。
[0089]
本技术将传统的存储控制器与校准模块、时钟模块结合,实现了对不同时钟频率不同位宽下的时钟通道或数据通道的延时调节,而不需要手动对存储器的时钟通道或数据通道进行延时调节,不仅省时省力,而且具有广泛的应用,保证了读写数据的正确性,够灵活和可靠。
[0090]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0091]
图2为本技术一实施例中读写校准电路的结构框图;参考图2,该读写校准电路包括相互连接的时钟模块、校准模块和存储控制器;
[0092]
时钟模块用于为存储控制器和校准模块提供第一时钟信号、为存储模块提供第二时钟信号,其中,第一时钟信号的第一相位与第二时钟信号的第二相位存在相位差;
[0093]
存储控制器用于工作于第一时钟信号下以对工作于第二时钟信号下的存储模块进行数据读写;
[0094]
校准模块包括:
[0095]
第一调节模块,用于通过时钟模块调节第一时钟信号的第一相位,以调节第一相位与第二相位之间的相位差,
[0096]
验证模块,用于根据读写一致性数据对工作于不同的第一相位下的存储控制器的读写准确性分别进行验证,读写一致性数据包括:工作于第一相位下从存储模块的同一个存储地址读出的数据与写入的数据是否相同,其中,第一相位为提供给所述存储控制器的第一时钟信号的相位;
[0097]
第一筛选模块,用于当工作于第一相位下的存储控制器的读写准确性验证通过时,将该第一相位与所述存储模块所工作的第二相位的相位差作为候选相位差,其中,第二相位为提供给所述存储模块的第二时钟信号的相位;
[0098]
第二筛选模块,用于按照预设规则从候选相位差中选取一目标相位差;
[0099]
第二调节模块,对存储控制器的第一时钟信号的第一相位进行调节,使存储控制器工作在目标相位差对应的第一相位下。
[0100]
参考图2,时钟模块为存储控制器和校准模块提供第一时钟信号,第一时钟信号为存储控制器和校准模块的系统工作时钟,并通过存储控制器的接口将第二时钟信号提供给存储模块,第二时钟信号作存储模块的工作时钟用于驱存储模块。存储控制器根据第一时钟信号控制受控于第二时钟信号的存储模块对存储颗粒的读写。校准模块接收第一时钟信号作为校准模块的时钟,同时,还用于通过控制时钟模块更改第一时钟信号的相位,进而调节第一时钟信号和第二时钟信号的相位差,使存储控制器工作在不同相位差所对应的不同的第一相位下。图2中的读写校准电路是通过更改一个时钟信号保持另外一个时钟信号不变来调节第一时钟信号与第二时钟信号之间的相位差的。
[0101]
更具体地,第一时钟信号和第二时钟信号分别为sclk时钟信号和clk时钟信号。校准模块接收sclk时钟信号作为校准模块的时钟。校准模块还可以包括用户交互界面,通过用户交互界面,用户可以配置校准模块的各个参数。
[0102]
在一个实施例中,验证模块具体用于通过以下模块,以分别验证工作于从初始相位到截止相位之间任意一个第一相位下的存储控制器的读写准确性:
[0103]
写控制模块,用于针对当前第一相位,控制存储控制器在当前第一相位下向工作于第二相位下的存储模块的任一可用地址写入数据;
[0104]
读控制模块,用于控制存储控制器在当前第一相位下从工作于第二相位下的存储模块的可用地址读取数据;
[0105]
比较模块,用于比较存储控制器在当前第一相位下写入的数据与读出的数据是否相同;
[0106]
计数模块,用于对工作于当前第一相位下的存储控制器的读写准确性验证的验证次数进行累加;
[0107]
第一循环模块,用于若存储控制器在当前第一相位下写入的数据与读出的数据相同且累加的验证次数未达到预设验证次数,则循环至写控制模块至计数模块;
[0108]
第一结束模块,用于若存储控制器在当前第一相位下写入的数据与读出的数据相同且累加的验证次数达到预设验证次数,则结束对工作于当前第一相位下的存储控制器的读写准确性验证;
[0109]
第二结束模块,用于若存储控制器在当前第一相位下写入的数据与读出的数据不
同,则结束对工作于当前第一相位下的存储控制器的读写准确性验证。
[0110]
在一个实施例中,验证模块还包括:
[0111]
相位差调节模块,用于在结束对工作于当前第一相位下的存储控制器的读写准确性验证之后,若当前第一相位与第二相位之间的当前相位差不为截止相位差,则对当前相位差按照扫描窗口进行扫描得到下一个相位差;
[0112]
第三调节模块,用于根据下一个相位差和第二相位之和得到下一个第一相位,对第一时钟信号的第一相位进行调节,使存储控制器工作于下一个第一相位,将下一个第一相位作为当前第一相位;
[0113]
也就是说,第三调节模块用于根据下一个相位差和第二相位之和得到下一个第一相位,根据下一个第一相位对当前第一相位进行更新;根据更新后的当前第一相位对第一时钟信号的相位进行调节,使存储控制器工作于更新后的当前第一相位。
[0114]
第三结束模块,用于在结束对工作于当前第一相位下的存储控制器的读写准确性验证之后,若当前第一相位与第二相位之间的当前相位差为截止相位差,则结束验证模块的执行。
[0115]
在一个实施例中,第一筛选模块具体用于:当工作于所述第一相位下的存储控制器的读写准确性验证通过时,将第一相位与所述存储模块所工作的第二相位的相位差作为候选相位差,其中,第二相位为提供给所述存储模块的第二时钟信号的相位。
[0116]
在一个实施例中,第二筛选模块具体用于选取数量最多且连续的候选相位差中、相位差为中间值的候选相位差为目标相位差。具体地,第二筛选模块用于从候选相位差中选取一个或多个连续相位差序列,其中,连续相位差序列中每相邻的两个候选相位差之差为预设的扫描窗口;选取候选相位差数量最多的连续相位差序列,将选取的连续相位差序列中相位差为中间值的候选相位差为目标相位差。
[0117]
在一个实施例中,比较模块具体包括:
[0118]
延迟获取模块,用于获取存储控制器的读延迟;
[0119]
对齐模块,用于根据读延迟,对存储控制器在当前第一相位下写入的数据与读出的数据进行对齐处理;
[0120]
比对模块,用于对对齐处理后写入的数据与对应读出的数据进行比对以判断是否相同。
[0121]
在一个实施例中,本技术提供了一种读写校准装置,该装置包括:
[0122]
第一调节模块,用于通过时钟模块调节第一时钟信号的第一相位,以调节第一相位与第二相位之间的相位差,
[0123]
验证模块,用于根据读写一致性数据对工作于不同的第一相位下的存储控制器的读写准确性分别进行验证,所述读写一致性数据包括:工作于所述第一相位下从存储模块的同一个存储地址读出的数据与写入的数据是否相同,其中,所述第一相位为提供给所述存储控制器的第一时钟信号的相位
[0124]
第一筛选模块,用于当工作于所述第一相位下的存储控制器的读写准确性验证通过时,将所述第一相位与所述存储模块所工作的第二相位的相位差作为候选相位差,其中,所述第二相位为提供给所述存储模块的第二时钟信号的相位;
[0125]
第二筛选模块,用于按照预设规则从候选相位差中选取一目标相位差;
[0126]
第二调节模块,对存储控制器的第一时钟信号的第一相位进行调节,使存储控制器工作在目标相位差对应的第一相位下。
[0127]
图3为本技术一实施例中读写校准电路的结构框图;时钟模块为pll锁相环,存储模块为psram伪随机存储器,存储控制器为ppsram存储控制器。校准模块、psram存储控制器和时钟模块pll封装为fpga/cpld器件用于对psram伪随机存储器从psram存储颗粒进行数据读写操作和读写校准操作。时钟模块pll为psram存储控制器提供psram_sclk时钟信号和psram_clk时钟信号,同时为校准模块提供psram_sclk时钟信号作为校准模块的工作时钟信号。校准模块根据psram_sclk时钟信号通过pll_adjust信号控制时钟模块pll对psram_sclk时钟信号进行调节,以调节psram_sclk时钟信号与psram_clk时钟信号的相位差。因为数据是通过时钟进行采样的,因此对psram_sclk进行延迟调节会影响存储控制器对数据的读写,psram存储控制器在不同的相位差下进行数据的读写的能力不同。通过对工作于不同的相位差下的psram存储控制器的读写准确性进行验证,以筛选出最优的相位差作为psram存储控制器最终的工作相位差。
[0128]
本技术的读写校准电路的具体实现过程与前面所述的读写校准方法相同,此处不再赘述。
[0129]
其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本技术中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
[0130]
关于读写校准装置的具体限定可以参见上文中对于读写校准方法的限定,在此不再赘述。上述读写校准装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0131]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令(例如计算机程序),处理器执行计算机可读指令时实现上述实施例中读写校准方法的步骤,例如图1所示的步骤s100至步骤s300及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机可读指令时实现上述实施例中读写校准装置的各模块/单元的功能。为避免重复,这里不再赘述。
[0132]
处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
[0133]
存储器可用于存储计算机可读指令和/或模块,处理器通过运行或执行存储在存储器内的计算机可读指令和/或模块,以及调用存储在存储器内的数据,实现计算机装置的
各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
[0134]
存储器可以集成在处理器中,也可以与处理器分开设置。
[0135]
本领域技术人员可以理解,图示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0136]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中读写校准方法的步骤,例如图1所示的步骤s100至步骤s300及该方法的其它扩展和相关步骤的延伸。或者,计算机可读指令被处理器执行时实现上述实施例中读写校准装置的各模块/单元的功能。为避免重复,这里不再赘述。
[0137]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指示相关的硬件来完成,所述的计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双倍速率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0138]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
[0139]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
[0140]
以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1