可编程延迟单元、其方法以及控制器转让专利

申请号 : CN201210310608.5

文献号 : CN102880582B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 韦卡·库尔兹泽里格·韦纳

申请人 : 英特尔公司

摘要 :

公开一种自适应输入/输出缓冲器及其使用方法。在其输入/输出通道中具有可编程延迟单元的控制器还可以包括储存数值的分别的寄存器,所述数值控制由分别的延迟单元引入的时间延迟。通过测试在控制器和耦合到通道的一个或更多个器件之间的信号的定时可以确定被编程到寄存器的值。测试可以包括使用来自一组顺序的测试值中的测试值来设置寄存器,在从控制器到一个或更多个器件的信号上驱动特定模式,并且核查所述模式的部分是否被所述一个或更多个器件准确地接收。调整信号的定时可以涉及相对于建立和维持时间限制来进行所述信号的定中心。

权利要求 :

1.一种可编程延迟单元,包括:

耦合到所述可编程延迟单元的输出的导体;

耦合到所述导体的开关晶体管;以及

耦合到高电源轨和所述开关晶体管的源极终端的可变阻抗晶体管,其中所述可变阻抗晶体管的阻抗由控制信号确定,其中所述导体通过所述开关晶体管和所述可变阻抗晶体管耦合到所述高电源轨,并且通过所述开关晶体管耦合到低电源轨。

2.如权利要求1所述的可编程延迟单元,其中所述控制信号响应于系统的输出而被设置,所述系统测量集成电路的行为的改变,所述集成电路包括所述可编程延迟单元,所述改变至少部分是由所述集成电路的电源电压的变化、周围温度的变化和所述集成电路的温度的变化产生的。

3.如权利要求1所述的可编程延迟单元,其中所述控制信号是连续信号。

4.一种电学控制器,包括:

用于在耦合到所述控制器的导体上产生电信号的输出缓冲器;

耦合到所述输出缓冲器的可编程延迟单元,其中所述可编程延迟单元包括至少:耦合到所述可编程延迟单元的输出的导体;

耦合到所述导体的开关晶体管;以及

耦合到高电源轨和所述开关晶体管的源极终端的可变阻抗晶体管,其中所述可变阻抗晶体管的阻抗由控制信号确定,其中所述导体通过所述开关晶体管和所述可变阻抗晶体管耦合到所述高电源轨,并且通过所述开关晶体管耦合到低电源轨。

5.如权利要求4所述的控制器,其中所述控制信号响应于系统的输出而被设置,所述系统测量所述控制器的行为的改变,所述改变至少部分由所述控制器的电源电压的变化、周围温度的变化和所述控制器的温度的变化产生。

6.如权利要求4所述的控制器,还包括:

耦合到所述可编程延迟单元的寄存器,用于存储确定由所述可编程延迟单元引入的时间延迟的值。

7.如权利要求6所述的控制器,还包括:

存储编程到所述寄存器的一个或更多个值的存储器。

8.如权利要求4所述的控制器,其中所述控制器是存储器控制器。

9.如权利要求4所述的控制器,还包括:

耦合到所述输出缓冲器的一个或两个寄存器,用于存储确定所述输出缓冲器的源驱动阻抗的第一值和用于存储确定所述输出缓冲器的反向驱动阻抗的第二值。

10.一种电学控制器,包括:

用于从耦合到所述控制器的导体接收电信号的输入缓冲器;以及耦合到所述输入缓冲器的可编程延迟单元,其中所述可编程延迟单元包括至少:耦合到所述可编程延迟单元的输出的导体;

耦合到所述导体的开关晶体管;以及

耦合到高电源轨和所述开关晶体管的源极终端的可变阻抗晶体管,其中所述可变阻抗晶体管的阻抗由控制信号确定,其中所述导体通过所述开关晶体管和所述可变阻抗晶体管耦合到所述高电源轨,并且通过所述开关晶体管耦合到低电源轨。

11.如权利要求10所述的控制器,其中所述控制信号响应于系统的输出而被设置,所述系统测量所述控制器的行为的改变,所述改变至少部分由所述控制器的电源电压的变化、周围温度的变化和所述控制器的温度的变化产生。

12.如权利要求10所述的控制器,还包括:耦合到所述可编程延迟单元的寄存器,用于存储确定由所述可编程延迟单元引入的时间延迟的值。

13.如权利要求12所述的控制器,还包括:用于存储编程到所述寄存器的一个或更多个值的存储器。

14.如权利要求10所述的控制器,其中所述控制器是存储器控制器。

15.一种印刷电路板,包括:

图形芯片;

至少包括可编程延迟单元的控制器,所述可编程延迟单元至少包括:耦合到所述可编程延迟单元的输出的导体;

耦合到所述导体的开关晶体管;以及

耦合到高电源轨和所述开关晶体管的源极终端的可变阻抗晶体管,其中所述可变阻抗晶体管的阻抗由控制信号确定,其中所述导体通过所述开关晶体管和所述可变阻抗晶体管耦合到所述高电源轨,并且通过所述开关晶体管耦合到低电源轨。

16.如权利要求15所述的印刷电路板,其中所述控制信号响应于系统的输出而被设置,所述系统测量所述控制器的行为的改变,所述改变至少部分由所述控制器的电源电压的变化、周围温度的变化和所述控制器的温度的变化产生。

17.如权利要求15所述的印刷电路板,其中所述控制信号是连续信号。

18.一种操作如权利要求1所述的可编程延迟单元的方法,包括:通过控制所述可编程延迟单元内部的所述可变阻抗晶体管的可变阻抗来确定由所述可编程延迟单元引入到输入信号的时间延迟。

19.如权利要求18所述的方法,还包括:通过控制所述可编程延迟单元内部的通过门的阻抗来调整所述时间延迟。

20.如权利要求18所述的方法,其中控制所述可变阻抗的操作包括至少响应于系统的输出来控制所述可变阻抗,所述系统测量集成电路的行为的改变,所述集成电路包括所述可编程延迟单元,所述改变至少部分由所述集成电路的电源电压的变化、周围温度的变化和所述集成电路的温度的变化产生。

说明书 :

可编程延迟单元、其方法以及控制器

