(57)【要約】      （修正有）【課題】メモリコントローラにおける、受信データ取得タイミングの調整を容易にする。【解決手段】データ読み出し期間にデータ信号を出力する第１メモリ、又はデータ読み出し期間にデータ信号に加えて当該データ信号の読み出しタイミングを示す読み出し用ストローブ信号を出力する第２メモリを制御対象のメモリとして制御するメモリコントローラであって、前記制御対象のメモリが前記第２メモリである場合に、前記読み出し用ストローブ信号が示すタイミングに従って、前記制御対象のメモリから入力されたデータ信号を読み出す読み出し回路と、を備え、前記制御対象のメモリが前記第１メモリである場合に、前記遅延回路を経由して入力された前記クロック信号が示すタイミングに従って、前記制御対象のメモリから入力されたデータ信号を読み出す。【選択図】図５
2009205298.tif 000002
【特許請求の範囲】
【請求項１】
データ読み出し期間にデータ信号を出力する第１メモリ、又はデータ読み出し期間にデータ信号に加えて当該データ信号の読み出しタイミングを示す読み出し用ストローブ信号を出力する第２メモリを制御対象のメモリとして制御するメモリコントローラであって、
クロック信号を発生するクロック発生回路と、
前記クロック信号を前記制御対象のメモリへ出力するクロック出力回路と、
前記制御対象のメモリが前記第２メモリである場合に、書き込み対象のデータの書き込みタイミングを示す書き込み用ストローブ信号を発生するストローブ発生回路と、
前記制御対象のメモリが前記第２メモリである場合に、前記書き込み用ストローブ信号を前記制御対象のメモリへ出力するストローブ出力回路と、
前記制御対象のメモリが前記第２メモリである場合に、前記読み出し用ストローブ信号を前記制御対象のメモリから入力するストローブ入力回路と、
前記ストローブ入力回路から入力された信号を遅延させる遅延回路と、
前記制御対象のメモリが前記第２メモリである場合に、前記読み出し用ストローブ信号が示すタイミングに従って、前記制御対象のメモリから入力されたデータ信号を読み出す読み出し回路と、
を備え、
前記ストローブ出力回路、前記ストローブ入力回路、及び前記遅延回路は、前記制御対象のメモリが前記第１メモリである場合に、前記クロック発生回路により発生された前記クロック信号が、前記ストローブ出力回路に入力され、前記ストローブ出力回路から前記ストローブ入力回路に入力され、更に前記ストローブ入力回路から前記遅延回路を経由して前記読み出し回路に入力されるように構成され、
前記読み出し回路は、前記制御対象のメモリが前記第１メモリである場合に、前記遅延回路を経由して入力された前記クロック信号が示すタイミングに従って、前記制御対象のメモリから入力されたデータ信号を読み出すように構成される
ことを特徴とするメモリコントローラ。
【請求項２】
前記制御対象のメモリが前記第１メモリである場合に、前記ストローブ出力回路から前記ストローブ入力回路に入力される前記クロック信号を遅延させる遅延ユニットを更に備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記遅延ユニットは、可変キャパシタを含むことを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記遅延ユニットは、遅延素子を含むことを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
前記ストローブ発生回路は、前記制御対象のメモリが前記第１メモリである場合に、前記クロック信号を発生するように構成され、
前記ストローブ出力回路、前記ストローブ入力回路、及び前記遅延回路は、前記制御対象のメモリが前記第１メモリである場合に、前記クロック発生回路により発生された前記クロック信号の代わりに、前記ストローブ発生回路により発生された前記クロック信号が、前記ストローブ出力回路に入力され、前記ストローブ出力回路から前記ストローブ入力回路に入力され、更に前記ストローブ入力回路から前記遅延回路を経由して前記読み出し回路に入力されるように構成される
ことを特徴とする請求項１乃至４のいずれか１項に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラに関する。
【背景技術】
【０００２】
近年のデジタルカメラやデジタルビデオカメラなどは、高速レスポンス、高速連写、及び長時間動画撮影などの機能を実現することがしばしば求められる。これらの機能は高い処理能力を必要とするため、クロック周波数の高速化や、高速なメモリアクセスが可能なＤｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ（以下、ＤＤＲと略す）タイプのメモリの搭載などが行われている。
【０００３】
一方で、性能の低下を抑制しつつ、より廉価なデジタルカメラ等を供給することも求められている。そのため、市場動向により価格変動が激しいメモリの選択に関しては、ＤＤＲよりもコストパフォーマンスに優れたＳｉｎｇｌｅ−Ｄａｔａ−Ｒａｔｅ（以下、ＳＤＲと略す）タイプのメモリが選択される場合も少なくない。
【０００４】
しかしながら、ＳＤＲタイプのメモリとＤＤＲタイプのメモリとでは互換性が無い。従って、ＳＤＲタイプのメモリ及びＤＤＲタイプのメモリのいずれをも制御可能なようにメモリコントローラを設計することが望まれる。
【０００５】
ＳＤＲタイプのメモリとＤＤＲタイプのメモリとの違いについて説明する。例えば、ＤＤＲタイプのメモリでは、より高いパフォーマンスを達成する為に、データの書き込み及び読み出しのタイミングを示すストローブ信号が授受される必要がある。一方、ＳＤＲタイプのメモリでは、ＤＤＲタイプのメモリほど高いパフォーマンスが要求されない為、、メモリコントローラは、ストローブ信号無しでメモリからのデータを取得する必要がある。
【０００６】
このような違いが存在するため、ＳＤＲタイプのメモリ及びＤＤＲタイプのメモリのいずれをも制御可能なようにメモリコントローラを設計することは容易ではない。
【０００７】
特許文献１は、ＳＤＲタイプのメモリ及びＤＤＲタイプのメモリのいずれをも制御可能なメモリコントローラを開示する。特許文献１によれば、ＳＤＲタイプの場合には、メモリコントローラ内部で生成されるＳＤＲ−ＳＤＲＡＭ用のデータストローブ信号が選択される。一方、ＤＤＲタイプの場合には、リードデータに同期してメモリから出力されるＤＤＲ−ＳＤＲＡＭ用データストローブ信号が選択される。そして、それぞれのメモリタイプに適したタイミングでデータを受信する構成とすることで、異なるタイプのメモリを制御可能なメモリコントローラを提供している。
【特許文献１】特開２００３−０７６６０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１では、ＳＤＲタイプのメモリを使用する場合の課題、即ち、メモリコントローラにおける、ストローブ信号と受信データとの間でのタイミング調整（同期）については、十分な検討がなされていない。
【０００９】
図９を用いて、従来のＳＤＲ用メモリコントローラにおけるタイミング調整に関する課題を説明する。
【００１０】
図９において、１００は画像処理装置、２００はメモリ、３００はメモリコントローラ、４００はメモリコントローラ３００のＩＯ部、５００はメモリコントローラ３００のコア部である。
【００１１】
クロック出力用のフリップフロップ５１６から、出力バッファ４１０を介してメモリ２００にクロック信号６００が供給される。すると、メモリ２００は、コマンド信号線（不図示）からリードコマンドが入力されている場合には、クロック信号６００に同期して、データ信号６０２を出力する。
【００１２】
データ信号６０２は、入力バッファ４２２を介して、リードデータラッチ用のフリップフロップ５２０のデータ端子に入力される。また、リードデータラッチ用のフリップフロップ５２０のクロック端子には、フリップフロップ５１６からのクロック信号が入力される。
【００１３】
このとき、リードデータラッチ用のフリップフロップ５２０におけるＳｅｔｕｐ／Ｈｏｌｄのタイミングは、次式により定義される。
Ｓｅｔｕｐ＝（Ｔｃ１）ｍｉｎ  
−
（Ｔｄ１＋Ｔｄ２＋Ｔｄ３＋Ｔａｃ＋Ｔｄ４＋Ｔｄ５＋Ｔｄ６）ｍａｘ  式（１）
Ｈｏｌｄ  ＝（Ｔｄ１＋Ｔｄ２＋Ｔｄ３＋Ｔａｃ＋Ｔｄ４＋Ｔｄ５＋Ｔｄ６）ｍｉｎ
−
（Ｔｃ１）ｍａｘ                                                  式（２）
ここで、Ｔａｃは、メモリのアクセス速度で定義されスペック化されているものであり、Ｔｄ３、Ｔｄ４は、基板構成及び基板上の配線長により決定される基板遅延である。Ｔｄ２、Ｔｄ５は、メモリコントローラ３００のＩＯ部４００におけるデータ到達時間に寄与するバッファ遅延および配線遅延である。Ｔｄ１、Ｔｄ６は、メモリコントローラ３００のコア部５００でのデータ到達時間に寄与する配線遅延である。
【００１４】
Ｔｃ１は、メモリコントローラ３００のコア部５００でのフリップフロップ５２０までのクロック到達時間に寄与する配線遅延である。
【００１５】
ｍｉｎ、ｍａｘは、特定の温度、電圧、半導体の製造プロセス条件における、後術するチップ内バラツキを考慮した場合の最小遅延値、最大遅延値をそれぞれ示す。
【００１６】
図１０は、チップ内バラツキを考慮したタイミング解析を行う場合の一般的な考え方を図示したものである。同一チップ内のタイミング評価においては、周囲温度が一定、供給される電圧が一定、製造上のプロセス条件が一定であると仮定して、遅延値が最大になるワースト条件及び遅延値が最小となるベスト条件でのタイミング解析を行う。
【００１７】
なお、ここでいうワースト条件とは、半導体として動作保証可能な、最小電圧条件、最高温度条件、最低速プロセス条件の場合であり、ベスト条件とは、半導体として動作保証可能な、最大電圧条件、最低温度条件、最高速プロセス条件の場合である。
【００１８】
しかしながら、チップの外周部分と中心部付近とでは僅かに温度は異なっており、また、電圧降下等の影響により動作時の電圧条件も僅かに異なっている。更に、半導体プロセスの製造上のバラツキが存在することから、境界条件におけるタイミング評価のみでは不十分である。従って、これらの要因を考慮するため、チップ内のバラツキを考慮したタイミング解析が行われている。
【００１９】
具体的には、Ｓｅｔｕｐ解析を行う場合は、クロックパスは、バラツキを考慮した分だけ高速に動作し、データパスは、バラツキを考慮した分だけ低速に動作するものとして解析を行う。
【００２０】
一方、Ｈｏｌｄ解析を行う場合は、クロックパスはバラツキを考慮した分だけ低速に動作し、データパスは、バラツキを考慮した分だけ高速に動作するものとして解析を行う。
【００２１】
図１１は、上述した関係を整理したものであり、一般的には、図１１におけるベスト条件付近の解析Ａ、Ｂ、及びワースト条件付近の解析Ｇ、Ｈが行われる。
【００２２】
しかしながら、図９に示すような異なるチップ間のタイミング解析においては、図１１におけるベスト条件付近の解析Ａ、Ｂ、及びワースト条件付近の解析Ｇ、Ｈだけでは不十分な場合がある。
【００２３】
より具体的には、同一チップ内であっても、メモリコントローラ３００のコア部５００の動作電圧とＩＯ部４００の動作電圧とは異なっている場合が多い。また、動作電圧が異なる場合には、半導体の製造プロセスが同一ではない場合が少なくない。
【００２４】
このため、図９におけるクロックパス及びデータパスの電圧及びプロセス条件を同一と見なすことが困難となる場合がある。
【００２５】
このような構成において、バラツキを考慮したタイミング解析を行う場合には、ベスト条件およびワースト条件を網羅的に評価する必要がある。最も厳しいタイミング解析は、図１１におけるＣ、Ｄ、及びＥ、Ｆの条件である。
【００２６】
式（１）の各項についてより具体的に説明すると、図１１におけるＣの場合には、
（Ｔｃ１）ｍｉｎ          ：ベスト条件付近の最小遅延
（Ｔｄ１＋Ｔｄ６）ｍａｘ  ：ベスト条件付近の最大遅延
（コア部５００なのでＴｃ１と同じベスト条件）
（Ｔｄ２＋Ｔｄ５）ｍａｘ  ：ワースト条件付近の最大遅延
である。
【００２７】
同様に、式（２）の各項について、図１１におけるＦの場合には、
（Ｔｃ１）ｍａｘ          ：ワースト条件付近の最大遅延
（Ｔｄ１＋Ｔｄ６）ｍｉｎ  ：ワースト条件付近の最小遅延
（コア部５００なのでＴｃ１と同じワースト条件）
（Ｔｄ２＋Ｔｄ５）ｍｉｎ  ：ベスト条件付近の最小遅延
である。
【００２８】
但し、上記条件における解析では、異なる電圧条件、異なるプロセス条件に加えて、温度条件も全く異なるものとして仮定しているが、実際にはチップ或いは電源電圧が異なっても、周囲温度はほぼ同一と見なすことが可能な場合が一般的である。従って、上記条件における解析では、過剰評価になっていることはいうまでもない。
【００２９】
温度条件、電圧条件、半導体の製造プロセス条件をそれぞれ個別に設定してタイミング解析を行うには、莫大な評価時間が必要となる。また、実際には上記過剰評価を行っている場合が少なくない。このため、動作周波数が高くなるにつれて、タイミングマージンの確保が困難な状況になっている。
【００３０】
本発明はこのような状況に鑑みてなされたものであり、メモリコントローラにおける、受信データ取得タイミングの調整を容易にする技術を提供することを目的とする。
【課題を解決するための手段】
【００３１】
上記課題を解決するために、第１の本発明は、データ読み出し期間にデータ信号を出力する第１メモリ、又はデータ読み出し期間にデータ信号に加えて当該データ信号の読み出しタイミングを示す読み出し用ストローブ信号を出力する第２メモリを制御対象のメモリとして制御するメモリコントローラであって、クロック信号を発生するクロック発生回路と、前記クロック信号を前記制御対象のメモリへ出力するクロック出力回路と、前記制御対象のメモリが前記第２メモリである場合に、書き込み対象のデータの書き込みタイミングを示す書き込み用ストローブ信号を発生するストローブ発生回路と、前記制御対象のメモリが前記第２メモリである場合に、前記書き込み用ストローブ信号を前記制御対象のメモリへ出力するストローブ出力回路と、前記制御対象のメモリが前記第２メモリである場合に、前記読み出し用ストローブ信号を前記制御対象のメモリから入力するストローブ入力回路と、前記ストローブ入力回路から入力された信号を遅延させる遅延回路と、前記制御対象のメモリが前記第２メモリである場合に、前記読み出し用ストローブ信号が示すタイミングに従って、前記制御対象のメモリから入力されたデータ信号を読み出す読み出し回路と、を備え、前記ストローブ出力回路、前記ストローブ入力回路、及び前記遅延回路は、前記制御対象のメモリが前記第１メモリである場合に、前記クロック発生回路により発生された前記クロック信号が、前記ストローブ出力回路に入力され、前記ストローブ出力回路から前記ストローブ入力回路に入力され、更に前記ストローブ入力回路から前記遅延回路を経由して前記読み出し回路に入力されるように構成され、前記読み出し回路は、前記制御対象のメモリが前記第１メモリである場合に、前記遅延回路を経由して入力された前記クロック信号が示すタイミングに従って、前記制御対象のメモリから入力されたデータ信号を読み出すように構成されることを特徴とするメモリコントローラを提供する。
【００３２】
なお、その他の本発明の特徴は、添付図面及び以下の発明を実施するための最良の形態における記載によって更に明らかになるものである。
【発明の効果】
【００３３】
以上の構成により、本発明によれば、メモリコントローラにおける、受信データ取得タイミングの調整を容易にすることが可能となる。
【発明を実施するための最良の形態】
【００３４】
以下、添付図面を参照して、本発明の実施例を説明する。以下で説明される個別の実施例は、本発明の上位概念から下位概念までの種々の概念を理解するために役立つであろう。
【００３５】
なお、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施例によって限定されるわけではない。また、実施例の中で説明されている特徴の組み合わせすべてが、本発明に必須とは限らない。
【００３６】
また、以下の各実施例においては、本発明のメモリコントローラを画像処理装置に搭載するものとして説明するが、画像処理装置に限らず、任意の情報処理装置に本発明のメモリコントローラを搭載することができる。
【実施例１】
【００３７】
図１は、画像処理装置に搭載された、本発明に係るメモリコントローラの構成を示すブロック図である。図１において、本発明の説明に不要な要素は省略されている。
【００３８】
図１において、画像処理装置１００は、メモリ２００、及びメモリコントローラ３００を備える。
【００３９】
メモリ２００は、ＳＤＲタイプのメモリ（第１メモリ）、又はＤＤＲタイプのメモリ（第２メモリ）であり、画像データ等を一時的に記憶するために用いられる。なお、メモリタイプはＳＤＲタイプ及びＤＤＲタイプに限定されるものではなく、第１メモリとしてはデータ読み出し期間にデータ信号を出力するタイプのメモリを採用可能である。そして、第２メモリとしてはデータ読み出し期間にデータ信号に加えて当該データ信号の読み出しタイミングを示す読み出し用ストローブ信号を出力するメモリを採用可能である。
【００４０】
メモリコントローラ３００は、メモリ２００に対して、データの読み出し（リード）や書き込み（ライト）などのための制御を行う。メモリコントローラ３００は、メモリ２００に対して、クロック信号６００、反転クロック信号（不図示）、及びリードコマンド、ライトコマンド、アドレス等のコマンド信号を出力する。
【００４１】
また、メモリコントローラ３００は、メモリ２００に対して、データ信号６０２、及びストローブ信号６０４を送受信する。これにより、メモリコントローラ３００は、データのリード動作及びライト動作を行う。
【００４２】
メモリコントローラ３００のＩＯ部４００は、クロック信号６００を出力するための出力バッファ４１０（クロック出力回路）を備える。また、データ信号の送受信を行う双方向バッファとして、出力バッファ４２０及び入力バッファ４２２を備える。また、データストローブ信号の送受信を行う双方向バッファとして、出力バッファ４３０（ストローブ出力回路）及び入力バッファ４３２（ストローブ入力回路）を備える。更に、コマンド信号出力用の出力バッファ（不図示）を備える。
【００４３】
メモリコントローラ３００のコア部５００は、クロック発生回路５１０において、クロック信号６００と同一周波数（位相は必ずしも同一ではない）のクロック５１２と、クロック５１２の２倍の周波数である、クロック５１４とを出力する。クロック５１２及びクロック５１４は、フリップフロップ５１６に入力される。クロック５１２及びクロック５１４はまた、セレクタ５３０及びフリップフロップ５１８にそれぞれ入力される。
【００４４】
フリップフロップ５１６は、クロック５１４が示すタイミングでクロック５１２を出力することにより、クロック信号６００を生成する。クロック信号６００は、出力バッファ４１０を介してメモリ２００に入力される。
【００４５】
セレクタ５３０は、クロック５１２、又はストローブ信号生成回路５４０（ストローブ発生回路）が出力したストローブ信号のいずれかを選択してフリップフロップ５１８に入力する。
【００４６】
フリップフロップ５１８は、セレクタ５３０から入力された信号を、クロック５１４が示すタイミングで出力する。出力された信号は、出力バッファ４３０に入力される。
【００４７】
フリップフロップ５１６及びフリップフロップ５１８はいずれも、クロック５１４に従って動作するので、これらから出力される信号は同期している。
【００４８】
遅延回路５５０は、メモリ２００（制御対象のメモリ）がＤＤＲタイプの場合、入力バッファ４３２を介してメモリ２００から入力されたストローブ信号を所定時間遅延させる。遅延回路５５０における遅延時間は可変である。遅延回路５５０から出力されたストローブ信号は、リードデータ受信用のフリップフロップ５２０及びフリップフロップ５２２（読み出し回路）のクロック端子に入力される。
【００４９】
フリップフロップ５２０は、メモリ２００から入力バッファ４２２を介して入力されるデータ信号６０２を、遅延回路５５０から供給されるストローブ信号の立ち上がりエッジのタイミングで取得する。
【００５０】
フリップフロップ５２２は、メモリ２００から入力バッファ４２２を介して入力されるデータ信号６０２を、遅延回路５５０から供給されるストローブ信号の立ち下がりエッジのタイミングで取得する。
【００５１】
なお、図面の簡略化の為、フリップフロップ５１８、５２０、及び５２２は、１ビット用として図示してあるが、実際には複数ビット用でも構わない。この場合、複数ビットが並列に処理される。
【００５２】
次に、図２を参照して、メモリ２００がＤＤＲタイプの場合のメモリコントローラ３００の動作を説明する。なお、図２において、図１と同一の要素には同一の符号を付し、説明を省略する（図５、図７、及び図８においても同様）。
【００５３】
メモリコントローラ３００において、セレクタ５３０は、ストローブ信号生成回路５４０の出力を選択する。ストローブ信号生成回路５４０は、メモリ２００にデータを書込むタイミングにおいて、図３に示すように、データ信号６０２に同期したタイミングでストローブ信号６０４（書き込み用ストローブ信号）を生成する。ストローブ信号６０４は、フリップフロップ５１８及び出力バッファ４３０を介してメモリ２００へ出力される。
【００５４】
メモリコントローラ３００は、メモリ２００からデータを取得するタイミングにおいて、メモリ２００から出力されるストローブ信号６０４（読み出し用ストローブ信号）を、入力バッファ４３２を介して遅延回路５５０に入力する。遅延回路５５０は、ストローブ信号６０４を図４に示すように適切なタイミングに遅延させる。フリップフロップ５２０及びフリップフロップ５２２は、遅延されたストローブ信号６０４が示すタイミングに従い、メモリ２００から出力されるデータ信号６０２を読み出す。
【００５５】
図４において、ＴｄＩＯは、入力バッファ４２２及び入力バッファ４３２の遅延量、及びフリップフロップ５２０、フリップフロップ５２２、及び遅延回路５５０のデータ入力端子までの配線遅延を示す。Ｔｄ＿ＤＬＹは、遅延回路５５０で調整される遅延量、及び遅延回路５５０からフリップフロップ５２０及びフリップフロップ５２２のクロック入力端子までの配線遅延を示す。
【００５６】
なお、ＤＤＲタイプのタイミング評価方法に関する詳細は、本発明の本質的なポイントではないので省略する。
【００５７】
次に、図５を参照して、メモリ２００がＳＤＲタイプの場合のメモリコントローラ３００の動作を説明する。
【００５８】
メモリコントローラ３００において、セレクタ５３０は、クロック発生回路５１０から供給されるクロック５１２を選択してフリップフロップ５１８に入力する。フリップフロップ５１８は、フリップフロップ５１６と同様、クロック５１４が示すタイミングに従ってクロック５１２を出力することにより、クロック信号６００と同等の信号を出力する。出力された信号は、ＳＤＲ用のストローブ信号（クロック信号）として出力バッファ４３０に入力される。
【００５９】
なお、ストローブ信号生成回路５４０もクロック５１２と同一周波数（位相は必ずしも同一ではない）のクロック信号を生成し、セレクタ５３０はクロック５１２の代わりにストローブ信号生成回路５４０が出力するクロック信号を選択してもよい。
【００６０】
メモリ２００は、ストローブ信号を出力しないＳＤＲタイプであるため、出力バッファ４３０及び入力バッファ４３２のメモリ側端子は未接続状態である。そして、フリップフロップ５１８から出力されたクロック信号は、出力バッファ４３０に入力され、ここから入力バッファ４３２に入力され、更に遅延回路５５０を経由してフリップフロップ５２０に入力される。
【００６１】
図６は、メモリ２００がＳＤＲタイプの場合の、メモリコントローラ３００のリード動作のタイミングチャートである。
【００６２】
図６に示すように、メモリコントローラ３００は、遅延回路５５０において、フリップフロップ５１８から出力されたクロック信号を適切なタイミングに遅延させる。フリップフロップ５２０は、遅延されたクロック信号が示すタイミングに従い、メモリ２００から出力されるデータ信号６０２を読み出す。
【００６３】
図５及び図６から明らかなように、リードデータラッチ用のフリップフロップ５２０におけるＳｅｔｕｐ／Ｈｏｌｄのタイミングは、次式により定義される。
Ｓｅｔｕｐ＝（Ｔｃ１＋Ｔｃ２＋Ｔｃ５＋Ｔｃ６）ｍｉｎ
−
（Ｔｄ１＋Ｔｄ２＋Ｔｄ３＋Ｔａｃ＋Ｔｄ４＋Ｔｄ５＋Ｔｄ６）ｍａｘ  式（３）
Ｈｏｌｄ  ＝（Ｔｄ１＋Ｔｄ２＋Ｔｄ３＋Ｔａｃ＋Ｔｄ４＋Ｔｄ５＋Ｔｄ６）ｍｉｎ
−
（Ｔｃ１＋Ｔｃ２＋Ｔｃ５＋Ｔｃ６）ｍａｘ                          式（４）
ここで、Ｔｃ２、Ｔｃ５は、メモリコントローラ３００のＩＯ部４００での、クロック到達時間（フリップフロップ５１８の出力がフリップフロップ５２０に到達する時間）に寄与するバッファ遅延および配線遅延を示す。Ｔｃ１、Ｔｃ６は、メモリコントローラ３００のコア部５００での、クロック到達時間に寄与する配線遅延を示す。Ｔｄ１、Ｔｄ２、Ｔｄ３、Ｔｄ４、Ｔｄ５、Ｔｄ６、Ｔａｃについては、図９を参照して説明したものと同じであるため、説明を省略する。
【００６４】
図９を参照して説明した従来技術においては、クロック到達時間に寄与する遅延は、メモリコントローラ３００のＩＯ部４００でのバッファ遅延および配線遅延のみであった。従って、クロックパス及びデータパスの電圧・プロセス条件を同一と見なすことは適切ではなかった。
【００６５】
一方、本実施例では、クロックパス及びデータパスは、いずれもメモリコントローラ３００のコア部５００の温度条件、電圧条件、プロセス条件、及びＩＯ部４００の温度条件、電圧条件、プロセス条件により遅延量が決まることになる。
【００６６】
即ち、温度条件、電圧条件、プロセス条件いずれにおいても、クロックパス及びデータパスは、動作保証されるバラツキの範囲内で同一条件と見なして評価する事が可能になる。
【００６７】
また、クロックパス及びデータパスはほぼ同一の構成を有するため、
Ｔｃ１＋Ｔｃ２＋Ｔｃ５  ≒  Ｔｄ１＋Ｔｄ２＋Ｔｄ５
と考える事が可能である。更に、
Ｔｄ３＋Ｔａｃ＋Ｔｄ４
の項はメモリコントローラ３００の外側で決定される遅延量であり、
Ｔｃ６＝Ｔｄ３＋Ｔａｃ＋Ｔｄ４＋Ｔｄ６
となるように遅延回路５５０が遅延量を調整する。これにより、メモリコントローラ３００における、ストローブ信号（フリップフロップ５１８の出力信号）と受信データとの間でのタイミング調整を容易に行うことが可能となる。
【００６８】
＜変形例＞
図７及び図８を参照して、実施例１の変形例を説明する。変形例においては、ＩＯ部４００は、出力バッファ４３０から入力バッファ４３２に入力される信号を遅延させる（即ち、Ｔｃ２を大きくする）遅延ユニットを備える。
【００６９】
図７の例では、出力バッファ４３０は、セレクタ４４０及びセレクタ４４２を介して、容量素子４５０及び容量素子４５２に接続される。即ち、メモリコントローラ３００は、遅延ユニットとして、可変キャパシタを含む。図７では、可変容量タイプの容量素子として図示されているが、複数の容量素子を組み合わせた構成としてもよい。
【００７０】
メモリコントローラ３００は、容量素子４５０の容量を調整してクロックパスの遅延量Ｔｃ２を調整することにより、タイミング調整を実施する事が可能である。
【００７１】
図８の例では、出力バッファ４３０は、遅延回路４６０に接続される。遅延回路４６０における遅延時間は、可変である。即ち、メモリコントローラ３００は、遅延ユニットとして、遅延素子を含む。
【００７２】
メモリコントローラ３００は、遅延回路４６０の遅延量を調整してクロックパスの遅延量Ｔｃ２を調整することにより、タイミング調整を実施する事が可能である。
【００７３】
変形例は、以下に説明する利点を持つ。実施例１では、
Ｔｃ１＋Ｔｃ２＋Ｔｃ５  ≒  Ｔｄ１＋Ｔｄ２＋Ｔｄ５
であると仮定した。しかし、制御対象のメモリによってＴｄ２は変化し得るため、この仮定が成立しない場合もある。Ｔｄ２の変化量を遅延回路５５０で調整することも可能であるが、コア部５００とＩＯ部４００とでは動作条件が必ずしも同一ではないため、調整が容易ではない場合もある。変形例の遅延ユニットを用いれば、出力バッファ４１０と同一の動作条件と見なせる出力バッファ４３０において調整を行うことができるので、より容易にタイミング調整を行うことができる。
【００７４】
［その他の実施例］
上述した各実施例の機能を実現するためには、各機能を具現化したソフトウェアのプログラムコードを記録した記録媒体をシステム或は装置に提供してもよい。そして、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによって、上述した各実施例の機能が実現される。この場合、記録媒体から読み出されたプログラムコード自体が上述した各実施例の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。このようなプログラムコードを供給するための記録媒体としては、例えば、フロッピィ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスクなどを用いることができる。或いは、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることもできる。
【００７５】
また、上述した各実施例の機能を実現するための構成は、コンピュータが読み出したプログラムコードを実行することだけには限られない。そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって上述した各実施例の機能が実現される場合も含まれている。
【００７６】
更に、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれてもよい。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって上述した各実施例の機能が実現される場合も含むものである。
【図面の簡単な説明】
【００７７】
【図１】画像処理装置に搭載された、本発明に係るメモリコントローラの構成を示すブロック図である。
【図２】制御対象のメモリがＤＤＲタイプの場合の、本発明に係るメモリコントローラの動作を説明する図である。
【図３】制御対象のメモリがＤＤＲタイプの場合の、本発明に係るメモリコントローラのライト動作のタイミングチャートである。
【図４】制御対象のメモリがＤＤＲタイプの場合の、本発明に係るメモリコントローラのリード動作のタイミングチャートである。
【図５】制御対象のメモリがＳＤＲタイプの場合の、本発明に係るメモリコントローラの動作を説明する図である。
【図６】制御対象のメモリがＳＤＲタイプの場合の、本発明に係るメモリコントローラのリード動作のタイミングチャートである。
【図７】制御対象のメモリがＳＤＲタイプの場合の、本発明の変形例に係るメモリコントローラの動作を説明する図である。
【図８】制御対象のメモリがＳＤＲタイプの場合の、本発明の他の変形例に係るメモリコントローラの動作を説明する図である。
【図９】制御対象のメモリがＳＤＲタイプの場合の、従来技術に係るメモリコントローラの動作を説明する図である。
【図１０】バラツキを考慮したタイミング解析の概念図である。
【図１１】バラツキを考慮したタイミング解析の評価条件を示す図である。
【符号の説明】
【００７８】
４１０  出力バッファ
４２０  出力バッファ
４２２  入力バッファ
４３０  出力バッファ
４３２  入力バッファ
４４０、４４２  セレクタ
４５０、４５２  容量素子
４６０  遅延回路
５１２  クロック
５１４  クロック
５１６、５１８、５２０、５２２  フリップフロップ
５３０  セレクタ
６００  クロック信号
６０２  データ信号
６０４  ストローブ信号
【図１】
2009205298.tif 000003
【図２】
2009205298.tif 000004
【図３】
2009205298.tif 000005
【図４】
2009205298.tif 000006
【図５】
2009205298.tif 000007
【図６】
2009205298.tif 000008
【図７】
2009205298.tif 000009
【図８】
2009205298.tif 000010
【図９】
2009205298.tif 000011
【図１０】
2009205298.tif 000012
【図１１】
2009205298.tif 000013