(57)【特許請求の範囲】
【請求項１】
パラレルインタフェースを有するメモリと、前記メモリへのアクセスを命令するメモリアクセスコマンドを発行するシステム回路と、に接続されるメモリアクセス回路において、
基準信号の基準周波数にロックされたＰＬＬ（Ｐｈａｓｅ Ｌｏｃｋｅｄ Ｌｏｏｐ）出力を生成する位相同期回路と、
前記ＰＬＬ出力を遅延させて基準クロック信号を生成する第１ファイクロックツリーと、
前記基準クロック信号と、前記システム回路により生成されるシステムクロック信号との間のクロックスキューを補正して、前記システムクロック信号のソース信号を生成する第１遅延同期回路と、
前記基準クロック信号と、前記メモリアクセス回路内で使用されるファイクロック信号との間のクロックスキューを補正して、前記ファイクロック信号のソース信号を生成する第２遅延同期回路と、
前記システムクロック信号と前記ファイクロック信号との間の位相差を検出し、前記位相差に応じた第１検出信号を生成する第１位相検出回路と、
前記基準クロック信号と前記ファイクロック信号との間の位相差を検出し、前記位相差に応じた第２検出信号を生成する第２位相検出回路と、
所定角度に相当する遅延値と等価の遅延素子の数に応じた遅延補正信号を生成するマスタ遅延同期回路と、を備え、
前記第１遅延同期回路は、前記第１検出信号に基づいて補正方向を決定し、前記遅延補正信号に基づいて補正量を決定し、前記第２遅延同期回路は、前記第２検出信号に基づいて補正方向を決定し、前記遅延補正信号に基づいて補正量を決定することを特徴とするメモリアクセス回路。
【請求項２】
前記第１遅延同期回路及び前記第２遅延同期回路の少なくとも１つは、
前記基準クロック信号の複数相のうち、複数の基準相の前記基準クロック信号を選択する複数の基準相マルチプレクサと、
任意の選択相の前記基準クロック信号を選択する選択相マルチプレクサと、
前記複数の基準相マルチプレクサにより選択された前記複数の基準相の前記基準クロック信号を遅延させて、前記複数の基準相の遅延基準クロック信号を生成する複数の遅延素子アレイと、
前記複数の遅延素子アレイから出力された複数の基準相の遅延基準クロック信号の１つを選択するＤＬＬ（Ｄｅｌａｙ Ｌｏｃｋｅｄ Ｌｏｏｐ）出力マルチプレクサと、
前記選択相と前記基準相とを比較し、前記選択相及び前記基準相の位相差に応じたクロックスキュー信号を生成する位相比較回路と、
選択すべき相を切り替えるように前記基準相マルチプレクサと、前記選択相マルチプレクサと、前記ＤＬＬ出力マルチプレクサと、を制御するとともに、前記クロックスキュー信号に基づいて、前記遅延素子アレイに対して、前記遅延補正信号に基づいて動作させる遅延素子の数を調整する遅延制御回路と、を備える請求項１のメモリアクセス回路。
【請求項３】
前記基準クロック信号を遅延させて、ＤＬＬクロック信号を生成する第２ファイクロックツリーと、
前記第２遅延同期回路の出力を遅延させて、前記ファイクロック信号を生成する第３ファイクロックツリーと、
前記基準クロック信号と前記ＤＬＬクロック信号との間のクロックスキューを補正して、前記メモリへ供給すべきストローブ信号のソース信号を生成する第３遅延同期回路と、  前記基準クロック信号と前記ＤＬＬクロック信号との間のクロックスキューを補正して、前記メモリへ供給すべきデータクロックのソース信号を生成する第４遅延同期回路と、  前記第２遅延同期回路の補正量に基づいて、前記第３遅延同期回路及び前記第４遅延同期回路へ供給すべき設定角度を算出する設定角度算出部と、をさらに備え、
前記第３遅延同期回路及び前記第４遅延同期回路は、前記設定角度に基づいて、前記クロックスキューを補正する請求項１又は２のメモリアクセス回路。
【請求項４】
前記第１遅延同期回路及び前記第２遅延同期回路の少なくとも１つは、
前記基準クロック信号の複数相のうち、１つの基準相を選択する基準相マルチプレクサと、前記基準相マルチプレクサにより選択された前記基準相の前記基準クロック信号を遅延させて、遅延基準クロック信号を生成する遅延素子アレイと、
選択すべき相を切り替えるように前記基準相マルチプレクサを制御するとともに、前記遅延補正信号に基づいて、前記遅延素子アレイに対して、動作させる遅延素子の数を調整する遅延制御回路と、を備える請求項１のメモリアクセス回路。
【請求項５】
パラレルインタフェースを有するメモリと、
前記メモリへのアクセスを命令するメモリアクセスコマンドを発行するシステム回路と、
基準信号の基準周波数にロックされたＰＬＬ（Ｐｈａｓｅ Ｌｏｃｋｅｄ Ｌｏｏｐ）出力を生成する位相同期回路と、
前記ＰＬＬ出力を遅延させて基準クロック信号を生成する第１ファイクロックツリーと、
前記基準クロック信号と、前記システム回路により生成されるシステムクロック信号との間のクロックスキューを補正して、前記システムクロック信号のソース信号を生成する第１遅延同期回路と、
前記基準クロック信号と、前記メモリアクセス回路内で使用されるファイクロック信号との間のクロックスキューを補正して、前記ファイクロック信号のソース信号を生成する第２遅延同期回路と、
前記システムクロック信号と前記ファイクロック信号との間の位相差を検出し、前記位相差に応じた第１検出信号を生成する第１位相検出回路と、
前記基準クロック信号と前記ファイクロック信号との間の位相差を検出し、前記位相差に応じた第２検出信号を生成する第２位相検出回路と、
所定角度に相当する遅延値と等価の遅延素子の数に応じた遅延補正信号を生成するマスタ遅延同期回路と、を備え、
前記第１遅延同期回路は、前記第１検出信号に基づいて補正方向を決定し、前記遅延補正信号に基づいて補正量を決定し、
前記第２遅延同期回路は、前記第２検出信号に基づいて補正方向を決定し、前記遅延補正信号に基づいて補正量を決定することを特徴とするメモリアクセスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリアクセス回路及びメモリシステムに関する。
【背景技術】
【０００２】
近年、ＤＲＡＭ（Dynamic Random Access Memory）等のパラレルインタフェースを有するメモリが、様々なシステムで用いられている。このようなシステムでは、ＣＰＵ（Central Processing Unit）等のプロセッサからメモリに対するアクセスを制御するメモリアクセス回路が設けられている。
【０００３】
一般的なメモリアクセス回路には、クロックスキューを補正する位相調整素子が設けられている。位相調整素子は、位相同期回路（以下、「ＰＬＬ（Phase Locked Loop）」という）又は遅延同期回路（以下、「ＤＬＬ（Delay Locked Loop）」という）である。
【０００４】
しかしながら、ＰＬＬは、回路規模及び消費電力が大きい。従って、ＰＬＬを用いてクロックスキューを補正すると、メモリアクセス回路の回路規模及び消費電力が増加する。
【０００５】
また、ＤＬＬは、信号が遅延素子を伝搬するときにジッタを発生させる。このジッタは、位相調整量が３６０度に近くなるほど、大きくなる。従って、ＤＬＬを用いてクロックスキューを補正すると、タイミングマージンが減少する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−５０３０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、メモリアクセス回路のクロックスキューを補正することである。
【課題を解決するための手段】
【０００８】
本実施形態のメモリアクセス回路は、パラレルインタフェースを有するメモリと、前記メモリへのアクセスを命令するメモリアクセスコマンドを発行するシステム回路と、に接続される。メモリアクセス回路は、位相同期回路と、第１ファイクロックツリーと、第１及び第２遅延同期回路と、第１及び第２位相検出回路と、マスタ遅延同期回路と、を備える。位相同期回路は、基準信号の基準周波数にロックされたＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）出力を生成する。第１ファイクロックツリーは、ＰＬＬ出力を遅延させて基準クロック信号を生成する。第１遅延同期回路は、基準クロック信号と、システム回路により生成されるシステムクロック信号との間のクロックスキューを補正して、システムクロック信号のソース信号を生成する。第２遅延同期回路は、基準クロック信号と、メモリアクセス回路内で使用されるファイクロック信号との間のクロックスキューを補正して、ファイクロック信号のソース信号を生成する。第１位相検出回路は、基準クロック信号とファイクロック信号との間の位相差を検出し、位相差に応じた第１検出信号を生成する。第２位相検出回路は、基準クロック信号とファイクロック信号との間の位相差を検出し、位相差に応じた第２検出信号を生成する。マスタ遅延同期回路は、基準クロック信号をカウントして、遅延補正信号を生成する。第１及び第２遅延同期回路は、それぞれ、第１及び第２検出信号に基づいて補正方向を決定し、遅延補正信号に基づいて補正量を決定する。
【図面の簡単な説明】
【０００９】
【図１】本実施形態のメモリシステム１のブロック図。
【図２】本実施形態のメモリアクセス装置１０の構成図。
【図３】本実施形態のメモリアクセス装置１０で取り扱われる信号波形図。
【図４】本実施形態のマスタＤＬＬ１５５の構成図。
【図５】第１実施形態の第１ＤＬＬ１４２及び第２ＤＬＬ１４３の構成図。
【図６】第１実施形態の第３ＤＬＬ１４４〜第５ＤＬＬ１４６の構成図。
【図７】第１実施形態の第１ＤＬＬ１４２〜第５ＤＬＬ１４６の動作説明図。
【図８】第２実施形態の第１ＤＬＬ１４２〜第５ＤＬＬ１４６の構成図。
【図９】第３実施形態の第１ＤＬＬ１４２〜第５ＤＬＬ１４６の動作説明図。
【図１０】第３実施形態の第１ＤＬＬ１４２〜第５ＤＬＬ１４６の動作説明図。
【図１１】第４実施形態のメモリアクセス装置１０の構成図。
【図１２】第４実施形態のメモリアクセス装置１０で取り扱われる信号波形図。
【発明を実施するための形態】
【００１０】
図面を参照しながら本実施形態を説明する。
【００１１】
本実施形態のメモリシステムの構成を説明する。図１は、本実施形態のメモリシステム１のブロック図である。
【００１２】
メモリシステム１は、メモリアクセス装置１０と、メモリ２０と、ＣＰＵ（Central Processing Unit）３０と、バス４０と、を備える。
【００１３】
ＣＰＵ３０は、所定のアプリケーションを起動して、メモリ２０に格納されたデータに対してデータ処理を実行するモジュールである。ＣＰＵ３０は、メモリ２０からデータを読み出し、アプリケーションの命令に基づいて読み出したデータに対して所定のデータ処理を実行し、データ処理の実行結果をメモリ２０へ書き込む。また、ＣＰＵ３０は、メモリ２０からデータを読み出すために、メモリアクセスを要求するリクエストを発行する。
【００１４】
メモリアクセス装置１０は、メモリアクセスを制御する装置である。メモリアクセス装置１０は、バス４０を介してＣＰＵ３０に接続され、バス４０を介さずにメモリ２０に接続される。また、メモリアクセス装置１０は、ＣＰＵ３０により発行されたリクエストに基づいて、メモリアクセスを制御する。
【００１５】
メモリ２０は、パラレルインタフェースを有し、様々なデータを記憶する記憶媒体（例えば、ＤＲＡＭ）である。
【００１６】
本実施形態のメモリアクセス装置の構成を説明する。図２は、本実施形態のメモリアクセス装置１０の構成図である。
【００１７】
図２に示すように、メモリアクセス装置１０は、システム回路１２と、メモリアクセス回路１４と、を備える。メモリアクセス回路１４は、メモリ２０と、システム回路１２と、に接続される。
【００１８】
システム回路１２は、メモリアクセスコマンド（MAC）を発行する回路である。システム回路１２は、メモリアクセスコマンド発行部１２１と、システムクロックツリー１２２と、メモリデ−タ制御部１２４ と、を備える。
【００１９】
メモリアクセス回路１４は、メモリアクセスを制御する回路である。メモリアクセス回路１４は、ＰＬＬ１４１と、第１ＤＬＬ１４２〜第５ＤＬＬ１４６と、第１位相検出回路（以下、「ＰＤ（Phase Detector）」という）１４７ａと、第２ＰＤ１４７ｂと、第１論理回路１４８〜第３論理回路１５０と、第１ファイクロックツリー１５１〜第３ファイクロックツリー１５３と、設定角度算出部１５４と、マスタＤＬＬ１５５と、第１増幅回路１５６〜第４増幅回路１５９と、を備える。なお、ＤＬＬの数は、６つに限られるものではない。すなわち、メモリアクセス回路１４は、６つ以上のＤＬＬを備えても良い。また、メモリアクセスコマンド発行部１２１及び第１論理回路１４８〜第３論理回路１５０は、幾つでも良い。
【００２０】
メモリアクセスコマンド発行部１２１は、メモリ２０へのアクセスを命令するメモリアクセスコマンド（MAC）を発行するモジュールである。メモリアクセスコマンド発行部１２１は、バス４０を介して転送されるリクエスト（REQ）とシステムクロック信号（SYSTEM_CLK）とを入力し、入力したリクエスト（REQ）及びシステムクロック信号（SYSTEM_CLK）に基づいてメモリアクセスコマンド（MAC）を発行する。
【００２１】
メモリデ−タ制御部１２４ は、メモリアクセスコマンド発行部１２１が発行したメモリアクセスコマンド（MAC）に応じて、バス４０から入力されるデータ（DATA）を第１論理回路１４８と、第２論理回路１４９と、へ出力する。
【００２２】
ＰＬＬ１４１は、基準信号（REF）の周波数を逓倍した、任意の周波数（以下、「基準周波数」という）と出力信号（以下、「ＰＬＬ出力」という）の位相差を検出し、検出した位相差に基づいて基準周波数にロックされたＰＬＬ出力を生成する回路である。ＰＬＬ出力は、基準クロック信号（PHY_CLK_CK）のソース信号である。
【００２３】
第１ファイクロックツリー１５１は、所定の第１クロックツリー長ＴＬ１の分だけＰＬＬ出力を遅延させて基準クロック信号（PHY_CLK_CK）を生成するモジュールである。基準クロック信号（PHY_CLK_CK）は、基準周波数の逓倍の周波数を有する。基準クロック信号（PHY_CLK_CK）は、メモリ２０の動作タイミングを制御するためのタイミング制御信号のソース信号（すなわち、メモリ２０のソースクロック）であるので、メモリアクセス回路１４で使用される信号の中で、クロックジッタを低減する優先度が最も高い信号であり、配線長が最も短い配線で伝送される。
【００２４】
マスタＤＬＬ１５５は、クロックスキューの補正や位相角度の設定に用いられる遅延補正信号（DLL_CNT）を生成する回路である。マスタＤＬＬ１５５は、基準クロック信号（PHY_CLK_CK）を入力し、入力した基準クロック信号（PHY_CLK_CK）のクロックをカウントして遅延補正信号（DLL_CNT）を生成する。遅延補正信号（DLL_CNT）は、補正量ΔＣや位相角度の基準となる、基準クロック信号の１サイクル分の周期に相当する遅延素子数を示す信号である。
【００２５】
第１ＤＬＬ１４２は、基準クロック信号（PHY_CLK_CK）とシステムクロック信号（SYSTEM_CLK）との間のクロックスキューを補正するクロックデスキュー回路である。システムクロック信号（SYSTEM_CLK）は、システムクロックツリー１２２により生成される信号である。第１ＤＬＬ１４２は、基準クロック信号（PHY_CLK_CK）と、第１ＰＤ１４７ａの出力である第１ＰＤ出力（PD_OUT1）と、遅延補正信号（DLL_CNT）と、を入力し、第１ＰＤ出力（PD_OUT1）に基づいて補正方向を決定し、遅延補正信号（DLL_CNT）に基づいて補正量ΔＣ２を決定し、決定した補正方向及び補正量ΔＣ２に基づいて基準クロック信号（PHY_CLK_CK）を遅延させて、第１ＤＬＬ出力（DLL_OUT1）を生成する。第１ＤＬＬ出力（DLL_OUT1）は、システムクロック信号（SYSTEM_CLK）のソース信号である。
【００２６】
システムクロックツリー１２２は、ＰＬＬ出力に対して所定の第３クロックツリー長ＴＬ３の分だけ第１ＤＬＬ出力（DLL_OUT1）を遅延させて、システムクロック信号（SYSTEM_CLK）を生成するモジュールである。すなわち、システムクロック信号（SYSTEM_CLK）は、クロックスキューが補正された第１ＤＬＬ出力（DLL_OUT1）に基づいて生成される信号である。
【００２７】
第２ファイクロックツリー１５２は、基準クロック信号（PHY_CLK_CK）を入力し、ＰＬＬ出力に対して所定の第２クロックツリー長ＴＬ２の分だけ基準クロック信号（PHY_CLK_CK）を遅延させて、ＤＬＬクロック信号（DLL_CLK）を生成するモジュールである。ＤＬＬクロック信号（DLL_CLK）は、タイミング制御信号の一種であるストローブ信号（DQS）及びデータ信号（DQ）のソース信号である。
【００２８】
第２ＤＬＬ１４３は、基準クロック信号（PHY_CLK_CK）とファイクロック信号（PHY_CLK）との間のクロックスキューを補正するクロックデスキュー回路である。ファイクロック信号（PHY_CLK）は、メモリアクセス回路１４内で使用される信号である。第２ＤＬＬ１４３は、基準クロック信号（PHY_CLK_CK）と、第２ＰＤ１４７ｂの出力である第２ＰＤ出力（PD_OUT2）と、遅延補正信号（DLL_CNT）と、を入力し、第２ＰＤ出力（PD_OUT2）に基づいて補正方向を決定し、遅延補正信号（DLL_CNT）に基づいて補正量ΔＣ１を決定し、決定した補正方向及び補正量ΔＣ１に基づいて基準クロック信号（PHY_CLK_CK）を遅延させて、第２ＤＬＬ出力（DLL_OUT2）を生成する。第２ＤＬＬ出力（DLL_OUT2）は、ファイクロック信号（PHY_CLK）のソース信号である。また、第２ＤＬＬ１４３は、補正量ΔＣ１に対応する基準角度Ａを生成する。
【００２９】
第３ファイクロックツリー１５３は、第２ＤＬＬ出力（DLL_OUT2）を入力し、ＰＬＬ出力に対して所定の第２クロックツリー長ＴＬ２の分だけ第２ＤＬＬ出力（DLL_OUT2）を遅延させて、ファイクロック信号（PHY_CLK）を生成するモジュールである。すなわち、ファイクロック信号（PHY_CLK）は、クロックスキューが補正された第２ＤＬＬ出力（DLL_OUT2）に基づいて生成される信号である。ファイクロック信号（PHY_CLK）のクロックツリー長は、ＤＬＬクロック信号（DLL_CLK）のクロックツリー長と等しい。
【００３０】
設定角度算出部１５４は、第３ＤＬＬ１４４〜第５ＤＬＬ１４６へ供給すべき設定角度を算出するモジュールである。設定角度は、第１論理回路１４８の出力であるストローブ信号（DQS）と、第２論理回路１４９の出力であるデータ信号（DQ）及びデータマスク信号（DM）と、第３論理回路１５０の出力であるアドレス信号（ADDR）及びコマンド信号（CMD）との間に設定すべき位相差を示す情報である。設定角度算出部１５４は、第２ＤＬＬ１４３により生成された基準角度Ａと、メモリアクセス回路１４に接続された所定の外部回路（例えば、システム回路１２）により生成された所定の位相角度Ｂと、を加算し、基準角度Ａ及び位相角度Ｂの和を設定角度として第３ＤＬＬ１４４〜第５ＤＬＬ１４６へ出力する。位相角度Ｂは、第３ＤＬＬ１４４〜第５ＤＬＬ１４６のそれぞれについて、システム回路１２により個別に決められる任意の追加補正量を示す角度であって、ストローブ信号（DQS）と、データ信号（DQ）及びデータマスク信号（DM）、アドレス信号（ADDR）及びコマンド信号（CMD）との間に設定すべき位相差に対応する角度である。すなわち、システム回路１２は、第３ＤＬＬ１４４用の位相角度と、第４ＤＬＬ１４５用の位相角度と、第５ＤＬＬ１４６用の位相角度と、を個別に決める。なお、位相角度Ｂは、ストローブ信号（DQS）と、データ信号（DQ）及びデータマスク信号（DM）と、アドレス信号（ADDR）及びコマンド信号（CMD）との間に設定すべき位相差に加えて、ストローブ信号（DQS）とメモリ基準信号（CK）との間に設定すべき位相差を含んでも良い。
【００３１】
第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、それぞれ、基準クロック信号（PHY_CLK_CK）とＤＬＬクロック信号（DLL_CLK）との間のクロックスキューを補正するクロックデスキュー回路である。加えて、任意の位相角度を設定することができる回路である。第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、それぞれ、設定角度と、ＤＬＬクロック信号（DLL_CLK）と、遅延補正信号（DLL_CNT）と、設定角度算出部１５４の出力信号と、を入力し、設定角度及び遅延補正信号（DLL_CNT）に基づいて補正量を決定し、決定した補正方向及び補正量に基づいてＤＬＬクロック信号（DLL_CLK）を遅延させて第３ＤＬＬ出力（DLL_OUT3）〜第５ＤＬＬ出力（DLL_OUT5）を生成する。第３ＤＬＬ出力（DLL_OUT3）は、ストローブ信号（DQS）のソース信号である。第４ＤＬＬ出力（DLL_OUT4）は、データ信号（DQ）及びデータマスク信号（DM）のソース信号である。第５ＤＬＬ出力（DLL_OUT5）は、アドレス信号（ADDR）及びコマンド信号（CMD）のソース信号である。
【００３２】
第２ＰＤ１４７ｂは、ファイクロック信号（PHY_CLK）のクロックエッジの位相と基準クロック信号（PHY_CLK_CK）のクロックエッジの位相との間のずれを検出する回路（例えばフリップフロップ）である。第２ＰＤ１４７ｂは、ファイクロック信号（PHY_CLK）と、基準クロック信号（PHY_CLK_CK）と、を入力し、ファイクロック信号（PHY_CLK）のクロックエッジと基準クロック信号（PHY_CLK_CK）のクロックエッジとのずれを検出し、ファイクロック信号（PHY_CLK）のシステムクロック信号（SYSTEM_CLK）に対する遅延方向（ファイクロック信号（PHY_CLK）がシステムクロック信号（SYSTEM_CLK）に対して遅れているか又は進んでいるか）を示す第２検出信号（PD_OUT2）を生成する。第２検出信号（PD_OUT2）は、ファイクロック信号（PHY_CLK）と基準クロック信号（PHY_CLK_CK）の位相差に応じた１ビットの信号であって、例えば、“０”はファイクロック信号（PHY_CLK）が基準クロック信号（PHY_CLK_CK）に対して遅れていることを示し、“１”はファイクロック信号（PHY_CLK）が基準クロック信号（PHY_CLK_CK）に対して進んでいることを示す。
【００３３】
第１ＰＤ１４７ａは、ファイクロック信号（PHY_CLK）のクロックエッジの位相とシステムクロック信号（SYSTEM_CLK）のクロックエッジの位相との間のずれを検出する回路（例えばフリップフロップ）である。第１ＰＤ１４７ａは、ファイクロック信号（PHY_CLK）と、システムクロック信号（SYSTEM_CLK）と、を入力し、ファイクロック信号（PHY_CLK）のクロックエッジとシステムクロック信号（SYSTEM_CLK）のクロックエッジとのずれを検出し、ファイクロック信号（PHY_CLK）のシステムクロック信号（SYSTEM_CLK）に対する遅延方向（ファイクロック信号（PHY_CLK）がシステムクロック信号（SYSTEM_CLK）に対して遅れているか又は進んでいるか）を示す第１検出信号（PD_OUT1）を生成する。第１検出信号（PD_OUT1）は、ファイクロック信号（PHY_CLK）とシステムクロック信号（SYSTEM_CLK）の位相差に応じた１ビットの信号であって、例えば、“０”はファイクロック信号（PHY_CLK）がシステムクロック信号（SYSTEM_CLK）に対して遅れていることを示し、“１”はファイクロック信号（PHY_CLK）がシステムクロック信号（SYSTEM_CLK）に対して進んでいることを示す。
【００３４】
第１論理回路１４８は、メモリ２０のストローブ信号（DQS）を生成する回路である。第１論理回路１４８は、ファイクロック信号（PHY_CLK）と、データ（DATA）と、第３ＤＬＬ出力（DLL_OUT3）と、を入力し、入力した信号からストローブ信号（DQS）を生成し、生成したストローブ信号（DQS）を、第１増幅回路１５６を介してメモリ２０へ出力する。なお、第１論理回路１４８は、第３ＤＬＬ１４４に組み込まれても良い。
【００３５】
第２論理回路１４９は、メモリ２０のデータ信号（DQ）及びデータマスク信号（DM）を生成する回路である。第２論理回路１４９は、ファイクロック信号（PHY_CLK）と、データ（DATA）と、第４ＤＬＬ出力（DLL_OUT4）と、を入力し、入力した信号からデータ信号（DQ）を生成し、生成したデータ信号（DQ）を、第２増幅回路１５７を介してメモリ２０へ出力する。なお、第２論理回路１４９は、第４ＤＬＬ１４５に組み込まれても良い。
【００３６】
第３論理回路１５０は、メモリ２０のアドレス信号（ADDR）及びコマンド信号（CMD）を生成する回路である。第３論理回路１５０は、ファイクロック信号（PHY_CLK）と、メモリアクセスコマンド（MAC）と、第５ＤＬＬ出力（DLL_OUT5）と、を入力し、入力した信号からアドレス信号（ADDR）及びコマンド信号（CMD）を生成し、生成したアドレス信号（ADDR）及びコマンド信号（CMD）を、第３増幅回路１５８を介してメモリ２０へ出力する。なお、第３論理回路１５０は、第５ＤＬＬ１４６に組み込まれても良い。
【００３７】
第１増幅回路１５６は、第１論理回路１４８から出力されたストローブ信号（DQS）を増幅し、増幅したストローブ信号（DQS）をメモリ２０へ出力する回路である。第２増幅回路１５７は、第２論理回路１４９から出力されたデータ信号（DQ）及びデータマスク信号（DM）を増幅し、増幅したデータ信号（DQ）をメモリ２０へ出力する回路である。第３増幅回路１５８は、第３論理回路１５０から出力されたアドレス信号（ADDR）及びコマンド信号（CMD）を増幅し、増幅したアドレス信号（ADDR）及びコマンド信号（CMD）をメモリ２０へ出力する回路である。第４増幅回路１５９は、基準クロック信号（PHY_CLK_CK）を増幅してメモリ２０のタイミング制御信号の一種であるメモリ基準信号（CK）を生成し、生成したメモリ基準信号（CK）をメモリ２０へ出力する回路である。
【００３８】
本実施形態のメモリアクセス装置で取り扱われる信号を説明する。図３は、本実施形態のメモリアクセス装置１０で取り扱われる信号波形図である。
【００３９】
図３に示すように、ある時点において、第２ＰＤ１４７ｂの入力である第２ＰＤ入力は、ＰＬＬ出力に対して第２クロックツリー長ＴＬ２だけ遅延している。この第２ＰＤ入力は、第２ＤＬＬ１４３がクロックスキューを補正していないときに第３ファイクロックツリー１５３から出力される信号である。第２クロックツリー長ＴＬ２は、第１クロックツリー長ＴＬ１より長く、且つ第３クロックツリー長ＴＬ３より短い。これは、第３ファイクロックツリー１５３が、ＰＬＬ出力に対して第２クロックツリー長ＴＬ２の分だけ第２ＤＬＬ出力（DLL_OUT2）を遅延させるためである。この場合に、第２ＰＤ１４７ｂは、基準クロック信号（PHY_CLK_CK）と第２ＰＤ入力との間に第２クロックツリー長ＴＬ２の分の位相差が存在することを示す第２検出信号（PD_OUT2）を生成する。次いで、第２ＤＬＬ１４３は、第２検出信号（PD_OUT2）に基づいて基準クロック信号（PHY_CLK_CK）の補正量ΔＣ１を算出し、基準クロック信号（PHY_CLK_CK）を補正量ΔＣ１だけ補正して第２ＤＬＬ出力（DLL_OUT2）を生成する。次いで、第３ファイクロックツリー１５３は、第２ＤＬＬ出力（DLL_OUT2）を遅延させて、ファイクロック信号（PHY_CLK）を生成する。これにより、ファイクロック信号（PHY_CLK）の位相が基準クロック信号（PHY_CLK_CK）と等しくなる。
【００４０】
次に、ある時刻において、第１ＰＤ１４７ａの入力である第１ＰＤ入力は、ＰＬＬ出力に対して第３クロックツリー長ＴＬ３だけ遅延している。この第１ＰＤ入力は、第１ＤＬＬ１４２がクロックスキューを補正していないときに第３ファイクロックツリー１５３から出力される信号である。第３クロックツリー長ＴＬ３は、第２クロックツリー長ＴＬ２より長い。これは、システムクロックツリー１２２が、第３ファイクロックツリー１５３より長いためである。この場合に、第１ＰＤ１４７ａは、ファイクロック信号（PHY_CLK）と第１ＰＤ入力との間に第３クロックツリー長ＴＬ３の分の位相差が存在することを示す第１検出信号（PD_OUT1）を生成する。次いで、第１ＤＬＬ１４２は、第１検出信号（PD_OUT1）に基づいて基準クロック信号（PHY_CLK_CK）の補正量ΔＣ２を算出し、基準クロック信号（PHY_CLK_CK）を補正量ΔＣ２だけ補正して第１ＤＬＬ出力（DLL_OUT1）を生成する。次いで、システムクロックツリー１２２は、第１ＤＬＬ出力（DLL_OUT1）を遅延させて、システムクロック信号（SYSTEM_CLK）を生成する。ファイクロック信号（PHY_CLK）の位相は、上記のとおり、基準クロック信号（PHY_CLK_CK）と等しいため、システムクロック信号（SYSTEM_CLK）の位相もファイクロック信号（PHY_CLK）と等しくなる。補正量ΔＣ２は、第３クロックツリー長ＴＬ３と第１クロックツリー長ＴＬ１との差である。
【００４１】
本実施形態のマスタＤＬＬを説明する。図４は、本実施形態のマスタＤＬＬ１５５の構成図である。
【００４２】
図４は、４相クロックを使用するマスタＤＬＬ１５５を示している。マスタＤＬＬ１５５は、複数の遅延素子２１ａ〜２１ｄと、複数の位相比較回路２２ａ〜２２ｄと、遅延制御回路２３と、を備える。
【００４３】
複数の遅延素子２１ａ〜２１ｄは、それぞれ、４相の基準クロック信号（０度の基準クロック信号（CLK_0）、９０度の基準クロック信号（CLK_90）、１８０度の基準クロック信号（CLK_180）、及び２７０度の基準クロック信号（CLK_270））のうちの１相を入力し、入力した基準クロック信号を１相分遅延させて遅延基準クロック信号を生成する。例えば、遅延素子２１ａは、０度の基準クロック信号（CLK_0）を入力し、入力した０度の基準クロック信号（CLK_0）を９０度遅延させて９０度の遅延基準クロック信号（CLK_90’）を生成する。
【００４４】
複数の位相比較回路２２ａ〜２２ｄは、それぞれ、４相の基準クロック信号（０度の基準クロック信号（CLK_0）〜２７０度の基準クロック信号（CLK_270））のうちの１相と、各遅延素子２１ａ〜２１ｄの出力である４相の遅延基準クロック信号（CLK_0’〜 CLK_270’）と、を入力し、基準クロック信号（CLK_0〜 CLK_270）と遅延基準クロック信号（CLK_0’〜 CLK_270’）の位相を比較し、基準クロック信号（CLK_0〜 CLK_270）と遅延基準クロック信号（CLK_0’〜 CLK_270’）の位相差に応じたクロックスキュー信号ＣＳ１〜ＣＳ４を生成する。
【００４５】
遅延制御回路２３は、クロックスキュー信号ＣＳ１〜ＣＳ４の何れかに基づいて、動作させる遅延素子２１ａ〜２１ｄの数を調整する回路である。遅延制御回路２３は、クロックスキュー信号ＣＳ１〜ＣＳ４を入力し、入力したクロックスキュー信号ＣＳ１〜ＣＳ４の何れかに基づいて９０度に相当する遅延値（すなわち、クロック周期の１／４に相当する時間）と等価の遅延素子（以下、「９０度分の遅延素子」という）の数を算出し、算出９０度分の遅延素子の数に応じた遅延補正信号（DLL_CNT）を生成し、生成した遅延補正信号（DLL_CNT）を第１ＤＬＬ１４２〜第５ＤＬＬ１４６へ出力する。
【００４６】
（第１実施形態）
第１実施形態を説明する。第１実施形態は、マスタＤＬＬを使用する場合の第１ＤＬＬ〜第５ＤＬＬの例である。
【００４７】
第１実施形態の第１ＤＬＬ〜第５ＤＬＬの構成を説明する。図５は、第１実施形態の第１ＤＬＬ１４２及び第２ＤＬＬ１４３の構成図である。図６は、第１実施形態の第３ＤＬＬ１４４〜第５ＤＬＬ１４６の構成図である。
【００４８】
図５は、４相クロックを使用する第１ＤＬＬ１４２及び第２ＤＬＬ１４３を示している。第１ＤＬＬ１４２及び第２ＤＬＬ１４３は、それぞれ、複数の第１マルチプレクサ３１ａ〜３１ｃと、複数の遅延素子アレイ３２ａ及び３２ｂと、複数の第２マルチプレクサ３３ａ及び３３ｂと、位相比較回路３４と、遅延制御回路３５と、を備える。
【００４９】
第１マルチプレクサ３１ａ〜３１ｃは、それぞれ、４相の基準クロック信号（０度の基準クロック信号（CLK_0）、９０度の基準クロック信号（CLK_90）、１８０度の基準クロック信号（CLK_180）、及び２７０度の基準クロック信号（CLK_270））のうちの１相を選択する。
【００５０】
第１マルチプレクサ３１ａ及び３１ｃは、それぞれ、位相制御又は遅延補正信号算出に使用される基準クロック信号の複数相のうち任意の基準相を選択する基準相マルチプレクサである。第１マルチプレクサ３１ａ及び３１ｃにより選択される２つの基準相は、互いに同一であっても良いし、異なっても良い。
【００５１】
第１マルチプレクサ３１ｂは、基準クロック信号の複数相のうち、遅延制御回路３５により算出される基準角度Ａに対して任意の選択相（例えば、１相先の先行相）の基準クロック信号を選択する選択相マルチプレクサである。例えば、第１マルチプレクサ３１ｂは、基準角度Ａが１２０度の場合には１８０度のクロック信号を選択し、基準角度Ａが２２５度の場合には２７０度のクロック信号を選択する。基準相及び選択相の組み合わせは４通りである。すなわち、基準相及び選択相の組み合わせは、基準クロック信号（CLK_0及びCLK_90）、（CLK_90及びCLK_180）、（CLK_180及びCLK_270）、並びに（CLK_270及びCLK_0）である。従って、算出される遅延補正信号（DLL_CNT）も４通りである。４相の基準クロック信号が入力されるときにスキュー差が発生するので、各遅延補正信号（DLL_CNT）の値がばらつく場合があるが、タイミングマージンが十分に確保されていれば、各遅延補正信号（DLL_CNT）の値のばらつきは無視することができる。
【００５２】
遅延素子アレイ３２ａは、第１マルチプレクサ３１ａにより選択された基準相の基準クロック信号を遅延させて、基準相の遅延基準クロック信号を生成する。遅延素子アレイ３２ａは、位相制御用の遅延素子アレイ又は遅延補正信号算出用の遅延素子アレイとして使用される。
【００５３】
遅延素子アレイ３２ｂは、第１マルチプレクサ３１ｃにより選択された選択相の基準クロック信号を遅延させて、選択相の遅延基準クロック信号を生成する。遅延素子アレイ３２ｂは、遅延素子アレイ３２ａが位相制御用の遅延素子アレイとして使用される場合には、遅延補正信号算出用の遅延素子アレイとして使用され、遅延素子アレイ３２ａが遅延補正信号算出用の遅延素子アレイとして使用される場合には、位相制御用の遅延素子アレイとして使用される。すなわち、２つの遅延素子アレイ３２ａ及び３２ｂの機能は、互いに排他的である。
【００５４】
第２マルチプレクサ３３ａ及び３３ｂは、位相制御用の遅延素子アレイ（例えば、遅延素子アレイ３２ａ）の機能と、遅延補正信号算出用の遅延素子アレイ（例えば、遅延素子アレイ３２ｂ）の機能と、を切り替えるモジュールである。
【００５５】
第２マルチプレクサ３３ａは、遅延素子アレイ３２ａから出力された基準クロック信号（例えば、位相制御用の基準クロック信号）及び遅延素子アレイ３２ｂから出力された基準クロック信号（例えば、遅延補正信号算出用の基準クロック信号）の一方を選択し、選択した基準クロック信号を第１ＤＬＬ出力（DLL_OUT1）又は第２ＤＬＬ出力（DLL_OUT2）として、システムクロックツリー１２２又は第３ファイクロックツリー１５３へ出力するＤＬＬ出力マルチプレクサである。
【００５６】
第２マルチプレクサ３３ｂは、遅延素子アレイ３２ａから出力された基準クロック信号（例えば、位相制御用の基準クロック信号）及び遅延素子アレイ３２ｂから出力された基準クロック信号（例えば、遅延補正信号算出用の基準クロック信号）の一方を選択するＤＬＬ出力マルチプレクサである。
【００５７】
位相比較回路３４は、選択相の基準クロック信号と、第２マルチプレクサ３３ｂにより選択された基準クロック信号と、を入力し、２つの基準クロック信号の位相を比較し、２つの基準クロック信号の位相差に応じたクロックスキュー信号を生成する。
【００５８】
遅延制御回路３５は、第１検出信号（PD_OUT1）又は第２検出信号（PD_OUT2）と、遅延補正信号（DLL_CNT）と、クロックスキュー信号とに基づいて、第１マルチプレクサ３１ａ〜３１ｃ、第１遅延素子３２ａ、第２遅延素子３２ｂ、並びに第２マルチプレクサ３３ａ及び３３ｂを制御する。具体的には、遅延制御回路３５は、第１検出信号（PD_OUT1）又は第２検出信号（PD_OUT2）に基づいて補正方向を決定する。また、遅延制御回路３５は、クロックスキュー信号に基づいて、遅延補正信号（DLL_CNT）を補正する。次いで、遅延制御回路３５は、第１検出信号（PD_OUT1）又は第２検出信号（PD_OUT2）に応じた補正方向に基づいて、補正量ΔＣを更新する。これにより、補正量ΔＣが増加又は減少し、第１検出信号（PD_OUT1）又は第２検出信号（PD_OUT2）の補正方向が逆になる。次いで、遅延制御回路３５は、更新された補正量ΔＣと遅延補正信号（DLL_CNT）との値の比率を計算し、計算した比率に基づいてクロックスキューを調整するための基準角度Ａを決定する。このとき、遅延制御回路３５は、基準角度Ａが０〜９０度である場合には、０度の基準クロック信号（CLK_0）を選択するように第１マルチプレクサ３１ａを制御し、基準角度Ａが９０〜１８０度である場合には、９０度の基準クロック信号（CLK_90）を選択するように第１マルチプレクサ３１ａを制御し、基準角度Ａが１８０〜２７０度である場合には、１８０度の基準クロック信号（CLK_180）を選択するように第１マルチプレクサ３１ａを制御し、基準角度Ａが２７０〜３６０度である場合には、２７０度の基準クロック信号（CLK_270）を選択するように第１マルチプレクサ３１ａを制御する。
【００５９】
図６は、４相クロックを使用する第３ＤＬＬ１４４〜第５ＤＬＬ１４６を示している。第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、それぞれ、複数の第１マルチプレクサ４１ａ〜４１ｃと、複数の遅延素子アレイ４２ａ及び４２ｂと、複数の第２マルチプレクサ４３ａ及び４３ｂと、位相比較回路４４と、遅延制御回路４５と、を備える。なお、遅延素子アレイ４２ａ及び４２ｂ、並びに位相比較回路４４は、第１ＤＬＬ１４２及び第２ＤＬＬ１４３と同様である（図５を参照）。
【００６０】
第１マルチプレクサ４１ａ〜４１ｃは、それぞれ、４相の基準クロック信号（０度の基準クロック信号（CLK_0）、９０度の基準クロック信号（CLK_90）、１８０度の基準クロック信号（CLK_180）、及び２７０度の基準クロック信号（CLK_270））のうちの１相を選択する。
【００６１】
第１マルチプレクサ４１ａ及び４１ｃは、それぞれ、位相制御又は遅延補正信号算出に使用される基準クロック信号の複数相のうち任意の基準相を選択する基準相マルチプレクサである。第１マルチプレクサ４１ａ及び４１ｃにより選択される２つの基準相は、互いに同一であっても良いし、異なっても良い。
【００６２】
第１マルチプレクサ４１ｂは、基準クロック信号の複数相のうち、遅延制御回路４５により算出される設定角度に対して選択相（例えば、１相先の先行相）の基準クロック信号を選択する選択相マルチプレクサである。例えば、第１マルチプレクサ４１ｂは、設定角度が１２０度の場合には１８０度のクロック信号を選択し、設定角度が２２５度の場合には２７０度のクロック信号を選択する。基準相及び選択相の組み合わせは４通りである。すなわち、基準相及び選択相の組み合わせは、基準クロック信号（CLK_0及びCLK_90）、（CLK_90及びCLK_180）、（CLK_180及びCLK_270）、並びに（CLK_270及びCLK_0）である。従って、算出される遅延補正信号（DLL_CNT）も４通りである。４相の基準クロック信号が入力されるときにスキュー差が発生するので、各遅延補正信号（DLL_CNT）の値がばらつく場合があるが、タイミングマージンが十分に確保されていれば、各遅延補正信号（DLL_CNT）の値のばらつきは無視することができる。
【００６３】
第２マルチプレクサ４３ａ及び４３ｂは、位相制御用の遅延素子アレイ（例えば、遅延素子アレイ４２ａ）の機能と、遅延補正信号算出用の遅延素子アレイ（例えば、遅延素子アレイ４２ｂ）の機能と、を切り替えるモジュールである。
【００６４】
第２マルチプレクサ４３ａは、遅延素子アレイ４２ａから出力された基準クロック信号（例えば、位相制御用の基準クロック信号）及び遅延素子アレイ４２ｂから出力された基準クロック信号（例えば、遅延補正信号算出用の基準クロック信号）の一方を選択し、選択した基準クロック信号を第３ＤＬＬ出力（DLL_OUT3）〜第５ＤＬＬ出力（DLL_OUT5）として、第１論理回路１４８〜第３論理回路１５０へ出力する基準クロック選択部である。
【００６５】
第２マルチプレクサ４３ｂは、遅延素子アレイ４２ａから出力された基準クロック信号（例えば、位相制御用の基準クロック信号）及び遅延素子アレイ４２ｂから出力された基準クロック信号（例えば、遅延補正信号算出用の基準クロック信号）の一方を選択する基準クロック選択部である。
【００６６】
遅延制御回路４５は、設定角度及びクロックスキュー信号に基づいて、第１マルチプレクサ４１ａ〜４１ｃ、第１遅延素子４２ａ、第２遅延素子４２ｂ、並びに第２マルチプレクサ４３ａ及び４３ｂを制御する。具体的には、遅延制御回路４５は、設定角度が０〜９０度である場合には、０度の基準クロック信号（CLK_0）を選択するように第１マルチプレクサ４１ａを制御し、設定角度が９０〜１８０度である場合には、９０度の基準クロック信号（CLK_90）を選択するように第１マルチプレクサ４１ａを制御し、設定角度が１８０〜２７０度である場合には、１８０度の基準クロック信号（CLK_180）を選択するように第１マルチプレクサ４１ａを制御し、設定角度が２７０〜３６０度である場合には、２７０度の基準クロック信号（CLK_270）を選択するように第１マルチプレクサ４１ａを制御する。
【００６７】
第１実施形態の第１ＤＬＬ〜第５ＤＬＬの動作を説明する。図７は、第１実施形態の第１ＤＬＬ１４２〜第５ＤＬＬ１４６の動作説明図である。なお、図６の第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、図５の第１ＤＬＬ１４２及び第２ＤＬＬ１４３と同様に動作するので、その説明を省略する。
【００６８】
例えば、図７に示すように、基準角度Ａが４５度である場合には、遅延制御回路３５は、０度の基準クロック信号（CLK_0）を選択するように第１マルチプレクサ３１ａ及び３１ｃを制御し、９０度の基準クロック信号（CLK_90）を選択するように第１マルチプレクサ３１ｂを制御する。また、設定角度が４５度である場合には、図６の遅延制御回路４５は、図５の遅延制御回路３５と同様に動作する。
【００６９】
また、図５の遅延制御回路３５は、基準角度Ａ及び遅延補正信号（DLL_CNT）に基づいて、遅延補正信号算出用の遅延素子アレイ（例えば、遅延素子アレイ３２ｂ）の９０度分の遅延素子の数を調整する。例えば、遅延制御回路３５は、式１を用いて遅延素子の数を算出する。式１において、Ｎは遅延素子の数であり、Ｃは遅延補正信号（DLL_CNT）の値であり、ＭＯＤ（Ｒ／９０）はＲを９０で除したときの余りであり、Ｒは基準角度Ａである。遅延制御回路３５は、第１ＤＬＬ１４２〜第５ＤＬＬ１４６に対して最適化された遅延調整量を示す遅延補正信号（DLL_CNT）として、式１の算出結果を保持する。また、図６の遅延制御回路４５は、図５の遅延制御回路３５と同様に動作する。
【数１】
0005568057.tif 000002
【００７０】
遅延制御回路３５の動作例を説明する。
【００７１】
はじめに、遅延制御回路３５は、任意の相の基準クロック信号（例えば、０度の基準クロック信号（CLK_0））を選択するように、第１マルチプレクサ３１ｃを制御する。次に、遅延制御回路３５は、所定の象限（例えば、０度〜９０度の象限）で遅延補正信号算出用の遅延素子アレイ（例えば、遅延素子アレイ３２ｂ）の遅延素子の数を調整する。次に、遅延制御回路３５は、遅延素子の数を調整していない象限（以下、「未調整象限」という）の相の基準クロック信号を選択するように第１マルチプレクサ３１ｃを制御する。次に、遅延制御回路３５は、算出済みの遅延補正信号の値を起点として、未調整象限の遅延素子の数を調整する。これにより、第１ＤＬＬ１４２〜第５ＤＬＬ１４６の初期調整が終了する。初期調整では、未調整象限の遅延素子の数を調整するときに、算出済みの遅延補正信号（すなわち、遅延素子の数を調整した象限の算出結果）を使用するので、遅延補正信号の算出の所要時間を短縮することができる。
【００７２】
遅延制御回路３５は、第１ＤＬＬ１４２〜第５ＤＬＬ１４６の初期調整を終了すると、第１ＤＬＬ１４２〜第５ＤＬＬ１４６が動作している間に、位相比較回路３４を常に監視する。例えば、遅延素子アレイ３２ｂが遅延補正信号算出用の遅延素子アレイとして使用される場合には、遅延制御回路３５は、第２マルチプレクサ３３ｂに遅延素子アレイ３２ｂを選択させ、第１マルチプレクサ３１ｂに使用中のクロック（例えば、１２０度）に対して１相先のクロック（例えば、１８０度）を選択させ、第１マルチプレクサ３１ｃに使用中のクロックに対して１相前のクロック（例えば、９０度）を選択させる。遅延素子アレイ３２ｂは、遅延補正信号（DLL_CNT）を約９０度遅延させる。このとき、遅延制御回路３５は、クロックスキュー信号が遅延素子を通るパスの方が長いことを示す場合には、遅延補正信号の値を小さくし、クロックスキュー信号が遅延素子を通るパスの方が短いことを示す場合には、遅延補正信号の値を大きくする。例えば、電圧及び温度に応じて遅延素子の特性を補正する場合には、常に、遅延補正信号（DLL_CNT）の値を遅延補正信号算出用の遅延素子アレイを用いて、更新する必要がある。また、ディレイラインとして使用している象限以外の遅延補正信号（DLL_CNT）も、更新する必要がある。
【００７３】
この初期調整と並行して、第１ＤＬＬ１４２及び第２ＤＬＬ１４３は、それぞれ、初期調整後も第１検出信号（PD_OUT1）及び第２検出信号（PD_OUT2）を参照し続け、スキューの変化に応じて補正量ΔＣを変化させる。
【００７４】
第１実施形態のメモリアクセス回路１４は、上記のとおり、メモリアクセス回路１４のタイミングマージンにあわせて最適に配線されたクロックツリーでクロック間のスキューを補正する第１ＤＬＬ１４２〜第５ＤＬＬ１４６を備えている。従って、メモリアクセス回路１４の回路規模及び消費電力の増加を抑え、且つ、タイミングマージンを減少させることなく、メモリアクセス回路１４のクロックスキューを補正することができる。
【００７５】
（第２実施形態）
第２実施形態を説明する。第２実施形態は、第１実施形態より回路面積及び消費電力が小さい第１ＤＬＬ〜第５ＤＬＬの例である。なお、上述の実施形態と同様の説明は省略する。
【００７６】
第２実施形態の第１ＤＬＬ〜第５ＤＬＬの構成を説明する。図８は、第２実施形態の第１ＤＬＬ１４２〜第５ＤＬＬ１４６の構成図である。
【００７７】
図８は、４相クロックを使用する各ＤＬＬを示している。第１ＤＬＬ１４２〜第５ＤＬＬ１４６は、それぞれ、第１マルチプレクサ３１又は４１と、遅延素子アレイ３２又は４２と、遅延制御回路３５又は４５と、を備える。
【００７８】
第１マルチプレクサ３１及び４１は、それぞれ、４相の基準クロック信号（０度の基準クロック信号（CLK_0）、９０度の基準クロック信号（CLK_90）、１８０度の基準クロック信号（CLK_180）、及び２７０度の基準クロック信号（CLK_270））のうちの１相を選択する基準相マルチプレクサである。
【００７９】
遅延素子アレイ３２及び４２は、それぞれ、第１マルチプレクサ３１及び４１から出力された基準クロック信号を遅延させて、遅延基準クロック信号を生成し、生成した遅延基準クロック信号を第１ＤＬＬ出力（DLL_OUT1）〜第５ＤＬＬ出力（DLL_OUT5）として、システムクロックツリー１２２、第１論理回路１４８、又は第２論理回路１４９へ出力する。
【００８０】
遅延制御回路３５及び４５は、それぞれ、第１ＰＤ出力（PD_OUT1）、第２ＰＤ出力（PD_OUT2）、又は設定角度に基づいて、第１マルチプレクサ３１及び４１を制御する。具体的には、遅延制御回路３５及び４５は、それぞれ、基準角度Ａ及び設定角度が０〜９０度である場合には、０度の基準クロック信号（CLK_0）を選択するように第１マルチプレクサ３１及び４１を制御し、基準角度Ａ及び設定角度が９０〜１８０度である場合には、９０度の基準クロック信号（CLK_90）を選択するように第１マルチプレクサ３１及び４１を制御し、基準角度Ａ及び設定角度が１８０〜２７０度である場合には、１８０度の基準クロック信号（CLK_180）を選択するように第１マルチプレクサ３１及び４１を制御し、基準角度Ａ及び設定角度が２７０〜３６０度である場合には、２７０度の基準クロック信号（CLK_270）を選択するように第１マルチプレクサ３１及び４１を制御する。
【００８１】
また、第３ＤＬＬ１４４〜第５ＤＬＬ１４６の遅延制御回路４５は、設定角度及び遅延補正信号（DLL_CNT）に基づいて、遅延素子アレイ４２の９０度分の遅延素子の数を調整する。例えば、遅延制御回路４５は、式１を用いて遅延素子の数を算出する。遅延制御回路４５は、第３ＤＬＬ１４４〜第５ＤＬＬ１４６に対して最適化された遅延調整量に対応する遅延補正信号（DLL_CNT）として、式１の算出結果を保持する。
【００８２】
第２実施形態の第１ＤＬＬ１４２及び第２ＤＬＬ１４３は、第１実施形態の第２マルチプレクサ３３ａ及び３３ｂ、並びに位相比較回路３４を備えていない。また、第２実施形態の第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、第１実施形態の第２マルチプレクサ４３ａ及び４３ｂ、並びに位相比較回路４４を備えていない。また、第２実施形態の第１マルチプレクサ３１及び４１、並びに遅延素子アレイ３２及び４２は、第１実施形態より少ない。従って、タイミングマージンに対する要求が比較的緩いパスのクロックスキューを補正する場合に、第１ＤＬＬ１４２〜第５ＤＬＬ１４６の回路面積及び消費電力を第１実施形態より低減することができる。
【００８３】
（第３実施形態）
第３実施形態を説明する。第３実施形態は、遅延制御回路がｎ相クロックの補正量を算出する例である。なお、上述の実施形態と同様の説明は省略する。
【００８４】
第３実施形態の第１ＤＬＬ〜第５ＤＬＬの構成は、第１実施形態と同様である（図５及び図６）。
【００８５】
第３実施形態の第１ＤＬＬ〜第５ＤＬＬの動作を説明する。図９及び図１０は、第３実施形態の第１ＤＬＬ１４２〜第５ＤＬＬ１４６の動作説明図である。
【００８６】
遅延補正信号の合計（すなわち、３６０度）を遅延素子の数Ｎで除算すると、１相あたりの遅延補正信号（DLL_CNT）の理想値が得られる。例えば、ｍ（ｍは自然数）相目の遅延補正信号（DLL_CNT）を補正量の算出式は、（ｍ−１）相目までの遅延補正信号（DLL_CNT）の合計と（ｍ−１）相目までの理想値の合計との大小関係と、ｍ相目までの遅延補正信号（DLL_CNT）の合計とｍ相目までの理想値の合計との大小関係と、に応じて変わる。例えば、３６０×（ｍ−１）／Ｎ度を設定するためには、ｍ相目の０度補正値が必要となる。
【００８７】
図９は、４相クロックにおいて、実際の基準クロック信号（CLK_90、CLK_180、及びCLK_270）が、基準クロック信号（CLK_0）より短い場合の遅延補正信号（DLL_CNT）を示している。
【００８８】
１相目（０度以上）では、遅延補正信号（DLL_CNT）８１が９０度（理想値）より小さい。従って、遅延制御回路３５及び４５は、式２を用いて、基準クロック信号（CLK_90）と９０度（理想値）との差Ｄ（１）を算出する。式２において、SUMは遅延補正信号（DLL_CNT）の合計であり、DLL_CNT(1)は１相目の遅延補正信号（DLL_CNT）８１である。補正後の遅延補正信号（DLL_CNT）は、１相目（０度以上）の遅延補正信号（DLL_CNT）８１及び差Ｄ（１）の和に相当する。
【数２】
0005568057.tif 000003
【００８９】
２相目（９０度以上）では、基準クロック信号（CLK_90）が９０度（理想値）より小さい。従って、遅延制御回路３５及び４５は、それぞれ、基準クロック信号（CLK_90）の位相に差Ｄ（１）を加算した値（０度補正値）を算出する。
【００９０】
２相目（９０度以上）では、遅延補正信号（DLL_CNT）８３が１８０度（理想値）より小さい。従って、遅延制御回路３５及び４５は、それぞれ、式３を用いて、基準クロック信号（CLK_180）と１８０度（理想値）との差Ｄ（２）を算出する。式３において、SUMは遅延補正信号（DLL_CNT）の合計であり、SUM(2)は２相目までの遅延補正信号（DLL_CNT）の合計である。補正後の遅延補正信号（DLL_CNT）は、２相目（９０度以上）の遅延補正信号（DLL_CNT）８３及び差Ｄ（２）の和に相当する。
【数３】
0005568057.tif 000004
【００９１】
図１０は、４相クロックにおいて、実際の基準クロック信号（CLK_90、CLK_180、及びCLK_270）が、基準クロック信号（CLK_0）より長い場合の遅延補正信号（DLL_CNT）を示している。
【００９２】
１相目（０度以上）では、遅延補正信号（DLL_CNT）９１が９０度（理想値）より大きい。従って、遅延制御回路３５及び４５は、それぞれ、式４を用いて、基準クロック信号（CLK_90）と９０度（理想値）との差Ｄ（３）を算出する。式４において、DLL_CNT(1)は１相目の遅延補正信号（DLL_CNT）９１であり、SUMは遅延補正信号（DLL_CNT）の合計である。補正後の遅延補正信号（DLL_CNT）は、１相目（０度以上）の遅延補正信号（DLL_CNT）９１及び差Ｄ（３）の和に相当する。
【数４】
0005568057.tif 000005
【００９３】
区間９２の角度を設定する場合には、基準クロック信号（CLK_0）を起点に、９０度分の遅延である遅延補正信号（DLL_CNT）９１を９０度補正値として設定する。区間９２は、基準クロック信号（CLK_90）の実際値と理想値との差分を表す。換言すると、区間９２は、基準クロック信号（CLK_0）を起点にして設定角度を設定する場合の位相の範囲を表す。次に、遅延補正回路３５及び４５は、それぞれ、“（設定角度から９０度を引いた値）＋（９０度補正値）”を遅延素子アレイ３２ａ又は３２ｂ、及び４２ａ又は４２ｂに設定する。
【００９４】
区間９３の角度を設定する場合には、遅延補正回路３５及び４５は、それぞれ、基準クロック信号（CLK_90）を起点に、設定角度（すなわち、遅延補正信号（DLL_CNT）９１）から差Ｄ（３）を引いた値を遅延素子アレイ３２ａ又は３２ｂ、及び４２ａ又は４２ｂに設定する。
【００９５】
第３実施形態では、遅延制御回路３５及び４５が、それぞれ、ｎ相クロックの補正量を算出する。従って、ｎ相クロックのスキュー差によるタイミングマージンの減少を問題とする場合に、補正の精度を改善することができる。
【００９６】
（第４実施形態）
第４実施形態を説明する。システムクロック信号（SYSTEM_CLK）がＰＬＬ１４１に供給される例である。なお、上述の実施形態と同様の説明は省略する。
【００９７】
第４実施形態のメモリアクセス装置の構成を説明する。図１１は、第４実施形態のメモリアクセス装置１０の構成図である。
【００９８】
図１１に示すように、メモリアクセス装置１０は、第１実施形態〜第３実施形態と同様に、システム回路１２と、メモリアクセス回路１４と、を備える。メモリアクセス回路１４は、メモリ２０と、システム回路１２と、に接続される。
【００９９】
システム回路１２は、メモリアクセスコマンド（MAC）を発行する回路である。システム回路１２は、メモリアクセスコマンド発行部１２１と、システムクロックツリー１２２と、メモリデ−タ制御部１２４ と、を備える。
【０１００】
メモリアクセス回路１４は、メモリアクセスを制御する回路である。メモリアクセス回路１４は、ＰＬＬ１４１と、第２ＤＬＬ１４３〜第５ＤＬＬ１４６と、第２ＰＤ１４７ｂと、第１論理回路１４８〜第３論理回路１５０と、第１ファイクロックツリー１５１〜第３ファイクロックツリー１５３と、設定角度算出部１５４と、マスタＤＬＬ１５５と、第１増幅回路１５６〜第４増幅回路１５９と、を備える。なお、ＤＬＬの数は、５つに限られるものではない。すなわち、メモリアクセス回路１４は、５つ以上のＤＬＬを備えても良い。また、メモリアクセスコマンド発行部１２１及び第１論理回路１４８〜第３論理回路１５０は、幾つでも良い。
【０１０１】
メモリアクセスコマンド発行部１２１は、メモリ２０へのアクセスを命令するメモリアクセスコマンド（MAC）を発行するモジュールである。メモリアクセスコマンド発行部１２１は、バス４０を介して転送されるリクエスト（REQ）と、システムクロックツリー１２２により生成されるシステムクロック信号（SYSTEM_CLK）と、を入力し、入力したリクエスト（REQ）及びシステムクロック信号（SYSTEM_CLK）に基づいてメモリアクセスコマンド（MAC）を発行する。
【０１０２】
システムクロックツリー調整部１２２は、基準信号（REF）を所定の第３クロックツリー長ＴＬ３の分だけ遅延させて、システムクロック信号（SYSTEM_CLK）を生成するモジュールである。
【０１０３】
メモリデ−タ制御部１２４ は、メモリアクセスコマンド発行部１２１が発行したメモリアクセスコマンド（MAC）に応じて、バス４０から入力されるデータ（DATA）を第１論理回路１４８と、第２論理回路１４９と、へ出力する。
【０１０４】
ＰＬＬ１４１は、基準周波数とＰＬＬ出力との位相差を検出し、検出した位相差に基づいて基準周波数にロックされたＰＬＬ出力を生成する回路である。ＰＬＬ出力は、基準クロック信号（PHY_CLK_CK）のソース信号である。すなわち、システムクロック信号（SYSTEM_CLK）と基準クロック信号（PLL_CLK_CK）は、ＰＬＬ１４１によりデスキューされている。
【０１０５】
第１ファイクロックツリー１５１は、所定の第１クロックツリー長ＴＬαの分だけＰＬＬ出力を遅延させて基準クロック信号（PHY_CLK_CK）を生成するモジュールである。基準クロック信号（PHY_CLK_CK）は、基準周波数の逓倍の周波数を有する。基準クロック信号（PHY_CLK_CK）は、メモリ２０の動作タイミングを制御するためのタイミング制御信号のソース信号（すなわち、メモリ２０のソースクロック）であるので、メモリアクセス回路１４で使用される信号の中で、クロックジッタを低減する優先度が最も高い信号であり、配線長が最も短い配線で伝送される。
【０１０６】
マスタＤＬＬ１５５は、クロックスキューの補正量ΔＣの決定に用いられる遅延補正信号（DLL_CNT）を生成する回路である。マスタＤＬＬ１５５は、基準クロック信号（PHY_CLK_CK）を入力し、入力した基準クロック信号（PHY_CLK_CK）のクロックをカウントして遅延補正信号（DLL_CNT）を生成する。遅延補正信号（DLL_CNT）は、補正量ΔＣの基準となる、基準クロック信号の１サイクル分の周期に相当する遅延素子数を示す信号である。
【０１０７】
第２ファイクロックツリー１５２は、基準クロック信号（PHY_CLK_CK）を入力し、ＰＬＬ出力に対して所定の第２クロックツリー長ＴＬ２の分だけ基準クロック信号（PHY_CLK_CK）を遅延させて、ＤＬＬクロック信号（DLL_CLK）を生成するモジュールである。ＤＬＬクロック信号（DLL_CLK）は、タイミング制御信号の一種であるストローブ信号（DQS）及びデータ信号（DQ）のソース信号である。
【０１０８】
第２ＤＬＬ１４３は、基準クロック信号（PHY_CLK_CK）とファイクロック信号（PHY_CLK）との間のクロックスキューを補正するクロックデスキュー回路である。ファイクロック信号（PHY_CLK）は、メモリアクセス回路１４内で使用される信号である。第２ＤＬＬ１４３は、基準クロック信号（PHY_CLK_CK）と、第２ＰＤ１４７ｂの出力である第２ＰＤ出力（PD_OUT2）と、遅延補正信号（DLL_CNT）と、を入力し、第２ＰＤ出力（PD_OUT2）に基づいて補正方向を決定し、遅延補正信号（DLL_CNT）に基づいて補正量ΔＣ１を決定し、決定した補正方向及び補正量ΔＣ１に基づいて基準クロック信号（PHY_CLK_CK）を遅延させて、第２ＤＬＬ出力（DLL_OUT2）を生成する。第２ＤＬＬ出力（DLL_OUT2）は、ファイクロック信号（PHY_CLK）のソース信号である。また、第２ＤＬＬ１４３は、補正量ΔＣ１に対応する基準角度Ａを生成する。
【０１０９】
第３ファイクロックツリー１５３は、第２ＤＬＬ出力（DLL_OUT2）を入力し、ＰＬＬ出力に対して所定の第２クロックツリー長ＴＬ２の分だけ第２ＤＬＬ出力（DLL_OUT2）を遅延させて、ファイクロック信号（PHY_CLK）を生成するモジュールである。すなわち、ファイクロック信号（PHY_CLK）は、クロックスキューが補正された第２ＤＬＬ出力（DLL_OUT2）に基づいて生成される信号である。ファイクロック信号（PHY_CLK）のクロックツリー長は、ＤＬＬクロック信号（DLL_CLK）のクロックツリー長と等しい。
【０１１０】
設定角度算出部１５４は、第３ＤＬＬ１４４〜第５ＤＬＬ１４６へ供給すべき設定角度を算出するモジュールである。設定角度は、第１論理回路１４８の出力であるストローブ信号（DQS）と、第２論理回路１４９の出力であるデータ信号（DQ）及びデータマスク信号（DM）と、第３論理回路１５０の出力であるアドレス信号（ADDR）及びコマンド信号（CMD）との間に設定すべき位相差を示す情報である。設定角度算出部１５４は、第２ＤＬＬ１４３により生成された基準角度Ａと、メモリアクセス回路１４に接続された所定の外部回路（例えば、システム回路１２）により生成された所定の位相角度Ｂと、を加算し、基準角度Ａ及び位相角度Ｂの和を設定角度として第３ＤＬＬ１４４〜第５ＤＬＬ１４６へ出力する。位相角度Ｂは、第３ＤＬＬ１４４〜第５ＤＬＬ１４６のそれぞれについて、システム回路１２により個別に決められる任意の追加補正量を示す角度であって、ストローブ信号（DQS）と、データ信号（DQ）及びデータマスク信号（DM）と、第３論理回路１５０の出力であるアドレス信号（ADDR）及びコマンド信号（CMD）との間に設定すべき位相差に対応する角度である。すなわち、システム回路１２は、第３ＤＬＬ１４４用の位相角度と、第４ＤＬＬ１４５用の位相角度と、第５ＤＬＬ１４６用の位相角度と、を個別に決める。なお、位相角度Ｂは、ストローブ信号（DQS）と、データ信号（DQ）と、アドレス信号（ADDR）及びコマンド信号（CMD）との間に設定すべき位相差に加えて、ストローブ信号（DQS）とメモリ基準信号（CK）との間に設定すべき位相差を含んでも良い。
【０１１１】
第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、それぞれ、基準クロック信号（PHY_CLK_CK）とＤＬＬクロック信号（DLL_CLK）との間のクロックスキューを補正するクロックデスキュー回路である。第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、それぞれ、設定角度と、ＤＬＬクロック信号（DLL_CLK）と、遅延補正信号（DLL_CNT）と、を入力し、設定角度及び遅延補正信号（DLL_CNT）に基づいて補正方向及び補正量を決定し、決定した補正方向及び補正量に基づいて基準クロック信号（PHY_CLK_CK）を遅延させて第３ＤＬＬ出力（DLL_OUT3）〜第５ＤＬＬ出力（DLL_OUT5）を生成する。第３ＤＬＬ出力（DLL_OUT3）は、ストローブ信号（DQS）のソース信号である。第４ＤＬＬ出力（DLL_OUT4）は、データ信号（DQ）及びデータマスク信号（DM）のソース信号である。第５ＤＬＬ出力（DLL_OUT5）は、アドレス信号（ADDR）及びコマンド信号（CMD）のソース信号である。
【０１１２】
第２ＰＤ１４７ｂは、ファイクロック信号（PHY_CLK）のクロックエッジの位相と基準クロック信号（PHY_CLK_CK）のクロックエッジの位相との間のずれを検出する回路（例えばフリップフロップ）である。第２ＰＤ１４７ｂは、ファイクロック信号（PHY_CLK）と、基準クロック信号（PHY_CLK_CK）と、を入力し、ファイクロック信号（PHY_CLK）のクロックエッジと基準クロック信号（PHY_CLK_CK）のクロックエッジとのずれを検出し、ファイクロック信号（PHY_CLK）のシステムクロック信号（SYSTEM_CLK）に対する遅延方向（ファイクロック信号（PHY_CLK）がシステムクロック信号（SYSTEM_CLK）に対して遅れているか又は進んでいるか）を示す第２検出信号（PD_OUT2）を生成する。第２検出信号（PD_OUT2）は、ファイクロック信号（PHY_CLK）と基準クロック信号（PHY_CLK_CK）の位相差に応じた１ビットの信号であって、例えば、“０”はファイクロック信号（PHY_CLK）が基準クロック信号（PHY_CLK_CK）に対して遅れていることを示し、“１”はファイクロック信号（PHY_CLK）が基準クロック信号（PHY_CLK_CK）に対して進んでいることを示す。
【０１１３】
第１論理回路１４８は、メモリ２０のストローブ信号（DQS）を生成する回路である。第１論理回路１４８は、ファイクロック信号（PHY_CLK）と、データ（DATA）と、第３ＤＬＬ出力（DLL_OUT3）と、を入力し、入力した信号からストローブ信号（DQS）を生成し、生成したストローブ信号（DQS）をメモリ２０へ出力する。なお、第１論理回路１４８は、第３ＤＬＬ１４４に組み込まれても良い。
【０１１４】
第２論理回路１４９は、メモリ２０のデータ信号（DQ）及びデータマスク信号（DM）を生成する回路である。第２論理回路１４９は、ファイクロック信号（PHY_CLK）と、データ（DATA）と、第４ＤＬＬ出力（DLL_OUT4）と、を入力し、入力した信号からデータ信号（DQ）を生成し、生成したデータ信号（DQ）をメモリ２０へ出力する。なお、第２論理回路１４９は、第４ＤＬＬ１４５に組み込まれても良い。
【０１１５】
第３論理回路１５０は、メモリ２０のアドレス信号（ADDR）及びコマンド信号（CMD）を生成する回路である。第３論理回路１５０は、ファイクロック信号（PHY_CLK）と、メモリアクセスコマンド（MAC）と、第５ＤＬＬ出力（DLL_OUT5）と、を入力し、入力した信号からアドレス信号（ADDR）及びコマンド信号（CMD）を生成し、生成したアドレス信号（ADDR）及びコマンド信号（CMD）を、第３増幅回路１５８を介してメモリ２０へ出力する。なお、第３論理回路１５０は、第５ＤＬＬ１４６に組み込まれても良い。
【０１１６】
第１増幅回路１５６は、第１論理回路１４８から出力されたストローブ信号（DQS）を増幅し、増幅したストローブ信号（DQS）をメモリ２０へ出力する回路である。第２増幅回路１５７は、第２論理回路１４９から出力されたデータ信号（DQ）及びデータマスク信号（DM）を増幅し、増幅したデータ信号（DQ）及びデータマスク信号（DM）をメモリ２０へ出力する回路である。第３増幅回路１５８は、第３論理回路１５０から出力されたアドレス信号（ADDR）及びコマンド信号（CMD）を増幅し、増幅したアドレス信号（ADDR）及びコマンド信号（CMD）をメモリ２０へ出力する回路である。第４増幅回路１５９は、基準クロック信号（PHY_CLK_CK）を増幅してメモリ２０のタイミング制御信号の一種であるメモリ基準信号（CK）を生成し、生成したメモリ基準信号（CK）をメモリ２０へ出力する回路である。
【０１１７】
第４実施形態のメモリアクセス装置で取り扱われる信号を説明する。図１２は、第４実施形態のメモリアクセス装置１０で取り扱われる信号波形図である。
【０１１８】
図１２に示すように、ＰＬＬ１４１の位相調整機能により、システムクロック信号（SYSTEM_CLK）と基準クロック信号（PHY_CLK_CK）の遅延量の差分ＴＬαは、補正量ΔＣαで補正される。このとき、ＰＬＬ１４１から見た基準クロックはシステムクロック信号（SYSTEM_CLK）となる。
【０１１９】
ある時点において、第２ＰＤ入力は、ＰＬＬ出力に対して第２クロックツリー長ＴＬ２だけ遅延している。この第２ＰＤ入力は、第２ＤＬＬ１４３がクロックスキューを補正していないときに第３ファイクロックツリー１５３から出力される信号である。第２クロックツリー長ＴＬ２は、第１クロックツリー長ＴＬ１より長く、且つ、第３クロックツリー長ＴＬ３より短い。これは、第３ファイクロックツリー１５３が、ＰＬＬ出力に対して第２クロックツリー長ＴＬ２の分だけ第２ＤＬＬ出力（DLL_OUT2）を遅延させるためである。この場合に、第２ＰＤ１４７ｂは、基準クロック信号（PHY_CLK_CK）と第２ＰＤ入力との間に第２クロックツリー長ＴＬ２の分の位相差が存在することを示す第２検出信号（PD_OUT2）を生成する。次いで、第２ＤＬＬ１４３は、第２検出信号（PD_OUT2）に基づいて基準クロック信号（PHY_CLK_CK）の補正量ΔＣ１を算出し、基準クロック信号（PHY_CLK_CK）を補正量ΔＣ１だけ補正して第２ＤＬＬ出力（DLL_OUT2）を生成する。次いで、第３ファイクロックツリー１５３は、第２ＤＬＬ出力（DLL_OUT2）を遅延させて、ファイクロック信号（PHY_CLK）を生成する。これにより、ファイクロック信号（PHY_CLK）の位相が基準クロック信号（PHY_CLK_CK）と等しくなる。
【０１２０】
第４実施形態によれば、第１実施形態〜第３実施形態の第１ＤＬＬ１４２及び第１ＰＤ１４７ａを省略したメモリアクセス装置１０により、第１実施形態〜第３実施形態と同様の効果が得られる。これにより、第１実施形態〜第３実施形態と比べて、メモリアクセス装置１０の回路規模を縮小することができる。
【０１２１】
なお、本実施形態では、データ信号（DQ）及びストローブ信号（DQS）を生成する場合に、バイトごとに複数のＤＬＬを組み合わせても良い。このとき、組み合わせられるＤＬＬの構成は、同一であっても良いし、互いに異なっていても良い。例えば、第１ＤＬＬ１４２及び第２ＤＬＬ１４３は、図５の構成を備え、第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、図８の構成を備えていても良い。この場合には、図８の構成を備える第３ＤＬＬ１４４〜第５ＤＬＬ１４６は、図５の構成を備える第１ＤＬＬ１４２又は第２ＤＬＬ１４３から遅延補正信号（DLL_CNT）を取得することにより、回路面積を抑え、且つ、精度を保ったまま、複数の位相を調整することができる。
【０１２２】
また、本実施形態では、第２論理回路１４９がデータ信号（DQ）及びデータマスク信号（DM）を出力する例について説明したが、第２論理回路１４９は、データ信号（DQ）のみを出力しても良い。
【０１２３】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１２４】
１  メモリシステム
１０  メモリアクセス装置
１２  システム回路
１２１  メモリアクセスコマンド発行部
１２２  システムクロックツリー
１２４  メモリデータ制御部
１４  メモリアクセス回路
１４１  ＰＬＬ
１４２  第１ＤＬＬ
１４３  第２ＤＬＬ
１４４  第３ＤＬＬ
１４５  第４ＤＬＬ
１４６  第５ＤＬＬ
１４７ａ  第１ＰＤ
１４７ｂ  第２ＰＤ
１４８  第１論理回路
１４９  第２論理回路
１５０  第３論理回路
１５１  第１ファイクロックツリー
１５２  第２ファイクロックツリー
１５３  第３ファイクロックツリー
１５４  設定角度算出部
１５５  マスタＤＬＬ
１５６  第１増幅回路
１５７  第２増幅回路
１５８  第３増幅回路
１５９  第４増幅回路
２０  メモリ
３０  ＣＰＵ
４０  バス
【図１】
0005568057.tif 000006
【図２】
0005568057.tif 000007
【図３】
0005568057.tif 000008
【図４】
0005568057.tif 000009
【図５】
0005568057.tif 000010
【図６】
0005568057.tif 000011
【図７】
0005568057.tif 000012
【図８】
0005568057.tif 000013
【図９】
0005568057.tif 000014
【図１０】
0005568057.tif 000015
【図１１】
0005568057.tif 000016
【図１２】
0005568057.tif 000017