[0001] 本申请是国际申请日为2004年10月14日、中国国家阶段申请号为200480037752.X、题为“自适应输入/输出缓冲器及其使用方法”的发明专利申请的分案申请。
[0002] 发明背景
[0003] 随着数字系统中使用的频率的增加,满足定时约束变得更加困难或者甚至是不可能的。
[0004] 例如,公共时钟总线协议被用来在存储器器件和存储器控制器间传递数据、地址和控制信号。这些信号相对于存储器器件和存储器控制器两者公共的时钟而被采样。随着公共时钟的周期减少到与总线上的建立(set-up)和维持(hold)时间要求相同的量级(order),在信号定时(timing)中涉及的印刷电路板和不同半导体的制造公差(tolerance)可能没有严格到足以保证所有具有类似配置的系统可以满足定时要求。
[0005] 此外,在例如个人计算机(PC)的“开放式”系统中,很多不同的系统配置是可能的,该系统具有来自不同来源的印刷电路板和不同类型和数量的存储器设备。每种这样的配置可以具有不同的定时特性并且这些整体的特性可能超出存储器控制器的定时公差。
[0006] 因此,具有特定配置的系统可能不能运转,而其他的系统可能具有边缘操作并且可能在某些环境条件下不能运转。
[0007] 附图简要说明
[0008] 在附图的视图中,本发明的实施例以实施例的形式,而非限制性的形式来示出,其中:
[0009] 图1是其上安装了器件和控制器的印刷电路板的方框图;
[0010] 图2和图3是帮助理解本发明的一些实施例的示例性的时序图;
[0011] 图4图示设置和调整定时参数的方法的流程图;
[0012] 图5图示产生查找表的示例性方法的流程图;
[0013] 图6图示确定要编程到驱动阻抗(driving impedance)控制寄存器和输出延迟(delay)控制寄存器的数值(digital value)的示例性方法的流程图;
[0014] 图7图示要编程到输出延迟控制寄存器和输入延迟控制寄存器的数值的示例性校准(calibration)序列的流程图;
[0015] 图8图示要编程到输出延迟控制寄存器和输入延迟控制寄存器的数值的示例性的校准算法的流程图;
[0016] 图9是包括印刷电路板的装置的方框图,该印刷电路板具有安装在其之上的存储器控制器;
[0017] 图10A-10D图示要编程到图9的存储器控制器的延迟控制寄存器的数值的示例性校准序列的流程图;以及
[0018] 图11是根据本发明的一些实施例的示例性可编程延迟单元的简化示意图。
[0019] 应该可以意识到,为了描述的简单和清晰,图中所示的要素不一定按照比例来绘制。例如,为了清晰起见,一些要素的尺寸可能相对于其他要素被放大了。此外,在被认为适当的地方,在图中重复了标号,用来指示对应的或类似的要素。
[0020] 发明详细说明
[0021] 在以下详细描述中,阐述了大量具体的细节以提供对本发明的实施例的透彻理解。然而,本领域普通技术人员将会理解,可在无需这些具体的细节的情况下实现本发明的实施例。此外,没有详细描述公知的方法、过程、组件和电路,以免模糊本发明。
[0022] 以下详细描述的一些部分是根据算法和对计算机存储器中的数据位或二进制数字信号的操作的符号表示来介绍的。这些算法描述和表示可以是数据处理领域内的技术人员使用的技术,以将他们工作的内容传达给本领域的其他技术人员。
[0023] 本发明的一些实施例涉及设置和/或动态调整控制器的物理组件(component)的参数,该设置和/或动态调整操作基于电气耦合到控制器的一个或更多个器件(device)的属性,并且基于将一个或更多个器件电气耦合到控制器的介质的属性。其参数正被设置和/或被调整的物理组件可以包括那些使得由控制器发送的电信号能够被一个或更多个器件准确接收的组件,以及那些使得由一个或更多个器件发送的电信号能够被控制器准确接收的组件。
[0024] 如图1所示,根据本发明的一些实施例,印刷电路板(PCB)2可以包括控制器4、一个或更多个器件6、导体8和导体10。可选地,PCB 2可以包括图形芯片5。控制器4的示例的非穷尽列表包括中央处理单元(CPU)和存储器控制器。例如,控制器4可以具有驱动控制信号执行读和写命令的能力,并且导体8和导体10可以是那些控制信号的总线的部分。器件6的示例的非穷尽列表可以包括存储器器件和协处理器。以下描述针对单个器件6,但本发明的范围不限于此。
[0025] 当器件6装配到PCB 2上时,导体8和导体10可以包括印刷电路板上的迹线(trace)。当器件6装配到可移除模块上时,导体8和导体10可以包括例如印刷电路板上的迹线、可移除模块的迹线和耦合这些迹线的导电连接器。
[0026] 本发明的实施例的以下描述参考时钟的上升沿。然而,在本发明的其他实施例中可以改为参考时钟的下降沿。
[0027] 输出信号的参数
[0028] 以下描述阐述了控制器的物理组件以及如何设置和/或动态调整这些物理组件的参数,以使得由控制器发送的电信号能够被电气耦合到控制器的一个或更多个器件准确地接收。这些参数的设置和/或调整可以基于电气耦合到控制器的一个或更多个器件的属性以及基于将一个或更多个器件电气耦合到控制器的介质的属性。
[0029] 控制器4可以包括由可选的输出延迟控制寄存器14和驱动阻抗控制寄存器16控制的输出通道12,该控制器4是集成电路或集成电路的一部分。输出通道12可以从数字子系统(未示出)接收信号18,其稳定的逻辑电平在时钟20的每个周期内改变不超过一次,并且可以在导体8上产生反映信号18的逻辑电平改变的输出信号。
[0030] 器件6可以包括可以接收时钟24和导体8上的信号作为输入的输入通道22。输入通道22可以在时钟24的上升沿对导体8上的信号的逻辑电平进行采样并且可以将采样的逻辑电平输出到信号25上。输出通道12、输出延迟控制寄存器14和驱动阻抗控制寄存器16的一个目的可以是确保信号18的逻辑电平的改变由信号25的逻辑电平的改变准确地反映。事实上,这将信号18转换为信号25。
[0031] 由控制器4和器件6所形成的系统是公共时钟系统。
[0032] 在图2的示例性时序图中,时钟20以周期TPERIOD纳秒(在上升沿(例如上升沿102、104和106)之间测得)振荡。在本实施例中,信号18的逻辑电平在时钟20的每个上升沿的TCO1纳秒后改变。在图2的示例性时序图中,时间延迟TCO1是恒定的,但本发明的范围不限于此。
[0033] 输出通道(channel)可以包括可选的可编程延迟单元(delay cell)26和可编程输出缓冲器28。
[0034] 可编程延迟单元26可以连续地采样信号18的逻辑电平,并且可以在信号30上连续地输出与信号18上采样得到的逻辑电平基本上相等的逻辑电平。当信号18的逻辑电平发生改变时,信号30的逻辑电平可以相应地在时间延迟TPD1后改变。正如以下更详细解释的,时间延迟TPD1在一时间范围内可以是可编程的,并且可以根据存入输出延迟控制寄存器14的数值来设置。
[0035] 可编程缓冲器28可以接收信号30作为输入并且可以在导体8上产生输出信号,该输出信号可以反映信号30的逻辑电平的改变。在导体8上可以使用电压电平表示逻辑电平。例如高电压电平可以表示一个逻辑电平,而低电压电平可以表示另一个逻辑电平。因此,可编程输出缓冲器28可以在导体8上产生电压电平来反映信号30的逻辑电平的改变。
[0036] 虽然本发明的范围不限于此,可编程输出缓冲器28可以借助于将低电压源(例如地)通过可编程输出缓冲器28内部的反向驱动阻抗(sink driving impedance)耦合到导体8而在导体8上产生低电压电平。类似地,可编程输出缓冲器28可以借助于将高电压源通过可编程输出缓冲器28内部的源驱动阻抗(source driving impedance)耦合到导体8而在导体8上产生高电压电平。
[0037] 驱动阻抗控制寄存器16可以被耦合到可编程输出缓冲器28,并且存储在驱动阻抗控制寄存器16中的数值可以控制可编程输出缓冲器28的源驱动阻抗和反向驱动阻抗。(可替换地,驱动阻抗控制寄存器16可以用两个寄存器来代替,一个用于存储可以控制可编程输出缓冲器28的源驱动阻抗的数值,另一个用于存储可以控制可编程输出缓冲器28的反向驱动阻抗的数值。)
[0038] 因为从低到高的过渡时间TPLH1(从高到低的过渡时间TPHL1)可能受到可编程输出缓冲器28的源驱动阻抗(反向驱动阻抗)的影响,其中在过渡时间期间导体8上的信号的电压可能不能适当地表示任何逻辑电平,所以驱动阻抗控制寄存器16可以控制导体8上的信号的从低到高的过渡时间TPLH1和从高到低的过渡时间TPHL1。此外,从低到高的过渡时间TPLH1和从高到低的过渡时间TPHL1可能受到导体8的物理布局拓扑(layout topology)、导体8上的总的电容性负载、导体8的阻抗以及输入通道22的输入阻抗的影响。
[0039] 在图2中示出了时钟24的示例性时序图,虽然本发明不局限于该实施例。在本实施例中,时钟24可以以与时钟20相同的频率振荡,具有TPERIOD纳秒的周期(在上升沿之间测得),并且时钟24的上升沿距时钟20的上升沿可以具有TSKW纳秒的恒定时间偏移。
[0040] 当输出通道12在时钟20的上升沿后在导体8上产生逻辑电平,输入通道22应该在时钟24的上升沿采样该逻辑电平,该时钟24的上升沿距时钟20随后的上升沿偏移了TSKW纳秒。
[0041] 例如,当输出通道12在时钟20的上升沿102(104)后在导体8上产生高逻辑电平(低逻辑电平)时,输入通道22应该在时钟24的上升沿114(116)采样该逻辑电平。
[0042] 为了使输入通道22能够准确地采样导体8上的信号的逻辑电平,导体8上的信号的电压可能必须至少在时钟24的上升沿前的“建立时间”TSU1上稳定于相应的电压电平,并且可能必须至少在时钟24的上升沿后的“维持时间”TH1上保持稳定于该电压电平。
[0043] 换句话说,为了使输入通道22准确地采样导体8上的信号的高(低)逻辑电平,必须满足以下条件:
[0044] (a)导体8上的信号的高(低)电压必须在一时间段(time period)上是稳定的,该时间段至少等于建立时间和维持时间的和;
[0045] (b)导体8上的信号的高(低)电压必须至少在时钟24的上升沿后的TH1上是稳定的;以及
[0046] (c)导体8上的信号的高(低)电压必须至少在时钟24的上升沿前的TSU1上是稳定的。针对高电压和低电压,条件(a)可以用以下关系式来表示:
[0047] 1.TPERIOD-TPLH1≥TSU1+TH1;
[0048] 1’.TPERIOD-TPHL1≥TSU1+TH1。
[0049] 条件(b)可以用以下关系式来表示(高电压和低电压的关系式相同):
[0050] 2.TCO1+TPD1≥TH1+TSKW。
[0051] 针对高电压和低电压,条件(c)可以用以下关系式来表示:
[0052] 3.TPERIOD-TCO1-TPD1-TPLH1≥TSU1-TSKW;
[0053] 3’.TPERIOD-TCO1-TPD1-TPHL1≥TSU1-TSKW。
[0054] 条件(b)和(c)可以表示为可编程延迟单元26引入的时间延时TPD1的上限和下限,如以下关系式所示:
[0055] 4.TPERIOD-TPLH1-TCO1-TSU1+TSKW≥TPD1≥TH1+TSKW-TCO1;
[0056] 5.TPERIOD-TPHL1-TCO1-TSU1+TSKW≥TPD1≥TH1+TSKW-TCO1。
[0057] 可以看出,在采样高电压时,关系式1是满足关系式2和3两者的必要但不充分的条件。类似地,在采样低电压时,关系式1’是满足关系式2和3’两者的必要但不充分的条件。因此,一旦编程到驱动阻抗控制寄存器16的数值被调整,从而关系式1和1’被满足时,编程到输出延迟控制寄存器14的数值可以被调整,从而关系式4和5两者都被满足。
[0058] 正如以下将详细解释的,可以通过编程到驱动阻抗控制寄存器16和输出延迟控制寄存器14的数值来调整关系式1、1’、4和5的可控参数,以补偿关系式中所有其他参数的变化,从而满足条件(a)、(b)和(c)。
[0059] 关系式1和1’
[0060] TPERIOD是固定值,而建立时间TSU1和维持时间TH1的准确值可以受到例如器件6的制造公差的影响并且可以随着例如周围温度的变化而变化。通过调整可编程输出缓冲器28的源(反向)驱动阻抗,可以调整从低到高的过渡时间TPLH1(从高到低的过渡时间TPHL1)从而满足关系式1(1’),也即导体8上的信号的高(低)电压在等于至少建立时间TSU1和维持时间TH1之和的时间段上是稳定的。
[0061] 应该可以理解,从低到高的过渡时间TPLH1(从高到低的过渡时间TPHL1)不是由可编程输出缓冲器28的源(反向)驱动阻抗单独来确定。相反,正如前面解释的,从低到高的过渡时间TPLH1和从高到低的过渡时间TPHL1的准确值受到导体8上的总的电容性负载、导体8的物理布局拓扑、导体8的阻抗和输入通道22的输入阻抗的影响。此外,根据例如耦合到导体8的器件6的数量和类型以及根据每个器件6的制造公差,导体8上的总的电容性负载可以变化。根据耦合到导体8的器件6的数量以及根据PCB 2的设计,导体8的物理布局拓扑可以变化。根据例如PCB 2的设计以及根据PCB 2的制造公差,导体8的阻抗可以变化。例如,根据器件6的类型和制造公差,输入通道22的输入阻抗可以变化。
[0062] 因为存在如此多可以影响关系式1和1’中的其他参数的不同因素,控制从低到高的过渡时间TPLH1和从高到低的过渡时间TPHL1的能力使得关系式1和1’能够在各种情形下被满足。
[0063] 关系式4和5
[0064] TPERIOD是固定值,并且在试图满足关系式4和5前,从低到高的过渡时间TPLH1和从高到低的过渡时间TPHL1将已经做过调整。然而,正如前面关于关系式1和1’所讨论的,建立时间TSU1和维持时间TH1可以受到例如器件6的制造公差的影响并且可以例如随着周围温度的变化而变化。类似地,时间延迟TCO1的准确值可以受到例如控制器4的制造公差的影响并且可以随着例如周围温度的变化而变化。此外,时钟20和时钟24的上升沿之间的时间偏移TSKW的准确值可以受到例如用于产生时钟20和时钟24的方法的影响。例如,时钟24可以通过锁相环(PLL)来产生,该锁相环被锁定到时钟20并且具有恒定或变化的相位误差。在另一个示例中,时间偏移TSKW可以作为在用于产生时钟20和时钟24的时钟分配树(未示出)中的信号间的歪斜(skew)的结果而发生,或者通过时钟分配树的信号的上升时间的差来发生。
[0065] 因此,为了使输入通道22准确地采样导体8上的信号的逻辑电平,在调整可编程输出缓冲器28的反向驱动阻抗和源驱动阻抗从而满足关系式1和1’后,可以通过在输出延迟控制寄存器14中设置适当的数值来调整可编程延迟单元26的延迟TPD1从而满足关系式4和5两者。
[0066] 用于输入信号的参数
[0067] 以下的描述说明控制器的物理组件以及如何设置和/或动态调整这些物理组件的参数以使得由电气地耦合到控制器的一个或更多个器件所发送的电信号能够被控制器准确地接收。这些参数的设置和/或调整可以基于电气地耦合到控制器的一个或更多个器件的属性以及基于将一个或更多个器件耦合到控制器的介质的属性。
[0068] 器件6可以包括输出通道32。输出通道32可以接收信号34,其稳定的逻辑电平在时钟24的每个周期中改变不超过一次,并且可以在导体10上产生反映信号34的逻辑电平的改变的输出信号。在导体10上可以使用电压电平表示逻辑电平
[0069] 控制器4可以包括由输入延迟控制寄存器13控制的输入通道36。输入通道36可以接收时钟20和导体10的信号作为输入,并且可以输出信号38。输入通道36可以在时钟20的上升沿采样导体10上的信号的逻辑电平并且可以在信号38上输出经采样的逻辑电平。输入通道36和输入延迟控制寄存器13的一个目的可以是确保信号34的逻辑电平的改变由信号38的逻辑电平的改变来准确地反映。实际上,这可以将信号34转换为信号38。
[0070] 在图3的示例性时序图中,时钟24以周期TPERIOD纳秒(在上升沿之间测得)振荡。在本示例中,导体10上的信号的逻辑电平在时钟24的每个上升沿后的TCO2纳秒开始改变。
在图3的示例性时序图中,时间延迟TCO2是恒定的,虽然本发明的范围不限于此。
[0071] 此外,导体10上从低电压电平到高电压电平的信号的过渡可以用低到高的过渡时间TPLH2来表征,在TPLH2期间,导体10上的信号的电压可能不能适当地表示任何逻辑电平。类似地,导体10上从高电压电平到低电压电平的信号的过渡可以用高到低的过渡时间TPHL2来表征,在TPHL2期间,导体8上的信号的电压可能不能适当地表示任何逻辑电平。
[0072] 从低到高的过渡时间TPLH2可以受到输出通道32的源驱动阻抗、导体10上的总的电容性负载、导体10的物理布局拓扑、导体10的阻抗和输入通道36的输入阻抗的影响。
[0073] 类似地,从高到低的过渡时间TPHL2可以受到输出通道32的反向驱动阻抗、导体10上的总的电容性负载、导体10的物理布局拓扑、输出通道32的反向驱动阻抗、导体10的阻抗和输入通道36的输入阻抗的影响。
[0074] 在图3的示例性时序图中,导体10上的电压在时钟24的上升沿202后的(TCO2+TPLH2)纳秒实现稳定的高电压电平,并且在时钟24的上升沿204后的(TCO2+TPHL2)纳秒实现稳定的低电压电平,并且在时钟24的上升沿206后的(TCO2+TPLH2)纳秒实现稳定的高电压电平。
[0075] 输入通道36可以包括输入缓冲器40、可编程延迟单元42和输入寄存器44。输入寄存器44是用于数字子系统(未示出)的前端的一部分。
[0076] 在一些实施例中,输入缓冲器40可以接收导体10上的信号作为输入并且可以产生输出信号46,该输出信号46可以反映导体10上的信号的逻辑电平的改变。当导体10上的信号的电压表示特定的逻辑电平时,输入缓冲器40可以在信号46上输出相同的逻辑电平。然而,当导体10上的信号的电压没有适当地表示任何逻辑电平时,例如在时间段TPLH2和TPHL2期间,信号46也可能没有适当地表示任何逻辑电平,如图3的划斜线的矩形所示。(在其他实施例中,输入缓冲器40可以具有不同的行为。例如,输入缓冲器40可以是施密特触发输入缓冲器,其中信号46总是表示适当的逻辑电平,但是根据上升时间和下降时间,逻辑电平改变的时间可以变化。)
[0077] 可编程延迟单元42可以接收信号46作为输入并且可以输出信号48。可编程延迟单元42可以连续地采样信号46的逻辑电平,并且可以在信号48上连续地输出与在信号46上采样的逻辑电平基本相等的逻辑电平。当信号46的逻辑电平发生改变时,信号48的逻辑电平可以在时间延迟TPD2后相应地改变。时间延迟TPD2可以是可编程的,并且可以根据储存在输入延迟控制寄存器13中的数值来设置。
[0078] 输入寄存器44可以在上升沿采样信号48的逻辑电平并且可以输出信号38。在时钟20的每个上升沿后输入寄存器44可以在信号38上输出的逻辑电平可以与在时钟20的上升沿在信号48上采样到的逻辑电平基本相等。
[0079] 当输出通道32在时钟24的上升沿后在导体10上产生逻辑电平时,输入寄存器44应该在时钟20的上升沿采样在信号48上的逻辑电平,该时钟20的上升沿距时钟20随后的上升沿偏移了TSKW纳秒。
[0080] 例如,当输出通道32在时钟24的上升沿202后在导体10上产生高逻辑电平时,输入寄存器44应该在时钟20的上升沿214采样在信号48上的逻辑电平。类似地,当输出通道32在时钟24的上升沿204后在导体10之上产生低逻辑时,输入寄存器44应该在时钟20的上升沿216采样在信号48上的逻辑电平。
[0081] 为了使输入寄存器44准确地采样信号48的逻辑电平,信号48的逻辑电平可能必须至少在时钟20的上升沿前的“建立时间”TSU2上稳定,并且可能必须至少在时钟20的上升沿后的“维持时间”TH2上保持稳定。
[0082] 换句话说,为了使输入寄存器44准确地采样信号48上的高(低)逻辑电平,必需满足以下条件:
[0083] (d)信号48上的高(低)电压必须在一时间段上是稳定的,该时间段等于至少建立时间和维持时间的和;
[0084] (e)信号48上的高(低)电压必须至少在时钟20的上升沿后的TH2上是稳定的;以及
[0085] (f)信号48上的高(低)电压必须至少在时钟20的上升沿前的TSU2上是稳定的。
[0086] 针对高电压和低电压,条件(d)可以用以下关系式来表示:
[0087] 6.TPERIOD-TPLH2≥TSU2+TH2;
[0088] 6’.TPERIOD-TPHL2≥TSU2+TH2。
[0089] 条件(e)可以用以下关系式来表示(高和低电压具有相同的关系式):
[0090] 7.TCO2+TPD2+TSKW≥TH2。
[0091] 针对高电压和低电压,条件(f)可以用以下关系式来表示:
[0092] 8.TPERIOD-TCO2-TPD2-TPLH2≥TSU2+TSKW;
[0093] 8’.TPERIOD-TCO2-TPD2-TPHL2≥TSU2+TSKW。
[0094] 条件(e)和(f)可以表示为可编程延迟单元42引入的时间延时TPD2的上限和下限,如以下关系式所示:
[0095] 9.TPERIOD-TPLH2-TCO2-TSU2-TSKW≥TPD2≥TH2-TSKW-TCO2;
[0096] 10.TPERIOD-TPHL2-TCO2-TSU2-TSKW≥TPD2≥TH2-TSKW-TCO2。
[0097] 正如以下将详细解释的,可以通过编程到输入延迟控制寄存器13的数值来调整关系式9和10的可控参数(在关系式中用黑体强调),以补偿关系式中所有其他参数的变化,从而满足条件(e)和(f)。
[0098] 关系式6和6’
[0099] 根据本发明的实施例,从低到高的过渡时间TPLH2和从高到低的过渡时间TPHL2是不能通过控制器4来控制的,并且因此假设满足关系式6和6’。
[0100] 关系式9和10
[0101] TPERIOD是固定值,然而建立时间TSU2和维持时间TH2的准确值可以受到例如控制器4的制造公差的影响,并且可以随着例如周围的温度变化而变化。类似地,时间延迟TCO2的准确值可以受到例如器件6的制造公差的影响,并且可以随着例如周围温度的变化而变化。此外,时钟20和时钟24的上升沿之间的时间偏移TSKW的准确值可以受到例如用于产生时钟20和时钟24的方法的影响。
[0102] 从低到高的过渡时间TPLH2和从高到低的过渡时间TPHL2的准确值可以受到导体10上的总的电容性负载、导体10的物理布局拓扑、导体10的阻抗和输入通道36的输入阻抗的影响。此外,导体10上的总的电容性负载可以例如根据输出通道32的输出电容(capacitance)的变化以及根据每个器件6的类型和制造公差而变化。此外,导体10上的总的电容性负载可以例如根据电气地耦合到导体10的可选的器件50的类型、数量和制造公差而变化。导体10的物理布局拓扑可以例如根据PCB 2的布局而变化。导体10的阻抗可以根据PCB 2的设计和PCB 2的制造公差而变化。输出通道32的输出阻抗可以例如根据器件6的制造公差而变化。
[0103] 因此,为了使输入寄存器44准确地采样信号48的逻辑电平,可以通过在输入延迟控制寄存器13中设置适当的数值来调整可编程延迟单元42的延迟TPD2,从而满足关系式9和10两者。
[0104] 设置和调整参数
[0105] 控制器的物理组件的参数由输入延迟控制寄存器13、输出延迟控制寄存器14以及驱动阻抗控制寄存器16中的数值来确定。如图4所示,这些寄存器的默认值可以由实验室工作(400)来确定并且可以存入安装在印刷电路板上的存储器(401)。印刷电路板可以安装在装置中(402),并且如果需要的话,存入寄存器的数值可以在装置的操作期间进行调整(403)。正如以下更详细解释的,图5是400的更详细的描述,而图6是403的更详细的描述。图7描述了由图5和图6的方法所调用的方法,而图8描述了由图7的方法所调用的方法。
[0106] PCB 2可以包括存储关于PCB 2的配置信息64的一个或更多个存储器62。配置信息64可以包括影响编程到驱动阻抗控制寄存器16和输出延迟控制寄存器14的数值的信息,例如电气地耦合到导体8的器件6的类型和数量,并且可选择地包括关于导体8的拓扑和阻抗的信息。配置信息64还可以包括影响编程到输入延迟控制寄存器13的数值的信息,例如将电信号发送到导体10的器件6的类型、电气地耦合到导体10的可选的器件50的类型和数量,并且可选地包括关于导体10的拓扑和阻抗的信息。
[0107] PCB 2可以包括存储用于编程驱动阻抗控制寄存器16和输出延迟控制寄存器14以及用于编程延迟控制寄存器13的信息的存储器52。可替换地,存储器52可以是控制器4的部分。这样的信息可以以例如以下的数据结构来安排:驱动阻抗查找表(LUT)54、输出窗口(window)中心查找表56、输入窗口中心查找表58以及黄金模式表60。存储器52的数据结构的所有或一些中的数据可以是可编程的。此外,存储器52可以包括一个或更多个存储器器件,并且数据结构可以分布在这些器件中。
[0108] 存储器52还可以包括用于实现图6、图7和图8的方法的软件模块。
[0109] 驱动阻抗LUT 54可以包括一个或更多个表项(entry)。针对导体8上的特定的总的电容性负载、导体8上的特定的阻抗和输入通道22的特定的输入阻抗的表项可以包括控制可编程输出缓冲器28的源驱动阻抗的数值以及控制可编程输出缓冲器28的反向驱动阻抗的另一数值,这两个数值使条件(a)能够满足。
[0110] 输出窗口中心LUT 56可以包括一个或更多个表项。针对导体8上的特定的总的电容性负载、特定的时间偏移TSKW、导体8的特定的阻抗和输入通道22的特定的输入阻抗的表项可以包括控制可编程延迟单元26引入的时间延迟TPD1的数值,该数值使得条件(b)和(c)能够满足。
[0111] 输入窗口中心LUT 58可以包括一个或更多个表项。针对导体10的特定的总的电容性负载、特定的时间偏移TSKW、导体10的特定的阻抗和输入通道36的特定的输入阻抗的表项可以包括控制可编程延迟单元42引入的时间延迟TPD2的数值,该数值使得条件(e)和(f)能够满足。
[0112] 黄金模式表60可以包括数值的模式,该数值用于测试输入通道22是否准确地采样导体8上的信号的逻辑电平。例如,黄金模式表60可以包括针对维持时间/建立时间违例(violation)设计的松弛(relaxed)/压力(stress)测试模式。要用到的精确的模式可以依赖于许多因素,例如导体8的具体的拓扑以及在导体8上传递数值使用的协议。然而,当这些针对维持(建立)时间违例的数值的模式在导体8上产生并且时间延迟TPD1接近其范围的最小值(最大值)时,相比于用于压力测试模式,用于松弛测试的模式的输入通道22可以更有可能准确地采样导体8上的信号的逻辑电平。
[0113] 类似地,黄金模式表60可以包括数值的模式,该数值用于测试输入寄存器44是否准确地采样导体10上的信号的逻辑电平。例如,黄金模式表60可以包括针对维持时间/建立时间违例设计的松弛/压力测试模式。要用到的精确的模式可以依赖于许多因素例如导体10的具体的拓扑以及在导体10上传递数值使用的协议。然而,当这些用于维持(建立)时间违例的数值的模式在导体10上产生并且时间延迟TPD2接近于其范围的最小值(最大值)时,相比于用于压力测试的模式,用于松弛测试的模式的输入寄存器44可以更有可能准确地采样导体10上的信号的逻辑电平。
[0114] 此外黄金模式表60可以是可编程的,并且当提供更加有效的测试的模式被开发出时,如果需要的话,其内容可以被更新或替换。
[0115] 图5示出根据本发明的一些实施例确定要存入驱动阻抗LUT 54、输出窗口中心LUT56和输入窗口中心LUT 58的默认值的示例性方法的流程图。虽然本发明的范围不限于此,图5的方法可以在特定的类型的PCB 2和安装在其之上的存储器52的组合的大批量生产之前执行。
[0116] 存储器52的“验证”版本可以例如使用控制器4的仿真和验证测试来产生(302),以确定存入驱动阻抗查找表54、输出窗口中心查找表56和输入窗口中心查找表58的表项中的“验证”数值。
[0117] 然而,由于例如PCB 2、控制器4、器件6和可选的器件50的制造公差,关于导体8上的信号的一个或更多个定时参数(TCO1、TPD1、TPHL1、TPLH1、TSU1、TH1和TSKW)和关于导体10上的信号的一个或更多个定时参数(TCO2、TPD2、TPHL2、TPLH2、TSU2、TH2和TSKW)可以具有与在仿真和验证测试期间用于定义存入存储器52的验证版本的“验证”数值的值偏离(deviate)的值。因此,在某些操作条件下,存入存储器52的验证版本的数值可能不足以使得输入通道22准确地采样导体8上的信号的逻辑电平并且不足以使输入寄存器44准确地采样导体10上的信号的逻辑电平。
[0118] 如果不期望表54、56和58的表项的校准(502),存储器52的验证版本可以用作存储器52的“产品(production)”版本(504)。因此,寄存器的默认值是验证值。
[0119] 如果期望校准(502),可以在PCB 2上安装存储器52的“验证”版本(506)。PCB2可以被上电(power up)并且可以随后读取配置信息64。基于配置信息64选择验证存储器的驱动阻抗查找表54、输出窗口中心查找表56和输入窗口中心查找表58的适当的表项,并且在选出的表项中的数值可以分别被编程到驱动阻抗控制寄存器16、输出延迟控制寄存器14和输入延迟控制寄存器13(508)。
[0120] 可以使控制器4和器件6处于操作条件(510)下。例如,控制器4和器件6可以例如通过切换(toggle)导体8上的信号和导体10上的信号而被加热到操作温度,例如50℃。当到达期望的温度时,可以执行结合图7更详细描述的校准序列,以确定驱动阻抗查找表
54和输出窗口中心查找表56的数值,该数值针对PCB 2的具体的参数和安装在PCB 2上的器件6和控制器4的具体参数来校准。此外,可以执行类似的校准序列(512)以确定输入窗口中心查找表58的数值,该数值针对PCB 2的具体的参数和安装在PCB 2上的器件6、可选的器件50和控制器4的具体参数来校准。
[0121] 可以使用由校准序列确定的值来更新驱动阻抗查找表54、输出窗口中心查找表56和输入窗口中心查找表58的一个或更多个适当的表项(514),并且可以创建使用已更新值作为寄存器的默认值的存储器52的产品版本。
[0122] 此外,如果可能存在PCB 2的不同配置(例如,控制器4和可选的器件50可以永久地安装在PCB 2上,而PCB 2的不同配置可以具有不同类型和数量的器件6)并且期望使得存储器52的表存储适合于每个不同配置的表项,那么可以在创建要被安装在PCB 2上的存储器52的产品版本(504)前为每个配置(516和518)重复校准过程(508到514)。
[0123] 图6图示根据本发明的一些实施例的示例性方法的流程图,用于确定编程到驱动阻抗控制寄存器16和输出延迟控制寄存器14的数值,从而输入通道22准确地采样导体8上的信号的逻辑电平,以及确定编程到输入延迟控制寄存器13的数值,从而输入寄存器44准确地采样导体10上的信号的逻辑电平。
[0124] 虽然本发明的范围不限于此,包括图1中的PCB 2的装置每次上电时,可以执行图6的方法。PCB 2已在其上安装有控制器4、一个或更多个器件6、可选的器件50、存储器62和存储器52的产品版本。
[0125] 可以给PCB 2上电并且随后读取配置信息64。可以基于配制信息64选择驱动阻抗查找表54、输出窗口中心查找表56和输入窗口中心查找表58的适当的表项,并且可以将在选出表项中的数值分别编程到驱动阻抗控制寄存器16、输出延迟控制寄存器14和输入延迟控制寄存器13(508)。
[0126] 可以使控制器4和器件6处于操作条件(510)下。例如,控制器4和器件6可以例如通过切换导体8上的信号和导体10上的信号而被加热到操作温度,例如50℃。
[0127] 当到达期望的温度时,使用存入黄金模式表60的针对维持时间和建立时间违例设计的压力测试的模式来测试输入通道22准确地采样导体8上的信号的逻辑电平和输入寄存器44准确地采样导体10上的信号的逻辑电平(612)。如果测试失败(614),该方法可以退出,同时报告该失败(616)。可选择地,在退出前,可以使用存入黄金模式表60的针对维持时间和建立时间违例设计的松弛测试的模式来重复该测试(618)。如果该重复测试失败(620),该方法可以退出,同时报告该失败(616)。
[0128] 然而,如果压力测试没有失败或者如果松弛测试没有失败,该方法可以继续到关于上电校准的判断622。
[0129] 如果期望在驱动阻抗控制寄存器16和输出窗口延迟控制寄存器14中的数值的上电校准(622),可以执行关于图7更详细描述的校准序列以确定驱动阻抗控制寄存器16和输出窗口延迟控制寄存器14的数值,该数值针对PCB 2的当前参数和安装在PCB 2上的器件6和控制器4的当前参数而被调整。
[0130] 此外,可以执行类似的校准序列(512)以确定输入延迟控制寄存器13的数值,该数值针对PCB 2的当前参数和安装在PCB 2上的器件6、可选器件50和控制器4的当前参数而被调整。
[0131] 如果校准失败(624),该方法可以退出,同时报告该失败(626)。但是,如果该校准没有失败并且如果该校准序列为驱动阻抗控制寄存器16、输出延迟控制寄存器14和输入延迟控制寄存器13中的至少一个确定不同于在508中编程的默认值的值,对应寄存器的内容将被校准序列确定的值所替换(630)。
[0132] 在控制器4和器件6操作期间,周围温度的改变、控制器4和器件6的电源电压的漂移(drift)和其他因素可以导致导体8和10上的信号的定时参数的变化。为了补偿这些变化,如果需要的话,可以在反复操作(recurring)的基础来重复(632和634)对寄存器13、14和16的内容的校准(512)。该校准的重复甚至可以发生在不需要上电校准(622)的情况下。
[0133] 应该注意到,即使在上电时刻,基于配置信息64的存入存储器52和编程到寄存器的默认值导致了使用压力黄金模式的实际运行(alive)测试或使用松弛黄金模式的实际运行测试的成功执行,实际运行测试可能在小的余量上成功。通过使用校准序列校准所述值并且使用校准值来更新寄存器,使用黄金模式成功通过测试的余量可以增加。
[0134] 图7示出根据本发明的实施例,针对被编程到输出延迟控制寄存器14和输入延迟控制寄存器13的数值的示例性校准序列的流程图。图5和图6的方法涉及的校准序列512可以包括图7的序列,但本发明的范围不限于此。
[0135] 当图7的序列被图5的方法调用时,输入延迟控制寄存器13和输出延迟控制寄存器14已经被分别被编程为来自输入中心查找表58和输出中心查找表56的默认值,根据图5的508中的配置信息64,该默认值已经从表中被选出。
[0136] 类似地,当图7的序列被图6的序列调用时,输入延迟控制寄存器13和输出延迟控制寄存器14已经被编程为根据图6的508中的配置信息从查找表选出的默认值或被编程为由先前的图6的630中调用图7的校准序列所确定的值。
[0137] 可以执行校准算法来求输出延迟控制寄存器14的值(704)。正如下面关于图8所解释的,校准算法可以为输出延迟控制寄存器14确定一个或更多个值,其中在该值上输入通道22准确地采样导体8上的信号的逻辑电平。输出延迟控制寄存器14的校准值可以被选为这些值的中间值(706)。
[0138] 输出延迟控制寄存器14可以随后编程为校准值(708),并且针对输入延迟控制寄存器13的值可以执行校准算法(710)。校准算法可以为输入延迟控制寄存器13确定一个或更多个值,其中在该值上输入寄存器44可以正确采样导体10上的信号的逻辑电平。输入延迟控制寄存器13的校准值可以被选为这些值的中间值(712)。
[0139] 然而,如果校准算法(704)不能确定输出延迟控制寄存器14的任何值,其中在该值上输入通道22准确地采样导体8上的信号的逻辑电平,那么,该方法可以报告失败(714)并退出。
[0140] 类似地,如果校准算法(710)不能确定输入延迟控制寄存器13的任何值,其中在该值上输入寄存器44准确地采样导体10上的信号的逻辑电平,那么,该方法可以报告失败(714)并退出。
[0141] 图8图示根据本发明的一些实施例的示例性校准算法的流程图,该示例性校准算法用来获得被编程到输出延迟控制寄存器14和输入延迟控制寄存器13的数值。图6的方法在704和710涉及的校准算法可以包括图8的算法,但本发明的范围不限于此。
[0142] 要被校准的寄存器(在图7的704中的输出延迟控制寄存器14和在图7的710中的输入延迟控制寄存器13)被编程到对应于由寄存器控制的延迟单元的值,该延迟单元具有其区间内最小延迟(802)。
[0143] 在第一测试中,被设计为用于建立时间违例的压力测试的模式通过信号18被发送到器件6并且从信号34被发送回控制器4(804)。如果在信号38上接收到的数值与通过信号18发送的数值不同(806),被编程的值被标记为失败(808)。然而,如果在信号38上接收到的数值与从信号18发送的数值匹配,执行第二测试。
[0144] 在第二测试中,被设计为用于维持时间违例的压力测试的模式通过信号18被发送到器件6并且从信号34被发送回控制器4(810)。如果在信号38上接收到的数值与通过信号18发送的数值不同(812),被编程的值被标记为失败(808)。然而,如果在信号38上接收的数值与从信号18发送的数值匹配(806),被编程的值被标记为通过(814)。
[0145] 要被校准的寄存器可以随后被编程为增大的值,从而由寄存器控制的延迟单元具有仍处于其区间内的增大的延迟(848),并且第一测试(和第二测试,如果适合)可以被重复。增大的被编程的值可以被标记为失败或通过。当寄存器的所有的可编程值都已经被测试(816)后,核查可编程值的结果(820)。如果所有的编程值使测试失败,那么报告失败并且该方法退出。如果并非所有的编程值使测试失败,那么报告通过测试的值(824)并且该方法退出。
[0146] 双向信号
[0147] 前面的描述集中于分开的导体8和10,其中每个导体载送各自的信号。然而,本发明的实施例同样可以应用于将控制器4的输出通道12电气耦合到器件6的输入通道22以及将器件6的输出通道32电气耦合到控制器4的输入通道36的单个导体的情况。在控制器4内,可编程输出缓冲器28的输出和输入缓冲器40的输入将被电气耦合。在器件6内,通道32的输出和通道22的输入将被电气耦合。可以使用任何适当的技术来确保在任何给定的时间输出通道12和输出通道32中只有一个在单个导体上发送信号,该技术包括例如开漏(open drain)输出和高阻抗输出的公知技术。
[0148] 导体组
[0149] 前面的描述集中于单个导体8和10。在前面的描述中,每个导体具有各自的输入通道和输出通道,其中控制器4中的通道由寄存器控制。然而应该理解,当一组导体类似时,控制器4可以具有包括用于控制导体组中的导体的输入通道的单个输入延迟控制寄存器,以及用于控制导体组中导体的输出通道的单个输出延迟控制寄存器和单个驱动阻抗控制寄存器。在导体组中的导体间的相似性可以包括例如在可应用的情况下的迹线拓扑的相似性、信号转换行为的相似性和信号协议的相似性。例如,如果地址信号用64位来表示,那么载送这些位的64个导体可以被视为相同组的一部分,并且控制器4可以包括单个输出延迟控制寄存器和单个驱动阻抗控制寄存器,以控制地址信号的64个导体的输出通道。
[0150] 示例性装置
[0151] 根据本发明的一些实施例在图9中示出了示例性装置900。装置900可以包括印刷电路板(PCB)902。装置900可以可选地包括音频输入器件901。在图9中未示出装置900的公知的组件和电路,以免模糊本发明。
[0152] 装置900的示例的非穷据性列表包括桌面型个人计算机、服务器计算机、膝上型计算机、笔记本式计算机、手持型计算机、个人数字助理(PDA)、移动电话等,以及任何具有高速总线和存储器子系统的嵌入式应用。
[0153] 处理器903、基本输入/输出系统(BIOS)器件952、存储器控制器904、存储器库(bank)916和可选的存储器库917可以安装在PCB 902上。(在一些实施例中,存储器控制器904可以是处理器903的一部分。)图形芯片905可以可选地安装在PCB 902上。未示出也可以安装在PCB 902上的附加组件,以免模糊本发明。
[0154] 处理器903的示例的非穷举性列表包括中央处理单元(CPU)、数字信号处理器(DSP)、精简指令集计算机(RISC)、复杂指令集计算机(CISC)等。此外,处理器903可以是专用集成电路(ASIC)的一部分,或者可以是专用标准产品(ASSP)的一部分。
[0155] BIOS器件952的示例的非穷举性列表包括闪存存储器、电可擦除可编程只读存储器(EEPROM)等。BIOS器件952可以包括用于实现图6、图10A-10D和图8的方法的软件模块。
[0156] 存储器控制器904的示例的非穷举性列表包括总线桥(bridge)、外设部件互联(PCI)北桥、PCI南桥、图形加速端口(AGP)桥、存储器接口器件等,或它们的组合。此外,存储器控制器904可以是专用集成电路(ASIC)的一部分,或芯片组的一部分,或专用标准产品(ASSP)的一部分。
[0157] 存储器库916和917中的一个或两个可以是可移除模块,例如双列直插式存储器模块(DIMM)、小型双列直插式存储器模块(SODIMM)、单列直插式存储器模块(SIMM)、RAMBUS直插式存储器模块(RIMM)等。可替换地,存储器库916和917中的一个或两个可以是不可移除的,例如可以永久地附接在PCB 902上。
[0158] 存储器库916和917可以分别包括一个或更多个存储器器件906和907。存储器器件906和907的示例的非穷举性列表包括同步动态随机访问存储器(SDRAM)器件、RAMBUS动态随机访问存储器(RDRAM)器件、双倍数据速率(DDR)存储器器件、静态随机访问存储器(SRAM)等。
[0159] BIOS器件952是图1的存储器52的特定实施例,存储器控制器904是图1的控制器4的特定实施例,而存储器器件906和907是图1的器件6的特定实施例。因此,以下描述将关注控制存储器控制器904中的寄存器的编程,该存储器控制器904控制存储器控制器904和存储器器件906和907间的信号的存储器控制器904中的输入和输出通道。
[0160] 存储器控制器904可以通过各种导体组耦合到存储器器件906和存储器器件907。对于一组载送一个或更多个输出信号的一个或更多个导体来说,存储器控制器904可以包括类似于图1的输出通道12的一个或更多个输出通道(未示出)。对于一组载送一个或更多个输入信号的一个或更多个导体来说,存储器控制器904可以包括类似于图1的输入通道36的一个或更多个输入通道(未示出)。
[0161] 导体920的一组可以载送用于从存储器器件906和/或存储器器件907读取数据的存储器数据输入(MDIN)信号。导体920还可以载送用于将数据写入存储器器件906和/或存储器器件907的存储器数据输出(MDOUT)信号。存储器控制器904可以包括单个驱动阻抗控制寄存器和可选的单个输出延迟控制寄存器,用于控制在导体920上输出MDOUT信号存储器控制器904的输出通道。类似地,存储器控制器904可以包括单个输入延迟控制寄存器,用于控制接收导体920上的MDIN信号的存储器控制器904的输入通道。
[0162] 导体922的另一组可以将地址信号从存储器控制器904载送到存储器器件906和/或存储器器件907。存储器控制器904可以包括单个驱动阻抗控制寄存器和可选的单个输出延迟控制寄存器,用于控制在导体922上输出地址信号的存储器控制器904的输出通道。
[0163] 单个导体924可以将时钟信号从存储器控制器904载送到存储器器件906和/或存储器器件907(类似于图1的时钟20和时钟24)。存储器控制器904可以包括单个驱动阻抗控制寄存器和可选的单个输出延迟控制寄存器,用于控制在导体924上输出时钟信号的存储器控制器904的输出通道。
[0164] 导体926(927)的另一组可以将“芯片选择”信号从存储器控制器904载送到存储器器件906(907)。芯片选择信号用于向特定存储器器件通知在其他导体上发送的信号,也即地址信号和MDIN信号,是针对该存储器器件的。存储器控制器904可以包括单个驱动阻抗控制寄存器和可选的单个输出延迟控制寄存器,用于控制将导体926上的芯片选择信号输出的存储器控制器904的输出通道,并且可以包括另一个单个驱动阻抗控制寄存器和另一个可选的单个输出延迟控制寄存器,用于控制在导体927上输出芯片选择信号的存储器控制器904的输出通道。
[0165] 示例性的校准序列
[0166] 图10A-10D是根据本发明的一些实施例,要被编程到存储器控制器904的延迟控制寄存器的数值的示例性校准序列的流程图描述。图10A-10D的示例性校准序列所影响的控制寄存器有:
[0167] a)“数据输出延迟控制寄存器”-用于在导体920上输出MDOUT信号的存储器控制器904的输出通道的输出延迟控制寄存器(在图10A中示出数据输出延迟控制寄存器的校准过程);
[0168] b)“数据输入延迟控制寄存器”-用于接收导体920上的MDIN信号的存储器控制器904的输入通道的输入延迟控制寄存器(在图10B中示出数据输入延迟控制寄存器的校准过程);
[0169] c)“地址延迟控制寄存器”-用于在导体922上输出地址信号的存储器控制器904的输出通道的输出延迟控制寄存器(在图10C中示出地址延迟控制寄存器的校准过程);
[0170] d)“第一芯片选择控制寄存器”-用于在导体926上将芯片选择信号输出到存储器器件906的存储器控制器904的输出通道的输出延迟控制寄存器(在图10D中示出第一芯片选择控制寄存器的校准过程);以及
[0171] e)“第二芯片选择控制寄存器”-用于在导体927上将芯片选择信号输出到存储器器件907的存储器控制器904的输出通道的输出延迟控制寄存器(在图10D中示出第二芯片选择控制寄存器的校准过程)。
[0172] 在产品BIOS的产生期间,当图10A-10D的序列被调用时,寄存器已经被处理器903使用来自BIOS器件952中的查找表的值编程,该值已经由处理器903根据存储在存储器(例如EEPROM、闪存存储器等)中的配置信息936选出。例如,当存储器库916和/或存储器库917是DIMM存储器时,用于读取配制信息936和937的协议可以是串行存在检测(SPD)协议。
[0173] 类似地,在上电校准或反复校准(recurring calibration)期间,当图10A-10D的序列被调用以补偿改变(如图6所示)时,已经用根据配制信息936和937选自BIOS器件952中的查找表的值或由之前对10A-10D的校准序列的调用所确定的值编程了寄存器。
[0174] 可以对“数据输出延迟控制寄存器”的值执行校准算法,其中存储器控制器904的延迟控制寄存器可以被编程到默认值(1000),并且存储器数据输出信号(MDOUT)被发送到存储器器件906(1002)。以上结合图8描述了示例性的校准算法。正如上面结合图8所解释的,校准算法可以为“数据输出延迟控制器寄存器”确定一个或更多个值,其中在该值上存储器器件906的输入通道准确地采样导体920上的MDOUT信号的逻辑电平。
[0175] 存储器控制器904的延迟控制寄存器可以被编程到默认值(1004)。可以为“数据输出延迟控制寄存器”的值重复校准算法,其中,这一次存储器数据输出(MDOUT)信号被发送到存储器器件907(1006)。这一次,校准算法可以为“数据输出延迟控制器寄存器”确定一个或更多个值,其中在该值上存储器器件907的输入通道准确地采样导体920上的MDOUT信号的逻辑电平。
[0176] 如果在1002和1006中由校准算法确定的值中的一些定义了通过算法测试的值的重叠区域,那么“数据输出延迟控制寄存器”的校准值可以被选为这些重叠值的中间值(1008)。
[0177] 随后可以用校准值编程“数据输出延迟控制寄存器”,并且可以用默认值编程其他的延迟控制寄存器(1010)。
[0178] 可以对“数据输入延迟控制寄存器”的值执行校准算法,其中从存储器器件906接收存储器数据输入信号(MDIN)(1012)。校准算法可以为“数据输入延迟控制寄存器”确定一个或更多个值,其中在该值上存储器控制器904的输入通道准确地采样导体920上的来自存储器器件906的MDIN信号的逻辑电平。
[0179] 随后可以用校准值编程“数据输出延迟控制寄存器”,并且可以用默认值编程其他的延迟控制寄存器(1014)。可以为“数据输入延迟控制寄存器”的值重复校准算法,其中,这一次存储器数据输入(MDIN)信号接收自存储器器件907(1016)。这一次,校准算法可以为“数据输入延迟控制器寄存器”确定一个或更多个值,其中在该值上存储器器件904的输入通道准确地采样导体920上的来自存储器器件907的MDIN信号的逻辑电平。
[0180] 如果在1012和1016中由校准算法确定的值中的一些定义了通过了算法测试的值的重叠区域,那么“数据输入延迟控制寄存器”的校准值可以被选为这些重叠值的中间值(1018)。
[0181] 随后可以用校准值编程“数据输出延迟控制寄存器”和“数据输入延迟控制寄存器”,并且可以用默认值编程其他的延迟控制寄存器(1020)。
[0182] 可以对“地址延迟控制寄存器”的值执行校准算法(1022)。校准算法可以为“地址延迟控制寄存器”确定一个或更多个值,其中在该值上存储器器件906的输入通道准确地采样导体922上的地址信号的逻辑电平。
[0183] 随后可以用校准值编程“数据输出延迟控制寄存器”和“数据输入延迟控制寄存器”,并且可以用默认值编程其他的延迟控制寄存器(1024)
[0184] 可以对“地址延迟控制寄存器”的值重复校准算法,其中这一次地址信号接收自存储器器件907(1026)。这一次,校准算法可以为“地址延迟控制器寄存器”确定一个或更多个值,其中在该值上存储器器件907的输入通道准确地采样导体922上的地址信号的逻辑电平。
[0185] 如果在1022和1026中由校准算法确定的值的一些定义了通过算法测试的值的重叠区域,那么“地址延迟控制寄存器”的校准值可以被选为这些重叠值的中间值(1028)。
[0186] 随后可以用校准值编程“数据输出延迟控制寄存器”、“数据输入延迟控制寄存器”和“地址延迟控制寄存器”,并且可以用默认值编程其他的延迟控制寄存器(1030)。
[0187] 可以对“第一芯片选择延迟控制寄存器”的值执行校准算法(1032)。校准算法可以为“第一芯片选择延迟控制寄存器”确定一个或更多个值,其中在该值上存储器器件906的输入通道准确地采样导体926上的芯片选择信号的逻辑电平。“第一芯片选择延迟控制寄存器”的校准值可以被选为这些值的中间值(1034)。
[0188] 随后可以用校准值编程“数据输出延迟控制寄存器”、“数据输入延迟控制寄存器”、“地址延迟控制寄存器”和“第一芯片选择延迟控制寄存器”,并且可以用默认值编程其他的延迟控制寄存器(1036)。
[0189] 可以对“第二芯片选择延迟控制寄存器”的值执行校准算法(1038)。校准算法可以为“第二芯片选择延迟控制寄存器”确定一个或更多个值,其中在该值上存储器器件907的输入通道准确地采样导体927上的芯片选择信号的逻辑电平。“第二芯片选择延迟控制寄存器”的校准值可以被选为这些值的中间值,并且“第二芯片选择延迟控制寄存器”可以被编程到校准值(1040)。
[0190] 如果在校准算法的执行期间测试失败,可以报告该失败(1042)。
[0191] 用于示例性校准算法的延迟值和黄金模式
[0192] 在一个实施例中,为图9的装置从图10A-10D的校准序列中调用图8的校准算法。在本实施例中,时钟924的频率是133兆赫,然而在其他实施例中,该频率可以具有其他值,例如100兆赫、166兆赫、200兆赫、266兆赫等。对于时钟频率是133兆赫的情况,时钟924以周期TPERIOD=7.519纳秒振荡。当存储器库916和存储器库917是DIMM存储器时,紧随时钟924的上升沿的由存储器库916或存储器库917发送的导体920上的MDIN信号最终保持稳定的时间(max(TCO2+TPLH2,TCO2+TPHL2))可以是例如大约1.8纳秒到大约4.2纳秒,也就是大约2.4纳秒的区间。max(TCO2+TPLH2,TCO2+TPHL2)的精确值可以例如取决于存储器器件906和存储器器件907的数量和类型。
[0193] 在本实施例中,由接收导体920上的MDIN信号(由图8的校准算法的点818上的“数据输入延迟控制寄存器”控制)的存储器控制器904的输入通道的可编程延迟单元引入的延迟TPD2可以具有以下值:
[0194]延迟(皮秒) 相对于中点的延迟(皮秒)
0 -2000
250 -1750
500 -1500
750 -1250
1000 -1000
1250 -750
1500 -500
1750 -250
2000 0
2250 250
[0195]2500 500
2750 750
3000 1000
3250 1250
3500 1500
3750 1750
[0196] 其中2000皮秒的延迟TPD2大致对应于延迟TPD2的期望区间的中点。
[0197] 此外,在本实施例中,导体920包括64个导体,其中每个导体表示1位。导体920的64位被分成8个字节,每个字节包括从0到7编号的八位。导体920的拓扑可以是这样的:属于不同字节的导体间的噪声耦合和干扰足够小。因此可以针对建立时间违例和维持时间违例分别测试每个字节。
[0198] 此外,导体920的拓扑可以是这样的:对于每个字节,编号为3的位对于与该字节其他位耦合带来的干扰和噪声最敏感。
[0199] 因此,对于组成导体920的字节的一组导体来说,以下黄金模式可以被用于执行建立时间违例和维持时间违例的压力测试:
[0200]
[0201] 在建立时间违例的示例性的压力测试中,存储器控制器904将字节发送到存储器器件906或907,其中字节的位7、6、5、4、2、1和0具有相同的逻辑值,该逻辑值在接续的四个时钟(时钟1-4)中的每一个时钟上发生改变,并且字节的位3在接续的四个时钟中的每一个时钟上具有相反的逻辑值。字节的位7、6、5、4、2、1和0可能产生很多噪声,并且如果存储器器件906或907在时钟3、4和5中的每一个时钟上准确地接收位3,那么测试将通过。
[0202] 在维持时间违例的示例性的松弛性测试中,在时钟5-10中,存储器控制器904发送字节的位7、6、5、4、2、1和0的不变的逻辑值,以使系统稳定。在时钟5-7中,发送位3的不变的相反逻辑值,也用于使系统稳定。位3的逻辑值随后在时钟8和9上改变,并且如果存储器器件906或907在时钟9和10中的每一个时钟上准确地接收位3,那么测试将通过。
[0203] 可编程延迟单元
[0204] 图11是根据本发明的一些实施例的示例性可编程延迟单元1100的简化示意图。可编程延迟单元1100可以被用于实现图1的可编程延迟单元26和/或可编程延迟单元
42。
[0205] 可编程延迟单元1100可以接收输入信号1102、控制信号1106、1108、1110、1112和1128,并且可以产生输出信号1104。可编程延迟单元1100可以连续地采样信号1102的逻辑电平,并且可以连续地输出信号1104上的逻辑电平,该输出的逻辑电平与信号1102上采样的逻辑电平基本相等。当信号1102的逻辑电平发生改变时,信号1104的逻辑电平可以在时间延迟TPD后相应地改变。
[0206] 时间延迟TPD在某一时间区间内可以是可编程的,并且可以根据控制信号1106、1108、1110和1112的数值被设置为十六个时间延迟中的一个。此外,控制信号1128可以使能(enable)由控制信号1106、1108、1110和1112选择的时间延迟TPD的连续调整或微粒度(fine grain)调整。例如可以使用控制信号1128,以便时间延迟TPD更接近预期值。在另一个实施例中,如果时间延迟TPD从预期值漂移,可以使用控制信号1128向TPD施加校正,例如,该时间延迟TPD的漂移是由于以下因素中的任何因素或其组合:电源电压的变化、周围温度的变化以及控制器4的温度的变化。响应于来自用于探测这些变化的测量系统(未示出)的输出,可以产生由控制信号1128施加的校正。
[0207] 可编程延迟单元1100可以包括电容1150。正如以下将详细解释的,通过控制对电容1150充电和放电的电路的阻抗,控制信号1106、1108、1110和1112的数值可以设置时间延迟TPD。此外,通过控制对电容1150充电的电路的阻抗,控制信号1128可以调整时间延迟TPD。
[0208] 可编程延迟单元1100可以包括开关(switching)晶体管1114、开关晶体管1116、可变阻抗晶体管1118和非门(inverter)1120。
[0209] 非门1120可以接收输入信号1102,并且可以输出信号1122,该信号1122具有从信号1102的逻辑电平取反(invert)得到逻辑电平。
[0210] 当输入信号1102的逻辑电平是逻辑“0”时,信号1122的逻辑电平是逻辑“1”,并且导体1124可以通过由开关晶体管1114呈现的足够低的阻抗ZL被耦合到低电源轨(rail)1140,并且通过由开关晶体管1116呈现的足够高的阻抗ZZ被耦合到高电源轨VCCC,因此实际上解耦合导体1124和导体1126。
[0211] 当输入信号1102的逻辑电平是逻辑“1”时,信号1122的逻辑电平是逻辑“0”,并且导体1124可以通过由开关晶体管1114呈现的足够高的阻抗ZH被耦合到低电源轨1140,并且通过由开关晶体管1116呈现的足够低的阻抗ZH以及由控制器信号1128确定并由可变阻抗晶体管1118呈现的阻抗ZV被耦合到高电源轨VCCC。
[0212] 然而,为了说明的简单,如果阻抗ZZ大大高于阻抗ZL和ZH,那么阻抗ZZ可以被近似为无穷阻抗。因此,使用该近似,当输入信号1102的逻辑电平是逻辑“0”时,导体1124可以通过由开关晶体管1114呈现的足够低的阻抗ZL被耦合到低电源轨1140,并且当输入信号1102的逻辑电平是逻辑“1”时,导体1124可以通过由开关晶体管1116呈现的足够低阻抗ZH以及由可变阻抗晶体管1118呈现的阻抗ZV被耦合到高电源轨VCCC。
[0213] 可编程延迟单元1100可以包括通过门(pass gate)1130、1132、1134和1136。通过门1130、1132、1134和1136可以分别接收控制信号1106、1108、1110和1112作为输入。当这些控制信号中的一个的逻辑电平是逻辑“0”时,对应的通过门可以以足够高的阻抗ZZ将导体1124耦合到电容1150,因此实际上从电容1150解耦合导体1124。当这些控制信号中的一个的逻辑电平是逻辑“1”时,对应的通过门可以以足够低的阻抗将导体1124耦合到电容1150,例如通过门130的阻抗是Z1、通过门132的阻抗是Z2、通过门134的阻抗是Z3、通过门136的阻抗是Z4,。在一个实施例中,阻抗Z2可以是阻抗Z1的两倍,阻抗Z3可以是阻抗Z2的两倍,并且阻抗Z4可以是阻抗Z3的两倍。
[0214] 本领域普通技术人员将会意识到,导体1124以阻抗ZPASS耦合到电容1150,该阻抗ZPASS是一些阻抗的组合,其中通过门1130、1132、1134和1136以这些阻抗将导体1124耦合到电容1150(Z1、Z2、Z3、Z4和ZZ)。此外,根据控制信号1106、1108、1110和1112的逻辑电平的组合,ZPASS可以具有十六个值中的一个。
[0215] 当输入信号1102从逻辑电平“0”断言(assert)为逻辑电平“1”时,电流从高电源轨VCCC通过阻抗ZV、ZH和ZPASS流向电容1150。因此,电容1150和导体1124上的电压电平相对于低电源轨可以增加。当导体1124上的电压变为等于或高于预定的第一阈值时,输出信号1104可以被视为具有逻辑电平“1”。从输入信号1102被断言到导体1124上的电压变为等于或高于预定的第一阈值的时间延迟TPD可以至少部分地被电容1150的电容值、高电源轨VCCC相对于低电源轨的电压电平以及阻抗ZV、ZH和ZPASS影响。
[0216] 当输入信号1102从逻辑电平“1”解断言(disassert)为逻辑电平“0”时,电流从电容1150通过阻抗ZPASS和ZL流向低电源轨1140。因此,电容1150和导体1124上的电压电平相对于低电源轨可以降低。当导体1124上的电压电平变为等于或低于预定的第二阈值时,输出信号1104可以被视为具有逻辑电平“0”。从输入信号1102被解断言到导体1124上的电压变为等于或低于预定的第二阈值的时间延迟可以至少部分地被电容1150的电容值和阻抗ZL和ZPASS的值所影响。
[0217] 尽管在此已图示并描述了本发明的某些特征,但是本领域普通技术人员将会想到许多修改、替换、改变和等同物。因此,可以理解,所附的权利要求书打算覆盖落入本发明的真正精神内的所有这些修改和改变。