(57)【要約】【課題】システムのパフォーマンスを低下させることなく、遅延回路の補正を行うことができるメモリ制御装置を提供する。【解決手段】メモリ２２に接続され端子毎に出力遅延値の設定が可変可能な遅延回路１２〜１４と、遅延回路１２〜１４と同じ遅延特性の遅延素子を内蔵するＤＬＬ（Delay Locked Loop）１６と、ＤＬＬ１６のロック状態時の出力値を任意のタイミングでレジスタ値として保持する第１レジスタ１８と、端子毎の遅延設定値をレジスタ値として保持する複数の第２レジスタ１９〜２１と、ＤＬＬ１６の出力値、第１レジスタ１８のレジスタ値、及び第２レジスタ１９〜２１のレジスタ値に基づいて遅延値を演算する遅延演算回路１７とを備え、遅延演算回路１７は、前記演算結果を第２レジスタ１９〜２１のレジスタ値に上書きする。【選択図】図１
2014241003.tif 000002
【特許請求の範囲】
【請求項１】
メモリに接続され端子毎に出力遅延値の設定が可変可能な複数の遅延回路と、
前記遅延回路と同じ遅延特性の遅延素子を内蔵するＤＬＬ（Delay Locked Loop）と、
前記ＤＬＬのロック状態時の出力値を任意のタイミングでレジスタ値として保持する第１レジスタと、
端子毎の遅延設定値をレジスタ値として保持する複数の第２レジスタと、
前記ＤＬＬの出力値、前記第１レジスタのレジスタ値、及び前記第２レジスタのレジスタ値に基づいて遅延値を演算する遅延演算回路とを備え、
前記遅延演算回路は、前記演算結果を前記第２レジスタのレジスタ値に上書きすることを特徴とするメモリ制御装置。
【請求項２】
前記ＤＬＬのキャリブレーション実行のタイミングを制御するタイミング発生回路を備え、
前記遅延演算回路は、キャリブレーション実行のタイミングに同期して、前記ＤＬＬの出力値と前記第１レジスタのレジスタ値との差分と、前記第２レジスタのレジスタ値とを比較して、演算実行の可否判断を行うことを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記タイミング発生回路は、前記メモリのリフレッシュサイクルに同期したタイミング信号を出力することを特徴とする請求項２に記載のメモリ制御装置。
【請求項４】
前記タイミング発生回路には温度センサが設けられ、
前記タイミング発生回路は、前記温度センサでの検出温度の変化に応じて、前記ＤＬＬのキャリブレーション実行のタイミングを制御することを特徴とする請求項２又は３に記載のメモリ制御装置。
【請求項５】
前記メモリの少なくとも一つの端子には前記遅延回路からストローブ信号が入力され、
ＷＬ（Write Leveling）コマンドの応答値により、前記ストローブ信号の遅延設定値を（＋１）または（−１）にするストローブ遅延制御回路が設けられていることを特徴とする請求項１〜４のいずれか一項に記載のメモリ制御装置。
【請求項６】
前記遅延回路と前記第２レジスタは、同数設けられていることを特徴とする請求項１〜５のいずれか一項に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースシンクロナス方式のデータ受信に係り、特にＤＤＲ（Double Data Rate）方式のＳＤＲＡＭ（ＤＤＲ−ＳＤＲＡＭ）を制御するメモリ制御装置に関するものである。
【背景技術】
【０００２】
ソースシンクロナス方式でデータ受信を行うＤＤＲ−ＳＤＲＡＭにおいては、リード・ライト動作時に、メモリとの間でストローブ信号（ＤＱＳ信号）やデータ信号（ＤＱ信号）がやり取りされる。このような場合において、ストローブ信号やデータ信号に対して遅延制御を行うようにしたメモリ制御装置が提案されている（例えば、特許文献１、特許文献２、特許文献３及び特許文献４参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ところで、ＤＤＲ方式のＳＤＲＡＭ、特にＤＤＲ３−ＳＤＲＡＭにおいては、メモリ制御回路とメモリとの間の配線はスター配線ではなく、フライバイ・トポロジによる配線とするよう推奨されている。すなわち、メモリ制御回路とメモリ間の配線長の差異によって遅延差が生じるため、この遅延差をできる限り小さくすることがメモリ制御回路に求められている。ＤＤＲ３−ＳＤＲＡＭには、ＷＬ(Write Leveling)コマンドや固定データの出力機能(Mode Register(MR3)で定義されているPredefined pattern)を実現できるコマンドなど、遅延に関わる調整をアシストする機能が備わっている。また、メモリ制御回路にも、端子毎に異なる遅延値を設定することが要求されている。
【０００４】
システムの初期化時には、メモリ制御回路において、ＤＤＲ３−ＳＤＲＡＭのＷＬコマンドを制御したり、また、固定値データの出力機能を使って各入出力端子に個別の遅延値を設定したりすることが可能である。
【０００５】
しかしながら、上記従来の技術では、初期化後の環境変動、例えば温度変動や電源電圧変動などの影響による遅延変動に対する補正を実施する際に、次のような問題が生じる。すなわち、ＤＤＲ３−ＳＤＲＡＭのコマンドのやりとりを初期化時と同じように行うと、メモリに対するリード・ライトをかなりの期間において停止する必要があり、システムのパフォーマンスを低下させてしまう。
【０００６】
また、上記従来の技術では、ＤＤＲ３−ＳＤＲＡＭのフライバイ・トポロジによるメモリ制御回路とメモリ間の配線長誤差によって生じる遅延差については、補正を行うことができない。
【０００７】
本発明の課題は、システムのパフォーマンスを低下させることなく、遅延回路の補正を行うことができるメモリ制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明は、メモリに接続され端子毎に出力遅延値の設定が可変可能な複数の遅延回路と、前記遅延回路と同じ遅延特性の遅延素子を内蔵するＤＬＬ（Delay Locked Loop）と、前記ＤＬＬのロック状態時の出力値を任意のタイミングでレジスタ値として保持する第１レジスタと、端子毎の遅延設定値をレジスタ値として保持する複数の第２レジスタと、前記ＤＬＬの出力値、前記第１レジスタのレジスタ値、及び前記第２レジスタのレジスタ値に基づいて遅延値を演算する遅延演算回路とを備え、前記遅延演算回路は、前記演算結果を前記第２レジスタのレジスタ値に上書きすることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、遅延演算回路によって、演算した遅延値が第２レジスタのレジスタ値に上書きされるので、システムのパフォーマンスを低下させることなく、遅延回路の補正を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】実施例１によるメモリ制御装置の要部構成を示したブロック図である。
【図２】実施例２によるメモリ制御装置の要部構成を示したブロック図である。
【図３】実施例３の要部構成を示したブロック図である。
【図４】実施例４によるメモリ制御装置の要部構成を示したブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施例を図面に従って説明する。
【実施例】
【００１２】
《実施例１》
先ず、ＤＬＬ(Delay Locked Loop)を用いた遅延値の制御について説明する。ＤＬＬを使えば、基準クロックを入力することにより、クロック周期の期間に相当する遅延素子の段数を出力したり、ＤＬＬ自体が基準クロックに対し固定位相差を持つ遅延回路として利用したりすることができる。例えば、上記技術を使って初期化時に、ある端子に基準クロックの１／４位相差相当の遅延値を設定したい場合、下記式（１）より求められる端子遅延設定値Ｂ０を、前記端子に接続されている遅延回路に設定すれば良い。
【００１３】
Ｂ０＝Ａ０×０.２５      ・・・・・（１）
ここで、Ａ０はＤＬＬの出力値である。
【００１４】
このように、基準クロックに関して固定の位相差の遅延が必要な際は、環境変動（温度変動、電源電圧変動等）が起こっても、ＤＬＬの補正動作またはＤＬＬが常に補正している場合、そのＤＬＬの出力値に固定値を乗算する。これにより、簡単に必要な遅延設定値の補正を行うことができる。
【００１５】
例えば、ＤＬＬの出力値が、Ａ０からＡ１に変動した場合、下記式（２）より求められる端子遅延設定値Ｂ１を、端子に接続されている遅延回路に設定すれば良いだけである。
【００１６】
Ｂ１＝Ａ１×０.２５      ・・・・・（２）
ここで、Ａ１はＤＬＬの出力値である。
【００１７】
しかしながら、遅延設定値を段階的に変化させ、その都度、その設定で良いか否かの判断をしながら、必要な遅延設定値を探索する場合がある。
【００１８】
例えば、ＤＤＲ３−ＳＤＲＡＭのＷＬ(Write Leveling)コマンドを用いた、メモリクロックとライト時のＤＱＳ（ストローブ信号）出力のタイミング調整がそれにあたる。この場合、クロックエッジとＤＱＳエッジのメモリへの到達タイミングが近似するように調整する必要がある。
【００１９】
メモリ制御回路は、ＷＬコマンドを出力する機能と、ＷＬコマンドの応答結果を判断して遅延設定する必要がある。
すなわち、
・ＤＱＳの遅延設定値＝Ｎで、クロックエッジがＤＱＳエッジより速い．
・ＤＱＳの遅延設定値＝Ｎ＋１で、ＤＱＳエッジがクロックエッジより速い．
この条件の場合、ＤＱＳの遅延設定値は、ＮまたはＮ＋１で良い。
【００２０】
このような遅延調整方法の場合、初期化後の補正の差異を、式（１）または式（２）のような計算では補正できない。
【００２１】
そこで、再度、ＷＬコマンドを用いた補正を行うこと（前者）、もしくは、再度、ＤＬＬの出力値を用いて、以下の式（３）で求められた値を遅延設定値として採用すること（後者）が考えられる。
【００２２】
Ｂ１＝Ｂ０／Ａ０×Ｂ０    ・・・・・（３）
ここで、Ａ０：初期化時のＤＬＬ出力値
Ｂ０：初期化時の端子遅延設定値
Ａ１：現在のＤＬＬ出力値
Ｂ１：補正後の端子遅延設定値
である。
【００２３】
従来技術では、通常、前者を実行するしかなかった。仮に、後者を実行しようとする場合は、式（３）を満足する回路を端子毎に接続する必要がある。
【００２４】
これに対し、本実施例では、後者を採用し、さらに適切なタイミングかつ回路規模を増大させないメモリ制御回路を実現している。以下、本実施例におけるメモリ制御装置について詳述する。
【００２５】
図１は、本実施例によるメモリ制御装置の要部構成を示したブロック図である。本実施例のメモリ制御装置１０は、メモリ制御ブロック１１、遅延回路１２，１３，１４、タイミング発生回路１５、ＤＬＬ(Delay Locked Loop)１６，遅延演算回路１７、第１レジスタ１８、第２レジスタ１９，２０，２１、及びメモリ２２を備えている。
【００２６】
メモリ制御ブロック１１には、遅延回路１２，１３，１４の各々が接続されている。また、タイミング発生回路１５には、ＤＬＬ１６と遅延演算回路１７がそれぞれ接続されている。ＤＬＬ１６は遅延演算回路１７に直接接続されているとともに、第１レジスタ１８を介しても遅延演算回路１７に接続されている。
【００２７】
遅延演算回路１７は第２レジスタ１９，２０，２１の各々に接続されている。さらに、第２レジスタ１９，２０，２１は遅延回路１２，１３，１４に各々接続されている。すなわち、第２レジスタ１９は遅延回路１２に接続され、第２レジスタ２０は遅延回路１３に接続され、第２レジスタ２１は遅延回路１４に接続されている。
【００２８】
そして、遅延回路１２，１３，１４の各々は、メモリ２２に接続されている。なお、ＤＬＬ１６には、基準クロックが入力されている。
【００２９】
遅延回路１２，１３，１４は、メモリ２２に接続され端子毎の出力遅延値の設定が可変可能となっている。ＤＬＬ１６は、遅延回路１２，１３，１４と同じ遅延特性の遅延素子を内蔵している。第１レジスタ１８は、ＤＬＬ１６のロック状態時の出力値を任意のタイミングでレジスタ値として保持する。第２レジスタ１９，２０，２１は、端子毎の遅延設定値をレジスタ値として保持している。
【００３０】
遅延演算回路１７は、ＤＬＬ１６の出力値、第１レジスタ１８のレジスタ値、及び第２レジスタ１９，２０，２１のレジスタ値に基づいて遅延値を演算する。この場合、遅延演算回路１７は、キャリブレーション実行のタイミングに同期して、ＤＬＬ１６の出力値と第１レジスタ１８のレジスタ値との差分と、第２レジスタ１９，２０，２１のレジスタ値とを比較して、遅延値の演算実行を行うか否かの判断を行う。なお、タイミング発生回路１５は、ＤＬＬ１６のキャリブレーション実行のタイミングを制御している。
【００３１】
本実施例においては、遅延演算回路１７は、ＤＬＬ１６の出力値、第１レジスタ１８のレジスタ値、及び第２レジスタ１９，２０，２１のレジスタ値に基づいて演算した遅延値（演算結果）を、第２レジスタ１９，２０，２１に送る。そして、遅延演算回路１７は、前記演算結果を第２レジスタ１９，２０，２１の遅延設定値に上書きする。
【００３２】
なお、メモリ２２には種々の入出力端子が複数設けられているが、図１では省略されている。第２レジスタ１９，２０，２１において、初期化時の遅延設定値は、図示してないシーケンサもしくはＣＰＵが設定する。また第１レジスタ１８は、ＤＬＬ１６から出力値が出力されたとき、その時点における出力値を保存する。さらに、ＤＬＬ１６に入力される基準クロックは、メモリ２２でのクロックと同じ周波数か、または、前記クロックの２逓倍、４逓倍の周波数に設定されている。
【００３３】
本実施例によれば、複数のメモリをフライバイ・トポロジで接続した場合、各バイトレーン毎に異なる遅延を設定することができる。また、制御信号は等長配線をしなくても良く、配線長の差異よる遅延差を遅延設定の差異で吸収すれることが可能となり、温度電源電圧の環境変化でも同じ遅延値を保つことができる。
【００３４】
さらに、ＤＬＬ１６の出力値の差分で判断することにより、不必要な遅延値変更を防ぐことができる。また、遅延演算回路１７において、処理を瞬時で行う必要はない。そのため、遅延演算回路１７に乗算器または除算器を設ける必要が無く、加算器または減算器を設けるだけで良い。
【００３５】
また、本実施例では、第２レジスタ１９，２０，２１に対して１つの遅延演算回路１７が設けられ、遅延演算回路１７を共通化しており、これにより、遅延演算回路１７の増加防止を図ることができる。
【００３６】
《実施例２》
図２は、実施例２によるメモリ制御装置の要部構成を示したブロック図である。本実施例のメモリ制御装置３０では、メモリ制御ブロック１１とタイミング発生回路１５とが接続され、メモリ制御ブロック１１からタイミング発生回路１５にリフレッシュフラグに関する信号が入力される。そして、タイミング発生回路１５は、前記信号に基づいてメモリ２２のリフレッシュサイクルに同期した（つまり、リフレッシュ毎に）タイミング信号を、遅延演算回路１７に出力するよう構成されている。他の構成は、実施例１の場合と同様である。
【００３７】
なお、リフレッシュ毎に遅延演算回路１７を動作させなくても良く、リフレッシュフラグがＭ回立てば、ＤＬＬ１６の出力値と第１レジスタ１８に保存されたレジスタ値とを比較し、その差分が最大差分値を超えなければ、遅延設定値の更新はしない。最大差分値を超えている場合は、一つの遅延設定値を選択して式（３）の演算を行い、次のリフレッシュフラグが立った時に、遅延設定値を書き換える。
【００３８】
遅延素子精度によっては、演算結果が元の遅延設定値と同じになる場合がある。その際は書き換える必要が無い。遅延設定値の選択は、リフレッシュフラグが１回立てば一つの遅延設定値を選択し、書き換える必要があれば次のリフレッシュフラグが立った時に書き換える。この動作を全ての端子の遅延設定値に対して実施すれば良い。
【００３９】
本実施例によれば、リフレッシュタイミングに同期することにより、メモリのアクセスのない期間で遅延値の変更が可能となる。
【００４０】
また、乗算器、除算器のような回路規模の大きい演算器を使う必要がないので、回路規模の低減に寄与する。
【００４１】
《実施例３》
図３は、実施例３の要部構成を示したブロック図である。本実施例では、タイミング発生回路１５に温度センサ３５が接続され、この温度センサ３５での検出温度の信号がタイミング発生回路１５に入力されるよう構成されている。他の構成は実施例１の場合と同様である。
【００４２】
本実施例においては、タイミング発生回路１５は、温度センサ３５での検出温度の変化に応じて、ＤＬＬ１６のキャリブレーション実行のタイミングを制御することができる。
【００４３】
本実施例によれば、温度センサ３５を用いることにより、ＤＬＬ１６のキャリブレーションの再実行する回数を減らすことができ、消費電力を抑制することが可能となる。
【００４４】
なお、本実施例は、実施例２に示した構成にも適用することができる。
【００４５】
《実施例４》
図４は、実施例４によるメモリ制御装置の要部構成を示したブロック図である。本実施例のメモリ制御装置４０では、新たにストローブ遅延制御回路としてＷＬ制御回路４１が設けられ、このＷＬ制御回路４１は第２レジスタ１９に接続されている。なお、図示してないが、ＷＬ制御回路４１は、第２レジスタ１９の代わりに、第２レジスタ２０または２１に接続されていても良い。
【００４６】
上記構成において、例えば、ＷＬ制御回路４１から第２レジスタ１９及び遅延回路１２を経由してメモリ２２の少なくとも一つの端子に対して、ＤＱＳ信号（ストローブ信号）が入力される。この場合、ＷＬ制御回路４１は、ＷＬ（Write Leveling）コマンドの応答値により、ＤＱＳ信号の遅延設定値を（＋１）または（−１）に設定する。
【００４７】
本実施例によれば、ＷＬの応答値に応じて遅延設定を変更できる回路を備えることにより、初期化時のＣＰＵの負荷を軽減することが可能となる。
【００４８】
以上、本発明の実施例を図面により詳述してきたが、上記各実施例は本発明の例示にしか過ぎないものであり、本発明は上記各実施例の構成にのみ限定されるものではない。本発明の要旨を逸脱しない範囲の設計の変更等があっても、本発明に含まれることは勿論である。
【００４９】
例えば、上記各実施例では、遅延回路１２，１３，１４及び第２レジスタ１９，２０，２１が３つずつ設けられていたが、これに限らず、遅延回路や第２レジスタは２つずつでも良いし、４つ以上ずつ設けられていても良い。
【００５０】
なお、上記各実施例は、端子毎に異なる遅延値を設定する必要がある半導体装置にも適用することができる。
【符号の説明】
【００５１】
１０  メモリ制御装置
１１  メモリ制御ブロック
１２，１３，１４  遅延回路
１５  タイミング発生回路
１６  ＤＬＬ(Delay Locked Loop)
１７  遅延演算回路
１８  第１レジスタ
１９，２０，２１  第２レジスタ
２２  メモリ
３０  メモリ制御装置
３５  温度センサ
４０  メモリ制御装置
４１  ＷＬ制御回路
【先行技術文献】
【特許文献】
【００５２】
【特許文献１】特開２０１０−１８２１１５号公報
【特許文献２】特開２０１３−８１１２号公報
【特許文献３】特開２００４−２２０６４３号公報
【特許文献４】特開２００５−２９２９４７号公報
【図１】
2014241003.tif 000003
【図２】
2014241003.tif 000004
【図３】
2014241003.tif 000005
【図４】
2014241003.tif 000006