(57)【要約】【課題】所要の出力遅延に関する規格値に適合しないＦＰＧＡ等の規格外デバイスを同一バス上で規格デバイスと共存できるようにする。【解決手段】規格デバイス２，３と、規格外デバイス４と、第１のリードクロック＃１を生成するコントローラ１と、前記第１のリードクロック＃１を受けて規格外デバイス４へ供給するとともに、当該第１のリードクロック＃１を規格外デバイス４での出力遅延時間に応じて遅延した第２リードクロック＃２を生成して規格デバイス２，３へ供給する遅延制御部４７とをそなえて構成する。【選択図】図１
2008090598.tif 000002
【特許請求の範囲】
【請求項１】
リードクロックを受けてから規定の出力遅延時間内にリードデータをデータバスへ出力する規格デバイスと、
リードクロックを受けてからリードデータを前記データバスへ出力するまでに前記出力遅延時間を超過する規格外デバイスと、
第１のリードクロックを生成するコントローラと、
該コントローラから前記第１のリードクロックを受けて該規格外デバイスへ供給するとともに、当該第１のリードクロックを前記規格外デバイスでの前記出力遅延時間に応じて遅延した第２リードクロックを生成して前記規格デバイスへ供給する遅延制御部とをそなえて構成されたことを特徴とする、記憶装置。
【請求項２】
該遅延制御部での前記第１のリードクロックの遅延量を設定するための設定レジスタをさらにそなえたことを特徴とする、請求項１記載の記憶装置。
【請求項３】
該コントローラが、
該設定レジスタに対する前記遅延量の設定を変更しながら、該規格デバイス及び該規格外デバイスから出力されたリードデータを前記データバスから正常に受信できるか否かを確認して、前記遅延量の最適化を行なう遅延量設定制御部をそなえたことを特徴とする、請求項２記載の記憶装置。
【請求項４】
複数の該規格デバイスが、前記データバスを介して直列に接続されるとともに、
該遅延制御部が、
複数の前記第２リードクロックを生成して前記各規格デバイスのリードクロックとして個別に供給するように構成されたことを特徴とする、請求項１記載の記憶装置。
【請求項５】
該遅延制御部が、
前記第２リードクロックの配線長と前記データバスの配線長との差分に応じて生じる遅延量を吸収すべく、前記各第２リードクロックの遅延量を個々に調整するように構成されたことを特徴とする、請求項４記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置に関し、例えば、ＱＤＲ（Quad Data Rate）方式に準拠したQDR SRAM等の高速動作可能なメモリデバイスをバス接続して用いる記憶装置に好適な技術に関する。
【背景技術】
【０００２】
近年、インターネットなどの普及に伴って通信機器の伝送速度が高速化している。そのため、高速伝送が要求される通信機器には、高速動作が可能なメモリ等のデバイスが必要とされている。従来の高速動作が可能なメモリとしては、ＤＤＲ（Double Data Rate）方式のメモリ（DDR SRAM）や、ＱＤＲ（Quad Data Rate）方式のメモリ（QDR SRAM）が知られている、
ここで、DDR SRAMは、プロセッサやバスコントローラからのアドレス信号や制御信号を、システムクロックに同期してSRAM内部に取り込むとともに、クロックの立ち上がりと立ち下がりの両エッジに同期させることで、従来に比べて２倍の転送レートを実現したものである。そして、QDR SRAMは、さらにデータ入力とデータ出力とを分離し，それぞれをＤＤＲで動作させつつ、読み出しと書き込みとを同時に行なうことで、ＤＤＲ方式に比べて２倍（従来の４倍）の転送レートを実現したものである。
【０００３】
なお、これらのＤＤＲ方式やＱＤＲ方式とは直接の技術的関連性はないが、既知のクロックのタイミング調整技術として、例えば、下記特許文献１により提案されている技術がある。
即ち、特許文献１には、配線長遅延があっても、ライト時、リード時とも安定してデータの送受信を行なえるようにすることを目的として、折り返し配線による比較クロックと基準クロックとの位相差が０になるようにＤＬＬ（Delay Locked Loop）回路にてリードクロックの位相を調整する方式について開示がある。
【特許文献１】特開２０００−２９３４２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、一般的に、ＱＤＲ方式に準拠したプロセッサやバスコントローラ（以下、総称して「コントローラ」という）と接続可能なデバイスは、QDR SRAM等のＱＤＲ標準デバイスやLA-1〔NPF (Network Processing Forum)のLook-Aside〕規格に準拠したＡＳＩＣ（Application Specific Integrated Circuit）等に限定される。その理由は、コントローラが要求するＡ／Ｃ特性が非常にクリティカルであるため、ＱＤＲ接続を前提として設計されているデバイスでないと要求条件を満足できない点にある。
【０００５】
図１１及び図１２に従来技術の一例を示す。図１１はコントローラ１０１がＱＤＲバス（ライトデータバス、リードデータバス等）を介して多段（直列）接続されたQDR SRAM１０２，１０３に対するアクセス制御（ライト／リード制御）を行なう場合の構成、図１２はコントローラ１０１がＱＤＲバスを介して単一のＡＳＩＣ１０４に対するアクセス制御を行なう場合の構成を示しており、これらの図１１及び図１２において、符号２０２がライトデータやライトアドレス、制御信号等の伝達経路（ライトデータバス）、符号２０１がライトクロックの伝達経路（ライトクロックライン）、符号２０３がリードデータの伝達経路（リードデータバス）、符号２０４がリードクロックの伝達経路（リードクロックライン）をそれぞれ示している。
【０００６】
つまり、図１１に示す構成では、コントローラ１０１の出力ポート「Ｋ」からライトクロック、出力ポート「A/D/CNT」からライトデータがそれぞれQDR SRAM１０２に与えられることにより、当該ライトクロックに従ってライトデータのQDR SRAM１０２に対する書き込み、あるいはQDR SRAM１０３への転送が実行され、また、転送されたライトクロックに従ってライトデータのQDR SRAM１０３への書き込みが実行される。
【０００７】
一方、コントローラ１０１の出力ポート「ＣＯ」からはリードクロックが出力され、これがQDR SRAM１０３，１０２の順番で与えられることにより、QDR SRAM１０３，１０２からのデータ読み出しが順次実行され、コントローラ１０１の入力ポート「DIN」にリードデータが、入力ポート「CIN」にリードクロックがそれぞれ入力される。
図１２に示す構成においても、同様に、コントローラ１０１の出力ポート「Ｋ」からライトクロック、出力ポート「A/D/CNT」からライトデータがそれぞれＡＳＩＣ１０４に与えられることにより、当該ライトクロックに従ってライトデータのＡＳＩＣ１０４に対する書き込みが実行される。また、コントローラ１０１の出力ポート「ＣＯ」からリードクロックがＡＳＩＣ１０４に与えられることにより、ＡＳＩＣ１０４からのデータ読み出しが実行され、コントローラ１０１の入力ポート「DIN」にリードデータが、入力ポート「CIN」にリードクロックがそれぞれ入力される。
【０００８】
このように、一般的なＱＤＲの回路構成では、コントローラ１０１から出力されるクロックの接続に関し、ライトクロックはアドレス線やライトデータの接続順に合わせ、リードクロックはライトクロックの逆とする。こうすることで、データの進行方向に対してクロックと他信号ラインとのプリント板上での伝播遅延が同一となり、データの取り込みタイミングを一本化できる。なお、ライトクロックとリードクロックとは独立して制御することが可能であり、リードデータの出力タイミングは、リードクロックの入力位相により調整することが可能となっている。
【０００９】
ところで、ＱＤＲは、既述のとおり、データの入力ポートと出力ポートとを分離することに加え、クロックの両エッジを使用することで、データの転送スピードを向上させる技術であるが、クロックが高速である為に、要求されるＡ／Ｃ特性がクリティカルとなっている。即ち、一般的なQDR SRAMでは、ライトクロックとリードクロックとが同位相の場合、リード時のデータ出力タイミング（レイテンシ）が、アドレス、リードクロックの取り込みから１．５クロック（ＴＣＯは０〜５００ｐｓ）後となっている（図１１、図１２および図１３の矢印１１０参照）。なお、ＴＣＯとは、クロックエッジからデータ出力までの遅延時間を表す。
【００１０】
ただし、リードサイクルにおける上記考えは、回路を構成する各デバイスの出力遅延が、ＱＤＲ規格を満足している（そのようなデバイスを以下ＱＤＲ標準デバイスと称する）ことが前提であり、ＱＤＲバス上に１つでも遅延が大きい（あるいは小さい）デバイス（ＱＤＲ規格外デバイス）が存在するとコントローラ１０１側でのデータ取り込みタイミングが固定できないため成立しなくなる。コントローラ１０１と接続するデバイスが特定のものに限定されるのは、ＱＤＲプロトコル以外に、この出力遅延を満足する必要があるためである。
【００１１】
そのため、本来、ＡＳＩＣ等のＱＤＲ標準デバイスを使用すべき部分にＦＰＧＡ（Field Programmable Gate Array）等の汎用デバイスを使用したい場合でも、前述の１．５クロック（ＴＣＯは０〜５００ｐｓ）という出力遅延を満足することは、ＦＰＧＡの高速品（当然高価である）を使用してＦＰＧＡ内部の回路構成を最適化しても、実現は非常に困難である。
【００１２】
即ち、同一ＱＤＲバス上にＦＰＧＡ等の汎用デバイスのみが存在している回路構成の場合は、当該汎用デバイスの出力遅延に合わせて、コントローラ１０１側のデータ取り込みタイミングを調整すれば良いが、出力遅延の異なるデバイスが混在している場合は、コントローラ１０１側の設定だけでは対応できず実現は不可能である。
例えば図１４に示すように、QDR SRAM１０２，１０３等のＱＤＲ標準デバイスと、ＦＰＧＡ１０５等の汎用デバイス（ＱＤＲ規格外デバイス）とがＱＤＲバス上に混在している場合を想定すると、図１５に矢印１１１で示すように、ＱＤＲ規格外デバイス１０５でのアドレス、リードクロック取り込み後からリードデータ出力までの遅延時間が１．５クロック（ＴＣＯは０〜５００ｐｓ）以内という規格を満足できず、コントローラ１０１において正しくデータ読み取りを行なうことができなくなる。
【００１３】
ちなみに、１５０ＭＨｚのクロックを使用したとするとアドレス取り込みから１０ｎｓでリードクロックと位相の合った（０位相の）データを出力する必要があり、これが２００ＭＨｚになると７．５ｎｓという出力遅延時間が要求されることになる。
なお、前記特許文献１の技術（クロック位相制御回路）は、折り返し配線の存在に伴う配線長遅延に起因したクロックの位相ずれを吸収できるに過ぎないから、これを上記ＱＤＲ技術に適用したとしても、ＱＤＲ標準デバイスとＦＰＧＡ等の汎用デバイスからそれぞれ出力されるデータ（リードデータ）の出力タイミングを一致あるいはＱＤＲ規格内に収めることはできない。
【００１４】
本発明は、このような課題に鑑み創案されたもので、所要の出力遅延に関する規格値に適合しないＦＰＧＡ等の汎用デバイス（規格外デバイス）を同一バス上で規格デバイスと共存できるようにすることを目的とする。
【課題を解決するための手段】
【００１５】
上記の目的を達成するために、本発明では、下記の記憶装置を用いることを特徴としている。即ち、
（１）本発明の記憶装置は、リードクロックを受けてから規定の出力遅延時間内にリードデータをデータバスへ出力する規格デバイスと、リードクロックを受けてからリードデータを前記データバスへ出力するまでに前記出力遅延時間を超過する規格外デバイスと、第１のリードクロックを生成するコントローラと、該コントローラから前記第１のリードクロックを受けて該規格外デバイスへ供給するとともに、当該第１のリードクロックを前記規格外デバイスでの前記出力遅延時間に応じて遅延した第２リードクロックを生成して前記規格デバイスへ供給する遅延制御部とをそなえて構成されたことを特徴としている。
【００１６】
（２）ここで、本記憶装置は、該遅延制御部での前記第１のリードクロックの遅延量を設定するための設定レジスタをさらにそなえていてもよい。
（３）また、該コントローラは、該設定レジスタに対する前記遅延量の設定を変更しながら、該規格デバイス及び該規格外デバイスから出力されたリードデータを前記データバスから正常に受信できるか否かを確認して、前記遅延量の最適化を行なう遅延量設定制御部をそなえていてもよい。
【００１７】
（４）さらに、本記憶装置は、複数の該規格デバイスが、前記データバスを介して直列に接続されるとともに、該遅延制御部が、複数の前記第２リードクロックを生成して前記各規格デバイスのリードクロックとして個別に供給するように構成されていてもよい。
（５）また、該遅延制御部は、前記第２リードクロックの配線長と前記データバスの配線長との差分に応じて生じる遅延量を吸収すべく、前記各第２リードクロックの遅延量を個々に調整するように構成されていてもよい。
【発明の効果】
【００１８】
上記本発明によれば、少なくとも次のいずれかの効果ないし利点が得られる。
（１）コントローラから規格外デバイスに供給されるリードクロックを遅延制御部により規格外デバイスの出力遅延時間の超過時間に応じて遅延させて、規格デバイスへ供給するので、規格デバイスと規格外デバイスとのリードデータ出力タイミング（位相）を一致させることができる。したがって、規格デバイスと規格外デバイスとを混在して使用することが可能となる。その結果、規格デバイスに比して容易に回路変更が可能なＦＰＧＡ等の汎用デバイスを適用できるようになり、柔軟な回路設計、製造コストの削減などを図ることが可能となる。
【００１９】
（２）また、前記設定レジスタを設けることにより、前記第２のリードクロックの出力位相をいつでも変更（調整）することが可能となる。
（３）さらに、前記遅延量設定制御部から、設定を変更しながら、該規格デバイス及び該規格外デバイスから出力されたリードデータを前記データバスから正常に受信できるか否かを確認して、前記遅延量の最適化を行なうこともできるので、常に、各デバイスに対して正常なアクセスを行なうことが可能となる。
【００２０】
（４）また、前記第２のリードクロックを各デバイスに対して個別に接続すれば、反射によるリードクロックの波形割れの影響を除去することが可能となり、製品の安定性や信頼性に大きく貢献することが可能である。
（５）さらに、前記各第２リードクロックの遅延量を個々に調整することで、前記第２リードクロックの配線長と前記データバスの配線長との差分に応じて生じる遅延量を吸収することが可能になるので、リードクロックライン長を最適化（最短化）することができる。したがって、反射によるリードクロックの波形割れの影響をより効果的に除去することが可能となり、さらなる製品の安定性や信頼性に大きく貢献することが可能である。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態について、図面を参照しながら説明する。ただし、本発明は以下の実施形態に限定されず、本発明の趣旨を逸脱しない範囲で種々変形して実施できることはいうまでもない。
〔Ａ〕概要説明
QDR SRAM等のＱＤＲ標準デバイスとＡＳＩＣ等とを同一バス上に共存させる構成において、本来ＡＳＩＣとすべき部分に機能追加、あるいは全く別の機能を実装する必要が発生した場合、通常であればＡＳＩＣを新規設計することとなるが、ここにＦＰＧＡ等の汎用デバイスを用いることができれば、汎用デバイス（ＱＤＲ非標準（規格外）デバイス）のもつ特性から開発期間の短縮や機能追加のフレキシブル性をもたせることが可能となる。
【００２２】
しかしながら、既述のとおり、リードサイクルにおけるＦＰＧＡ等の汎用デバイスのレイテンシおよび遅延量は比較的大きいため、汎用デバイス内部の回路を最大限に最適化したとしても、ＡＳＩＣの場合と同様の構成ではＱＤＲ規格の要求を満足することはできない。
そこで、本実施形態では、QDR SRAM等のＱＤＲ標準デバイスに対するリードクロックを操作する、即ち、例えばＤＬＬ回路により意図的に遅延させることで、ＱＤＲ標準デバイスのデータ出力を遅延させて、それぞれの出力位相を合わせる。これにより、ＦＰＧＡ等の汎用デバイスのリードサイクル時のデータ出力の遅延超過部分をなくすことができ、本来ＡＳＩＣ等のＱＤＲ標準デバイスであるべき部分にＦＰＧＡ等の汎用デバイスを適用することが可能となる。
【００２３】
具体的には、QDR SRAM等のＱＤＲ標準デバイスへ供給するリードクロックを、ＤＬＬ回路を使用しＦＰＧＡ等の汎用デバイスの出力遅延超過分（１．５クロックを超過する時間）だけ遅らせて遅延量を合わせることで、ＱＤＲバスコントローラ側でみたクロックとデータの位相とを、リードアクセスを行なったデバイスに依存することなく、同一とすることが可能となる。
【００２４】
〔Ｂ〕第１実施形態の説明
図１は本発明の第１実施形態に係るＱＤＲに準拠した記憶装置（ＱＤＲバス接続構成）の構成を示すブロック図で、この図１に示す記憶装置は、ＱＤＲバスコントローラ１と、ＱＤＲ標準デバイス（規格デバイス）、即ち、リードクロックを受けてから１．５クロック＋ＴＣＯという規定の出力遅延時間（ＱＤＲ規格値）内にリードデータを出力するＱＤＲメモリ（QDR SRAM）２，３と、ＱＤＲ規格外デバイス、即ち、リードクロックを受けてからリードデータを出力するまでにＱＤＲ規格値を超過するＦＰＧＡ等の汎用デバイス４（以下、ＦＰＧＡ４と表記する）とをそなえ、ＱＤＲバスコントローラ１に近い方から、ＱＤＲメモリ２，３，ＦＰＧＡ４の順に各デバイス２，３，４がデータバス及びクロックラインを介して接続されている。
【００２５】
即ち、この図１において、符号１１がライトクロック（Ｋ）の伝達経路（ライトクロックライン）、符号１２がライトデータ（ライトアドレス、制御信号を含む。以下、同じ）の伝達経路（ライトデータバス）、符号１３がリードデータの伝達経路（リードデータバス）、符号１４（１４ａ，１４ｂ）がリードクロックの伝達経路（リードクロックライン）をそれぞれ表しており、ライトクロックとライトデータの進行方向（図１の紙面右方向）がそれぞれ同じで、且つ、リードクロックとリードデータの進行方向（図１の紙面左方向）がそれぞれ同じであるように、各データバス１２，１３及びクロックライン１１，１４が配線されている。
【００２６】
ただし、各データバス１２，１３、各クロックライン１１，１４はＱＤＲバスコントローラ１，各デバイス２，３，４間にのみ配線されており、図１中に示すようにデバイス内を通過している部分は物理的な配線が存在しているのではなく単にクロック、データの伝達経路を表現しているに過ぎない。また、図１において、伝達経路１１，１２，１３，１４を途中（例えば、ＱＤＲメモリ２，３内等）でそれぞれ部分的に折り曲げ表記しているのは、ライト／リードクロック、ライト／リードデータが所要の出力遅延を受けることを表現している。さらに、点線矢印１５は、ＱＤＲメモリ２，３が、ＦＰＧＡ４側から供給されるリードクロックを受けてから実際にリードデータをリードデータバス１３へ出力するまでに「１．５クロック（レイテンシ）＋ＴＣＯ」の時間（出力遅延）を要することを表している。
【００２７】
ここで、ＱＤＲバスコントローラ（以下、単に「コントローラ」ともいう１は、出力ポート「Ｋ」からライトクロックをライトクロックライン１１に出力するとともに、出力ポート「A/D/CNT」から当該ライトクロックに従ってライトデータをライトデータバス１２へ出力することにより、ＱＤＲメモリ２，３及びＦＰＧＡ４の内部メモリやレジスタに対する書き込み処理を実行する一方、出力ポート「CO」からリードクロック＃１をリードクロックライン１４ａに出力するとともに、入力ポート「CIN」及び「DIN」にてそれぞれリードクロックライン１４ｂ及びリードデータバス１３経由のリードクロック＃２及びリードデータを受けることにより、ＱＤＲメモリ２，３及びＦＰＧＡ４に対する読み出し処理を実行する機能を具備している。
【００２８】
ＱＤＲメモリ２，３は、それぞれ、上記コントローラ１からのライトクロック（Ｋ）に従ってライトデータバス１２からのライトデータの記憶、転送を行なう一方、リードクロックライン１４ｂから入力されるリードクロック＃２に従ってデータの読み出しを行なってそのリードデータをリードデータバス１３へ出力するとともに、前記入力リードクロック＃２を出力側のリードクロックライン１４ｂへ出力（転送）する機能を具備している。
【００２９】
ＦＰＧＡ４は、上記コントローラ１からのライトクロック（Ｋ）に従ってライトデータバス１２からのライトデータの記憶を行なう一方、コントローラ１（リードクロックライン１４ａ）から入力されるリードクロック＃１に従ってデータの読み出しを行なってそのリードデータをリードデータバス１３へ出力するとともに、前記入力リードクロック＃１を内部のＤＬＬ回路４７により遅延させてリードクロック＃２としてリードクロックライン１４ｂへ出力する機能を具備している。
【００３０】
即ち、本例のＦＰＧＡ４は、例えば図２に示すように、コントローラ１からのリードクロック＃１（CO）をＤＬＬ回路４７によりＦＰＧＡ４のリードデータ出力遅延分だけ遅らせて、ＱＤＲメモリ２，３へ供給するリードクロック＃２（CIN）とすることで、ＱＤＲ標準デバイス２，３とＱＤＲ規格外デバイス（ＦＰＧＡ）４とのリードデータ出力タイミング（位相）を一致させることができるようになっているのである。これにより、ＱＤＲ規格外デバイス４がＱＤＲ標準デバイス２，３と混在していても、見かけ上、ＱＤＲ規格に適合した動作となる。なお、図２では、パターン遅延の存在は無視している。
【００３１】
そのため、具体的に、本例のＦＰＧＡ４は、その要部に着目すると、例えば図３に示すように、ＤＬＬ設定部４１，４６，ＤＬＬ回路４２，４７，フリップフロップ（ＦＦ）回路４３，４５，内部メモリ（レジスタ等）４４等をそなえて構成される。なお、この図３において符号４８はバッファを表す。また、上記のＤＬＬ回路４７を除く構成要素を図１では内部メモリ・制御部４０としてまとめて表している。
【００３２】
ここで、ＤＬＬ回路４２，４７は、それぞれ、入力クロック位相をロックさせ、クロック位相シフト回路により、固定時間分遅延させた出力クロックを生成するものである。なお、これらのＤＬＬ回路４２，４７は、ＦＰＧＡ４内の既存ＤＬＬ回路を利用してもよい。具体的に、ＤＬＬ回路（遅延制御部）４７は、コントローラ１から供給されるリードクロック＃１（CO）からＦＦ４５に供給するリードデータ出力用クロック（Clk-C）及びＱＤＲ標準デバイス２，３へ供給するリードクロック＃２（CIN）を生成するものであり、ＤＬＬ回路４２は、アドレス取込みのためのライトクロック（Ｋ）から、アドレス取込用内部クロック（Clk-A）及び内部メモリ４４の制御用クロック（Clk-B）を生成するものである。なお、ＤＬＬ回路４２，４７の固定遅延時間はＤＬＬ設定部４１，４６により設定され、ＦＰＧＡ４の回路データ生成工程段階で定義される。
【００３３】
ＦＦ４３は、ＤＬＬ回路４２からの上記アドレス取込用内部クロック（Clk-A）に従って内部メモリ４４のためのリードアドレス入力（Ａ）を取り込んで内部メモリ４４へ供給するものであり、内部メモリ４４は、ＤＬＬ回路４２からの上記制御用クロック（Clk-B）に従ってＦＦ４３からのリードアドレスの示す記憶領域に書き込まれたデータをリードデータとして出力するものである。
【００３４】
ＦＦ４５は、内部メモリ４４から出力されたリードデータを、ＤＬＬ回路４７からの前記リードデータ出力用クロック（Clk-C）に従って取り込んでリードデータバス１３へ出力するものである。
以下、上述のごとく構成されたＦＰＧＡ４における内部メモリ４４のリードサイクル時の動作と各ＤＬＬ回路４２，４７の調整方法について、図４に示すタイムチャートを参照しながら説明する。
【００３５】
（Ｓ１）まず、図４の（１）及び（２）に示すように、アドレス取り込みのためのライトクロック（Ｋ）の立ち上がりを基準にＤＬＬ回路４２にて生成したクロック（Clk-A）によりリードアドレス入力（Ａ）を取り込む。クロック（Clk-A）の位相は、ＦＦ４３のセットアップ時間を満足できる位置までマイナス側（早める方向）に設定することで、アドレス取り込みを早めることを実現する。
【００３６】
（Ｓ２）同様に、図４の（３），（４），（５）に示すように、ライトクロック（Ｋ）の立ち上がりを基準にＤＬＬ回路４２にて遅延生成したクロック（Clk-B）により、内部メモリ４４へのリードアドレス入力を行なう。クロック（Clk-B）は、（内部メモリ４４までの配線遅延）＋（内部メモリ４４のセットアップ時間）を満足する位置に調整する。
（Ｓ３）図４の（６），（７），（８）に示すように、コントローラ１から供給されるリードクロック＃１（CO）の立ち上がりを基準にＤＬＬ回路４２にて遅延生成したクロック（Clk-C）により、内部メモリ４４から出力されたリードデータを取り込み、ＦＰＧＡ４からリードデータを出力する。なお、通常、内部メモリ４４からのデータ出力には、別のリード用クロックによる同期方式を用いるが、データ出力を早めるために非同期方式を採用し、ＦＦ４５のセットアップ時間を満足する位置にクロック（Clk-C）を調整する。
【００３７】
（Ｓ４）図４の（９），（１０）に示すように、ＤＬＬ回路４７からＱＤＲメモリ２，３へ供給すべきリードクロック＃２（CIN）の位相は、ＦＦ４５及びその出力側のバッファ４８にて生じる出力遅延量により、リードクロック＃２の立ち下りからデータ出力までの時間がＴＣＯ（０〜５００ｐｓ）規格を満足するように調整する。この調整は、ＤＬＬ設定部４６からのＤＬＬ回路４７に対する設定により行なわれる。
【００３８】
ここで、本例のＤＬＬ回路４７は、図３中に示すように、生成可能なクロック数に応じた数（ここでは、４つ）のクロック位相シフト回路（タップ遅延回路）４７１−１〜４７１−４と、当該クロック位相シフト回路４７１−ｉ（ｉ＝１〜４）にそれぞれ対応したセレクタ４７２−１〜４７２−４とをそなえ、クロック位相シフト回路４７１−ｉにて入力クロックを段階的に位相シフトさせて異なる位相のクロックを複数生成し、そのいずれかをＤＬＬ設定部４６からの設定に従ってセレクタ４７２−ｉにて選択出力することで、入力クロックを所要量だけ遅延させたクロックを最大４系統分生成、出力できるようになっている。
【００３９】
そして、本例では、図３から分かるように、４系統のうちの２系統を使用して、即ち、クロック位相シフト回路４７１−１及びセレクタ４７２−１の組で前記クロック（Clk-C）を生成し、クロック位相シフト回路４７１−２及びセレクタ４７２−２の組で前記リードクロック（CIN）を生成しているのである。なお、残りの２系統（クロック位相シフト回路４７１−３及びセレクタ４７２−３の組と、クロック位相シフト回路４７１−４及びセレクタ４７２−４の組）は、いずれも、本実施形態では未使用となっている（後述する第２実施形態にて用いる）。
【００４０】
より具体的に、上記クロック位相シフト回路４７１−ｉは、例えば図５に示すように、１クロック周期を３６０（deg）とした場合、９（deg）単位で入力クロックを位相シフトできる能力、即ち、４０段階の調整タップを有しており、遅延させたい時間をｔ（秒）、リードクロック１の周波数をｆ（Ｈｚ）と表記すると、調整タップ値Ｘ＝ｔ／｛（１／ｆ）／（３６０／９）｝となる。
【００４１】
したがって、例えば、位相シフト回路４７１−２への入力クロックであるリードクロック＃１の周波数が１５０ＭＨｚで、１０００ｐｓ程度遅延させたリードクロック＃２を出力する必要がある場合、
Ｘ＝（１０００×１０12）／｛（１／１５０×１０6）／（３６０／９）｝＝６
となり、セレクタ４７２−２は、クロック位相シフト回路４７１−２で６タップ分の位相シフト量を受けたクロックを選択出力すればよいことになる。
【００４２】
以上のように、本実施形態によれば、コントローラ１からＦＰＧＡ４に供給されるリードクロック＃１（CO）をＤＬＬ回路４７によりＦＰＧＡ４の出力遅延分だけ遅らせて、ＱＤＲメモリ２，３へ供給するリードクロック＃２（CIN）とすることで、ＱＤＲ標準デバイス２，３とＱＤＲ規格外デバイス（ＦＰＧＡ）４とのリードデータ出力タイミング（位相）を一致させることができるので、ＱＤＲ標準デバイス２，３とＱＤＲ規格外デバイス４とを混在して使用することが可能となる。
【００４３】
したがって、ＱＤＲ規格外デバイス４としてＦＰＧＡを適用できるため、比較的容易に回路変更が可能であるというＦＰＧＡ４がもつ特徴を利用でき、柔軟な回路設計、製造コストの削減などを図ることが可能となる。昨今の装置開発においては、開発期間が非常に短いことから、ＦＰＧＡ４で先行してプロトタイプを開発し、出荷が見込める部分についてＡＳＩＣ化を行なうことでコストダウンを実現するというオペレーションがごく一般的である。ＦＰＧＡ４を使用できるか否かは製品の売り上げだけでなく存在そのものを左右する極めて重要なファクターであり、その点だけでも効果は計り知れない。
【００４４】
（Ｂ１）変形例の説明
なお、上述したＦＰＧＡ４には、例えば図６に示すように、図３に示したＤＬＬ設定部４６（４１）に対してクロック位相シフト量（つまり、ＤＬＬ遅延量）に関する設定情報を与えるＤＬＬ設定レジスタ５０を設けることができる。なお、この図６において、既述の符号と同一符号を付した部分は、それぞれ、既述の部分と同一若しくは同様の部分を表しており、また、図１に示す内部メモリ・制御部４０の表記は省略している。
【００４５】
当該ＤＬＬ設定レジスタ５０を設けることにより、リードクロック＃２の出力位相をいつでも変更（調整）することが可能となる。
そして、当該ＤＬＬ設定レジスタ５０に対するＤＬＬ遅延量の設定は、例えば図７に示すように、コントローラ１のソフトウェア１０により、制御バス５１を介して自動的に行なうことができる。
【００４６】
即ち、まず、ソフトウェア１０は、
（Ｓ２１）ＦＰＧＡ４のＤＬＬ遅延量として適当な初期値をＤＬＬ設定レジスタ５０に設定し、
（Ｓ２２）ＦＰＧＡ４に対して実際にライトクロック及びライトデータを与えるとともに、リードクロック＃１を与えることにより、書き込み処理及び読み出し処理を実行して、正常にリードデータが受信できるか否かを確認する。
【００４７】
（Ｓ２３）その結果、正常にリードデータを受信できなければ、ソフトウェア１０は、前記初期値から所定量だけずらしたＤＬＬ遅延量をＤＬＬ設定レジスタ５０に再設定する。
（Ｓ２４）そして、ソフトウェア１０は、正常にリードデータを受信できるようになるまで、上記Ｓ２２及びＳ２３の処理を繰り返し実行して、正常なアクセスが可能となるＤＬＬ遅延量の設定幅を確認し、
（Ｓ２５）最終的に、当該設定幅の中心になるようにＤＬＬ遅延量をＤＬＬ設定レジスタ５０に設定する。
【００４８】
つまり、本例のソフトウェア１０は、ＤＬＬ設定レジスタ５０に対するＤＬＬ遅延量の設定を変更しながら、ＱＤＲメモリ２，３及びＦＰＧＡ４から出力されたリードデータをリードデータバス１３から正常に受信できるか否かを確認して、ＤＬＬ遅延量の最適化を行なう遅延量設定制御部としての機能を果たしている。
このように、ソフトウェア１０から、ＤＬＬ遅延量の設定、および、ライト／リードチェックを行なうことにより、コントローラ１が正常にリードデータを受信可能なＤＬＬ遅延量の最適化を行なうことができるので、コントローラ１は、常に、各デバイス２，３，４に対して正常なアクセスを行なうことが可能となる。
【００４９】
〔Ｃ〕第２実施形態の説明
図８は本発明の第２実施形態に係るＱＤＲに準拠した記憶装置（ＱＤＲバス接続構成）の構成を示すブロック図で、この図８に示す記憶装置は、図１により既述のものとそれぞれ同一若しくは同様の、コントローラ１と、ＱＤＲメモリ（QDR SRAM）２，３と、ＦＰＧＡ４とをそなえて構成されている（ただし、内部メモリ・制御部４０の図示は省略している）が、図３により前述したＤＬＬ回路４７の４系統のクロック出力のすべてを使用して、コントローラ１，ＱＤＲメモリ２，３に対してそれぞれ独立したリードクロック＃４，＃３，＃２を与えることができるようになっている。
【００５０】
即ち、例えば図３に示すセレクタ４７２−２の出力（リードクロック＃２）をリードクロックライン１４（１４ｂ）によりＱＤＲメモリ３のリードクロック入力に接続し、セレクタ４７２−３の出力（リードクロック＃３）をリードクロックライン１４（１４ｃ）によりＱＤＲメモリ２のリードクロック入力に接続し、セレクタ４７２−４の出力（リードクロック＃４）をリードクロックライン１４（１４ｄ）によりコントローラ１の入力ポート「CIN」に接続する。なお、セレクタ４７２−１の出力（内部クロック（Clk-C））は、第１実施形態と同様に、ＦＦ４５に供給される。
【００５１】
ただし、各リードクロックライン１４ｂ〜１４ｄは、それぞれ対応するリードデータバスの配線長と等長となるように配線される。即ち、リードクロック＃２用のリードクロックライン１４ｂは、ＦＰＧＡ４−ＱＤＲメモリ３間のリードデータバス１３と等長になるように配線され、リードクロック＃３用のリードクロックライン１４ｃは、ＦＰＧＡ４−ＱＤＲメモリ３間およびＦＰＧＡ４−ＱＤＲメモリ２間のリードデータバス１３の合計と等長になるように配線され、リードクロック＃４用のリードクロックライン１４ｄは、ＦＰＧＡ４−ＱＤＲメモリ３間、ＦＰＧＡ４−ＱＤＲメモリ２間およびＱＤＲメモリ２−コントローラ１間のリードデータバス１３の合計と等長になるように配線される。
【００５２】
これにより、各リードクロック＃２，＃３，＃４のリードクロック＃１に対する遅延量（位相シフト量）を同一にしても、コントローラ１は、各デバイス２，３，４に対するアクセスを正常に行なうことができる。
そして、本例では、リードクロック＃１，＃２，＃３，＃４を各デバイス４，３，２，１に対して個別に（１対１で）接続しているので、第１実施形態と同様の作用効果が得られるほか、第１実施形態に比して、反射によるリードクロックの波形割れの影響を除去することが可能となり、製品の安定性や信頼性に大きく貢献することが可能である。
【００５３】
なお、本例では、単一のＤＬＬ回路４７により各リードクロック＃１〜＃４を生成しているが、それぞれ個別あるいは一部共用のＤＬＬ回路を複数用意して同等のクロックを生成できるようにしてもよい（以下の変形例においても同じ）。
（Ｃ１）変形例の説明
なお、図８により上述したリードクロック独立配線構成では、ＤＬＬ回路４７で生成される各リードクロック＃２，＃３，＃４の遅延量をＤＬＬ設定部４６により個々に調整することで、リードクロック＃２，＃３，＃４の配線長を最適化することが可能である。
【００５４】
即ち、リードクロックライン１４ｂ〜１４ｄは、それぞれ、最短長で配線し、対応するリードデータバス１３の配線長との差分による遅延分は、ＤＬＬ回路４７での遅延量をリードクロック＃２，＃３，＃４毎に調整する（つまり、図３に示すセレクタ４７２−２，４７２−３，４７２−４で選択するタップ出力を個々に設定する）ことで吸収する。
例えば、リードクロック＃２の遅延量は、ＦＰＧＡ４−ＱＤＲメモリ３間のリードデータバス１３との配線長差分による遅延分をＦＰＧＡ４のＴＣＯ遅延分と併せて設定し、リードクロック＃３の遅延量は、ＦＰＧＡ４−ＱＤＲメモリ３間およびＦＰＧＡ４−ＱＤＲメモリ２間のリードデータバス１３との配線長差分による遅延分をＦＰＧＡ４のＴＣＯ遅延分と併せて設定し、リードクロック＃４の遅延量は、ＦＰＧＡ４−ＱＤＲメモリ３間、ＦＰＧＡ４−ＱＤＲメモリ２間およびＱＤＲメモリ２−コントローラ１間のリードデータバス１３との配線長差分による遅延分をＦＰＧＡ４のＴＣＯ遅延分と併せて設定する。
【００５５】
このように、上述した第２実施形態のようにリードクロックライン長をリードデータバス長と等長とするのではなく、リードクロックラインを最短とし、これによる配線長差をＤＬＬ回路４７により吸収するように位相調整を行なうことで、リードクロックライン長を最適化（最短化）することができる。したがって、上述した第２実施形態に比して、反射によるリードクロックの波形割れの影響をより効果的に除去することが可能となり、さらなる製品の安定性や信頼性に大きく貢献することが可能である。
【００５６】
なお、上述した第２実施形態及びその変形例においても、第１実施形態の変形例（図６，図７）と同様に、設定レジスタ５０をそなえてもよいし、ソフトウェア１０によるＤＬＬ遅延量の設定およびライト／リードチェックを適用することも可能である。
〔Ｄ〕その他
上述した第１及び第２実施形態並びに各変形例では、いずれも、ＤＬＬ回路４７がＦＰＧＡ４に内蔵されているが、例えば図１０に示すように、ＦＰＧＡ４の外部に設けてもよい。ただし、ＱＤＲメモリ２，３へ供給するリードクロック＃２をＦＰＧＡ４へのリードクロック＃１に対して遅延させる必要があるので、少なくともＦＧＰＡ４から出力されるリードクロック＃１をＱＤＲ標準デバイス３（２）へ供給する前に遅延させる必要がある。
【００５７】
また、上述した実施形態では、コントローラ１とＦＰＧＡ４との間に、２つのＱＤＲ標準デバイス２，３が存在する場合について例示したが、勿論、１つでもよいし、３つ以上存在していても、上記と同様の作用効果が得られる。
〔Ｅ〕付記
（付記１）
リードクロックを受けてから規定の出力遅延時間内にリードデータをデータバスへ出力する規格デバイスと、
リードクロックを受けてからリードデータを前記データバスへ出力するまでに前記出力遅延時間を超過する規格外デバイスと、
第１のリードクロックを生成するコントローラと、
該コントローラから前記第１のリードクロックを受けて該規格外デバイスへ供給するとともに、当該第１のリードクロックを前記規格外デバイスでの前記出力遅延時間に応じて遅延した第２リードクロックを生成して前記規格デバイスへ供給する遅延制御部とをそなえて構成されたことを特徴とする、記憶装置。
【００５８】
（付記２）
該遅延制御部での前記第１のリードクロックの遅延量を設定するための設定レジスタをさらにそなえたことを特徴とする、付記１記載の記憶装置。
（付記３）
該コントローラが、
該設定レジスタに対する前記遅延量の設定を変更しながら、該規格デバイス及び該規格外デバイスから出力されたリードデータを前記データバスから正常に受信できるか否かを確認して、前記遅延量の最適化を行なう遅延量設定制御部をそなえたことを特徴とする、付記２記載の記憶装置。
【００５９】
（付記４）
複数の該規格デバイスが、前記データバスを介して直列に接続されるとともに、
該遅延制御部が、
複数の前記第２リードクロックを生成して前記各規格デバイスのリードクロックとして個別に供給するように構成されたことを特徴とする、付記１記載の記憶装置。
【００６０】
（付記５）
該遅延制御部が、
前記第２リードクロックの配線長と前記データバスの配線長との差分に応じて生じる遅延量を吸収すべく、前記各第２リードクロックの遅延量を個々に調整するように構成されたことを特徴とする、付記４記載の記憶装置。
【００６１】
（付記６）
該遅延制御部が、該規格外デバイス内に設けられたことを特徴とする、付記１〜５のいずれか１項に記載の記憶装置。
（付記７）
該遅延制御部が、該規格外デバイス外に設けられたことを特徴とする、付記１〜５のいずれか１項に記載の記憶装置。
【図面の簡単な説明】
【００６２】
【図１】本発明の第１実施形態に係るＱＤＲに準拠した記憶装置（ＱＤＲバス接続構成）の構成を示すブロック図である。
【図２】図１に示す記憶装置のリードサイクル時の動作を説明するためのタイムチャートである。
【図３】図１に示す汎用デバイス（ＤＬＬ回路周辺）の構成を示すブロック図である。
【図４】図３に示す汎用デバイスのリードサイクル時の動作を説明するためのタイムチャートである。
【図５】図３に示すＤＬＬ回路の遅延調整方法を説明するためのタイムチャートである。
【図６】図１に示す記憶装置の変形例を示すブロック図である。
【図７】図１に示す記憶装置の変形例を示すブロック図である。
【図８】本発明の第２実施形態に係るＱＤＲに準拠した記憶装置（ＱＤＲバス接続構成）の構成を示すブロック図である。
【図９】図８に示す記憶装置の変形例を示すブロック図である。
【図１０】図１，図６〜図９に示す記憶装置の変形例を示すブロック図である。
【図１１】従来のＱＤＲに準拠した記憶装置の構成を示すブロック図である。
【図１２】従来のＱＤＲに準拠した記憶装置の構成を示すブロック図である。
【図１３】図１１及び図１２に示す記憶装置のリードサイクル時の動作を説明するためのタイムチャートである。
【図１４】従来技術の課題を説明すべく記憶装置の構成を示すブロック図である。
【図１５】図１４に示す構成でのリードサイクル時の動作を説明するためのタイムチャートである。
【符号の説明】
【００６３】
１  ＱＤＲバスコントローラ
２，３  QDR SRAM（ＱＤＲ標準デバイス：規格デバイス）
４  ＦＰＧＡ（ＱＤＲ規格外デバイス）
１０  ソフトウェア（遅延量設定制御部）
１１  ライトクロックライン（伝達経路）
１２  ライトデータバス（伝達経路）
１３  リードデータバス（伝達経路）
１４，１４ａ，１４ｂ，１４ｃ，１４ｄ  リードクロックライン（伝達経路）
４０  内部メモリ・制御部
４１，４６  ＤＬＬ設定部
４２，４７  ＤＬＬ回路
４７１−１〜４７１−４  クロック位相シフト回路（タップ遅延回路）
４７２−１〜４７２−４  セレクタ
４３，４５  ＦＦ回路
４８  バッファ
５０  ＤＬＬ設定レジスタ
５１  制御バス
【図１】
2008090598.tif 000003
【図２】
2008090598.tif 000004
【図３】
2008090598.tif 000005
【図４】
2008090598.tif 000006
【図５】
2008090598.tif 000007
【図６】
2008090598.tif 000008
【図７】
2008090598.tif 000009
【図８】
2008090598.tif 000010
【図９】
2008090598.tif 000011
【図１０】
2008090598.tif 000012
【図１１】
2008090598.tif 000013
【図１２】
2008090598.tif 000014
【図１３】
2008090598.tif 000015
【図１４】
2008090598.tif 000016
【図１５】
2008090598.tif 000017