(57)【要約】【課題】単純な回路構成によって複数のDDRコマンド列間におけるDDRコマンド同士が競合するのを回避する。【解決手段】個別に動作することができる複数のバンクで構成されるDDRメモリとバンク共通バスで接続されたDDRメモリコントローラにおいて、バンク対応のライトリクエストまたはリードリクエストを逐次に受けると、動作モードに応じて一連のDDRコマンド列Activeコマンド-Write(Read)コマンド-Prechargeコマンドを逐次に発行し、その際に該DDRコマンド同士がバンク共通バス上で競合しないように、Activeコマンド，Write(Read)コマンド，Prechargeコマンドの発行タイミングを調整してパイプライン処理する。【選択図】図１
2010146252.tif 000002
【特許請求の範囲】
【請求項１】
個別に動作することができる複数のバンクで構成されるDDRメモリとバンク共通バスで接続されたDDRメモリコントローラにおいて、
前記バンク対応のライトリクエストまたはリードリクエストを逐次に受けると、動作モードに応じて一連のDDRコマンド列Activeコマンド-Write(Read)コマンド-Prechargeコマンドを逐次に発行し、その際に該DDRコマンド同士が前記バンク共通バス上で競合しないように、前記Activeコマンド，Write(Read)コマンド，Prechargeコマンドの発行タイミングを調整してパイプライン処理することを特徴とするDDRメモリコントローラ。
【請求項２】
個別に動作することができる複数のバンクで構成されるDDRメモリとバンク共通バスで接続され、前記バンクと１対１対応のバンク制御部を設けたDDRメモリコントローラにおいて、
前記バンクに対するDDRコマンドを発行するためのタイミング規格情報を予め保持しているDDRタイミング規格保持回路と、
外部からアドレス信号とライトリクエストまたはリードリクエストを入力して、アドレス信号をデコードした結果により、前記バンク制御部のいずれか一つに対し、アドレス信号とライトアクセスまたはリードアクセスの起動信号を通知するリクエスト制御回路と、
前記起動信号を受けると、前記タイミング規格情報による条件を満たし、かつ動作モードに応じて一連のDDRコマンド列Activeコマンド-Write(Read)コマンド-Prechargeコマンドを発行し、その際に該DDRコマンド同士が前記バンク共通バス上で競合しないように、前記Activeコマンド，Write(Read)コマンド，Prechargeコマンドの発行タイミングを調整してパイプライン処理すると共に、動作状態を示す状態遷移情報を出力する前記バンク制御部と、
全ての前記バンク制御部からのActiveコマンド，Write(Read)コマンド，Prechargeコマンドを論理ORして前記バンク共通バスへ出力し、また前記アドレス信号と前記ライトリクエストまたはリードリクエストと全ての前記バンク制御部からの前記状態遷移情報により、前記外部と前記リクエスト制御回路と全ての前記バンク制御部を制御するための信号を出力するバンク管理部を有することを特徴とするDDRメモリコントローラ。
【請求項３】
前記動作モードは、アクセスバースト長，間欠アクセスと連続アクセスの別，同一バンクアクセスと異バンクアクセスの切替り，ライトアクセスとリードアクセスの切替りおよびこれら組み合わせにより定められることを特徴とする請求項１〜２に記載のDDRメモリコントローラ。
【請求項４】
前記動作状態は、
当初のアイドル状態であるCLOSEステートと、
前記ライトリクエストまたはリードリクエストの入力があると前記CLOSEステートから遷移し、前記Activeコマンドから前記Writeコマンドまたは前記Readコマンドまでの経過時間tRCDのクロック長だけ留まるACTステートと、
前記ACTステートから遷移し、アクセスバースト長２，４，８に対応して１，２，４クロック長の時間だけ留まるが、同一バンクの連続アクセスに応じて繰り返してこの状態を維持するOPENステートと、
前記OPENステートから遷移し、滞留時間が前記コマンドの競合を回避するように調整されるDELAYステートと、
前記DELAYステートから遷移し、前記Prechargeコマンドから次のActiveコマンドの入力が可能となるまでの経過時間tRPのクロック長から１クロック長を減じた時間だけ滞留した後に前記CLOSEステートへ遷移するPREステートを有し、
前記ACTステート，前記OPENステート，前記PREステートの各１クロック目で、それぞれ前記Activeコマンド，Write(Read)コマンド，Prechargeコマンドが発行されることを特徴とする請求項２〜３に記載のDDRメモリコントローラ。
【請求項５】
前記OPENステートは、その滞留時間が前記アクセスバースト長２，４，８に対応して１，２，４の固定クロック長とされ、また同一バンクの連続アクセスに応じて繰り返されることを特徴とする請求項４に記載のDDRメモリコントローラ。
【請求項６】
前記DELAYステートは、同一バンクへの連続アクセスであれば、ライトリカバリ時間tWRに１クロック幅を加えた時間、異なるバンクへの連続アクセスあれば、前記ACTステートからカウントし、１０クロック幅、または前記ActiveコマンドからPrechargeコマンド入力までに満足すべき経過時間tRASと同じクロック幅のどちらか大きい方のクロック幅だけ滞留することを特徴とする請求項４〜５に記載のDDRメモリコントローラ。
【請求項７】
前記バンク制御部は、
前記リクエスト制御回路から起動信号が入力すると、前記バンク管理部による制御の下に、当該バンク制御部と他のバンク制御部が発行するDDRコマンドが競合しないように、前記動作モードでタイミング規格情報を加工したタイミング情報を出力する入れ子タイミング調整回路と、
前記タイミング情報により前記動作状態を遷移し、この状態遷移に連動して、遷移の１クロック目で生成した一連のDDRコマンドと前記状態遷移情報をバンク管理部へ出力するコマンド生成部を有することを特徴とする請求項２〜６に記載のDDRメモリコントローラ。
【請求項８】
前記バンク管理部は、
前記論理ORを行なうOR回路と、
前記状態遷移情報により次のアクセス要求を受け付けるためのタイミングを調整し、前記ライトリクエストまたはリードリクエストが受け付けられたことを通知するACK信号を前記外部へ出力するACK出力タイミング回路と、
前記アドレス信号によりバンクアドレスの切替りを検出するとアクティブ信号を全ての前記入れ子タイミング調整回路へ出力するバンクアドレス切替検出回路と、
前記ライトリクエストまたはリードリクエストと全ての前記バンク制御部からの前記状態遷移情報により、本DDRメモリコントローラの状態がライトアクセスとリードアクセスと停止中のいずれであるかを示す識別情報を全ての前記バンク制御部へ出力し、また前記識別情報が停止中であることを示すときに前記起動信号を抑止するためのディセーブル信号を前記バンク制御部へ出力するリード・ライト切替検出回路を有することを特徴とする請求項２〜７に記載のDDRメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はDDR（Double Data Rate）メモリコントローラ、特に、DDRメモリコントローラとDDRメモリデバイスを接続するバンク共通バスにおけるDDRコマンドの競合回避に関する。
【背景技術】
【０００２】
クロックの立ち上がりエッジと立下りエッジでデータを入出力することにより、従来のSDR（Single Data Rate）メモリの２倍のデータ転送レートを可能にしたDDRメモリが知られている（例えば、非特許文献１）。DDRメモリでは、RAS信号に当たるアクティブコマンドActiveを入力した後、CAS信号に当たるリードコマンドReadまたはライトコマンドWriteを入力して動作を実行する。そして、現在のライト（リード）動作が終了すると、同一バンク内の別のRASアドレスを活性化するためにプリチャージコマンドPrechrgeを入力する。
【０００３】
DDRメモリにおいは厳格なタイミング規格が製品毎に設けられている。即ち、デバイスがライトコマンドWriteまたはリードコマンドReadを受け取るにはアクティブコマンドActive入力から時間tRCDの経過を要し、プリチャージコマンドPrechargeはアクティブコマンドActive入力から時間tRAS経過後に入力する必要がある。また、プリチャージコマンドPrecharge入力から時間tRP経過後に次のアクティブコマンドActiveの入力が可能となる。アクティブコマンドActive入力からから次のアクティブコマンドActive入力までに満足すべき間隔は時間tRCである。更に、ライトデータが正しくメモリセルに書き込まれることを保証するためには、プリチャージコマンドPrecharge入力以前に時間tWRの間隔を要し、あるバンクのアクティブコマンドActiveと別個のバンクに対するアクティブコマンドActiveと間隔は時間tRRD以上にすべきことが定められている。
【０００４】
DDRメモリは個別にライト（リード）動作が可能な４バンク構成であり、異なるバンクに跨るライト（リード）動作においては、通常、データ転送能力を高めるためにパイプライン処理が採用される。パイプライン処理では、アドレス入力からデータ出力までの動作をいくつかのブロックに分割して、各バンクにおける異なるブロックの動作を並列に実行する。
【０００５】
また、特許公報上では、DDR仕様の複数のSRAMチップをアドレス空間を拡張する目的で配置した場合、選択されずNOP（Non Operation）状態のSRAMチップの出力をハイインピーダンス状態にすることにより、NOP状態のSRAMチップからのエコークロックを阻止してデータの競合をなくするとした「半導体装置」が開示されている（例えば、特許文献１参照）。
【０００６】
更に、Posted CAS技術を採用した場合に、Additive Latencyをモードレジストにセッティングすると、アクセスバンク毎にAdditive Latencyを変更するには事前にモードレジストのセッティングコマンドを実施する必要があるという煩わしさを防止するため、DDRメモリコントローラでアクティブコマンドActiveを実行する度にAdditive Latencyを変更することとした技術も開示されている（例えば、特許文献２参照）。
【０００７】
【非特許文献１】ユーザーズマニュアル「DDR SRAMの使い方」[平成20年12月6日検索]インターネット<URL：http://www.elpida.com/pdfs/J0234E50.pdf>
【特許文献１】特開2002-215454（第３頁−第４頁、図１）
【特許文献２】特開2007-215454（第５，６，１３頁、図７）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した非特許文献１に記載の従来技術では、パイプライン処理については、アドレス入力からデータ出力までの動作をいくつかのブロックに分割して、各バンクにおける異なるブロックの動作を並列に実行する、という一般的な記述のみでこれ以上は明らかにされていない。
【０００９】
また、特許文献１に記載の従来技術では、SRAMチップ間のデータの競合を回避してメモリ空間の拡張するものであって、メモリの動作のスピードアップを図ったものではない。
【００１０】
また、特許文献２に記載の従来技術では、Posted CAS技術を採用した場合の改良案を開示しているが、Posted CAS技術自体が既に複雑な制御を必要とするのに、動的にAdditive Latencyを変更するので、更に複雑化したDDRメモリの制御となるという問題点がある。
【００１１】
思うに、一般的なDDRメモリコントローラは、メモリ・アクセスするバンク数に応じた複数のバンク制御部を持つ。各バンク制御部は、１つのバンクに対するコマンド生成を担当する。DDRインタフェースにコマンドを発行する際、クロック毎に１つのコマンドのみが発行できる仕様であり、複数のバンク制御部が生成したコマンド同士が同一タイミングで競合しないようにするためには、１つのバンク制御部の一連のコマンド列Active-Write(Read)-Prechargeの発行が完了してから、次のバンク制御部のコマンド発行を行うか、データ転送性能を高めるためには、複数のバンク制御部が同時動作し、各バンク制御部が生成したコマンド同士が同一クロックで競合しないようにタイミングをずらしてコマンド発行を行う必要があろう。そして、コマンド同士が同一クロックで競合しないようにタイミング調整するには、競合したコマンド同士を優先順位回路で先発・後発を処理する。競合するコマンドの数が多くなれば、優先順位回路のアルゴリズムは複雑になり、その判定処理のためスループットが大きくなってしまう。
【００１２】
そこで、本発明の目的は、単純な回路構成によって、バンク間のデータの競合を回避しつつ、DDRメモリ動作のスピードアップを図ったDDRメモリコントローラを提供することにある。
【課題を解決するための手段】
【００１３】
本発明のDDRメモリコントローラは、個別に動作することができる複数のバンクで構成されるDDRメモリとバンク共通バスで接続されたDDRメモリコントローラにおいて、バンク対応のライトリクエストまたはリードリクエストを逐次に受けると、動作モードに応じて一連のDDRコマンド列Activeコマンド-Write(Read)コマンド-Prechargeコマンドを逐次に発行し、その際に該DDRコマンド同士がバンク共通バス上で競合しないように、Activeコマンド，Write(Read)コマンド，Prechargeコマンドの発行タイミングを調整してパイプライン処理することを特徴とする。
【００１４】
より具体的には、本発明のDDRメモリコントローラは、個別に動作することができる複数のバンクで構成されるDDRメモリとバンク共通バスで接続され、DDRタイミング規格保持回路と、リクエスト制御回路と、バンクと１対１対応のバンク制御部と、バンク管理部を有する。
【００１５】
DDRタイミング規格保持回路は、バンクに対するDDRコマンドを発行するためのタイミング規格情報を予め保持している。また、アクセス単位のバースト長が予め設定される。リクエスト制御回路は、外部からアドレス信号とライトリクエストまたはリードリクエストを入力して、アドレス信号をデコードした結果により、バンク制御部のいずれか一つに対し、アドレス信号とライトアクセスまたはリードアクセスの起動信号を通知する。
【００１６】
各バンク制御部は、起動信号を受けると、タイミング規格情報による条件を満たし、かつ動作モードに応じて一連のDDRコマンド列Activeコマンド-Write(Read)コマンド-Prechargeコマンドを発行し、その際に該DDRコマンド同士が前記バンク共通バス上で競合しないように、Activeコマンド，Write(Read)コマンド，Prechargeコマンドの発行タイミングを調整してパイプライン処理すると共に、動作状態を示す状態遷移情報を出力する。
【００１７】
バンク管理部は、全てのバンク制御部からのActiveコマンド，Write(Read)コマンド，Prechargeコマンドを論理ORしてバンク共通バスへ出力し、またアドレス信号とライトリクエストまたはリードリクエストと全てのバンク制御部からの状態遷移情報により、外部とリクエスト制御回路と全てのバンク制御部を制御するための信号を出力する。
【００１８】
動作モードは、例えば、アクセスバースト長，間欠と連続アクセスの別，同一バンクアクセスと異バンクアクセスの切替り，ライトアクセスとリードアクセスの切替りおよびこれら組み合わせにより定められる。
【００１９】
動作状態は、例えば、当所のアイドル状態であるCLOSEステートと、ライトリクエストまたはリードリクエストの入力があるとCLOSEステートから遷移し、ActiveコマンドからWriteコマンドまたはReadコマンドまでの経過時間tRCDのクロック長だけ留まるACTステートと、ACTステートから遷移し、アクセスバースト長２，４，８に対応して１，２，４クロック長の時間だけ留まるが、同一バンクの連続アクセスに応じて繰り返してこの状態を維持するOPENステートと、OPENステートから遷移し、滞留時間が前記コマンドの競合を回避するように調整されるDELAYステートと、DELAYステートから遷移し、Prechargeコマンドから次のActiveコマンドの入力が可能となるまでの経過時間tRPのクロック長から１クロック長を減じた時間だけ滞留した後にCLOSEステートへ遷移するスPREステートを有する。
【００２０】
ACTステート，OPENステート，PREステートの各１クロック目で、それぞれActiveコマンド，Write(Read)コマンド，Prechargeコマンドが発行される。
【００２１】
OPENステートは、例えば、その滞留時間がアクセスバースト長２，４，８に対応して１，２，４クロック長とされ、また同一バンクの連続アクセスに応じて繰り返される。
【００２２】
DELAYステートは、例えば、同一バンクへの連続アクセスであれば、ライトリカバリ時間tWRに１クロック長を加えた時間、異なるバンクへの連続アクセスあれば、前記ACTステートからカウントし、１０クロック幅、または前記ActiveコマンドからPrechargeコマンド入力までに満足すべき経過時間tRASと同じクロック幅のどちらか大きい方のクロック幅だけ滞留する。
【００２３】
バンク制御部は、リクエスト制御回路から起動信号が入力すると、バンク管理部による制御の下に、当該バンク制御部と他のバンク制御部が発行するDDRコマンドが競合しないように、動作モードでタイミング規格情報を加工したタイミング情報を出力する入れ子タイミング調整回路と、タイミング情報により動作状態を遷移し、この状態遷移に連動して、遷移の１クロック目で生成した一連のDDRコマンドと状態遷移情報をバンク管理部へ出力するコマンド生成部を有する。
【００２４】
バンク管理部は、論理ORを行なうOR回路と、状態遷移情報により次のアクセス要求を受け付けるためのタイミングを調整し、ライトリクエストまたはリードリクエストが受け付けられたことを通知するACK信号を外部へ出力するACK出力タイミング回路と、バンクアドレス切替検出回路と、リード・ライト切替検出回路を有する。
【００２５】
バンクアドレス切替検出回路は、アドレス信号によりバンクアドレスの切替りを検出するとアクティブ信号を全ての入れ子タイミング調整回路へ出力する。また、リード・ライト切替検出回路は、ライトリクエストまたはリードリクエストと全てのバンク制御部からの状態遷移情報により、本DDRメモリコントローラの状態がライトアクセスとリードアクセスと停止中のいずれであるかを示す識別情報を全てのバンク制御部へ出力し、また識別情報が停止中であることを示すときにバンク制御部へ起動信号を抑止するためのディセーブル信号をリクエスト制御回路へ出力する。
【発明の効果】
【００２６】
本発明は、一連のDDRコマンド列を生成する逐次処理のステート間隔をタイミング規格情報に基づき、動作モードに応じて、また他のコマンド生成部の動作状態により、DDRコマンド列の間のDDRコマンドが同一クロックで競合せず入れ子状態になるように調整して生成する構成としたため、複数のバンクに対して発行したコマンド同士が同一クロックで競合するのを防ぐために従来のような複雑な優先順位回路を要せず構成を単純化できるという第１の効果を得ることができる。
【００２７】
また、DDRメモリへ発行するコマンドが優先順位回路を経由しないため、アクセス要求からコマンド発行までのスループットがDDRメモリの各バンクに対して一定かつ最短になるという第２の効果も得ることができる。
【発明を実施するための最良の形態】
【００２８】
次に、本発明の実施の形態について図面を参照しながら詳細に説明する。以下、アクティブコマンドActiveをActiveコマンド、ライトコマンドWriteをWriteコマンド、リードコマンドReadをReadコマンド、プリチャージコマンドPrechargeをPrechargeコマンドと記す。
【００２９】
［構成の説明］
図１は、本発明の一実施形態としてのDDRメモリコントローラの全体構成を端子コントローラ４およびDDRメモリ５と共に示すブロック図である。先ず、全体構成と構成要素について説明する。DDRメモリ５は、DDR（Double Data Rate）仕様のSRAMであって、アドレス領域を異にする４つのバンクから成り、各バンクは、基本的には一連のコマンド列Active-Write(Read)-Prechargeにより個別にライト（リード）動作することができる。
【００３０】
図１において、DDRメモリコントローラは、ローカル側インタフェース（図示省略）から、DDRメモリ５をアクセスするためのアドレス信号L1と、ライトアクセスを要求するライトリクエストL2と、リードアクセスを要求するリードリクエストL3とを入力して、DDRコマンド3aを生成し、バンク共通バス（以下、バスと記す）で接続された端子コントローラ４へ出力する。動作モードによっては、バス上ではアクセス対応に生成されたDDRコマンド3aが競合することがあり、その場合にはDDRコマンド3aについてタイミングの調整が必要とされる。
【００３１】
端子コントローラ４は、DDRメモリコントローラから入力したDDRコマンド3aをDDRインタフェースの物理的な伝播遅延を満たすように調整しDDRコマンド4aとしてDDRメモリ５へ出力する。DDRメモリ５は、このDDRコマンド4aによりライトまたはリード動作を行なう。なお、アクセスのバースト長を指定するインタフェースは明示していないが、ローカル側インタフェースからDDRメモリコントローラへ設定される。
【００３２】
DDRメモリコントローラは、DDRタイミング規格保持回路10，リクエスト制御回路１，DDRメモリ５のバンクと１対１対応の４つのバンク制御部20〜23、およびバンク制御部20〜23を管理するバンク管理部３とで構成されている。
【００３３】
DDRタイミング規格保持回路10は、DDRメモリ５の１つのバンクまたは複数のバンクに対するDDRインタフェースのDDRコマンドをバンク制御部20〜23が発行するためのタイミング規格情報1eとアクセス単位のバースト長を予め保持し、バンク制御部20〜23へ出力している。DDRコマンドを構成するActiveコマンド，WriteコマンドまたはReadコマンド，Prechargeコマンドは、少なくともこれらの各時間以上の間隔を保って発行されることが要求される。
【００３４】
タイミング規格情報1eは、ActiveコマンドからWriteコマンドまたはReadコマンドまでの経過時間tRCD，ActiveコマンドからPrechargeコマンドまでの経過時間tRAS，Prechargeコマンドから次のActiveコマンドの入力が可能となるまでの経過時間tRP，Activeコマンドからから次のActiveコマンド入力までに満足すべき経過時間tRC，ライトデータが正しくメモリセルに書き込まれることを保証するためのPrechargeコマンド前の時間tWR，バンク間に跨るActiveコマンドの間隔tRRD，ライトアクセスからリードアクセスへ移るときにtWRのスタート時点からReadコマンド発行までの間隔tWTRおよびRead-Write間隔等を含む。
【００３５】
リクエスト制御回路１は、ローカル側インタフェースから、アドレス信号L1とライトリクエストL2またはリードリクエストL3を入力する。そして、アドレス信号L1をデコードした結果により、バンク制御部20〜23の内のいずれか一つに対し、アドレス信号およびライトアクセスまたはリードアクセスの起動信号1a〜1dを通知する。起動信号1aは、ライトリクエストL2またはリードリクエストL3の入力があり、かつ、リード・ライト切替え検出回路304から起動信号1aを抑止するためのディセーブル信号3dが無効であるときに出力される。
【００３６】
バンク制御部20，21，22，23は、同構成であって、DDRメモリ５のそれぞれバンク０，１，２，３に対するDDRコマンドを生成する。バンク制御部20〜23が自由にDDRコマンドを生成すると、バンク管理部３はそれらを纏めてDDRインタフェースであるバスを介して端子コントローラ４へ出力するので、DDRコマンドの競合が発生する。そこで、DDRタイミング規格保持回路10からのタイミング規格情報1eとバースト長を基にして、バンク管理部３による管理の下に、バンク制御部20〜23において、如何なる動作モードであっても競合しないように調整されたDDRコマンドを生成する。以下、バンク制御部自体について説明するときはバンク制御部20で代表することとする。
【００３７】
バンク制御部20は、図２に示すように、CLOSE，ACT，OPEN，DELAYおよびPREという５つの状態を採り、各状態をこの順序に遷移する。当初はアイドル状態のCLOSEステートにあり、起動信号1aの入力があるとACTステートへ遷移する。ActiveコマンドからWriteコマンドまたはReadコマンドまでの経過時間tRCDが３クロック長である場合、ACTステートの時間は３クロック長、Activeコマンドの入力が可能となるまでの経過時間tRPが３クロック長である場合、PREステートの時間は２クロック長である。OPENステートの時間は、バースト長２，４，８に対応して１，２，４クロック長となるが、同一バンクへの連続アクセスに応じて繰り返される。この繰返しの中で、後で詳述する例外処理が行われることがある。DELAYステートの時間は、DDRコマンドの競合を回避するように調整される。例えば、同一バンクへのアクセスでライトリカバリ時間tWRのクロック長が２クロック長であれば３クロック長、異なるバンクへの連続アクセスで、ActiveコマンドからPrechargeコマンド入力までに満足すべき経過時間tRASが１０クロック幅以下であれば、バースト長２，４，８に応じて、６，５，３クロック幅とされる。以下、ACTステート等は単にACT等と記す。
【００３８】
バンク制御部20は、入れ子タイミング調整回路201とコマンド生成部202で構成されている。入れ子タイミング調整回路201は、DDRメモリの１つのバンクまたは複数のバンク間に対するDDRインタフェースのタイミング規格情報1eをDDRタイミング規格保持回路10から入力し、バンクの切替り検出に伴うアクティブ信号3bと、ライトアクセス中またはリードアクセス中または停止中の別と、ライトアクセスとリードアクセスの切替りを示す識別信号3cをバンク管理部３から入力している。
【００３９】
また、入れ子タイミング調整回路201にはDDRタイミング規格保持回路10からバースト長が設定される。動作モードは、このアクセスバースト長と、間欠と連続アクセスの別，同一バンクアクセスと異バンクアクセスの切替り，ライトアクセスとリードアクセスの切替りおよびこれら組み合わせにより定められる。例えば、２バースト長の同一バンクへの間欠ライトアクセス、２バースト長の異なるバンク（０→１→２→３）への連続ライトアクセス、４バースト長の同一バンクへの連続ライトアクセス、２バイト長の同一バンク（０）への連続ライトアクセス→異なるバンク（２）へのライトアクセス→同一バンク（３）への連続ライトアクセス、２バースト長の異なるバンク（０→１→２→３）への交互のライトアクセスとリードアクセスといったものである。
【００４０】
入れ子タイミング調整回路201は、リクエスト制御回路１から起動信号1aが入力すると、アクティブ信号3bおよび識別信号3cの情報により決定した動作モードにおいて、タイミング規格情報1eを加工したタイミング情報をコマンド生成部202へ出力する。このタイミング情報は、バンク制御部20とバンク制御部21〜23が発行するDDRコマンドが競合しないように考慮した値で、特に、上述のACTの開始時刻とDELAY時間に留意して調整される。
【００４１】
コマンド生成部202は、タイミング情報により図２に示したように状態を遷移し、この状態遷移に連動して、遷移の１クロック目でバンク０に対する一連のDDRコマンド2aを生成してバンク管理部３へ出力する。また、状態遷移情報2eをバンク制御部３へ出力する。
【００４２】
バンク管理部３は、リクエスト制御回路１と同様にローカル側インタフェースからアドレス信号とライトリクエスト信号L2またはリードリクエスト信号L3を入力し、バンク制御部20〜23からDDRコマンド2a〜2dと状態遷移情報2e〜2hを入力する。そして、ACK信号L4をローカル側インタフェースへ、DDRコマンド3aを端子コントローラ４へ、アクティブ信号3bおよび識別信号2cをバンク制御部20〜23へ、ディセーブル信号3dをリクエスト制御回路１へそれぞれ出力する。
【００４３】
バンク管理部３は、ACK出力タイミング回路301とOR回路302とバンクアドレス切替検出回路303とリード・ライト切替検出回路304で構成されている。OR回路302はコマンド生成部202，212，222，232からのDDRコマンド2a〜2dを論理ORし、その結果3aを端子コントローラ４へ出力する。
【００４４】
ACK出力タイミング回路301は、コマンド生成部203，213，223，233からの状態遷移情報2e〜2hを入力し、起動中のバンク制御部のステートの進行状態から、次のアクセス要求を受け付けるためのタイミングを調整し、ライトリクエストL2またはリードリクエストL3が受け付けられたことを通知するACK信号L4をローカル側インタフェースに出力する。
【００４５】
バンクアドレス切替検出回路303は、アドレス信号L1によりアクセス要求のアドレスと次回のアクセス要求のアドレス値を比較してバンクアドレスの切り替わり時にアクティブ信号3bを生成して入れ子タイミング調整回路201，211，221，231の全てへ同時に出力する。
【００４６】
リード・ライト切替検出回路304は、ライトリクエストL2またはリードリクエストL3とバンク制御部20〜23の状態遷移情報2e〜2hにより識別信号3cを生成して入れ子タイミング調整回路201，211，221，231の全てへ同時に出力する。識別信号は本DDRメモリコントローラの状態がライトアクセスとリードアクセスと停止中のいずれであるかと、ライトアクセスとリードアクセスの切替りを示す。更に、リード・ライト切替検出回路304が停止中であることを示すとき、リクエスト制御回路１がバンク制御部20〜23へ出力する起動信号1a〜1dを抑止するためのディセーブル信号3dを出力する。
【００４７】
［動作の説明］
次に、以上のように構成された本DDRメモリコントローラの動作につき、場合に分けて図３〜９に示すタイミングチャートを参照しながら説明する。場合分けは、バースト長、間欠アクセスか連続アクセスか、同一バンクアクセスと異バンクアクセスの切替りがあるか、ライトアクセスとリードアクセスの切替りがあるかにより行なっている。またDDRタイミング規格保持回路10に設定されるタイミング規格は、図３〜９の全てのケースにおいて、tRCDは３クロック幅、tRASは７ロック幅、tRCは１０クロック幅、tRPは３クロック幅、tWRは２クロック幅、tRRDは２クロック幅、tWTRは１クロック幅、ReadコマンドとWriteコマンドの間隔は４クロック幅とする。なお、図３〜９では、用紙サイズの都合上、２１クロック目以降の表示を省略している。
【００４８】
各タイムチャートにおいて、信号CLK_1Xは、本DDRメモリコントローラのシステムクロックを示し、端子コントローラ４とDDRメモリ５の間のデータラインDQの倍速クロック信号CLK_2Xの半分の速度である。DDRメモリコントローラのローカル側インタフェースと端子コントローラ４までのインタフェースは全てCLK_1Xで動作する。なお、データラインの倍速クロックCLK_2Xは、図示省略するが、ライトアクセスおよびリードアクセスの間隔を決定する。
【００４９】
また、ローカル側インタフェースからDDRメモリ５へ伝わる各信号のデータ名称の記載において、バンク０に関連するデータは’-b0’、バンク１に関連するデータは’-b1’、バンク２に関連するデータは’-b2’、バンク３に関連するデータは’-b3’とする。また、データ名称やタイミング規格のパラメータ名の後ろに付く’[]’内の数字はクロック幅を示す。図３〜８で説明するライトアクセスに対して、同一条件のリードアクセスがあり得るが、DDRメモリコントローラが発行するコマンドのタイミングはWRITEをREADに読み換えれば内容が同一になるため、リードアクセスについては省略する。
【００５０】
なお、最初は詳細に説明するが、それ以降は先に説明した部分と重複する部分や類推が容易な部分については省略し、特徴的な部分についての説明のみに留めることとする。DDRタイミング規格保持回路10とDDRメモリ５には、同じタイミング規格情報およびバースト長が予め設定される。
【００５１】
（１）２バースト長の同一バンクへの間欠ライトアクセス（図３）
図３は、ローカル側インタフェースの要求によりバンク０へ２バースト長のライトアクセスを間欠で実行する本DDRメモリコントローラの動作を示すタイミングチャートである。バースト長を指定するインタフェースは図１に明示していないが、ローカル側インタフェースによりDDRタイミング規格保持回路10に初期設定されている。また、DDRメモリ５も２バースト・モードに初期設定されているものとする。このケースでは、バンクの切替りもライトアクセスとリードアクセスの切替りもないため、タイミング調整は行なわれず、DELAYのクロック幅はtWRに１クロックを足した３クロックとなる。
【００５２】
CLK_1Xの２クロック目でライトリクエストL2が１にアサートされると、本DDRメモリコントローラのアクセス処理が起動し、バンク管理部３のリード・ライト切替検出回路304にはライトアクセス中であることを表す’WRITE’が記録される。この時、同時にライトアクセス対象のアドレス’ADD-b0’も入力する。リクエスト制御回路１は、アドレス’ADD-b0’をデコードしバンク０に対するアクセスと判定してバンク制御回路20のコマンド生成部202へアクセス情報’DAT-b0’（図示省略）を通知する。
【００５３】
コマンド生成部202は、一連のコマンド列を生成する逐次処理を起動する。この逐次処理には５つのステートACT、OPEN、DELAY、PRE、CLOSEがあり、図２に示したように、CLOSE→ACT→OPEN→DELAY→PREの順にステートが遷移する。DELAYは、CLOSEは停止中のステートである。ACT、OPEN、PREの各ステートの前縁により１クロック幅のDDRコマンドが生成され、ACTステートがActiveコマンド’ACT-b0’、OPENステートがWriteコマンド’WRITE-b0’、PREステートがPrechargeコマンド’PRE-b0’に対応する。
【００５４】
このことから、ACT、OPEN、DELAY、PREの各ステートの時間幅を増減させることによりDDRコマンドの間隔を調整することができるが、ここでは、ACTとPREは固定値、OPENはバースト長により定めるとし、DELAYのみで調整することとしている。なお、リードアクセス処理の動作では、Writeコマンドに代わってReadコマンドとなる。OPENで生成されるコマンドがWriteコマンドであるかReadコマンドであるかは、OPENが発生したタイミングにおいてリード・ライト切替検出回路304が出力する識別信号がライトアクセスとリードアクセスのいずれを示すかにより決定される。
【００５５】
各ステートの時間幅は、入れ子タイミング調整回路201からのタイミング情報により決定される。図３の例では、ActiveコマンドとWrite（Read）コマンド間隔の規格tRCDが３クロック幅’ｔRCD[3]’であることをDDRタイミング規格保持回路10が通知しているため、ACTステートが３クロック幅’ACT[3]’とされる。コマンド生成回路202における逐次処理のこれらの情報は状態遷移情報2eとしてバンク管理部３のACK出力タイミング回路301に通知され、ACK出力タイミング回路301はACTステートが終了する１クロック前、即ち、CLK_1Xの５クロック目でACKを１クロック間１にアサートする。ACK信号L4を１にアサートしたCLK_1Xの１クロック後にOPENが開始される。
【００５６】
ローカル側インタフェースは、ACK信号L4の１アサートを検出しCLK_1Xの６クロック目でライトREQを０にディアサートしてライトリクエストL2を止める。その結果、コマンド生成回路202はバンク０へのライトアクセスを終了させるため、OPENを1クロック幅’OPEN[1]’で終了しDELAYへ移る。また、バンク管理部３のリード・ライト切替検出回路304にはリクエスト停止中であることを示す’IDLE’であることが記録される。
【００５７】
入れ子タイミング調整回路201は、リード・ライト切替検出回路304から’IDLE’を識別情報3cにより入力するため、バンク０以外のコマンドとの競合を回避するためのタイミング調整は行わない。即ち、DDRタイミング規格保持回路10が、ActiveコマンドとPrechrgeコマンド間隔の規格tRASが７クロック幅’tRAS[7]’で、かつWriteデータの最後のバーストデータとPrechrgeコマンド間隔の規格tWRが２クロック幅’tWR[2]’であることを通知しており、これがそのままタイミング情報としてコマンド生成部202へ通知される。コマンド生成部202は、ACTステートの前縁からPREの前縁まで10クロック幅になるようにDELAYを３クロック幅’DELAY[3]’に調整する。
【００５８】
次に、CLK_1Xの７クロック目でライトリクエストL2が再び１にアサートされるが、バンク管理部３のリード・ライト切替検出回路304は、コマンド生成部202，212，222，232の全てがCLOSEとなるCLK_1Xの12クロック目まで’IDLE’を保持する。また、その時リード・ライト切替検出回路304は、リクエスト制御回路１がバンク制御部20〜23へ出力する起動信号1a〜1dを抑止するためのディセーブル信号3dを１にアサートし、CLK_1Xの12クロック目までライトリクエストL2に対するアクセスを起動しない。
【００５９】
コマンド生成回路202は、PrechrgeコマンドとActiveコマンド間隔の規格tRPが３クロック幅’tRP[3]’で、かつ同じバンクに対するActiveコマンドとActiveコマンド間隔の規格’tRC’が10クロック幅’ｔRC[10]’になるようにDELAYのクロック幅を調整して12クロック目でCLOSEにする。
【００６０】
抑止されていたライトリクエストL2に対する起動信号は13クロック目で有効となり、バンク管理部３のリード・ライト切替検出回路304にライトアクセス中であることを示す’WRITE’であることが13クロック目で記録され、以後の動作は最初のライトアクセス処理と同様になる。コマンド生成部202からバンク０の一連のコマンド列が出力され、OR回路302を介して端子コントローラ４へ出力される。OR-DDRコマンド3aを見ると、各DDRコマンドは極力詰め込まれられているが競合がないことが分かる。端子コントローラ４とDDRメモリ５の間のデータラインDQではWriteコマンドの１クロック後２バースト（1クロック幅）のデータが転送される。
【００６１】
（２）異なるバンク（バンク０→１→２→３）の連続アクセス（図４〜図６）
図４〜図６は、ローカル側インタフェースの要求によりバンク０→バンク１→バンク２→バンク３→バンク０・・・・の順でライトアクセスを連続で実行する本DDRメモリコントローラの動作を示すタイミングチャートである。
【００６２】
（2.1）２バースト長の場合（図４）
ローカル側インタフェースの設定によりバースト長２を初期設定し、またDDRメモリも２バースト・モードに初期設定される。このケースでは、バンクの切替りがあり２バースト・モードのため、ACTから１０クロック幅カウントすると、DELAYのクロック幅は６クロックとなる。
【００６３】
ローカル側インタフェースは、CLK_1Xの５クロック目でACK信号L4の１アサートを検出すると、ライトリクエストL2を１にアサートしたまま、６クロック目でアドレス’ADD-b1’を入力する。この結果、再びライトアクセス処理が起動し、リード・ライト切替検出回路304には’WRITE’が記録される。バンク管理部３内部のバンクアドレス切替検出回路303は６クロック目でアドレス’ADD-b0’とアドレス’ADD-b1’を比較して、アクセスするバンクが切り替わったことを検出し、アクティブ信号3bを1クロック間だけ１にアサートする。
【００６４】
アクティブ信号3bは入れ子タイミング回路201，211，221，231の全てに同時に入力するが、逐次処理が行われているコマンド生成回路202に対してのみ、入れ子タイミング回路201がバンク０へのライトアクセスを終了させる通知を行う。その結果、コマンド生成回路202のOPENは１クロック幅’OPEN[1]’で終了しDELAYへ移る。また、６クロック目では、同時にリクエスト制御回路１が、アドレス’ADD-b1’をデコードしバンク１に対するアクセスと判定してバンク制御回路21のコマンド生成部212へアクセス情報’DAT-b1’を通知する。そして、次にコマンド生成部212は、一連のコマンド列を生成する逐次処理を起動する。
【００６５】
この後のバンク制御部21はバンク制御部20と同じ動作をするが、バンク制御部20とバンク制御部21とで異なるバンクに対するコマンドがパイプラインで生成されることになる。ここで、DDRタイミング規格保持回路10はtRASが7クロック幅’tRAS[7]’であることを通知しているが、バンク０に対応する入れ子タイミング調整回路201はバンク０以外のコマンドとの競合を回避するべく10クロック幅’tRAS[10]’を通知している。このため、コマンド生成部202はtRASに対して10クロック幅を選択する。
【００６６】
その時、ACTが３クロック幅’ACT[3]’、OPENステートが１クロック幅’OPEN[1]に決定しているため、入れ子タイミング調整回路201は、ACTの前縁からPREの前縁まで10クロック幅になるように、DELAYを６クロック幅’DELAY[6]’に調整する。また、Activeコマンドと別のバンクに対するActiveコマンド間隔の規格tRRDのクロック幅もタイミング情報を元に４クロック幅’tRRD[4]’とされる。
【００６７】
その後、４クロック間隔でACK信号L4を１にアサートし、異なるバンクに対するアドレスを入力していくと、コマンド生成部202，212，222，232からバンク０，１，２，３の一連のコマンド列が出力される。OR回路302は、これらのコマンド列を論理ORするのでコマンドが競合することなく、端子コントローラ４へ出力される。この時、コマンド生成部202，212，222，232のステートACT、OPEN、DELAY、PREのクロック幅は同じとなる。端子コントローラ４とDDRメモリ５の間のデータラインDQではWriteコマンドの１クロック後２バースト（1クロック幅）のデータが転送される。
【００６８】
（2.2）４バースト長の場合（図５）
ローカル側インタフェースの設定によりバースト長４を指定し、またDDRメモリも４バースト・モードに初期設定される。このケースでは、バンクの切替りがあり４バースト・モードのため、ACTから１０クロック幅カウントすると、DELAYのクロック幅は５クロックとなる。
【００６９】
ローカル側インタフェースのライトリクエストL2、アドレスL1、ACK信号L4のタイミングは図３と全く同じである。また、入れ子タイミング調整回路201は、OPEN時間とDELAY時間と除いて、２バースト長のライトアクセスと同じタイミング情報を通知する。OPENが２クロック幅’OPEN[2]’になるように調整されるのは、４バーストのクロック幅（CLK_2Xで４クロック幅）にOPENの幅を合わせるからである。この結果、PREの前縁のタイミングは２バースト長のライトアクセスと同じなのでDELAYは１クロック幅短い５クロック幅’OPEN[5]’となる。
【００７０】
OR回路302から端子コントローラ４へ出力されるコマンド3aのタイミングも２バースト長のライトアクセス時と同じになる。端子コントローラ４とDDRメモリ間のデータラインDQではWriteコマンドの１クロック後に４バースト（２クロック幅）のデータが転送される。
【００７１】
（2.3）８バースト長の場合（図６）
ローカル側インタフェースの設定によりバースト長８を指定し、またDDRメモリも８バースト・モードに初期設定される。このケースでは、バンクの切替りがあり８バースト・モードのため、ACTから１０クロック幅カウントすると、DELAYのクロック幅は５クロックとなる。DELAY時間は３クロックとなる。
【００７２】
OPENは４クロック幅’OPEN[4]’になるように調整される。それは、８バーストのクロック幅（CLK_2Xで８クロック幅）にOPENの幅を合わせるからである。その結果、PREの前縁のタイミングは２バースト長のライトアクセス時と同じなのでDELAYは３クロック幅短い３クロック幅’OPEN[3]’となる。
【００７３】
端子コントローラ４とDDRメモリ間のデータラインDQではWriteコマンドの１クロック後に８バースト（４クロック幅）のデータが転送される。この時、端子コントローラ４とDDRメモリ間のデータラインは隙間無くバースト転送が連続することになる。
【００７４】
（３）同一バンク（バンク０）の連続アクセス
このケースでは、同一バンクへの連続アクセスであるため、DELAYのクロック幅はtWRに１クロックを足した３クロックとなる。
【００７５】
（3.1）２バースト長の場合（図７）
図７は、ローカル側インタフェースの要求によりバンク０のみで２バースト長のライトアクセスを５連続で実行する本DDRメモリコントローラの動作を示すタイミングチャートである。この動作例では、５連続で起動信号1aが出力されるので、ACT→OPEN→OPEN→OPEN→OPEN→OPEN→DELAY→PREの順にステートが遷移する。
【００７６】
ローカル側インタフェースは、最初のアドレス’ADD-b0’を出力した後、５クロック目でACK信号L4の１アサートを検出し６クロック目で次のアドレス’ADD-b0’を出力する。この時、ライトリクエストL2は１にアサートされたままなので、再びライトアクセス処理が起動し、リード・ライト切替検出回路304にはライトアクセス中’WRITE’であることが記録される。また、アドレスL1により再びバンク０のアドレス’ADD-b0’が入力する。
【００７７】
ここで、バンク管理部３内部のバンクアドレス切替検出回路303は６クロック目でアドレス’ADD-b0’とアドレス’ADD-b0’を比較するが、アクセスするバンクの切り替わりを検出できないので、アクティブ信号3bは０のままである。その結果、コマンド生成回路202は、ライトリクエストL2が１にアサートされたままで、かつ信号3bが０なので、同じバンクへのライトアクセスが連続すると判断し、６クロック目の１クロック幅のOPEN’OPEN[1]’の後、７クロック目でもOPENに移る。
【００７８】
また、ACK出力タイミング回路301は、同じバンクへのライトアクセスまたはリードアクセスが連続する時は、OPENが終了する１クロック前、即ち６クロック目でACK信号L4を１クロック間１にアサートする。すると、ローカル側インタフェースは、６クロック目でACK信号L4の１アサートを検出し７クロック目で次のリクエストを行う。
【００７９】
これ以降、９クロック目までアドレス信号L1からバンク０、即ち同じバンクに対するアドレスを入力していくと、１クロック間隔でACK信号L4を１にアサートし、コマンド生成部202から１クロック間隔で連続するバンク０へのWriteコマンド2aがOR回路302を介して端子コントローラ４へ出力される。
【００８０】
端子コントローラ４とDDRメモリ５の間のデータラインDQではWriteコマンドの１クロック後に２バースト（１クロック幅）のデータが転送され、Writeコマンドが１クロック間隔で出力されるため、端子コントローラ４とDDRメモリ５の間のデータラインは隙間無くバースト転送が連続する。10クロック目はライトリクエストL2が０にディアサートされて、ライトアクセスが一時的に間欠になる動作は、図３に示した間欠動作と内容が類似するため説明を省略する。
【００８１】
（3.2）４バースト長の場合
この場合の図示は省略するが、ACT→OPEN→OPEN→OPEN→DELAY→PREの順にステートが遷移する。
【００８２】
OPENは２クロック幅’OPEN[2]’になるように調整される。その結果、最初のリクエストに対してACK出力タイミング回路301が５クロック目でACK信号L4に１クロック間１をアサートした後、２クロック幅のOPENに対応して、OPENが終了する１クロック前、即ち２クロック間隔でACK信号L4を１にアサートし、Writeコマンドも２クロック間隔で連続する。
【００８３】
その一連のコマンド列はOR回路302から端子コントローラ４へ出力される。端子コントローラ４とDDRメモリ５の間のデータラインDQではWriteコマンドの１クロック後に４バーストのデータ（２クロック幅）が転送され、Writeコマンドが２クロック間隔で出力されるため、端子コントローラ４とDDRメモリ５の間のデータラインは隙間無くバースト転送が連続する。10クロック目はライトリクエストL2が０にディアサートされてライトアクセスが一時的に間欠になる動作は、図３に示した間欠動作と内容が類似するため説明を省略する。
【００８４】
（3.3）８バースト長の場合
この場合の図示は省略するが、ACT→OPEN→OPEN→DELAY→PREの順にステートが遷移する。
【００８５】
OPENは４クロック幅’OPEN[4]’になるように調整される。その結果、最初のリクエストに対してACK出力タイミング回路301が５クロック目でACK信号L4を１クロック間だけ１にアサートした後、４クロック幅のOPENに対応して、OPENが終了する１クロック前、即ち４クロック間隔でACK信号L4を１にアサートし、Writeコマンドも４クロック間隔で連続する。
【００８６】
その一連のコマンド列はOR回路302から端子コントローラ４へ出力される。端子コントローラ４とDDRメモリ５の間のデータラインDQではWriteコマンドの１クロック後に８バーストのデータ（４クロック幅）が転送され、Writeコマンドが４クロック間隔で出力されるため、端子コントローラ４とDDRメモリ５の間のデータラインは隙間無くバースト転送が連続する。
【００８７】
（４）同一バンクの連続ライトアクセスから異なるバンクのライトアクセス更に異なるバンクの連続ライトアクセス
（4.1）２バースト長の場合（図８）
図８は、ローカル側インタフェースの要求により同一バンク（バンク０）のみでライトアクセスを５連続で実行した後、異なるバンク（バンク２）のライトアクセスを１回実行し、更に異なる同一バンク（バンク３）のみでライトアクセスを連続で実行する本DDRメモリコントローラの動作を示すタイミングチャートである。
【００８８】
このケースでは、全てのアクセスが２バースト長であるが、バンクの切替りが２回あるため、切替り前のアクセスに対するDELAY時間は図４と同じ理由から６クロック、最後のアクセスに対するDELAY時間は図７と同じ理由から３クロックに調整される。図８に示すDDRタイミングは第１回目のアクセスに対するものである。
【００８９】
２〜９クロックまでの動作は、同一バンク（バンク０）のみで２バースト長のライトアクセスの５連続実行であり、図７における２〜９クロックまでの動作と同一となる。バンク管理部３のバンクアドレス切替検出回路303は６クロック目から９クロック目まで前後のアドレスとアドレスを比較するが、いずれも’ADD-b0’であってアクセスするバンクの切り替わりを検出できないので、アクティブ信号3bは０のままである。
【００９０】
次に、10クロック目は、異なるバンク（バンク２）のライトアクセスとなり、バンクアドレス切替検出回路303は10クロック目でアドレス’ADD-b0’とアドレス’ADD-b2’を比較して、アクセスするバンクが切り替わったことを検出するので、アクティブ信号3bを１クロック間だけ１にアサートして通知する。リンク管理部３のACK出力タイミング回路301はACK信号L4を０にディアサートする。アクティブ信号3bは入れ子タイミング回路201、211、221、231の全てに同時に入力するが、逐次処理が行われているコマンド生成回路202に対応する入れ子タイミング回路201のみがバンク０へのライトアクセスを終了させる通知を行う。その結果、コマンド生成回路202のOPENは11クロック目で終了しDELAYへ移る。
【００９１】
また、10クロック目では同時にリクエスト制御回路１が、アドレス’ADD-b2’をデコードしバンク２に対するアクセスと判定して、ライトリクエスト信号1bによりバンク制御回路21のコマンド生成部222へアクセス情報’DAT-b2’（図示省略）を通知する。そして、コマンド生成部222は、一連のコマンド列を生成する逐次処理を起動する。この結果、バンク制御部20とバンク制御部22とで異なるバンクに対するコマンドがパイプラインで生成され、その動作は図４に示した10から13クロック目までの動作と同一となる。
【００９２】
バンク０に対応する入れ子タイミング調整回路201はバンク０以外のコマンドとの競合を回避するため、２回目のアクセスに対しては、10クロック幅’tRAS[10]’を通知し、図４の説明と同じ理由からコマンド生成部202はDELAYを６クロック幅’DELAY[6]’に調整する（図示省略）。14クロック目以降の動作は再び同一バンク（バンク３）のみで２バースト長のライトアクセスの連続実行である。18クロック目以降でアドレス’ADD-b3’とアドレス’ADD-b3’を比較するが、アクセスするバンクの切り替わりを検出できないので、アクティブ信号3bは０のままである。
【００９３】
この時、バンク３に対応する入れ子タイミング調整回路231は18クロック目で異なるバンクから同一バンクのみの連続アクセスになる動作を検出しコマンド生成部232へ通知する。この通知はバンク３以外のコマンドとの競合を回避するためのもので、コマンド生成部232は18クロック目のOPENの後に、19クロック目からDELAYに移り、DELAYを３クロック幅’DELAY[3]’に調整する。
【００９４】
このDELAYに移る動作が図７および本図の６クロック目におけるOPENの後に後続の４つのOPENを直結させる動作と異なる例外処理（図２参照）となる。これは、図７および本図の６〜９クロック目におけるのと同様に、18クロック目のOPENに後続のOPENを直結させると、コマンドの競合が起きるからである。
【００９５】
ACK出力タイミング回路301は、ライトアクセスの連続実行であるにも拘らず、上記のDELAYが終了する１クロック前、即ち21クロック目までACK信号L4をディゼーブルとしてアドレスL1の入力を差し止め、21クロック目でACK信号L4を１にアサートする。22クロック目以降は、OPENの後にDELAYに移ることは無く、同一バンク（バンク３）のみで２バースト長のライトアクセスの連続実行の動作（図７）と同一となる。
【００９６】
（4.2）４バースト長の場合
ローカル側インタフェースの要求により同一バンク（バンク０）のみでライトアクセスを３連続で実行した後、異なるバンク（バンク２）のライトアクセスを１回実行し、更に異なる同一バンク（バンク３）のみでライトアクセスを連続で実行する場合について簡単に説明する。
【００９７】
この場合の図示は省略するが、バンク０ではACT→OPEN→OPEN→OPEN→DELAY→PREの順に、バンク２ではACT→OPEN→DELAY→PREの順に、バンク３ではACT→OPEN→OPEN〜→DELAY→PREの順に、それぞれのステートが遷移する。このケースでは、全てのアクセスが４バースト長であるが、バンクの切替りが２回あるため、切替り前のアクセスに対するDELAY時間は図５と同じ理由から５クロック、最後のアクセスに対するDELAY時間は図７と同じ理由から３クロックに調整される。
【００９８】
バンク制御部20とバンク制御部22とで異なるバンクに対するコマンドがパイプラインで生成され、その動作は図５の10から19クロック目までのバンク制御部21とバンク制御部22とバンク制御部23の動作と同一となる。また、このケースにおいても、（4.1）で説明したのと同様に例外処理（図２参照）が行われる。
【００９９】
（4.3）８バースト長の場合
ローカル側インタフェースの要求により同一バンク（バンク０）のみでライトアクセスを２連続で実行した後、異なるバンク（バンク２）のライトアクセスを１回実行し、更に異なる同一バンク（バンク３）のみでライトアクセスを連続で実行する場合について簡単に説明する。
【０１００】
この場合の図示は省略するが、バンク０ではACT→OPEN→OPEN→DELAY→PREの順に、バンク２ではACT→OPEN→DELAY→PREの順に、バンク３ではACT→OPEN→OPEN〜→DELAY→PREの順に、それぞれのステートが遷移する。このケースでは、全てのアクセスが８バースト長であるが、バンクの切替りが２回あるため、切替り前のアクセスに対するDELAY時間は図６と同じ理由から、最後のアクセスに対するDELAY時間は図７と同じ理由から３クロックに調整される。
【０１０１】
バンク制御部20とバンク制御部22とバンク制御部2とで異なるバンクに対するコマンドがパイプラインで生成され、その動作は図６の10から19クロック目までのバンク制御部21とバンク制御部22とバンク制御部23の動作と同一となる。
【０１０２】
（５）異なるバンク間での交互のライトアクセスとリードアクセス
ローカル側インタフェースの要求によりバンク０ライト→バンク１リード→バンク２ライト→バンク３リード→バンク０ライト・・・・の順でライトアクセスとリードアクセスを交互に連続で実行する場合について説明する。
【０１０３】
（5.1）２バースト長の場合（図９）
図９は、２バースト長のライトアクセスと２バースト長のリードアクセスを交互に連続で実行する本DDRメモリコントローラの動作を示すタイミングチャートである。このケースでは、バンクの切替りとライトアクセスとードアクセスの切替りとが同時に起こるが、本発明はライトアクセスとリードアクセスの切替りによって影響を受けないことは前述のとおりである。従って、このケースは（2.1）異なるバンク（バンク０→１→２→３）の２バースト長連続ライトアクセスの場合（図４）と略同じである。
【０１０４】
実際、図９を図２と対比しても、DDRコマンド2a〜2dおよび状態遷移情報2e〜2hに違いはない。唯一の違いは、リードデータr0,r1はライトデータw0,w1より１クロック分だけ遅れて出力されるということである。なお、ライトアクセスからリードアクセスへ移る時、リードデータの終わりからWriteコマンド間隔の規格tWTRのクロック幅の調整が加わり、２クロック幅’tWTR[2]’に調整する。また、リードアクセスからライトアクセスへ移る時、ReadコマンドとWriteコマンド間隔のクロック幅の調整が加わり、４クロック幅’Read-Write間隔[4]’に調整する。しかし、これらの調整は、これ以外の調整の結果に埋没する。
【０１０５】
（5.2）４バースト長の場合
この場合の図示は省略するが、（5.1）２バースト長の場合（図９）の場合と同じ理由により、（2.2）異なるバンク（バンク０→１→２→３）の４バースト長連続ライトアクセスの場合（図５）と略同じである。
【０１０６】
なお、ライトアクセスからリードアクセスへ移る時、リードデータの終わりからWriteコマンド間隔の規格tWTRのクロック幅の調整が加わり、２クロック幅’tWTR[1]’に調整する。また、リードアクセスからライトアクセスへ移る時、ReadコマンドとWriteコマンド間隔のクロック幅の調整が加わり、４クロック幅’Read-Write間隔[4]’に調整する。しかし、これらの調整は、これ以外の調整の結果に埋没する。
【０１０７】
（5.3）８バースト長の場合
２クロック目から始まる最初のライトアクセス処理では、コマンド生成回路202の動作は、（2.3）異なるバンク（バンク０→１→２→３）の８バースト長連続ライトアクセス場合（図６）と略同じである。このケースでは、図９の最下段に示す、データバスDQ上におけるライトデータとリードデータの競合が発生し、Write-To-Read間隔tWTRおよびRead-Write間隔が満たすべきタイミング情報として加わってくる。
【０１０８】
６クロック目で切り替わったバンク１のリードアクセス処理では、リードリクエストL3が間欠なく連続で１にアサートされたままで、リード・ライト切替検出回路304がライトアクセスからリードアクセスに切り替わったことを検出すると、バンク１以外のコマンドとの競合を回避するため、入れ子タイミング調整回路211がACTの後にDELAYに移るように通知する。これは、Write-To-Read間隔tWTR[3]を満たすための措置である。
【０１０９】
コマンド生成部212はACTステート’ACT[3]’の後、10クロック目からDELAYに移り、４クロック幅のDELAY’DELAY[4]’調整する。このDELAYに移る動作が、ACTの後にOPENに移る動作と異なる例外処理となる。ACK出力タイミング回路301はそのDELAYが終了する１クロック前、即ち、13クロック目でACK信号L4を１クロックの間だけ１にアサートする。ACK信号L4を１にアサートした１クロック後にOPENが開始される。14クロック目でコマンド生成部212はOPENに移り、その後の動作は図６における10クロック目以降の動作と同じである。
【０１１０】
また、14クロック目で切り替わったバンク２のライトアクセス処理では、ライトリクエストL2が間欠なく連続で１にアサートされたままで、リード・ライト切替検出回路304がリードアクセスからライトアクセスに切り替わったことを検出すると、バンク２以外のコマンドとの競合を回避するため、入れ子タイミング調整回路221がACTの後にDELAYに移るように通知する。これは、Read-Write間隔[4]を満たすための措置である。
【０１１１】
コマンド生成部222はACTステート’ACT[3]’の後、18クロック目からDELAYに移り、４クロック幅のDELAY’DELAY[4]’調整する。このDELAYに移る動作が、ACTの後にOPENに移る動作と異なる例外処理となる。ACK出力タイミング回路301はそのDELAYが終了する１クロック前、即ち、21クロック目でACK信号L4を１クロックの間だけ１にアサートする（図示省略）。ACK信号L4を１にアサートした１クロック後にOPENが開始される。22クロック目でコマンド生成部212はOPENに移り（図示省略）、その後の動作は図６における14クロック目以降の動作と同じである。
【０１１２】
以上、（１）〜（５）に代表的な動作モードについて説明してきたが、この他、同一バンクのみでライトアクセスとリードアクセスが交互に連続で実行する本DDRメモリコントローラの動作等については説明を省略する。しかし、その詳細は、ここまでの説明から容易に類推可能であろう。
【０１１３】
また、以上に説明した実施例では、DDRメモリコマンドのタイミング規格情報は、その一設定値を使用しているが、別の設定値を使用しても差し支えない。
【０１１４】
本発明は、以上に詳述したように、一連のDDRコマンド列を生成する逐次処理のステート間隔をタイミング規格情報に基づき、動作モードに応じて各バンクに対するコマンドが同一クロックで競合せず入れ子状態になるように調整してコマンドを生成する。この結果、単純な回路構成によって、複数のDDRコマンド列間におけるDDRコマンド同士が同一クロックで競合するのを回避することができる。
【０１１５】
また、DDRコマンドが優先順位回路を経由しないため、アクセス要求からコマンド発行までのスループットがDDRメモリの各バンクに対して一定かつ最短になり、効率的なデータ転送が行えるようになる。
【産業上の利用可能性】
【０１１６】
本発明の利用分野として、DDRメモリの全てのバンクを均一にデータ転送して使用する画像データ記録用装置のメモリコントローラが挙げられる。
【図面の簡単な説明】
【０１１７】
【図１】本発明の一実施形態としてのDDRメモリコントローラを示すブロック図
【図２】本発明のDDRメモリコントローラにおけるバンク制御部の状態遷移図
【図３】本発明のDDRメモリコントローラにおける同一バンクへの間欠ライトアクセス（２バースト長）のタイミングチャート
【図４】本発明のDDRメモリコントローラにおける異なるバンクへの連続ライトアクセス（２バースト長）のタイミングチャート
【図５】本発明のDDRメモリコントローラにおける異なるバンクへの連続ライトアクセス（４バースト長）のタイミングチャート
【図６】本発明のDDRメモリコントローラにおける異なるバンクへの連続ライトアクセス（８バースト長）のタイミングチャート
【図７】本発明のDDRメモリコントローラにおける同一バンクへの連続ライトアクセス（２バースト長）のタイミングチャート
【図８】本発明のDDRメモリコントローラにおける同一バンクの連続ライトアクセスから異なるバンクのライトアクセス更に異なるバンクの連続ライトアクセス（２バースト長）のタイミングチャート
【図９】本発明のDDRメモリコントローラにおける異なるバンク間での交互のライトアクセスとリードアクセス（２バースト長）のタイミングチャート
【符号の説明】
【０１１８】
１                リクエスト制御回路
３                バンク管理部
４                端子コントローラ
５                DDRメモリ
10                DDRタイミング規格保持回路
20〜23            バンク制御部
201,211,221,231   入れ子タイミング調整回路
202,212,221,232   コマンド生成部
301               ACK出力タイミング回路
302               OR回路
303               バンクアドレス切替検出回路
304               リードライト切替検出回路
【図１】
2010146252.tif 000003
【図２】
2010146252.tif 000004
【図３】
2010146252.tif 000005
【図４】
2010146252.tif 000006
【図５】
2010146252.tif 000007
【図６】
2010146252.tif 000008
【図７】
2010146252.tif 000009
【図８】
2010146252.tif 000010
【図９】
2010146252.tif 000011