本发明要求于2012年5月1日提交的第61/640,994号美国临时专利申请以及于2012年5月2日提交的第61/641,795号美国临时专利申请的优先权,通过引用方式将它们整体并入于此。
具体实施方式
图1是图示在存储器控制器102与存储器模块106之间执行的读操作的框图。在存储器控制器102发送读请求104到存储器模块106、请求从存储器中的特定地址读取数据的情况下,可以启动读操作。存储器控制器102可以包括例如微控制器或片上系统(SOC)。通过输出数据信号108和时序信号110两者,存储器模块106可以对读请求104做出响应。数据信号108和时序信号110可以分别包括例如DQ信号和DQS数据选通信号。时序信号110用于通知存储器控制器102数据信号108已经准备好被接收,并且用于告知存储器控制器102数据信号108的特定时序。具体地,DQS数据选通信号用于锁存输入数据并且驱动存储器控制器102的先入先出(FIFO)逻辑。输入数据可以在DQS数据选通信号的上升沿和下降沿两者上被锁存,其中DQS数据选通信号可以是单端的或差分的。DQS数据选通信号可以使用中心抽头终止(CTT)。
图2描绘了在存储器控制器与存储器模块之间执行读操作中所使用的信号。如在图2中图示的,时序信号202可以包含五个不同的区域:三态区域204、212、前同步码区域206、数据传输区域208和后同步码区域210。在存储器模块接收到读请求之前,时序信号202存在于由三态区域204表示的高阻抗状态。当在三态区域204中进行操作的同时,时序信号202具有不确定的值,既非逻辑电平高又非逻辑电平低(即“高阻抗”电平)。在接收到读请求之后,时序信号202转变到在数据传输区域20g之前的逻辑电平低的前同步码区域206。前同步码区域206的持续时间一般是一个或两个时钟周期。为了在存储器模块与存储器控制器之间传输数据信号内的数据包,时序信号202进入数据传输区域208。当在数据传输区域中进行操作的同时,时序信号202在逻辑电平高值与逻辑电平低值之间切换。存储器控制器使用切换的时序信号202作为参考信号,并且可以在时序信号202的上升沿或下降沿上读入数据信号。跟随数据传输区域208之后并且在进入第二三态区域212之前,时序信号202进入逻辑电平低的后同步码区域210。从后同步码区域210到三态区域212的过渡可以发生在数据传输区域208内的有效数据的最后沿之后的二分之一时钟周期(即,后同步码区域的持续时间可以是二分之一时钟周期)。
再次参照图1,可以采用滤波电路112以实现更可靠的读操作。并非将时序信号110直接从存储器模块106发送到存储器控制器102,而是可以将时序信号110通过滤波电路112,以消除信号噪声或者移除时序信号110的可能导致错误数据读操作的部分。从而,在接收到读请求104之后,滤波电路112可以生成选通窗以充当针对时序信号110的滤波器。经滤波的时序信号114(被允许通过滤波电路112的打开的选通窗)可以由存储器控制器102接收。尽管在图1中滤波电路112被描绘为与存储器控制器102分离,但是在其它示例系统中,滤波电路112可以被集成到存储器控制器102中。
如在图2中图示的,选通窗218可以在时序信号202的前同步码区域206期间被打开,并且跟随数据传输区域208的最后下降沿(即在后同步码区域210内)被关闭。选通窗218可以用于从时序信号202中对噪声进行滤波,或者用于确保时序信号202的三态区域204、212不被存储器控制器读取。从而,如在图2中图示的,经滤波的时序信号220可以仅包含时序信号202的数据传输区域208并且另外可以保持在逻辑电平低,从而移除存在于数据传输之前和之后的三态区域204、212。在经滤波的时序信号220中消除三态区域204、212可以防止在允许三态区域204、212被存储器控制器读取的情况下可能发生的小故障(glitch)(例如,通过将三态区域204解释为虚假的时序信号沿所造成的误触发(mistrigger))。
图3图示了选通DQS时序信号302的各方面。在图3中,DQS时序信号302包括上面描述的五个不同区域(例如两个三态区域、前同步码区域、数据传输区域和后同步码区域)。在DQS时序信号302中特别令人感兴趣的是过渡区域304、306,其中分别地,时序信号302从第一三态区域过渡到前同步码区域并且时序信号302从后同步码区域过渡到第二三态区域。过渡区域304、306分别包括下降沿和上升沿,其在被存储器控制器读取的情况下可能造成小故障(例如,通过将上升沿和下降沿解释为虚假的时序信号沿所造成的误触发)。为了防止过渡区域304、306被存储器控制器读取,分别在工作窗308、310内打开和关闭选通窗。
选通窗312和314图示了分别被打开得太早和太晚的选通窗。在选通窗312的第一部分中,选通窗312在时序信号302的第一三态区域期间被打开,这允许过渡区域304的下降沿被存储器控制器读取。在选通窗312的第二部分中,选通窗312在时序信号302的数据传输区域的结尾之前被关闭,从而造成时序信号302的在数据传输区域中的最后下降沿不被存储器控制器读取。被打开得太晚的选通窗314造成类似的问题。在选通窗314的第一部分中,选通窗314跟随时序信号302的数据传输区域的第一上升沿被打开,从而造成第一上升沿不被存储器控制器读取。在选通窗314的第二部分中,选通窗跟随后同步码区域被关闭,从而允许过渡区域306的上升沿被存储器控制器读取。
在存储器控制器分别读入过渡区域304、306的下降沿或者上升沿时,在存储器控制器中可能发生误触发。因此,为了裁掉潜在的误触发,必须既不太早也不太晚地打开和关闭选通窗。一般地,DQS时序信号的前同步码区域的持续时间是1到2个周期(例如针对1.6GHz时钟,1250ps的两个周期的前同步码和625ps的一个周期的前同步码)。DQS时序信号的后同步码区域的持续时间一般是二分之一周期。例如,在1.6GHz下的半周期后同步码可以是312.5ps,使得后同步码中的选通控制可能是困难的,特别是由于电压和温度(VT)拐点(corner)以及多等级(multi-rank)效应。相比之下,在1.6GHz下的DDR前同步码可以是1250ps。从而,与可用于后同步码选通的时序空间相比,存在可用于前同步码选通的更多时序空间。前同步码选通可以由存储器控制器或SOC的内部逻辑控制,而后同步码选通可以由SOC或存储器控制器的PHY层控制,以用于定时的目的。
图4描绘了用于执行DQS选通控制的示例选通电路400。图4的选通电路被配置用于从存储器设备接收时序信号420(“RD_DQS”),并且在选通窗426(“DQS_en”)期间使时序信号420作为经滤波的时序信号430(“RD_DQS_gated”)而通过。选通电路400通过如下操作来实现此目的,即,通过基于控制信号402(“DQS_gate_start”)打开选通窗426并且通过基于时序信号420的下降沿自动关闭选通窗426。通过以这种方式进行操作,只需要前同步码选通控制,因为选通窗426被配置用于自动关闭(即,基于自控原理)。如下面进一步详细说明的,图4中实现的选通电路400包括读中断功能和突发突变功能。进一步地,选通电路400支持两个周期的前同步码配置,从而允许选通电路400充分利用两个周期的前同步码窗以调整用于打开选通窗426的控制信号402。
如上所述,在图4中,选通窗426基于时序信号420的下降沿自动关闭。基于计数器406(“cnt逻辑”)确定下降沿,计数器406由控制信号402触发以开始计数。连同计数器406一起,图4的选通电路进一步包括第一模块410(“DQS_en1 gen”),其被配置用于基于控制信号402、来自计数器406的计数信号408(“cnt”)以及时序信号420中的一个或多个信号生成第一中间信号412(“DQS_en1”),其中第一模块410由时序信号420的上升沿触发。图4的选通电路还包括第二模块414(“DQS_en2gen”),其被配置用于基于第一中间信号412和时序信号420生成第二中间信号416(“DQS_en2”),其中第二模块414由时序信号420的下降沿触发。选通电路还包括第三模块424,其被配置用于基于控制信号402、第一中间信号412和第二中间信号416生成选通窗426。如在图4中描绘的,第三模块424可以用“或”逻辑模块(例如“或”逻辑门)来实现。进一步地,经滤波的时序信号430由“与”模块428产生,“与”模块428对时序信号420和选通窗426执行“与”操作。
图5描绘了在使用选通电路(例如图4的选通电路400)在存储器控制器与存储器模块之间执行读操作中所使用的信号。图5中的时序信号502(“Rd_DQS”)包括一个周期的前同步码区域、四个周期的数据传输区域、二分之一周期的后同步码区域以及分别在前同步码区域之前和在后同步码区域之后的三态区域。图5的时序信号502对应于图4的时序信号420。控制信号504(例如在延迟周期之后由时序控制电路生成的“DQS_gate_start信号”)是包括持续时间是一个周期并且对应于一个“读”命令的脉冲的信号。通过校准用于发出控制信号504的时序控制电路的延迟设置,控制信号504的脉冲的上升沿被配置成落入时序信号502的前同步码区域的中心,并且控制信号504的脉冲的下降沿被配置成与时序信号502的第一下降沿对齐。图5的控制信号504对应于图4的控制信号402,并且用于打开选通窗514(“DQS_en”)。
在图5的示例中,“BC_EN”信号506处于逻辑电平低。BC_EN信号506是用于向选通电路指示当前读命令是突发突变命令或者全突发命令的全突发尺寸宽的信号。例如,对于DDR3存储器,存在BL8命令和BC4命令。在命令是BL8(八个命令的全突发)时,BC_EN信号506为低,并且在命令是BC4(突发突变4)时,BC_EN信号506为低。BC_EN信号506可以是指示突发突变的另外组合的多比特信号。图5的BC_EN信号506对应于图4的BC_EN信号404。
计数信号508(“Cnt”)是由2比特、3比特或4比特计数器产生的信号,计数器由时序信号502驱动。响应于时序信号502的改变,计数信号508从“0”值往上计数到“3”值。如下面进一步详细说明的,计数信号508被配置用于基于控制信号504而开始计数。图5的计数信号508对应于图4的计数信号408。如在图5中图示的,在不发生读操作的时间段期间(即在时序信号502的三态区域期间),计数信号508被配置用于保持稳态计数器值为“3”。如还在图5中图示的,计数信号508被触发到时序信号502的上升沿。从而,跟随时序信号502的前同步码区域,时序信号502的第一上升沿使计数器将其计数信号508从“3”值重置为“0”值。时序信号502的第二上升沿使计数信号508递增为“1”值,依此类推。时序信号502的第四上升沿将计数信号508重置为“3”的稳态值。
因为来自存储器控制器的单个读命令使时序信号502的数据传输区域具有四个上升沿,计数信号508的递增用于确定什么时候关闭选通窗514。例如,如下面详细说明的,用于产生选通窗514的模块被配置用于在时序信号502的特定下降沿之后关闭,并且基于计数信号508确定特定下降沿。选通窗514的关闭由时序信号502的最后下降沿触发,使得选通窗514的关闭总是滞后于时序信号502的最后下降沿但不滞后大量时间。如下面进一步详细说明的,参照图4,时序信号502的最后下降沿与选通窗514的关闭之间的延迟可以包括D触发器到Q的延迟(即,D触发器的输出引脚“Q”在时钟引脚的正沿或负沿下采用“D”输入引脚的状态,从而使输出引脚“Q”在延迟之后跟随“D”输入)以及“或”门延迟。时序信号502的最后下降沿与选通窗514的关闭之间的相对少量的时间使选通窗514在时序信号502的后同步码区域中自动关闭,而不需要特定信号以关闭选通窗514。
用于实现图5的计数信号508的逻辑被图示在图4中。在图4的选通电路400中,计数器406接收包括控制信号402、BC_EN信号404和时序信号420在内的输入。响应于这些输入,计数器406基于由计数器406采用的逻辑产生计数信号408。具体地,如在图4中图示的,用于实现计数器406的功能的特定逻辑如下:
语句“always@(posedge Rd_DQS or negedge reset_n)”使得计数器406由Rd_DQS时序信号420的上升(即,正的)沿或者由重置信号“reset_n”的下降(即,负的)沿触发。从而,在时序信号420的上升沿或者重置信号“reset_n”的下降沿上评估用于实现计数器406的逻辑的“if”语句和“else if”语句。
如果“reset_n”被检测为处于逻辑电平低(如由上面的语句“if(~reset_n)”实现的),则计数信号408返回到稳态值“3”(“cnt<=2’h3;”)。如果检测到控制信号402为高并且计数值408具有为“3”或“1”的值,则语句“else if(DQS_gate_start&((cnt==2’h3)|(cnt==2’h1)))”将计数值408重置为“0”值(“cnt<=2’h0;”)(计数器406的最低值)。该语句反映了如下事实:计数器406由控制信号402触发以开始计数,其中控制信号402被配置为跟随由存储器控制器发出读命令而处于逻辑电平高。在“else if”语句中所使用的计数值“3”和“1”允许选通电路400支持正常读操作(即,在时序信号402的三态区域期间发生的那些读操作)和读中断操作(即,在时序信号402的数据传输区域期间发生的并且中断先前读操作的那些读操作)。如果BC_EN信号404为高并且计数值408具有“0”值,则语句“else if(BC_en&(cnt==2’h0))”将计数值408设置为“3”值(“cnt<=2’h3;”)。BC_EN信号404用于向选通电路指示当前读命令是突发突变命令。如果先前描述的“if”语句和“else if”语句不为真,则在计数值408具有小于“3”的值时,“else if(cnt<2’h3)”语句使计数值408递增(“cnt<=cnt+1;”)。
再次参照图5,在实现跟随时序信号502的特定下降沿自动关闭的选通窗514中使用第一和第二中间信号510、512(分别为“DQS_en1”和“DQS_en2”)。在计数信号508具有“3”值并且控制信号504处于逻辑电平高时,基于时序信号502的上升沿和从逻辑电平低到逻辑电平高的过渡来触发第一中间信号510。在计数信号508具有“2”值时,第一中间信号510变为低。第二中间信号512基于时序信号502的下降沿被触发并且跟随第一中间信号510的值。然而,因为基于时序信号502的上升沿触发第一中间信号510,并且因为基于时序信号502的下降沿触发第二中间信号512,所以第二中间信号512滞后于第一中间信号510大约二分之一周期。
中间信号510、512对应于图4的第一和第二中间信号412、416,并且连同控制信号504一起用作“或”逻辑模块的输入。“或”逻辑模块的输出是选通窗514。图5的这些方面被图示在图4的选通电路400中,其中控制信号402以及由第一和第二模块410、414产生的第一和第二中间信号412、416被输入到第三模块424。第三模块424实现“或”逻辑操作以产生选通窗426。
用于实现图5的第一中间信号510的逻辑被图示在图4中。在图4的选通电路400中,第一模块410接收包括计数信号408、时序信号420、控制信号402和BC_EN信号404在内的输入。响应于这些输入,第一模块410基于由第一模块410采用的逻辑产生第一中间信号412。具体地,如在图4中图示的,用于实现第一模块410的功能的特定逻辑如下:
语句“always@(posedge Rd_DQS or negedge reset_n)”使得第一模块410由Rd_DQS时序信号420的上升沿或者由重置信号“reset_n”的下降沿触发。
如果“reset_n信号”被检测为处于逻辑电平低(如由上面的语句“if(~reset_n)”实现的),则将第一中间信号412设置于逻辑电平低(“DQS_en1<=1’b0;”)。如果检测到控制信号402为高并且计数值408具有“3”值,则语句“else if(DQS_gate_start&(cnt==2’h3))”将第一中间信号412设置为逻辑电平高(“DQS_en1<=1’b1;”)。如果BC_EN信号404为低并且计数信号408具有“2”值或者如果BC_EN信号404为高并且计数信号408具有“0”值,则语句“else if((~BC_en&(cnt==2’h2))||(BC_en&(cnt==2’h0))”将第一中间信号412设置为逻辑电平低(“DQS_en1<=1’b0;”)。
用于实现图5的第二中间信号512的逻辑被图示在图4中。在图4的选通电路400中,第二模块414接收包括第一中间信号412和时序信号420在内的输入。响应于这些输入,第二模块414基于由第二模块414采用的逻辑产生第二中间信号416。具体地,如在图4中图示的,用于实现第二模块414的功能的特定逻辑如下:
语句“always@(negedge Rd_DQS or negedge reset_n)”使得第二模块414由Rd_DQS时序信号420的下降沿(即,负沿)或者由重置信号“reset_n”的下降沿触发。
如果“reset_n”信号被检测为处于逻辑电平低(如由上面的语句“if(~reset_n)”实现的),则将第二中间信号416设置于逻辑电平低(“DQS_en2<=1’b0;”)。“else”语句使得第二中间信号416具有与第一中间信号412的值相等的值(“DQS_en2<=DQS_en1;”)。因为基于时序信号420的上升沿触发第一中间信号412,并且因为基于时序信号420的下降沿触发第二中间信号416,所以第二中间信号416滞后于第一中间信号412大约二分之一周期。
如上面说明的,选通电路400还包括被配置用于基于控制信号402以及第一和第二中间信号412、416(即,经由“或”逻辑模块,如图4中图示)生成选通窗426的第三模块424。选通窗426被配置用于在时序信号420的最后下降沿之后关闭,并且基于计数信号408确定最后下降沿。选通窗426的关闭滞后于时序信号420的最后下降沿但不滞后大量时间。在图4中,延迟由D触发器到Q的延迟(即,在第一或第二模块410、414中)以及“或”门延迟(即,在第三模块424中)造成。时序信号420的最后下降沿与选通窗426的关闭之间的相对少量的时间允许选通窗426在时序信号420的后同步码区域中关闭。
经滤波的时序信号430由“与”逻辑模块428产生,“与”逻辑模块428对时序信号420和选通窗426执行“与”操作(即,在选通窗426处于逻辑电平高值的时间段期间,时序信号420在经滤波的时序信号430中再生)。经滤波的时序信号430可以被输入到发出读命令的存储器控制器的先入先出(“FIFO”)逻辑,并且可以用于将数据锁存在存储器控制器中。图4的选通电路400还可以接收用于写操作418(“WR_DQS”)的时序信号。用于读操作420的时序信号和用于写操作418的时序信号两者可以经由DQS焊盘422被接收。
如下面通过示例性信号时序图(例如图16至图24的信号时序图1600至2400)进一步详细说明的,图4的选通电路400可以用于实现包括读中断功能和突发突变功能在内的特征。选通电路400还支持两个周期的前同步码配置,并且允许两个周期的前同步码窗被充分利用以调整控制信号402的时序。可以基于时序信号420的前同步码的长度来配置控制信号402的脉冲的持续时间,使得针对一个周期的前同步码,控制信号402的脉冲的宽度是一个周期,并且针对两个周期的前同步码,控制信号402的脉冲的宽度是两个周期。
图6描绘了示例时序控制电路600和示例信号时序图618。参照图4和图5,用于执行DQS选通控制的示例选通电路可以基于所接收的控制信号(分别例如图4和图5中的“DQS_gate_start”控制信号402和504)打开选通窗。控制信号可以由时序控制电路(例如图6的时序控制电路600)在接收到来自存储器控制器的读命令之后生成。通过校准时序控制电路的延迟设置,控制信号的上升沿可以被定时以落在DQS时序信号的前同步码区域内,并且控制信号的下降沿可以被定时为与DQS时序信号的第一下降沿对齐。
为了生成在接收到来自存储器控制器的读命令之后被延迟适量时间的DQS_gate_start控制信号616,时序控制电路600接收DQS_gate_start_in信号608、CLK时钟信号609、delay_cyc_cnt[N-1∶0]信号610、clk_edge_sel信号612和delay_line_sel[M-1∶0]信号614。时序控制电路600包括处理输入608、609、610、612、614的周期延迟模块604和步进延迟线模块606。
参照图6的信号时序图618,DQS_gate_start_in信号608包括在由存储器控制器发出读命令之后产生的脉冲622。如分别在624、626和628处描绘的,DQS_gate_start_in信号608的脉冲622被延迟以延迟周期D1、D2和D3。延迟周期D1、D2和D3使得DQS_gate_start控制信号616在适当的时间(例如在时序信号的前同步码部分期间,使得选通窗打开得既不太早也不太晚)由选通电路接收。
基于由时序控制电路600接收的delay_cyc_cnt[N-1∶0]信号610生成延迟周期D1。delay_cyc_cnt[N-1∶0]信号610用于将整数数字输入到时序控制电路600(例如,如由变量“n”表示的),其中整数数字指定被包括在延迟周期D1中的时钟周期的数目。从而,如在信号时序图618中图示的,延迟周期D1等于“n”个时钟周期。CLK时钟信号609由周期延迟模块604接收,从而允许基于由delay_cyc_cnt[N-1∶0]信号610指定的时钟周期的整数数目来计算延迟周期D1。
基于由时序控制电路600接收的clk_edge_sel信号612生成延迟周期D2。clk_edge_sel信号612用于选择时钟信号620的上升沿或下降沿,并且可以基于该选择延迟DQS_gate_start信号616。例如,如在图6的示例信号时序图618中图示的,clk_edge_sel信号612可以选择时钟信号620的下降沿,从而使得D2延迟周期等于大约二分之一时钟周期,如在626处图示的。包括延迟以延迟周期D1和D2的DQS_gate_start_in信号608的脉冲622的信号被图示在图6的623处。信号623对应于时序控制电路600中的ln_d信号605,其中ln_d信号605是在周期延迟模块604与步进延迟线模块606之间传输的中间信号。
基于由图6的步进延迟线模块606接收的delay_line_sel[M-1∶0]信号614生成延迟周期D3。delay_line_sel[M-1∶0]信号614用于将第二整数数字输入到时序控制电路600(例如,如由变量“m”表示的),其中第二整数数字指定被包括在延迟周期D3中的延迟线步进周期的数目。从而,如在信号时序图618中图示的,延迟周期D3等于第二整数“m”乘以延迟线步进周期。包括延迟以延迟周期D1、D2和D3的DQS_gate_start_in信号608的脉冲622的信号被图示在图6的625处,并且对应于从时序控制电路600输出的DQS_gate_start控制信号616。使用图6的示例时序控制电路600,每条DDR数据通道可以仅需要单个延迟结构(延迟单元)。
图7描绘了用于生成用于在选通电路中打开选通窗的控制信号724的示例时序控制电路700。在接收到来自存储器控制器的读请求之后,时序控制电路700生成控制信号724(例如图7中描绘的“DQS_gate_start”信号),其中时序控制电路700被配置用于将控制信号724的生成延迟适量的时间(例如,使得由选通电路产生的选通窗在DQS时序信号的前同步码部分期间打开的时间量)。时序控制电路700包括周期延迟模块701和延迟线模块722。响应于下面描述的各种输入702、704、706和708,周期延迟模块701产生ln d信号721,ln_d信号721被发送到延迟线模块722,并且由延迟线模块722在产生控制信号724中使用。
如在图7中描绘的,周期延迟模块701包括一系列级联D触发器(DFF)712,它们接收DQS_gate_start_in信号702和CLK时钟信号704。如在图6的信号时序图618中图示的,DQS_gate_start_in信号702可以包括第一脉冲,使得控制信号724中所包括的第二脉冲可以等同于延迟一时间量的第一脉冲。一系列级联D触发器712作为延迟电路起作用,单独D触发器的输出713中的每个输出包括被延迟以不同数目的时钟周期的DQS_gate_start_in信号702的脉冲。单独D触发器的输出713由多路复用器714接收。除了输出713之外,多路复用器714还接收delay_cyc_cnt信号706,其指定控制信号724要延迟的时钟周期的整数数目。从而多路复用器714基于delay_cyc_cnt信号706选择输出713中的一个输出。
多路复用器714的输出716(包括延迟由delay_cyc_cnt信号706指定数目的时钟周期的DQS_gate_start_in信号702)由D触发器718接收。D触发器718的输出719和CLK时钟信号704由第二多路复用器720接收,其还接收clk_edge_sel信号708。如上面描述的,参照图6,clk_edge_sel信号708选择CLK时钟信号704的上升沿或下降沿,其中该选择可以使得DQS_gate_start信号724的脉冲进一步被延迟(例如,如在图6的示例信号时序图618中描绘的二分之一周期)。DQS_gate_start_in信号702的脉冲(具有由delay_cyc_cnt信号706和clk_edge_sel信号708输入造成的任一延迟)作为ln_d信号721从多路复用器720被输出。
ln_d信号721由延迟线模块722接收。延迟线模块722还接收delay_line_sel信号710,其指定要进一步延迟DQS_gate_start_in信号702的脉冲的延迟线步进周期的整数数目。由延迟线模块722接收的delay_line_sel信号710所产生的延迟被图示在图6的628处(即D3延迟)。延迟线模块722的DQS_gate_start控制信号724输出包括具有由周期延迟模块701和延迟线722造成的任一延迟的DQS_gate_start_in信号702的脉冲。由时序控制电路700输出的控制信号724由选通电路(例如图4的选通电路400)接收并且用于打开选通窗。
图8是图示发生在片上系统(SOC)802与DDR存储器818之间的示例通信的框图800。SOC 802与DDR存储器818之间的读操作可以在SOC 802发送读请求到DDR存储器818的情况下来启动,从而请求从存储器中的特定地址读取数据。在进行读请求中,SOC 802还可以发送DDR时钟信号812到DDR存储器818。通过输出数据信号816(例如DQ信号)和DQS数据选通信号814两者,DDR存储器818对读请求做出响应。数据信号816和DQS数据选通信号814由SOC802的DDR PHY接口层810接收。为了裁掉DQS数据选通信号814的问题部分,SOC 802利用DQSgate选通窗808,其由DQS选通控制模块806产生并且由DDR PHY层810接收。作为在SOC 802中执行的选通的一部分,内部时钟信号804由DQS选通控制模块806和DDR PHY接口层810两者接收。
用于打开DQS_gate选通窗808的控制信号被校准以在一段时间的延迟之后生成,从而允许DQS_gate选通窗808在适当的时间(例如在DQS数据选通信号814的前同步码区域期间)打开。校准在打开DQS_gate选通窗808中的延迟可以包括分析在执行读操作中所涉及的时序的各方面。例如,读操作包括往返延迟,往返延迟包括从SOC 802到DDR存储器818的通信中的延迟、DDR存储器818内的延迟以及从DDR存储器818到SOC 802的通信中的延迟。
从SOC 802到DDR存储器818的通信中的延迟可能主要由从SOC 802到DDR存储器818的DDR时钟信号812的传输造成。例如,如相对于SOC 802的内部时钟信号804,在DDR存储器818处接收到的DDR时钟信号812可能被延迟。该延迟可能由DDR PHY接口810、SOC 802或DDR存储器818的PCB板(例如迹线(trace)或者边界(term))以及从SOC 802发送信号812到DDR存储器818所花费的时间造成。DDR存储器818内的延迟可以包括在DDR存储器818中生成DQS数据选通信号814中的延迟。DDR存储器818内的延迟可以由DDR PHY 810、内部DLL或者时钟树以及其它因素造成。从DDR存储器818到SOC 802的通信中的延迟可能主要由从DDR存储器818到SOC 802的DQS数据选通信号814的传输造成。例如,如相对于从DDR存储器818发送的DQS数据选通信号814,在SOC802的选通处接收的DQS数据选通信号814可能被延迟。该延迟可能由SOC 802或DDR存储器818的PCB板、SOC 802的DDR PHY 810以及SOC 802或DDR存储器818的内部逻辑造成。
分析在执行读操作中所涉及的时序的各方面还可以涉及考虑由于制造部件中的变化而发生在延迟中的改变以及随着设备的使用寿命而发生的改变。例如,由于用于生产SOC 802和DDR存储器818的制造工艺中的细微变化,上面描述的某些延迟可能表现出变化。例如,在SOC 802(例如由模具和封装的制造中的变化造成的)、与SOC802或DDR存储器818一起使用的PCB板或者DDR存储器818本身中可能存在延迟改变。工艺、电压和温度(PVT)拐点也可以造成上面描述的延迟周期中的改变。不同的读字节通道可以具有不同的延迟,并且不同的DDR等级可以具有不同的延迟。另外,由于可能发生在DDR存储器818中的时钟抖动(jitter)或者温度或电压的变化,从DDR存储器818对读请求的响应可能要求可变的时间量。
图9描绘了图示在执行DDR存储器的读操作中的延迟t0、t1和t2的示例信号时序图900。在图9中,读操作由存储器控制器发送的读命令906触发。在914处的延迟t0对应于从SOC(例如图8的SOC802)到DDR存储器(例如图8的DDR存储器818)的通信中的延迟。从而,在914处的延迟t0图示了由DDR存储器(例如等级0)接收到的DDR时钟信号904与SOC的内部时钟信号902之间的延迟。在916处的延迟t1对应于在DDR存储器中生成DQS数据选通信号908中的延迟。在918处的延迟t2对应于从DDR存储器到SOC的通信中的延迟。从而,在918处的延迟t2图示了,如相对于从DDR存储器发送的DQS数据选通信号908,在SOC的选通处看到的DQS数据选通信号910被延迟。总的延迟周期(等于延迟周期t0、t1和t2之和)可能大于一个时钟周期。
通过考虑延迟周期t0、t1和t2以及其它延迟周期,可以校准DQS选通信号912的时序,使得DQS选通信号912在DQS数据选通信号910的前同步码区域内变为高。然而,还可以考虑在生成DQS选通信号912中固有的延迟。DQS选通生成可以包括由内部时钟902造成的延迟(例如,主要的延迟控制,1倍、2倍和4倍时钟的上升沿和下降沿)。DQS选通生成还可以包括由延迟线造成的延迟(例如,较小的延迟调整,其覆盖至少一个时钟周期T_d1)。在执行DQS选通时,也可能需要考虑电压和温度(VT)效应(例如,在VT条件改变时的T_total和T_d1改变,其中T_total和T_d1可以表现出类似的趋势,但是以不同的速度改变)。
图10描绘了用于评估RD_DQS时序信号1010与DQS_gate_start控制信号1008之间的关系的示例监控器逻辑电路1000。如下面更加详细描述的,在允许DQS选通窗自动校准的程序中使用示例监控器逻辑电路1000。自动校准程序可以用于解决一些潜在的DQS选通问题。例如,DQS_gate_start控制信号1008可以由片上延迟结构(例如,在实现图6的时序控制电路600中所使用的片上延迟结构)生成,并且由片上延迟结构生成的延迟可能在温度和电压(即VT)条件改变时改变。如上面描述的,DQS_gate_start控制信号1008由RD_DQS时序信号1010采样(例如,在RD_DQS信号1010的上升沿或下降沿上评估DQS_gate_start信号1008)以生成选通窗。存在用于DQS_gate_start信号1008的工作窗:DQS_gate_start信号1008应当具有在RD_DQS信号1010的第一上升沿之前的上升沿,并且DQS_gate_start信号1008应当具有在RD_DQS信号1010的第一上升沿之后的下降沿。由于VT条件的改变,DQS_gate_start信号1008的上升沿可能落在工作窗的外部,这可以造成DQS选通失败。理想地,RD_DQS信号1010的第一上升沿位于或靠近DQS_gate_start信号1008的脉冲的中心。如下面描述的,使用算法来调整DQS_gate_start信号1008的脉冲的时序以实现这一目的。
图10的电路1000包括用于评估RD_DQS信号1010与DQS_gate_start信号1008之间的关系的监控器逻辑。电路包括N0模块1002、P0模块1004和P1模块1006。模块1002、1004、1006可以使用被触发到RD_DQS信号1010的上升沿或下降沿的D触发器来实现。模块1002、1004、1006各自接收DQS_gate_start信号1008、RD_DQS信号1010和cal_reset_n信号1014。另外,P1模块1006从DQS选通逻辑接收CNT[1∶0]信号1012(例如图5的计数信号508)。响应于输入,N0模块1002、P0模块1004和P1模块1006分别产生输出cal out N0 1016、cal_out_P01018和cal_out_P1 1020。cal_reset_n信号1014是用于清除三个模块1002、1004、1006中的每个模块的cal_out输出1016、1018、1020的一个周期的低有效重置信号。
N0模块1002由RD_DQS信号1010的下降沿驱动并且产生输出cal_out_N0 1016。如在图10中图示的,在N0模块1002内使用的逻辑包括以下内容:
包括在N0模块1002中的逻辑从而评估cal_reset_n信号1014并且如果cal_reset_n信号1014被检测为处于逻辑电平低,则清除cal_out_N0信号1016。如果cal_out_N0信号1016没有基于cal_reset_n信号1014被清除,则评估DQS_gate_start信号1008。如果DQS_gate_start信号1008被检测为处于逻辑电平高,则cal_out_N0信号1016被赋予值“1”(即,逻辑电平高)。
P0模块1004由RD_DQS信号1010的上升沿驱动并且产生输出cal_out_P0 1018。如在图10中图示的,在P0模块1004内使用的逻辑包括以下内容:
包括在P0模块1004中的逻辑从而评估cal_reset_n信号1014并且如果cal_reset_n信号1014被检测为处于逻辑电平低,则清除cal_out_P0信号1018。如果cal_out_P0信号1018没有基于cal_reset_n信号1014被清除,则评估DQS_gate_start信号1008。如果DQS_gate_start信号1008被检测为处于逻辑电平高,则cal_out_P0信号1018被赋予值“1”(即,逻辑电平高)。
P1模块1006由RD_DQS信号1010的上升沿驱动并且产生输出cal_out_P1 1020。如在图10中图示的,在P1模块1006内使用的逻辑包括以下内容:
包括在P1模块1006中的逻辑从而评估cal_reset_n信号1014并且如果cal_reset_n信号1014被检测为处于逻辑电平低,则清除cal_out_P1信号1020。如果cal_out_P1信号1020没有基于cal_reset_n信号1014被清除,则评估DQS_gate_start信号1008和计数信号1012。如果DQS_gate_start信号1008被检测为处于逻辑电平高并且计数信号1012具有值“2”,则cal_out_P1信号1020被赋予值“1”(即,逻辑电平高)。
在两阶段校准程序中使用电路1000的输出cal_out_N0 1016、cal_out_P01018和cal_out_P1 1020。初始校准通过软件手动执行。初始校准的目的是确定用于DQS_gate_start信号1008的初始延迟设置,其包括使得DQS_gate_start信号1008的上升沿位于RD_DQS信号1010的前同步码窗的中心的基于半周期的延迟设置和延迟线设置。初始校准可以用于补偿若干工艺和板的变化。两阶段校准程序还包括运行时间自动校准。在初始校准之后,基于下面进一步详细讨论的校准窗和算法设置,运行时间自动校准控制器慢慢调整延迟线设置以补偿电压和温度(VT)改变。
图11描绘了用于图示针对一个周期的前同步码情况的初始校准的各方面的信号时序图1100。在图11中,具有一个周期的前同步码区域的RD_DQS信号被描绘在1102处。如上面描述的,在理想情况下,DQS_gate_start脉冲的中心在时间上与RD_DQS信号的第一上升沿的中心对齐。为了实现理想情况,由初始校准采用的逻辑包括外回路和内回路。在确定用于DQS_gate_start信号的适当延迟设置中,外回路用于通过半周期步进来修改延迟设置,而内回路用于通过延迟线步进来修改延迟设置。外回路开始于DDR读延时(例如,除了附加延时之外的CAS延时)。在内回路中,递增延迟线步进并且每延迟线步进发出一个读命令。
在内回路期间,开始于延迟线步进“0”,延迟线步进加一,直到监控器逻辑电路的CAL_OUT_P0输出(例如,图10的电路1000的CAL_OUT_P0信号1018)等于“1”。在CAL_OUT_P0输出等于“1”时,确定延迟设置D1。如果达到了最大延迟线步进并且CAL_OUT_P0输出不等于“1”,则退出内回路。对延迟设置D1的确定被图示在1104和1106处。1104处的DQS_gate_start脉冲可以图示由外回路的半周期延迟设置造成的脉冲的初始时序。在确定延迟设置D1中,当在RD_DQS信号的第一上升沿期间DQS_gate_start被检测为处于逻辑电平高时,可以设置CAL_OUT_P0输出等于“1”,如在1106处图示的。
在内回路中继续,延迟线步进进一步增加,直到监控器逻辑电路的CAL_OUT_N0输出等于“1”。在CAL_OUT_N0输出等于“1”时,确定延迟设置D2。如果达到了最大延迟线步进并且CAL_OUT_N0输出不等于“1”,则退出内回路。对延迟设置D2的确定被图示在1108处。在确定延迟设置D2中,当在RD_DQS信号的第一下降沿期间DQS_gate_start被检测为处于逻辑电平高时,可以设置CAL_OUT_N0输出等于“1”,如在1108处图示的。延迟设置D2是用于特定数据通道的DQS选通的初始设置,并且可以作为变量“init_dqs_gate_delay”被存储在存储器内。延迟设置D2使得DQS_gate_start信号的上升沿处于一个周期的前同步码窗的中心。在延迟步进方面,延迟设置D2大于延迟设置D1。
图12描绘了用于图示用于两个周期的前同步码情况的初始校准的各方面的信号时序图1200。在图12中,具有两个周期的前同步码区域的RD_DQS信号被描绘在1202处。如上面描述的,在理想情况下,DQS_gate_start脉冲的中心在时间上与RD_DQS信号的第一上升沿的中心对齐。为了实现理想情况,类似于上面针对图11所描述的,由初始校准采用的逻辑包括外回路和内回路。在确定用于DQS_gate_start信号的适当延迟设置中,外回路用于通过半周期步进来修改延迟设置,而内回路用于通过延迟线步进来修改延迟设置。外回路开始于DDR读延时(例如,除了附加延时之外的CAS延时)。在内回路中,递增延迟线步进并且每延迟线步进发出一个读命令。
在内回路期间,开始于延迟线步进“0”,延迟线步进加一,直到监控器逻辑电路的CAL_OUT_P0输出等于“1”。在CAL_OUT_P0输出等于“1”时,确定延迟设置D1。如果达到了最大延迟线步进并且CAL_OUT_P0输出不等于“1”,则退出内回路。对延迟设置D1的确定被图示在1204和1206处。1204处的DQS_gate_start脉冲可以图示由外回路的半周期延迟设置造成的脉冲的初始时序。在确定延迟设置D1中,当在RD_DQS信号的第一上升沿期间DQS_gate_start被检测为处于逻辑电平高时,可以设置CAL_OUT_P0输出等于“1”,如在1206处图示的。
在内回路中继续,延迟线步进进一步增加,直到监控器逻辑电路的CAL_OUT_N0输出等于“1”。在CAL_OUT_N0输出等于“1”时,确定延迟设置D2。如果达到了最大延迟线步进并且CAL_OUT_N0输出不等于“1”,则退出内回路。对延迟设置D2的确定被图示在1208处。在确定延迟设置D2中,当在RD_DQS信号的第一下降沿期间DQS_gate_start被检测为处于逻辑电平高时,可以设置CAL_OUT_N0输出等于“1”,如在1208处图示的。
在内回路中继续,延迟线步进进一步增加,直到监控器逻辑电路的CAL_OUT_P1输出等于“1”。在CAL_OUT_P1输出等于“1”时,确定延迟设置D3。如果达到了最大延迟线步进并且CAL_OUT_P1输出不等于“1”,则退出内回路。对延迟设置D3的确定被图示在1210处。在确定延迟设置D3中,当在RD_DQS信号的第二上升沿期间DQS_gate_start被检测为处于逻辑电平高并且计数器值等于“2”时,可以设置CAL_OUT_P1输出等于“1”,如在1210处图示的。延迟设置D3是用于特定数据通道的DQS选通的初始设置,并且可以作为变量“init_dqs_gate_delay”被存储在存储器内。延迟设置D3使得DQS_gate_start信号的上升沿处于两个周期的前同步码窗的中心。在延迟步进方面,延迟设置D3大于延迟设置D2。另外,在延迟步进方面,延迟设置D2大于延迟设置D1。
图13描绘了用于图示针对运行时间自动校准程序的评估程序的各方面的信号时序图1300。如在1302中图示的,定义用于一次校准评估程序的评估窗1302。评估程序开始于读命令1304,并且在评估读出期1306之后结束。在使用DDR读命令1304的评估程序的开始之后,通过将Cal_reset_n信号1314设置为逻辑电平低来执行评估重置1308。Cal_reset_n信号1304的逻辑电平低是一个周期的、逻辑电平低的重置。在评估期中,在评估重置1308之后,在RD_DQS时序信号1312的P0、N0和P1时钟沿处采样。P0时钟沿是RD_DQS信号1312的第一上升沿,N0时钟沿是RD_DQS信号1312的第一下降沿,并且P1时钟沿是RD_DQS信号1312的第二上升沿。在评估期之后,确定期1310出现,其中确定期允许在评估中所使用的触发器(例如,用于实现图10的电路1000的P0模块1004、N0模块1002和P1模块1006的D触发器)确定到可能的亚稳态。评估程序结束于评估读出期1306,其中CAL_OUT输出(例如,图10的分别由N0模块1002、P0模块1004和P1模块1006产生的CAL_OUT_N0 1016、CAL_OUT_P0 1018和CAL_OUT_P1 1020)被读回以用于校准,从而结束一次评估程序。
图14描绘了用于图示运行时间自动校准程序中的早DQS_gate_start条件和晚DQS_gate_start条件的信号时序图1400、1450。信号时序图1400、1450分别示出了在一个周期的前同步码情况下和两个周期的前同步码情况下的DQS_gate_start的早条件和晚条件。信号1402和信号1452描绘了具有位于理想时间点处的脉冲的DQS_gate_start信号。信号1404和信号1454描绘了具有时间上太早的脉冲的DQS_gate_start信号。在1404处,针对具有早DQS_gate_start脉冲的一个周期的前同步码情况,CAL_OUT_P0输出等于“1”,并且CAL_OUT_N0输出等于“0”。在1454处,针对具有早DQS_gate_start脉冲的两个周期的前同步码情况,CAL_OUT_P1输出等于“0”,并且CAL_OUT_P0输出等于“1”。类似地,信号1406和信号1456描绘了具有时间上太晚的脉冲的DQS_gate_start信号。在1406处,针对具有晚DQS_gate_start脉冲的一个周期的前同步码情况,CAL_OUT_P0输出等于“1”,并且CAL_OUT_N0输出等于“1”。在1456处,针对具有晚DQS_gate_start脉冲的两个周期的前同步码情况,CAL_OUT_P1输出等于“1”,并且CAL_OUT_P0输出等于“1”。如下面进一步详细描述的,在DQS_gate_start信号的脉冲太早或太晚时发生的校准输出中的改变可以被检测并且用于调整延迟线设置以补偿电压和温度改变以及其它改变。
在执行运行时间自动校准程序中,使用校准窗定时器CAL_WIN_TIMER。在校准窗定时器被使能时,其开始计数,并且在校准窗定时器达到编程的CAL_WIN_PERIOD值时,校准窗定时器被清零。在被清零之后,校准窗定时器开始下一轮计数。在设置CAL_WIN_PERIOD中可以使用DDR刷新周期(例如,CAL_WIN_PERIOD可以被设置为M倍的DDR刷新周期,其中M是整数)。运行时间自动校准程序还使用评估程序计数变量EVAL_CNT,其用于保存在校准窗中待执行的评估程序的计数。
针对运行时间自动校准程序,在程序或变量AUTO_DQS_CAL被使能时,CAL_WIN_TIMER开始计数。在定时器达到编程的CAL_WIN_PERIOD值时,一个CAL_WIN_PERIOD结束,并且CAL_WIN_TIMER返回到零。在被重置之后,CAL_WIN_TIMER继续计数,并且新的CAL_WIN_PERIOD开始。在单个CAL_WIN_PERIOD中存在两个阶段的操作:评估阶段和分析阶段。在评估阶段中,在校准窗开始之后,a)执行评估(例如上面参照图13描述的评估),b)evaluation_counter加1,并且c)记录评估结果。重复步骤a)至c),直到evaluation_counter达到评估程序计数变量EVAL_CNT。在该点处,评估阶段完成,并且分析阶段开始。在分析阶段中,对CAL_OUT输出(即,CAL_OUT_N0、CAL_OUT P0和CAL_OUT_P1)的所有记录值进行分析,计算新的延迟设置,并且预定延迟设置的更新。具体地,在分析阶段中,如果检测到晚DQS_gate_start,则针对下一更新使延迟线步进减小DELTA变量。如果检测到早DQS_gate_start,则针对下一更新使延迟线步进增加DELTA变量。DELTA变量是编程变量。为了结束分析阶段,在DDR非读操作期间预定下一DQS选通延迟更新。
如上面描述的,评估阶段包括如下步骤,这些步骤包括评估的执行、evaluation_counter的递增以及评估结果的记录。具体地,所执行的评估可以包括在上面参照图13描述的评估程序中执行的步骤。从而,在一个校准窗中,上面参照图13描述的评估程序或者类似的评估程序可以被执行等于评估程序计数变量EVAL_CNT的次数。针对所执行的EVAL_CNT次评估程序中的每次评估程序,记录CAL_OUT输出值。
针对一个周期的前同步码情况,记录CAL_OUT[1∶0]值{CAL_OUT_N0,CAL_OUT_P0}。针对两个周期的前同步码情况,记录CAL_OUT[1∶0]值{CAL_OUT_P1,CAL_OUT_P0}。针对一个周期和两个周期的前同步码情况,待记录的CAL_OUT值分别被描绘在1400、1450处。针对一个周期的前同步码情况,如果在当前CAL_WIN_PERIOD中所记录的所有CAL_OUT[1∶0]值都是2’b11,则DQS_gate_start太晚,并且如果在当前CAL_WIN_PERIOD中所记录的所有CAL_OUT[1∶0]值都是2’b01,则DQS_gate_start信号太早。针对两个周期的前同步码情况,如果在当前CAL_WIN_PERIOD中所记录的所有CAL_OUT[1∶0]值都是2’b11,则DQS_gate_start太晚,并且如果在当前CAL_WIN_PERIOD中所记录的所有CAL_OUT[1∶0]者是2’b01,则DQS_gate_start信号太早。
在每个DDR等级基础上执行校准。如果在一个CAL_WIN_PERIOD中执行了足够数目的评估程序,则针对下一CAL_WIN_PERIOD可以重新开始CAL_OUT记录。如果在一个CAL_WIN_PERIOD中所执行的评估程序的数目不够,则可以将CAL_OUT记录周期扩展到下一CAL_WIN_PERIOD。如果在N个连续CAL_WIN_PERIOD中仍然没有积累足够的评估,则DQS_auto_cal控制逻辑向存储器控制器发出标志以出于DQS校准目的而预定假读。
图15是描绘用于DDR DQS选通窗的自动校准的示例方法的流程图1500。在1502处,校准程序开始于初始校准,其中初始校准的目的是确定延迟设置的初始设置,以使得DQS_gate_start脉冲的上升沿位于DQS时序信号的前同步码窗的中心。在1504处,在执行初始校准之后,进入自刷新(SRF)模式,其中SRF模式是低功率模式。在SRF模式中,自动校准控制可在周期性基础上被执行,或者替代地,可以在SRF模式中停止校准。如果在图15中采取路径1506,则在SRF模式中,自动校准控制在周期性基础上被执行,使得周期性地执行DQS校准评估和更新。所执行的评估和更新可以包括上面关于图14描述的评估阶段和分析阶段。如果采取路径1508,则停止校准,并且不执行DQS校准评估,并且不执行更新。在1510处,退出SRF模式。在退出SRF模式时,可以做出关于是否保持延迟设置不变或者是否将延迟设置重置为初始设置的决定。在做决定的过程中,在1512处可以做出第二决定,其中第二决定评估是否已经使能SRF模式一段延长的(即,长的)时间量。如果采取路径1514,则延迟设置不变,并且如果采取路径1516,则加载初始延迟设置“INIT_DQS_GATE_DELAY”。
图16描绘了图示响应于从存储器控制器发出的连续读命令而执行的示例DQS选通操作的信号时序图1600。在图16中,DQS选通操作可以由选通电路(例如图4的选通电路400)执行。在信号时序图1600中,在SOC或存储器控制器的选通处看到的Rd_DQS时序信号包括一个周期的前同步码区域。由时序控制电路(例如图6的时序控制电路600)产生的DQS_gate_start控制信号包括对应于连续读命令并且持续时间是一个周期以匹配前同步码区域的持续时间的脉冲。信号时序图1600图示了使用计数信号(Cnt)、第一中间信号(DQS_en1)和第二中间信号(DQS_en2)生成选通窗(DQS_en)以在SOC或存储器控制器处选通Rd_DQS时序信号。该计数信号、第一中间信号、第二中间信号和选通窗信号可以类似于上面参照图5描述的那些信号。
图17描绘了图示响应于由一个周期的间隙1702分开的两个读命令而执行的示例DQS选通操作的信号时序图1700。在图17中,DQS选通操作可以由选通电路(例如图4的选通电路400)执行。信号时序图1700图示了使用计数信号(Cnt)、第一中间信号(DQS_en1)和第二中间信号(DQS_en2)生成窗(DQS_en)以用于在SOC或存储器控制器处选通Rd_DQS时序信号。在图17中,为了处理由一个周期的间隙1702分开的两个读命令,由选通电路采用的逻辑使得DQS_en选通窗在一个周期的间隙1702期间过渡到逻辑电平低,并且响应于DQS_gate_start信号的第二脉冲而返回到逻辑电平高。
图18描绘了图示响应于由两个周期的间隙1802分开的两个读命令而执行的示例DQS选通操作的信号时序图1800。在图18中,DQS选通操作可以由选通电路执行,该选通电路利用计数信号(Cnt)、第一中间信号(DQS_en1)和第二中间信号(DQS_en2)生成选通窗(DQS_en)。在图18中,为了处理由两个周期的间隙1802分开的两个读命令,由选通电路采用的逻辑使得DQS_en选通窗在两个周期的间隙1802期间过渡到逻辑电平低,并且响应于由时序控制电路产生的DQS_gate_start信号的第二脉冲而返回到逻辑电平高。
图19描绘了图示响应于读中断命令而执行的示例DQS选通操作的信号时序图1900。在图19中,由SOC或存储器控制器发出第一读命令,如由第一DQS_gate_start脉冲1902证实的。随后,在完成第一读操作之前由SOC或存储器控制器发出第二读命令,如由第二DQS_gate_start脉冲1904证实的。第一读取被第二读取中断。由实施DQS选通操作的选通电路所采用的逻辑被配置用于通过重置计数信号(Cnt)的计数值来处理读中断命令。重置计数值使得DQS_en选通窗保持在逻辑电平高一段适量的时间。例如,可以使用DDR2存储器的读中断功能。
图20描绘了图示响应于突发突变命令而执行的示例DQS选通操作的信号时序图2000。DDR3和DDR4包括用于飞击式(on-the-fly)、BC4(突发突变)模式的功能。在图20中,生成BC_EN信号2002以指示读命令是BC4命令。BC_EN信号2002的持续时间是四个周期。时序控制电路(例如图6的时序控制电路600)可以利用delay_cyc_cnt(例如,要延迟的时钟周期的数目)和clk_edge_sel(例如,由选择时钟信号的上升沿或下降沿造成的延迟)输入,以生成用于DQS_gate_start控制信号的必要延迟。在突发突变命令的情况下,可以不需要由延迟线提供的延迟的周期(例如,如由图7的延迟线模块722和delay_line_sel信号710实施的)。
在图16至图20的每幅图中,Rd_DQS时序信号的前同步码区域的持续时间是一个周期。对应地,在图16至图20的每幅图中,DQS_gate_start控制信号的脉冲具有一个周期的宽度。相比之下,图21描绘了图示使用具有两个周期的前同步码区域的RD_DQS时序信号执行的示例DQS选通操作的信号时序图2100。如在图21中图示的,针对两个周期的前同步码情况,DQS_gate_start控制信号的脉冲的宽度是两个周期。这允许充分利用两个周期的前同步码窗以调整DQS_gate_start控制信号的时序。两个周期宽的控制信号对应于一个读命令。在延迟校准之后,控制信号的上升沿位于RD_DQS时序信号的前同步码区域的中心,并且控制信号的下降沿与读DQS的第二上升沿对齐。
图22描绘了图示响应于从存储器控制器发出的连续读命令而执行的示例DQS选通操作的信号时序图2200,其中Rd_DQS时序信号的前同步码区域具有两个周期的持续时间。由时序控制电路(例如图6的时序控制电路600)产生的DQS_gate_start控制信号包括对应于连续读命令并且持续时间是两个周期以匹配前同步码区域的持续时间的脉冲。在图22中,为了处理连续读命令并且允许Rd_DQS时序信号的数据传输区域的所有部分被SOC或存储器控制器读取,由执行选通操作的选通电路所采用的逻辑使得DQS_en选通窗在所有相关时间保持在逻辑电平高。
图23描绘了图示响应于突发突变命令而执行的示例DQS选通操作的信号时序图2300,其中Rd_DQS时序信号的前同步码区域具有两个周期的持续时间。在图23中,生成BC_EN信号2302以指示读命令是BC4命令。BC_EN信号2302的持续时间是四个周期。因为Rd_DQS时序信号的前同步码区域具有两个周期的持续时间,所以DQS_gate_start控制信号的脉冲的持续时间也是两个周期。
图24是图示用于对存储器设备的读操作进行定时的示例方法的流程图2400。在2402处,在选通电路处从存储器设备接收时序信号。在2404处,在时序控制电路处,在接收到来自存储器控制器的读请求之后生成控制信号。时序控制电路被配置用于延迟控制信号的生成,以使得选通窗在时序信号的前同步码部分期间打开。在2406处,基于控制信号打开选通窗。在2408处,在选通窗期间使时序信号作为经滤波的时序信号而通过。在2410处,基于时序信号的下降沿关闭选通窗。基于由控制信号触发以开始计数的计数器来确定下降沿。
本书面描述使用示例来公开本发明(包括最佳模式),并且还使得本领域技术人员能够做出和使用本发明。本发明的可取得专利权的范围可以包括其它示例。另外,本文中所描述的方法和系统可以通过程序代码在许多不同类型的处理设备上被实施,该程序代码包括由设备处理子系统可执行的程序指令。软件程序指令可以包括源代码、目标代码、机器代码或者可操作用于使得处理系统执行本文中所描述的方法和操作的任何其它存储的数据。然而,还可以使用其它实施方式,诸如固件或者甚至被配置用于执行本文中所描述的方法和系统的经适当设计的硬件。
系统的数据和方法的数据(例如关联、映射、数据输入、数据输出、中间数据结果、最终数据结果等)可以被存储和实施在一个或多个不同类型的计算机实施的数据存储设备中,诸如不同类型的存储设备和编程结构(例如RAM、ROM、闪速存储器、平面文件、数据库、编程数据结构、编程变量、IF-THEN(或类似类型)语句结构等)。要注意的是,数据结构描述了将数据组织和存储在数据库、程序、存储器或由计算机程序使用的其它计算机可读介质中使用的格式。
本文中所描述的计算机部件、软件模块、功能、数据存储设备和数据结构可以直接或间接地彼此连接,以便允许它们的操作所需要的数据流动。还要注意的是,模块或处理器包括但不限于执行软件操作的代码单元,并且可以例如被实施为代码的子程序单元或者代码的软件功能单元或者对象(如在面向对象的范型(paradigm)中)或者小应用程序或者计算机脚本语言或者另一类型的计算机代码。依赖于手边的情况,软件部件和/或功能可以位于单台计算机上或者跨多台计算机分布。
应当理解的是,如在本文的描述中以及贯穿随后的权利要求所使用的,“一(a)”、“一个(an)”和“该(the)”的含义包括复数参考,除非上下文另外明确指示。同时,如在本文中的描述中以及贯穿随后的权利要求所使用的,“在...中”的含义包括“在...中”和“在...上”,除非上下文另外明确指示。进一步地,如在本文的描述中以及贯穿随后的权利要求所使用的,“每个(each)”的含义不要求“每一个(each and every)”,除非上下文另外明确指示。最后,如在本文的描述中以及贯穿随后的权利要求所使用的,“和”以及“或”的含义包括连接词和反意连接词两者,并且可以互换使用,除非上下文另外明确指示;短语“不包括”可以用于指示其中只有反意连接含义可以适用的情形。