(57)【要約】      （修正有）【課題】高速化にともなって、データの波形が劣化した場合に、データストローブ信号によるデータ信号の取り込みを確実にする。【解決手段】第１の選択部４は、外部から入力される第１のストローブ信号Strobeに基づいて、外部からダブルデータレートで入力されるデータ信号Ｄａｔａの伝送用の複数のレーンＬａｎｅ０、Ｌａｎｅ１のうちのいずれを選択するかを示す第１の選択信号ｌａｎｅ＿ｓｅｌ１を生成する。ゲート部２は、第１の選択信号ｌａｎｅ＿ｓｅｌ１に基づいて、データ信号Dataを複数のレーンのいずれかに振り分けて出力する。ラッチ部３は、第１の選択信号ｌａｎｅ＿ｓｅｌ１に基づいて、複数のレーンＬａｎｅ０、Ｌａｎｅ１に出力されたデータ信号Ｄａｔａ１＿０、Ｄａｔａ１＿１をラッチして、データ信号Ｄａｔａ２＿０、Ｄａｔａ２＿１を出力する。【選択図】図１
2018055330.tif 000002
【特許請求の範囲】
【請求項１】
外部からダブルデータレートで入力されるデータ信号を伝送する半導体装置であって、
外部から入力される第１のストローブ信号に基づいて、前記データ信号の伝送用の複数のレーンのうちのいずれを選択するかを示す第１の選択信号を生成する第１の選択部と、
前記第１の選択信号に基づいて、前記データ信号を前記複数のレーンのいずれかに振り分けて出力するゲート部と、
前記第１の選択信号に基づいて、前記複数のレーンに出力された前記データ信号をラッチするラッチ部とを備えた、半導体装置。
【請求項２】
前記複数のレーンは、第１のレーンと第２のレーンであり、
前記第１の選択部は、前記第１のストローブ信号に従って、前記第１の選択信号を前記第１のレーンの選択を示す第１のレベル、または前記第２のレーンの選択を示す第２のレベルのいずれかに設定する、請求項１記載の半導体装置。
【請求項３】
前記第１の選択部は、２進カウンタを含み、
前記２進カウンタは、前記第１のストローブ信号の立ち上がりのタイミングおよび立ち下りのタイミングに同期して、前記第１の選択信号のレベルを変更する、請求項２記載の半導体装置。
【請求項４】
前記ゲート部は、
前記データ信号と前記第１の選択信号のレベルを反転させた信号の論理積を前記第１のレーンへ出力する第１の論理回路と、
前記データ信号と前記第１の選択信号の論理積を前記第２のレーンへ出力する第２の論理回路とを含む、請求項３記載の半導体装置。
【請求項５】
前記ラッチ部は、
前記第１の選択信号のレベルと前記第１のレベルとを比較して、同一のレベルのときにはハイレベルの信号を出力し、相違するときにはロウレベルの信号を出力する第１の比較回路と、
前記データ信号を受けるデータ入力端子と、前記第１の比較回路の出力信号を受けるイネーブル端子とを有する第１の透過型ラッチと、
前記第１の選択信号のレベルと前記第２のレベルとを比較して、同一のレベルのときにはハイレベルの信号を出力し、相違するときにはロウレベルの信号を出力する第２の比較回路と、
前記データ信号を受けるデータ入力端子と、前記第２の比較回路の出力信号を受けるイネーブル端子とを有する第２の透過型ラッチとを含む、請求項３記載の半導体装置。
【請求項６】
内部クロック信号に基づいて生成される第２のストローブ信号の立ち上がりのタイミングに同期して、前記第１の透過型ラッチの出力を保持する第１のフリップフロップと、
前記第２のストローブ信号の立ち下りのタイミングに同期して、前記第２の透過型ラッチの出力を保持する第２のフリップフロップとを備える、請求項５記載の半導体装置。
【請求項７】
前記複数のレーンは、第１〜第Ｎのレーンであり、
前記第１の選択部は、前記第１のストローブ信号に従って、前記第１の選択信号を前記第１〜第Ｎのレーンの選択をそれぞれ示す第１〜第Ｎの値のいずれかに設定する、請求項１記載の半導体装置。
【請求項８】
前記第１の選択部は、第１のＮ進カウンタを含み、
前記第１のＮ進カウンタは、前記第１のストローブ信号の立ち上がりのタイミングおよび立ち下りのタイミングに同期して、前記第１の選択信号の値を「１」だけ増加する、請求項７記載の半導体装置。
【請求項９】
前記ゲート部は、
第１〜第Ｎセレクタを含み、
第ｉセレクタは、前記第１の選択信号の値が第ｉの値のときに前記データ信号を出力し、前記第１の選択信号の値が第ｉの値以外のときに０を出力する、ただし、ｉ＝１〜Ｎのいずれかである、請求項８記載の半導体装置。
【請求項１０】
前記ラッチ部は、
第１〜第Ｎ比較回路と、
第１〜第Ｎ透過型ラッチとを含み、
第ｉ比較回路は、前記第１の選択信号の値と第ｉの値とを比較して、同一のときにはハイレベルの信号を出力し、相違するときにはロウレベルの信号を出力し、
第ｉ透過型ラッチは、前記データ信号を受けるデータ入力端子と、前記第ｉ比較回路の出力信号を受けるイネーブル端子とを有する、請求項８記載の半導体装置。
【請求項１１】
内部クロック信号に基づいて生成される第２のストローブ信号に従って、第１〜第Ｎ透過型ラッチの出力のうちのいずれを選択するかを示す第２の選択信号を生成する第２の選択部と、
第１〜第Ｎ透過型ラッチの出力を受け、前記第２の選択信号の値に基づいて、第１〜第Ｎ透過型ラッチの出力のうちのいずれか１つを出力するレーンセレクタとを備え、
前記第２の選択部は、第２のＮ進カウンタを含み、
前記第２のＮ進カウンタは、前記第２のストローブ信号の立ち上がりのタイミングおよび立ち下りのタイミングに同期して、前記第２の選択信号の値を「１」だけ増加する、請求項１０記載の半導体装置。
【請求項１２】
前記第２のストローブ信号の立ち上がりのタイミングに同期して、前記レーンセレクタの出力を保持する第１のフリップフロップと、
前記第２のストローブ信号の立ち下りのタイミングに同期して、前記レーンセレクタの出力を保持する第２のフリップフロップとを備える、請求項１１記載の半導体装置。
【請求項１３】
内部クロック信号に基づいて生成される第２のストローブ信号に従って、第１〜第Ｎ透過型ラッチの出力のうちのいずれを選択するかを示す第２の選択信号を生成する第２の選択部と、
第１〜第Ｎ透過型ラッチの出力を受け、前記第２の選択信号の値および前記第２の選択信号の値を「１」だけ増加させた値に基づいて、第１〜第Ｎ透過型ラッチの出力のうちのいずれか２つを出力するレーンセレクタとを備え、
前記第２の選択部は、第２のＮ進カウンタを含み、
前記第２のＮ進カウンタは、前記第２のストローブ信号の立ち上がりのタイミングに同期して、前記第２の選択信号の値を「２」だけ増加する、請求項１０記載の半導体装置。
【請求項１４】
前記第２のストローブ信号の立ち上がりのタイミングに同期して、前記レーンセレクタの第１の出力を保持する第１のフリップフロップと、
前記第２のストローブ信号の立ち上りのタイミングに同期して、前記レーンセレクタの第２の出力を保持する第２のフリップフロップとを備える、請求項１３記載の半導体装置。
【請求項１５】
前記内部クロック信号の立ち上がりのタイミングに同期して、前記第１のフリップフロップの出力を保持する第３のフリップフロップと、
前記内部クロック信号の立ち上がりのタイミングに同期して、前記第２のフリップフロップの出力を保持する第４のフリップフロップとを備える、請求項６、請求項１２または請求項１４記載の半導体装置。
【請求項１６】
外部から入力される第１のストローブ信号に基づいて、外部から入力されるデータ信号をレベルセンシティブ動作によって検出し、かつ保持する回路と、
チップ内部のクロック信号に同期した第２のストローブ信号に基づいて、前記ラッチの出力を取り込むフリップフロップとを備える、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、たとえば、メモリインターフェースを備えた半導体装置に関する。
【背景技術】
【０００２】
従来から、ＤＤＲ（Double Data Rate）メモリデバイスに対する読出しまたは書き込みのためのＤＤＲデータ受信回路が知られている（たとえば、特許文献１を参照）。ＤＤＲデータ受信回路では、ストローブ信号を用いてデータが取り込まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００６−５０５８６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載のようなＤＤＲデータ受信回路において、高速化にともなって、データの波形が劣化した場合に、ストローブ信号によるデータ信号の取り込みができなくなる場合がある。
【０００５】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施形態の半導体装置は、外部から入力されるストローブ信号に基づいて、外部からダブルデータレートで入力されるデータ信号の伝送用の複数のレーンのうちのいずれかを選択し、この選択に基づいて、データ信号を複数のレーンのいずれかに振り分けて出力するとともに、複数のレーンに出力されたデータ信号をラッチする。
【発明の効果】
【０００７】
一実施形態によれば、データの波形が劣化した場合でも、データ信号を確実に取り込むことができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態の半導体装置の構成を表わす図である。
【図２】比較例のサンプル回路の構成を表わす図である。
【図３】比較例のサンプル回路の内部の信号（データ）、サンプル回路に入力される信号（データ）、サンプル回路から出力される信号（データ）のタイミング図である。
【図４】実施形態の半導体装置の構成を表わす図である。
【図５】第２の実施形態のサンプル回路の構成を表わす図である。
【図６】第２の実施形態のゲート部の構成を表わす図である。
【図７】第２の実施形態のラッチ部の構成を表わす図である。
【図８】第２の実施形態のサンプル回路の内部の信号（データ）、サンプル回路に入力される信号（データ）、サンプル回路から出力される信号（データ）のタイミング図である。
【図９】第３の実施形態のサンプル回路の構成を表わす図である。
【図１０】第３の実施形態のゲート部の構成を表わす図である。
【図１１】第３の実施形態のラッチ部の構成を表わす図である。
【図１２】第３の実施形態のサンプル回路の内部の信号（データ）、サンプル回路に入力される信号（データ）、サンプル回路から出力される信号（データ）のタイミング図である。
【図１３】第４の実施形態のサンプル回路の構成を表わす図である。
【図１４】第４の実施形態のサンプル回路の内部の信号（データ）、サンプル回路に入力される信号（データ）、サンプル回路から出力される信号（データ）のタイミング図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態について図面を用いて説明する。
［第１の実施形態］
図１は、第１の実施形態の半導体装置１の構成を表わす図である。
【００１０】
この半導体装置１は、外部からダブルデータレートで入力されるデータ信号を伝送する半導体装置である。半導体装置１は、ゲート部２と、第１の選択部４と、ラッチ部３とを備える。
【００１１】
第１の選択部４は、外部から入力される第１のストローブ信号Ｓｔｒｏｂｅ１に基づいて、外部からダブルデータレートで入力されるデータ信号Ｄａｔａの伝送用の複数のレーンＬａｎｅ０、Ｌａｎｅ１のうちのいずれを選択するかを示す第１の選択信号ｌａｎｅ＿ｓｅｌ１を生成する。
【００１２】
ゲート部２は、第１の選択信号ｌａｎｅ＿ｓｅｌ１に基づいて、データ信号Ｄａｔａを複数のレーンのいずれかに振り分けて出力する。
【００１３】
ラッチ部３は、第１の選択信号ｌａｎｅ＿ｓｅｌ１に基づいて、複数のレーンＬａｎｅ０、Ｌａｎｅ１に出力されたデータ信号Ｄａｔａ１＿０、Ｄａｔａ１＿１をラッチして、データ信号Ｄａｔａ２＿０、Ｄａｔａ２＿１を出力する。
【００１４】
以上のように、本実施の形態によれば、ラッチ部３によって、データ信号Ｄａｔａをラッチするため、第１のストローブ信号Ｓｔｒｏｂｅ１に対して、データ信号Ｄａｔａの到来するタイミングのずれの幅が大きい場合でも、データ信号Ｄａｔａを確実に取り込んで伝送することができる。
【００１５】
［比較例］
図２は、比較例のサンプル回路９００の構成を表わす図である。
【００１６】
サンプル回路９００は、フリップフロップＦＦ１と、フリップフロップＦＦ２ｒ，ＦＦ２ｆと、ＦＩＦＯ９０９と、ライトポインタ供給部９１と、リードポインタ供給部９２と、フリップフロップＦＦ３ｒ，ＦＦ３ｆと、フリップフロップＦＦ４ｒ，ＦＦ４ｆとを備える。
【００１７】
フリップフロップＦＦ１は、レシーバＲ２から出力される外部ストローブ信号Ｓｔｒｏｂｅ１の立ち上がりエッジが発生するタイミングで、レシーバＲ１から出力されるダブルデータデートで入力されるデータ信号Ｄａｔａを取り込み、保持してデータ信号Ｄａｔａ＿１として出力する。
【００１８】
フリップフロップＦＦ２ｒは、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち下がりエッジが発生するタイミングで、データ信号Ｄａｔａ＿１を取り込み、保持してデータ信号Ｄａｔａ＿２ｒとして出力する。フリップフロップＦＦ２ｆは、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち下がりエッジが発生するタイミングで、データ信号Ｄａｔａを取り込み、保持してデータ信号Ｄａｔａ＿２ｆとして出力する。
【００１９】
ライトポインタ供給部９１は、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち下がりエッジが発生するタイミングで、ライトポインタwｒptの値を更新する。ＦＩＦＯ９０は、ライトポインタwｒptで示される位置にデータ信号Ｄａｔａ＿２ｒ、Ｄａｔａ＿２ｆを書き込む。
【００２０】
リードポインタ供給部９２は、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングで、リードポインタrdptの値を更新する。ＦＩＦＯ９０は、リードポインタrdptで示される位置に格納されているデータをデータ信号Ｄａｔａ＿３ｒ、Ｄａｔａ＿３ｆとして出力する。
【００２１】
フリップフロップＦＦ３ｒは、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングで、データ信号Ｄａｔａ＿３ｒを取り込み、保持してデータ信号Ｄａｔａ＿４ｒとして出力する。フリップフロップＦＦ３ｆは、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングで、データ信号Ｄａｔａ＿３ｆを取り込み、保持してデータ信号Ｄａｔａ＿４ｆとして出力する。
【００２２】
フリップフロップＦＦ４ｒは、チップクロック信号ＣｈｉｐＣｌｏｃｋの立ち上がりエッジが発生するタイミングで、データ信号Ｄａｔａ＿４ｒを取り込み、保持してデータ信号ＯｕｔｐｕｔＤａｔａ＿ｒとして出力する。フリップフロップＦＦ４ｆは、チップクロック信号ＣｈｉｐＣｌｏｃｋの立ち上がりエッジが発生するタイミングで、データ信号Ｄａｔａ＿４ｆを取り込み、保持してデータ信号ＯｕｔｐｕｔＤａｔａ＿ｆとして出力する。
【００２３】
図３は、比較例のサンプル回路９００の内部の信号（データ）、サンプル回路９００に入力される信号（データ）、サンプル回路９００から出力される信号（データ）のタイミング図である。
【００２４】
図３において、Ｄａｔａ（var）はデータ信号Ｄａｔａの劣化分（斜線部）を考慮した波形である。図３において、斜線部はデータ有効ウィンドウであり、右上り斜線のいずれかで信号が立ち上がり、左上り斜線のいずれかで信号が立ち下がるものとする。データ信号Ｄａｔａの幅は１ＵＩ（Unit Interval）である。
【００２５】
入力データ信号Ｄａｔａ、外部ストローブ信号Ｓｔｒｏｂｅ１、内部ストローブ信号Ｓｔｒｏｂｅ２、チップクロック信号ＣｈｉｐＣｌｏｃｋは、１ＵＩ（Unit Interval）ごとに変化する。入力データ信号Ｄａｔａと、外部ストローブ信号Ｓｔｒｏｂｅ１、内部ストローブ信号Ｓｔｒｏｂｅ２の変化するタイミングは、同期していない。内部ストローブ信号Ｓｔｒｏｂｅ２は、チップクロック信号ＣｈｉｐＣｌｏｃｋと、ほぼ同期している。入力データ信号Ｄａｔａの列は「１０００１１００」である。
【００２６】
時刻ｔ１において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がると、フリップフロップＦＦ１によって、入力データ信号Ｄａｔａ（＝１）が取り込まれ、フリップフロップＦＦ１の出力データ信号Ｄａｔａ１が「１」となる。
【００２７】
時刻ｔ２において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下ると、フリップフロップＦＦ２ｒによって、Ｄａｔａ１（＝１）が取り込まれ、出力データ信号Ｄａｔａ２ｒが「１」となるとともに、フリップフロップＦＦ２ｆによって、Ｄａｔａ（＝０）が取り込まれ、出力データ信号Ｄａｔａ２ｆが「０」となる。また、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下ると、ライトポインタ供給部９１は、ライトポインタwｒptの値を「０」に更新する。ＦＩＦＯ９０は、ライトポインタwｒpt（＝０）で示される位置にデータ信号Ｄａｔａ＿２ｒ（＝１）、Ｄａｔａ＿２ｆ（＝０）を書き込む。
【００２８】
時刻ｔ３において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がると、フリップフロップＦＦ１によって、入力データ信号Ｄａｔａ（＝０）が取り込まれ、フリップフロップＦＦ１の出力データ信号Ｄａｔａ１が「０」となる。
【００２９】
時刻ｔ４において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下ると、フリップフロップＦＦ２ｒによって、Ｄａｔａ１（＝０）が取り込まれ、出力データ信号Ｄａｔａ２ｒが「０」となるとともに、フリップフロップＦＦ２ｆによって、Ｄａｔａ（＝０）が取り込まれ、出力データ信号Ｄａｔａ２ｆが「０」となる。また、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下ると、ライトポインタ供給部９１は、ライトポインタwｒptの値を「１」に更新する。ＦＩＦＯ９０は、ライトポインタwｒpt（＝１）示される位置にデータ信号Ｄａｔａ＿２ｒ（＝０）、Ｄａｔａ＿２ｆ（＝０）を書き込む。
【００３０】
時刻ｔ５において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がると、フリップフロップＦＦ１によって、入力データ信号Ｄａｔａ（＝１）が取り込まれ、フリップフロップＦＦ１の出力データ信号Ｄａｔａ１が「１」となる。
【００３１】
時刻ｔ６において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下ると、フリップフロップＦＦ２ｒによって、Ｄａｔａ１（＝１）が取り込まれ、出力データ信号Ｄａｔａ２ｒが「１」となるとともに、フリップフロップＦＦ２ｆによって、Ｄａｔａ（＝１）が取り込まれ、出力データ信号Ｄａｔａ２ｆが「１」となる。また、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下ると、ライトポインタ供給部９１は、ライトポインタwｒptの値を「２」に更新する。ＦＩＦＯ９０は、ライトポインタwｒpt（＝２）で示される位置にデータ信号Ｄａｔａ＿２ｒ（＝１）、Ｄａｔａ＿２ｆ（＝１）を書き込む。
【００３２】
時刻ｔ７において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がると、フリップフロップＦＦ１によって、入力データ信号Ｄａｔａ（＝０）が取り込まれ、フリップフロップＦＦ１の出力データ信号Ｄａｔａ１が「０」となる。
【００３３】
時刻ｔ８において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下ると、フリップフロップＦＦ２ｒによって、Ｄａｔａ１（＝０）が取り込まれ、出力データ信号Ｄａｔａ２ｒが「０」となるとともに、フリップフロップＦＦ２ｆによって、Ｄａｔａ（＝０）が取り込まれ、出力データ信号Ｄａｔａ２ｆが「０」となる。また、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下ると、ライトポインタ供給部９１は、ライトポインタwｒptの値を「０」に更新する。ＦＩＦＯ９０は、ライトポインタwｒpt（＝０）示される位置にデータ信号Ｄａｔａ＿２ｒ（＝０）、Ｄａｔａ＿２ｆ（＝０）を書き込む。
【００３４】
時刻ｔ１′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上ると、リードポインタ供給部９２は、リードポインタrdptの値を「０」に更新する。ＦＩＦＯ９０は、リードポインタrdpt（＝０）示される位置からデータ信号Ｄａｔａ＿３ｒ（＝１）、Ｄａｔａ＿３ｆ（＝０）を出力する。
【００３５】
時刻ｔ２′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ４ｒによって、Ｄａｔａ４ｒ（＝０）が取り込まれ、フリップフロップＦＦ４ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となるとともに、フリップフロップＦＦ４ｆによって、Ｄａｔａ４ｆ（＝０）が取り込まれ、フリップフロップＦＦ４ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がると、フリップフロップＦＦ３ｒによって、Ｄａｔａ３ｒ（＝１）が取り込まれ、フリップフロップＦＦ３ｒの出力データ信号Ｄａｔａ４ｒが「１」となるとともに、フリップフロップＦＦ３ｆによって、Ｄａｔａ３ｆ（＝０）が取り込まれ、フリップフロップＦＦ３ｆの出力データ信号Ｄａｔａ４ｆが「０」となる。内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上ると、リードポインタ供給部９２は、リードポインタrdptの値を「１」に更新する。ＦＩＦＯ９０は、リードポインタrdpt（＝１）示される位置からデータ信号Ｄａｔａ＿３ｒ（＝０）、Ｄａｔａ＿３ｆ（＝０）を出力する。
【００３６】
時刻ｔ３′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ４ｒによって、Ｄａｔａ４ｒ（＝１）が取り込まれ、フリップフロップＦＦ４ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「１」となるとともに、フリップフロップＦＦ４ｆによって、Ｄａｔａ４ｆ（＝０）が取り込まれ、フリップフロップＦＦ４ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がると、フリップフロップＦＦ３ｒによって、Ｄａｔａ３ｒ（＝０）が取り込まれ、フリップフロップＦＦ３ｒの出力データ信号Ｄａｔａ４ｒが「０」となるとともに、フリップフロップＦＦ３ｆによって、Ｄａｔａ３ｆ（＝０）が取り込まれ、フリップフロップＦＦ３ｆの出力データ信号Ｄａｔａ４ｆが「０」となる。内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上ると、リードポインタ供給部９２は、リードポインタrdptの値を「２」に更新する。ＦＩＦＯ９０は、リードポインタrdpt（＝２）示される位置からデータ信号Ｄａｔａ＿３ｒ（＝１）、Ｄａｔａ＿３ｆ（＝１）を出力する。
【００３７】
時刻ｔ４′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ４ｒによって、Ｄａｔａ４ｒ（＝０）が取り込まれ、フリップフロップＦＦ４ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となるとともに、フリップフロップＦＦ４ｆによって、Ｄａｔａ４ｆ（＝０）が取り込まれ、フリップフロップＦＦ４ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がると、フリップフロップＦＦ３ｒによって、Ｄａｔａ３ｒ（＝１）が取り込まれ、フリップフロップＦＦ３ｒの出力データ信号Ｄａｔａ４ｒが「１」となるとともに、フリップフロップＦＦ３ｆによって、Ｄａｔａ３ｆ（＝１）が取り込まれ、フリップフロップＦＦ３ｆの出力データ信号Ｄａｔａ４ｆが「１」となる。内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上ると、リードポインタ供給部９２は、リードポインタrdptの値を「０」に更新する。ＦＩＦＯ９０は、リードポインタrdpt（＝０）示される位置からデータ信号Ｄａｔａ＿３ｒ（＝０）、Ｄａｔａ＿３ｆ（＝０）を出力する。
【００３８】
時刻ｔ５′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ４ｒによって、Ｄａｔａ４ｒ（＝１）が取り込まれ、フリップフロップＦＦ４ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「１」となるとともに、フリップフロップＦＦ４ｆによって、Ｄａｔａ４ｆ（＝１）が取り込まれ、フリップフロップＦＦ４ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「１」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がると、フリップフロップＦＦ３ｒによって、Ｄａｔａ３ｒ（＝０）が取り込まれ、フリップフロップＦＦ３ｒの出力データ信号Ｄａｔａ４ｒが「０」となるとともに、フリップフロップＦＦ３ｆによって、Ｄａｔａ３ｆ（＝０）が取り込まれ、フリップフロップＦＦ３ｆの出力データ信号Ｄａｔａ４ｆが「０」となる。
【００３９】
時刻ｔ６′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ４ｒによって、Ｄａｔａ４ｒ（＝０）が取り込まれ、フリップフロップＦＦ４ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となるとともに、フリップフロップＦＦ４ｆによって、Ｄａｔａ４ｆ（＝０）が取り込まれ、フリップフロップＦＦ４ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。
【００４０】
以上のようにして、ダブルデータレートで入力されたデータ信号Ｄａｔａは、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち上がりエッジに対応したＯｕｔｐｕｔＤａｔａ＿ｒと、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち下りエッジに対応したＯｕｔｐｕｔＤａｔａ＿ｆとして出力される。
【００４１】
ここで、一般にフリップフロップがデータを正しく受け取って出力信号を生成できるようにするために、セットアップ時間／ホールド時間というタイミングの制約がある。セットアップ時間とは、フリップフロップにストローブ信号が入る前にデータ信号が安定してなければならない時間である。ホールド時間とは、フリップフロップにストローブ信号が入った後でデータ信号が安定してなければならない時間である。データ有効ウィンドウとは、最も早く到着するデータ信号と最も遅く到着するデータ信号が重なる部分であり、ストローブ信号の１周期からセットアップ時間とホールド時間を差し引くことによって算出される。したがって、フリップフロップを用いる場合に、データ信号のデータ有効ウィンドウが狭い場合に取り込むことができないという問題がある。
【００４２】
本実施の形態では、外部から入力されるデータ信号Ｄａｔａを、外部から入力されたストローブ信号 Ｓｔｒｏｂｅ１によってフリップフロップＦＦ１によって取り込んでいるため、高速化によってデータ信号Ｄａｔａの波形が劣化することによって、データ信号Ｄａｔａがデータ有効ウィンドウ内に収まらない場合、データ信号Ｄａｔａを取り込むことができないという問題がある。
【００４３】
本実施の形態では、あるデータ信号Ｄａｔａを外部ストローブ信号Ｓｔｒｏｂｅ１のタイミングから内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えるのに３ＵＩという長時間が必要となる。これは、フリップフロップＦＦ１、ＦＦ２ｒ、ＦＦ２ｆ、ＦＩＦＯ９０を用いているためである。また、内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えた後、ＯｕｔｐｕｔＤａｔａ＿ｒ、ＯｕｔｐｕｔＤａｔａ＿ｆとして外部に出力するのに６ＵＩという長時間が必要となる。これは、内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えた後、２段のフリップフロップを介して、ＯｕｔｐｕｔＤａｔａ＿ｒ、ＯｕｔｐｕｔＤａｔａ＿ｆが出力されるからである。
【００４４】
よって、外部からサンプル回路９００に入力されたデータ信号Ｄａｔａが、サンプル回路９００から外部に出力されるのに要する時間であるレイテンシが９ＵＩとなる。
【００４５】
［第２の実施形態］
図４は、実施形態の半導体装置の構成を表わす図である。
【００４６】
この半導体措置は、ＳｏＣ（System-on-a-Chip）５００と、ＤＤＲメモリ５０１とを備える。
【００４７】
ＳｏＣ５００は、サンプル回路１００と、ドライバＤ１と、ドライバＤ３と、レシーバＲ３と、レシーバＲ４とを備える。
【００４８】
ＤＤＲメモリ５０１は、サンプル回路２５０と、ドライバＤ３と、ドライバＤ４と、レシーバＲ１と、レシーバＲ２とを備える。
【００４９】
たとえば、メモリアレイからデータを読み出すときには、以下のようにして行われる。
図示しないメモリアレイから出力されたダブルデータレートのＤａｔａがドライバＤ３によってレシーバＲ３へ送られる。レシーバＲ３がデータＤａｔａを受信して、サンプル回路１００へ出力する。また、ドライバＤ４がストローブ信号Ｓｔｒｏｂｅを出力する。レシーバＲ４がストローブ信号Ｓｔｒｏｂｅを受信して、サンプル回路１００へ出力する。サンプル回路１００は、ストローブ信号Ｓｔｒｏｂｅを用いてダブルデータレートのデータＤａｔａを２レーンに分けて出力する。
【００５０】
以下では、サンプル回路１００の構成および動作について説明する。サンプル回路２５０の構成および動作も同様である。
【００５１】
図５は、第２の実施形態のサンプル回路１００の構成を表わす図である。
サンプル回路１００は、ゲート回路２１，２２を含むゲート部２０と、ラッチ回路３１，３２を含むラッチ部３０と、フリップフロップＦＦ１＿ｒ，ＦＦ１＿ｆと、フリップフロップＦＦ２＿ｒ，ＦＦ２＿ｆと、カウンタＣＴとを備える。
【００５２】
サンプル回路１００は、レシーバＲ１から出力されるダブルデータレートで転送されるデータ信号Ｄａｔａと、レシーバＲ２から出力される外部ストローブ信号Ｓｔｒｏｂｅ１を受ける。
【００５３】
カウンタＣＴは、第１の選択部であって、２進カウンタである。カウンタＣＴは、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち上がりエッジが発生するタイミングと、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち下がりエッジが発生するタイミングに同期して、セレクト信号ｌａｎｅ＿ｓｅｌ１のレベルを「０」（ロウレベル）と「１」（ハイレベル）の間で循環的に切り替える。セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」は、第１のレーンＬａｎｅ０を選択することを示し、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」は、第２のレーンＬａｎｅ１を選択することを示す。
【００５４】
図６は、第２の実施形態のゲート部２０の構成を表わす図である。
ゲート回路２１は、論理回路ＬＣ０を含む。論理回路ＬＣ０は、データ信号Ｄａｔａと、セレクト信号ｌａｎｅ＿ｓｅｌ１を受けて、データ信号Ｄａｔａと、セレクト信号ｌａｎｅ＿ｓｅｌ１の否定の論理積を表わす信号Ｄａｔａ１＿Ｉ０を第１のレーンＬａｎｅ０へ出力する。
【００５５】
ゲート回路２２は、論理回路ＬＣ１を含む。論理回路ＬＣ１は、データ信号Ｄａｔａと、セレクト信号ｌａｎｅ＿ｓｅｌ１を受けて、データ信号Ｄａｔａと、セレクト信号ｌａｎｅ＿ｓｅｌ１の論理積を表わす信号Ｄａｔａ１＿Ｉ１を第２のレーンＬａｎｅ１へ出力する。
【００５６】
図７は、第２の実施形態のラッチ部３０の構成を表わす図である。
ラッチ回路３１は、比較器ＣＭ０と、透過型ラッチＬＴ０とを含む。
【００５７】
比較器ＣＭ０は、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」のときに、ハイレベルの信号Ｓ０を出力し、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」以外のときに、ロウレベルの信号Ｓ０を出力する。
【００５８】
透過型ラッチＬＴ０は、データ信号Ｄａｔａ＿Ｉ０を受けるデータ入力端子と、比較器ＣＭ０の出力信号Ｓ０を受けるイネーブル端子を有する。透過型ラッチＬＴ０は、入力される信号Ｓ０がハイレベルのときには、入力されるデータ信号Ｄａｔａ１＿Ｉ０をそのままデータ信号Ｄａｔａ２＿Ｉ０として出力する。透過型ラッチＬＴ０は、入力される信号Ｓ０がロウレベルときには、入力されるデータ信号Ｄａｔａ１＿Ｉ０の値に関わらず、信号Ｓ０がロウレベルに変化するときに保持したデータ信号Ｄａｔａ１＿Ｉ０をデータ信号Ｄａｔａ２＿Ｉ０として出力する。
【００５９】
ラッチ回路３２は、比較器ＣＭ１と、透過型ラッチＬＴ１とを含む。
比較器ＣＭ１は、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」のときに、ハイレベルの信号Ｓ１を出力し、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」以外のときに、ロウレベルの信号Ｓ１を出力する。
【００６０】
透過型ラッチＬＴ１は、データ信号Ｄａｔａ＿Ｉ１を受けるデータ入力端子と、比較器ＣＭ１の出力信号Ｓ１を受けるイネーブル端子を有する。
【００６１】
透過型ラッチＬＴ１は、入力される信号Ｓ１がハイレベルのときには、入力されるデータ信号Ｄａｔａ１＿Ｉ１をそのままデータ信号Ｄａｔａ２＿Ｉ１として出力する。透過型ラッチＬＴ１は、入力される信号Ｓ１がロウレベルときには、入力されるデータ信号Ｄａｔａ１＿Ｉ１の値に関わらず、信号Ｓ１がロウレベルに変化するときに保持したデータ信号Ｄａｔａ１＿Ｉ１をデータ信号Ｄａｔａ２＿Ｉ１として出力する。
【００６２】
フリップフロップＦＦ１＿ｒは、チップクロック信号ＣｈｉｐＣｌｏｃｋを図示しないゲート回路を介して生成される内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングに同期して、透過型ラッチＬＴ０の出力であるデータ信号Ｄａｔａ２＿Ｉ０を取り込み、保持してデータ信号Ｄａｔａ３＿ｒとして出力する。フリップフロップＦＦ１＿ｆは、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち下がりエッジが発生するタイミングに同期して、透過型ラッチＬＴ１の出力であるデータ信号Ｄａｔａ２＿Ｉ１を取り込み、保持してデータ信号Ｄａｔａ３＿ｆとして出力する。
【００６３】
フリップフロップＦＦ２＿ｒは、内部で生成されるチップクロック信号ＣｈｉｐＣｌｏｃｋの立ち上がりエッジが発生するタイミングに同期して、フリップフロップＦＦ１＿ｒの出力であるデータ信号Ｄａｔａ３＿ｒを取り込み、保持してデータ信号ＯｕｔｐｕｔＤａｔａ＿ｒとして出力する。フリップフロップＦＦ２＿ｆは、チップクロック信号ＣｈｉｐＣｌｏｃｋの立ち上がりエッジが発生するタイミングに同期して、フリップフロップＦＦ１＿ｆの出力であるデータ信号Ｄａｔａ３＿ｆを取り込み、保持してデータ信号ＯｕｔｐｕｔＤａｔａ＿ｆとして出力する。
【００６４】
図８は、第２の実施形態のサンプル回路１００の内部の信号（データ）、サンプル回路１００に入力される信号（データ）、サンプル回路１００から出力される信号（データ）のタイミング図である。
【００６５】
図８において、Ｄａｔａ（var）はデータ信号Ｄａｔａの劣化分（斜線部）を考慮した波形である。図８において、右上り斜線のいずれかで信号が立ち上がり、左上り斜線のいずれかで信号が立ち下がるものとする。○印は取り込まれるデータを示す。データ信号Ｄａｔａの幅は１ＵＩ（Unit Interval）である。
【００６６】
入力データ信号Ｄａｔａ、外部ストローブ信号Ｓｔｒｏｂｅ１、内部ストローブ信号Ｓｔｒｏｂｅ２、チップクロック信号ＣｈｉｐＣｌｏｃｋは、１ＵＩ（Unit Interval）ごとに変化する。入力データ信号Ｄａｔａと、外部ストローブ信号Ｓｔｒｏｂｅ１、内部ストローブ信号Ｓｔｒｏｂｅ２の変化するタイミングは、同期していない。内部ストローブ信号Ｓｔｒｏｂｅ２は、チップクロック信号ＣｈｉｐＣｌｏｃｋと、ほぼ同期している。入力データ信号Ｄａｔａの列は「１０００１１００」である。
【００６７】
時刻ｔ０≦ｔ＜ｔ１において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」である。ゲート回路２１によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ０が第１のレーンＬａｎｅ０へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」のため、ラッチ回路３１は、入力されるデータ信号Ｄａｔａ１＿Ｉ０をそのままデータ信号Ｄａｔａ２＿Ｉ０として出力する。
【００６８】
時刻ｔ１において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「１」に切り替えると、ラッチ回路３１は、出力データ信号Ｄａｔａ２＿Ｉ０を「１」に保持する。これは、時刻ｔ１よりも前のいずれかのタイミングで入力データ信号Ｄａｔａが「１」に変化するからである。
【００６９】
時刻ｔ１≦ｔ＜ｔ２において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」である。ゲート回路２２によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ１が第２のレーンＬａｎｅ１へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」のため、ラッチ回路３２は、入力されるデータ信号Ｄａｔａ１＿Ｉ１をそのままデータ信号Ｄａｔａ２＿Ｉ１として出力する。
【００７０】
時刻ｔ２において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「０」に切り替えると、ラッチ回路３２は、出力データ信号Ｄａｔａ２＿Ｉ１を「０」に保持する。これは、時刻ｔ１以降かつ時刻ｔ２よりも前のいずれかのタイミングで入力データ信号Ｄａｔａが「０」に変化するからである。
【００７１】
時刻ｔ２≦ｔ＜ｔ３において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」である。ゲート回路２１によって、入力データ信号Ｄａｔａ（＝０）が取り込まれて、データ信号Ｄａｔａ１＿Ｉ０（＝０）が第１のレーンＬａｎｅ０へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」のため、ラッチ回路３１は、入力されるデータ信号Ｄａｔａ１＿Ｉ０（＝０）をそのままデータ信号Ｄａｔａ２＿Ｉ０（＝０）として出力する。
【００７２】
時刻ｔ３において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「１」に切り替えると、ラッチ回路３１は、出力データ信号Ｄａｔａ２＿Ｉ０を「０」に保持する。
【００７３】
時刻ｔ３≦ｔ＜ｔ４において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」である。ゲート回路２２によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ１が第２のレーンＬａｎｅ１へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」のため、ラッチ回路３２は、入力されるデータ信号Ｄａｔａ１＿Ｉ１（＝０）をそのままデータ信号Ｄａｔａ２＿Ｉ１（＝０）として出力する。
【００７４】
時刻ｔ４において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「０」に切り替えると、ラッチ回路３２は、出力データ信号Ｄａｔａ２＿Ｉ１を「０」に保持する。
【００７５】
時刻ｔ４≦ｔ＜ｔ５において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」である。ゲート回路２１によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ０が第１のレーンＬａｎｅ０へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」のため、ラッチ回路３１は、入力されるデータ信号Ｄａｔａ１＿Ｉ０をそのままデータ信号Ｄａｔａ２＿Ｉ０として出力する。
【００７６】
時刻ｔ５において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「１」に切り替えると、ラッチ回路３１は、出力データ信号Ｄａｔａ２＿Ｉ０を「１」に保持する。これは、時刻ｔ４以降かつ時刻ｔ５よりも前のいずれかのタイミングで入力データ信号Ｄａｔａが「１」に変化するからである。
【００７７】
時刻ｔ５≦ｔ＜ｔ６において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」である。ゲート回路２２によって、入力データ信号Ｄａｔａ（＝１）が取り込まれて、データ信号Ｄａｔａ１＿Ｉ１（＝１）が第２のレーンＬａｎｅ１へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」のため、ラッチ回路３２は、入力されるデータ信号Ｄａｔａ１＿Ｉ１（＝１）をそのままデータ信号Ｄａｔａ２＿Ｉ１（＝１）として出力する。
【００７８】
時刻ｔ６において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「０」に切り替えると、ラッチ回路３２は、出力データ信号Ｄａｔａ２＿Ｉ１を「１」に保持する。
【００７９】
時刻ｔ６≦ｔ＜ｔ７において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」である。ゲート回路２１によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ０が第１のレーンＬａｎｅ０へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」のため、ラッチ回路３１は、入力されるデータ信号Ｄａｔａ１＿Ｉ０をそのままデータ信号Ｄａｔａ２＿Ｉ０として出力する。
【００８０】
時刻ｔ７において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「１」に切り替えると、ラッチ回路３１は、出力データ信号Ｄａｔａ２＿Ｉ０を「０」に保持する。時刻ｔ６以降かつ時刻ｔ７よりも前のいずれかのタイミングで入力データ信号Ｄａｔａが「０」に変化するからである。
【００８１】
時刻ｔ７≦ｔ＜ｔ８において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」である。ゲート回路２２によって、入力データ信号Ｄａｔａ（＝０）が取り込まれて、データ信号Ｄａｔａ１＿Ｉ１（＝０）が第２のレーンＬａｎｅ１へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」のため、ラッチ回路３２は、入力されるデータ信号Ｄａｔａ１＿Ｉ１（＝０）をそのままデータ信号Ｄａｔａ２＿Ｉ１（＝０）として出力する。
【００８２】
時刻ｔ８において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「０」に切り替えると、ラッチ回路３２は、出力データ信号Ｄａｔａ２＿Ｉ１を「０」に保持する。
【００８３】
時刻ｔ１′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上ると、フリップフロップＦＦ１＿ｒによって、Ｄａｔａ２＿Ｉ０（＝１）が取り込まれ、出力データ信号Ｄａｔａ３＿ｒが「１」となる。
【００８４】
時刻ｔ２′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下ると、フリップフロップＦＦ１＿ｆによって、Ｄａｔａ２＿Ｉ１（＝０）が取り込まれ、出力データ信号Ｄａｔａ３＿ｒが「０」となる。
【００８５】
時刻ｔ３′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ３＿ｒ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「１」となるとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ３＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上ると、フリップフロップＦＦ１＿ｒによって、Ｄａｔａ２＿Ｉ０（＝０）が取り込まれ、出力データ信号Ｄａｔａ３＿ｒが「０」となる。
【００８６】
時刻ｔ４′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下ると、フリップフロップＦＦ１＿ｆによって、Ｄａｔａ２＿Ｉ１（＝０）が取り込まれ、出力データ信号Ｄａｔａ３＿ｒが「０」となる。
【００８７】
時刻ｔ５′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ３＿ｒ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ３＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上ると、フリップフロップＦＦ１＿ｒによって、Ｄａｔａ２＿Ｉ０（＝１）が取り込まれ、出力データ信号Ｄａｔａ３＿ｒが「１」となる。
【００８８】
時刻ｔ６′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下ると、フリップフロップＦＦ１＿ｆによって、Ｄａｔａ２＿Ｉ１（＝１）が取り込まれ、出力データ信号Ｄａｔａ３＿ｒが「１」なる。
【００８９】
時刻ｔ７′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ３＿ｒ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「１」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ３＿ｆ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「１」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上ると、フリップフロップＦＦ１＿ｒによって、Ｄａｔａ２＿Ｉ０（＝０）が取り込まれ、出力データ信号Ｄａｔａ３＿ｒが「０」となる。
【００９０】
時刻ｔ８′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下ると、フリップフロップＦＦ１＿ｆによって、Ｄａｔａ２＿Ｉ１（＝０）が取り込まれ、出力データ信号Ｄａｔａ３＿ｒが「０」なる。
【００９１】
時刻ｔ９′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ３＿ｒ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ３＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。
【００９２】
以上のようにして、ダブルデータレートで入力されたデータ信号Ｄａｔａは、ダブルデータレートのＳｔｒｏｂｅ１の立ち上がりエッジに対応したデータ信号ＯｕｔｐｕｔＤａｔａ＿ｒと、Ｓｔｒｏｂｅ１の立ち下がりエッジに対応したデータ信号ＯｕｔｐｕｔＤａｔａ＿ｆとして出力される。
【００９３】
本実施の形態では、フリップフロップを用いてデータ信号Ｄａｔａを取り込まないので、データ信号Ｄａｔａが、フリップフロップのセットアップ時間およびホールド時間で規定されるデータ有効ウィンドウ内に収まる必要がない。すなわち、高速化によってデータ信号Ｄａｔａの波形が劣化し、図８に示すように、立ち上がりエッジおよび立ち下りエッジのタイミングが１ＵＩ（厳密には１ＵＩよりΔｔ（微小時間）だけ小さい値）だけ変動する場合でも、ラッチ部３０によってデータ信号Ｄａｔａを取り込むことができる。
【００９４】
本実施の形態では、あるデータ信号Ｄａｔａを外部ストローブ信号Ｓｔｒｏｂｅ１のタイミングから内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えるのに１ＵＩしかかからない。これは、外部ストローブ信号Ｓｔｒｏｂｅ１でデータ信号Ｄａｔａを取り込むフリップフロップＦＦ１、ＦＦ２ｒ、ＦＦ２ｆと、ＦＩＦＯ９０とを用いずに、ゲート部２０およびラッチ部３０を使用し、外部ストローブ信号Ｓｔｒｏｂｅ１をセレクト信号ｌａｎｅ＿ｓｅｌ１の生成のために使用するためである。また、内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えた後、ＯｕｔｐｕｔＤａｔａ＿ｒ、ＯｕｔｐｕｔＤａｔａ＿ｆとして外部に出力するのにも４ＵＩしかからない。これは、内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えた後、１段のフリップフロップを介して、ＯｕｔｐｕｔＤａｔａ＿ｒ、ＯｕｔｐｕｔＤａｔａ＿ｆが出力されるからである。よって、外部からサンプル回路１００に入力されたデータ信号Ｄａｔａが、サンプル回路１００から外部に出力されるのに要する時間であるレイテンシが５ＵＩとなる。
【００９５】
上述のように、本実施の形態によれば、タイミング改善により高周波数による動作が可能となる。また、レイテンシ改善による動作パフォーマンスが向上する。また、本実施の形態では、データ信号の入力タイミングのダイナミックな変動に対応できる。
【００９６】
［第３の実施形態］
第３の実施形態では、第２の実施形態のサンプル回路１００およびサンプル回路２５０のうちの少なくとも１つに代えて、サンプル回路２００を用いる。
【００９７】
図９は、第３の実施形態のサンプル回路２００の構成を表わす図である。
サンプル回路２００は、ゲート回路１２１，１２２，１２３を含むゲート部１２０と、ラッチ回路１３１，１３２，１３３を含むラッチ部１３０と、レーンセレクタ５０と、フリップフロップＦＦ１＿ｒ，ＦＦ１＿ｆと、フリップフロップＦＦ２＿ｒ，ＦＦ２＿ｆと、カウンタＣＴ，ＣＴ２とを備える。
【００９８】
サンプル回路２００は、レシーバＲ１から出力されるダブルデータレートで転送されるデータ信号Ｄａｔａと、レシーバＲ２から出力される外部ストローブ信号Ｓｔｒｏｂｅ１を受ける。
【００９９】
カウンタＣＴは、第１の選択部であって、３進カウンタである。カウンタＣＴは、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち上がりエッジが発生するタイミングと、外部ストローブ信号Ｓｔｒｏｂｅ１の立ち下がりエッジが発生するタイミングに同期して、セレクト信号ｌａｎｅ＿ｓｅｌ１の値を「１」だけ増加する。セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「０」は、第１のレーンＬａｎｅ０を選択することを示し、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「１」は、第２のレーンＬａｎｅ１を選択することを示し、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「２」は、第３のレーンＬａｎｅ２を選択することを示す。
【０１００】
図１０は、第３の実施形態のゲート部１２０の構成を表わす図である。
ゲート回路１２１は、第１セレクタＳＬ０を含む。
【０１０１】
第１セレクタＳＬ０は、第０入力端子でデータ信号Ｄａｔａを受け、第１入力端子で値が０の１ビットデータ１′ｂ０を受け、第２入力端子で値が０の１ビットデータ１′ｂ０を受ける。第１セレクタＳＬ０は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「０」（第１の値）のときに、入力されたデータ信号Ｄａｔａをそのままデータ信号Ｄａｔａ１＿Ｉ０として第１のレーンＬａｎｅ０へ出力する。第１セレクタＳＬ０は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「１」または「２」（第１の値以外）のときに、１ビットデータ１′ｂ０をデータ信号Ｄａｔａ１＿Ｉ０として第１のレーンＬａｎｅ０へ出力する。
【０１０２】
ゲート回路１２２は、第２セレクタＳＬ１を含む。
第２セレクタＳＬ１は、第０入力端子で値が０の１ビットデータ１′ｂ０を受け、第１入力端子でデータ信号Ｄａｔａを受け、第２入力端子で値が０の１ビットデータ１′ｂ０を受ける。第２セレクタＳＬ１は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「１」（第２の値）のときに、入力されたデータ信号Ｄａｔａをそのままデータ信号Ｄａｔａ１＿Ｉ１として第２のレーンＬａｎｅ１へ出力する。第２セレクタＳＬ１は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「０」または「２」（第２の値以外）のときに、１ビットデータ１′ｂ０をデータ信号Ｄａｔａ１＿Ｉ１として第２のレーンＬａｎｅ１へ出力する。
【０１０３】
ゲート回路１２３は、第３セレクタＳＬ２を含む。
第３セレクタＳＬ２は、第０入力端子で値が０の１ビットデータ１′ｂ０を受け、第１入力端子で値が０の１ビットデータ１′ｂ０を受け、第２入力端子でデータ信号Ｄａｔａを受ける。第３セレクタＳＬ２は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「２」（第３の値）のときに、入力されたデータ信号Ｄａｔａをそのままデータ信号Ｄａｔａ１＿Ｉ２として第３のレーンＬａｎｅ２へ出力する。第３セレクタＳＬ２は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「０」または「１」（第３の値以外）のときに、１ビットデータ１′ｂ０をデータ信号Ｄａｔａ１＿Ｉ２として第３のレーンＬａｎｅ２へ出力する。
【０１０４】
図１１は、第３の実施形態のラッチ部１３０の構成を表わす図である。
ラッチ回路１３１は、第１の比較器ＣＭ０と、第１の透過型ラッチＬＴ０とを含む。
【０１０５】
第１の比較器ＣＭ０は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「０」（第１の値）のときに、ハイレベルの信号Ｓ０を出力し、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「０」以外（第１の値以外）のときに、ロウレベルの信号Ｓ０を出力する。
【０１０６】
第１の透過型ラッチＬＴ０は、データ信号Ｄａｔａ＿Ｉ０を受けるデータ入力端子と、第１の比較器ＣＭ０の出力信号Ｓ０を受けるイネーブル端子を有する。第１の透過型ラッチＬＴ０は、入力される信号Ｓ０がハイレベルのときには、入力されるデータ信号Ｄａｔａ１＿Ｉ０をそのままデータ信号Ｄａｔａ２＿Ｉ０として出力する。第１の透過型ラッチＬＴ０は、入力される信号Ｓ０がロウレベルときには、入力されるデータ信号Ｄａｔａ１＿Ｉ０の値に関わらず、信号Ｓ０がロウレベルに変化するときに保持したデータ信号Ｄａｔａ１＿Ｉ０をデータ信号Ｄａｔａ２＿Ｉ０として出力する。
【０１０７】
ラッチ回路１３２は、第２の比較器ＣＭ１と、第２の透過型ラッチＬＴ１とを含む。
第２の比較器ＣＭ１は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「１」（第２の値）のときに、ハイレベルの信号Ｓ１を出力し、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「１」以外（第２の値以外）のときに、ロウレベルの信号Ｓ１を出力する。
【０１０８】
第２の透過型ラッチＬＴ１は、データ信号Ｄａｔａ＿Ｉ１を受けるデータ入力端子と、第２の比較器ＣＭ１の出力信号Ｓ１を受けるイネーブル端子を有する。第２の透過型ラッチＬＴ１は、入力される信号Ｓ１がハイレベルのときには、入力されるデータ信号Ｄａｔａ１＿Ｉ１をそのままデータ信号Ｄａｔａ２＿Ｉ１として出力する。第２の透過型ラッチＬＴ１は、入力される信号Ｓ１がロウレベルときには、入力されるデータ信号Ｄａｔａ１＿Ｉ１の値に関わらず、信号Ｓ１がロウレベルに変化するときに保持したデータ信号Ｄａｔａ１＿Ｉ１をデータ信号Ｄａｔａ２＿Ｉ１として出力する。
【０１０９】
ラッチ回路１３３は、第３の比較器ＣＭ２と、第３の透過型ラッチＬＴ２とを含む。
第３の比較器ＣＭ２は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「２」（第３の値）のときに、ハイレベルの信号Ｓ２を出力し、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が「２」以外（第３の値以外）のときに、ロウレベルの信号Ｓ２を出力する。
【０１１０】
第３の透過型ラッチＬＴ２は、データ信号Ｄａｔａ＿Ｉ２を受けるデータ入力端子と、第３の比較器ＣＭ２の出力信号Ｓ２を受けるイネーブル端子を有する。第３の透過型ラッチＬＴ２は、入力される信号Ｓ２がハイレベルのときには、入力されるデータ信号Ｄａｔａ１＿Ｉ２をそのままデータ信号Ｄａｔａ２＿Ｉ２として出力する。透過型ラッチＬＴ２は、入力される信号Ｓ２がロウレベルときには、入力されるデータ信号Ｄａｔａ１＿Ｉ２の値に関わらず、信号Ｓ２がロウレベルに変化するときに保持したデータ信号Ｄａｔａ１＿Ｉ２をデータ信号Ｄａｔａ２＿Ｉ２として出力する。
【０１１１】
カウンタＣＴ２は、第２の選択部であって、３進カウンタである。
カウンタＣＴ２は、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングと、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち下がりエッジが発生するタイミングに同期して、セレクト信号ｌａｎｅ＿ｓｅｌ２の値を「１」だけ増加する。セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「０」は、第１の透過型ラッチＬＴ０の出力を選択することを示し、セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「１」は、第２の透過型ラッチＬＴ１の出力を選択することを示し、セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「２」は、第３の透過型ラッチＬＴ２の出力を選択することを示す。
【０１１２】
レーンセレクタ５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２、データ信号Ｄａｔａ２＿Ｉ０、Ｄａｔａ２＿Ｉ１、Ｄａｔａ２＿Ｉ２を受ける。レーンセレクタ５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「０」のときには、第１の透過型ラッチＬＴ０の出力であるデータ信号Ｄａｔａ２＿Ｉ０をデータ信号Ｄａｔａ３として出力する。レーンセレクタ５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「１」のときには、第２の透過型ラッチＬＴ１の出力であるデータ信号Ｄａｔａ２＿Ｉ１をデータ信号Ｄａｔａ３として出力する。レーンセレクタ５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「２」のときには、第２の透過型ラッチＬＴ１の出力であるデータ信号Ｄａｔａ２＿Ｉ２をデータ信号Ｄａｔａ３として出力する。
【０１１３】
フリップフロップＦＦ１＿ｒは、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングに同期して、データ信号Ｄａｔａ３を取り込み、保持してデータ信号Ｄａｔａ４＿ｒとして出力する。
【０１１４】
フリップフロップＦＦ１＿ｆは、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち下がりエッジが発生するタイミングに同期して、データ信号Ｄａｔａ３を取り込み、保持してデータ信号Ｄａｔａ４＿ｆとして出力する。
【０１１５】
フリップフロップＦＦ２＿ｒは、チップクロック信号ＣｈｉｐＣｌｏｃｋの立ち上がりエッジが発生するタイミングに同期して、データ信号Ｄａｔａ４＿ｒを取り込み、保持してデータ信号ＯｕｔｐｕｔＤａｔａ＿ｒとして出力する。
【０１１６】
フリップフロップＦＦ２＿ｆは、チップクロック信号ＣｈｉｐＣｌｏｃｋの立ち上がりエッジが発生するタイミングに同期して、データ信号Ｄａｔａ４＿ｆを取り込み、保持してデータ信号ＯｕｔｐｕｔＤａｔａ＿ｆとして出力する。
【０１１７】
図１２は、第３の実施形態のサンプル回路２００の内部の信号（データ）、サンプル回路２００に入力される信号（データ）、サンプル回路２００から出力される信号（データ）のタイミング図である。
【０１１８】
図１２において、Ｄａｔａ（var）はデータ信号Ｄａｔａの劣化分（斜線部）を考慮した波形である。図１２において、右上り斜線のいずれかで信号が立ち上がり、左上り斜線のいずれかで信号が立ち下がるものとする。○印は取り込まれるデータを示す。データ信号Ｄａｔａの幅は１ＵＩ（Unit Interval）である。
【０１１９】
入力データ信号Ｄａｔａ、外部ストローブ信号Ｓｔｒｏｂｅ１、内部ストローブ信号Ｓｔｒｏｂｅ２、チップクロック信号ＣｈｉｐＣｌｏｃｋは、１ＵＩ（Unit Interval）ごとに変化する。入力データ信号Ｄａｔａと、外部ストローブ信号Ｓｔｒｏｂｅ１、内部ストローブ信号Ｓｔｒｏｂｅ２の変化するタイミングは、同期していない。内部ストローブ信号Ｓｔｒｏｂｅ２は、チップクロック信号ＣｈｉｐＣｌｏｃｋと、ほぼ同期している。入力データ信号Ｄａｔａの列は「１０００１１００」である。
【０１２０】
時刻ｔ０≦ｔ＜ｔ１において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」である。ゲート回路１２１によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ０が第１のレーンＬａｎｅ０へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」のため、ラッチ回路１３１は、入力されるデータ信号Ｄａｔａ１＿Ｉ０をそのままデータ信号Ｄａｔａ２＿Ｉ０として出力する。
【０１２１】
時刻ｔ１において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「１」に切り替えると、ラッチ回路１３１は、出力データ信号Ｄａｔａ２＿Ｉ０を「１」に保持する。これは、時刻ｔ１よりも前のいずれかのタイミングで入力データ信号Ｄａｔａが「１」に変化するからである。
【０１２２】
時刻ｔ１≦ｔ＜ｔ２において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」である。ゲート回路１２２によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ１が第２のレーンＬａｎｅ１へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」のため、ラッチ回路１３２は、入力されるデータ信号Ｄａｔａ１＿Ｉ１をそのままデータ信号Ｄａｔａ２＿Ｉ１として出力する。
【０１２３】
時刻ｔ２において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「２」に切り替えると、ラッチ回路１３２は、出力データ信号Ｄａｔａ２＿Ｉ１を「０」に保持する。これは、時刻ｔ１以降かつ時刻ｔ２よりも前のいずれかのタイミングで入力データ信号Ｄａｔａが「０」に変化するからである。
【０１２４】
時刻ｔ２≦ｔ＜ｔ３において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「２」である。ゲート回路１２３によって、入力データ信号Ｄａｔａ（＝０）が取り込まれて、データ信号Ｄａｔａ１＿Ｉ２（＝０）が第３のレーンＬａｎｅ２へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「２」のため、ラッチ回路１３３は、入力されるデータ信号Ｄａｔａ１＿Ｉ２（＝０）をそのままデータ信号Ｄａｔａ２＿Ｉ２（＝０）として出力する。
【０１２５】
時刻ｔ３において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「０」に切り替えると、ラッチ回路１３３は、出力データ信号Ｄａｔａ２＿Ｉ２を「０」に保持する。
【０１２６】
時刻ｔ３≦ｔ＜ｔ４において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」である。ゲート回路１２１によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ０が第１のレーンＬａｎｅ０へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」のため、ラッチ回路１３１は、入力されるデータ信号Ｄａｔａ１＿Ｉ０（＝０）をそのままデータ信号Ｄａｔａ２＿Ｉ０（＝０）として出力する。
【０１２７】
時刻ｔ４において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「１」に切り替えると、ラッチ回路１３１は、出力データ信号Ｄａｔａ２＿Ｉ０を「０」に保持する。
【０１２８】
時刻ｔ４≦ｔ＜ｔ５において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」である。ゲート回路１２２によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ１が第２のレーンＬａｎｅ１へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」のため、ラッチ回路１３２は、入力されるデータ信号Ｄａｔａ１＿Ｉ１そのままデータ信号Ｄａｔａ２＿Ｉ１として出力する。
【０１２９】
時刻ｔ５において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「２」に切り替えると、ラッチ回路１３２は、出力データ信号Ｄａｔａ２＿Ｉ１を「１」に保持する。これは、時刻ｔ４以降かつ時刻ｔ５よりも前のいずれかのタイミングで入力データ信号Ｄａｔａが「１」に変化するからである。
【０１３０】
時刻ｔ５≦ｔ＜ｔ６において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「２」である。ゲート回路１２３によって、入力データ信号Ｄａｔａ（＝１）が取り込まれて、データ信号Ｄａｔａ１＿Ｉ２（＝１）が第３のレーンＬａｎｅ２へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「２」のため、ラッチ回路１３３は、入力されるデータ信号Ｄａｔａ１＿Ｉ２（＝１）をそのままデータ信号Ｄａｔａ２＿Ｉ２（＝１）として出力する。
【０１３１】
時刻ｔ６において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「０」に切り替えると、ラッチ回路１３３は、出力データ信号Ｄａｔａ２＿Ｉ２を「１」に保持する。
【０１３２】
時刻ｔ６≦ｔ＜ｔ７において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」である。ゲート回路１２１によって、入力データ信号Ｄａｔａが取り込まれて、データ信号Ｄａｔａ１＿Ｉ０が第１のレーンＬａｎｅ０へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「０」のため、ラッチ回路１３１は、入力されるデータ信号Ｄａｔａ１＿Ｉ０をそのままデータ信号Ｄａｔａ２＿Ｉ０として出力する。
【０１３３】
時刻ｔ７において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち上がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「１」に切り替えると、ラッチ回路１３１は、出力データ信号Ｄａｔａ２＿Ｉ０を「０」に保持する。時刻ｔ６以降かつ時刻ｔ７よりも前のいずれかのタイミングで入力データ信号Ｄａｔａが「０」に変化するからである。
【０１３４】
時刻ｔ７≦ｔ＜ｔ８において、セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」である。ゲート回路１２２によって、入力データ信号Ｄａｔａ（＝０）が取り込まれて、データ信号Ｄａｔａ１＿Ｉ１（＝０）が第２のレーンＬａｎｅ１へ出力される。セレクト信号ｌａｎｅ＿ｓｅｌ１が「１」のため、ラッチ回路１３２は、入力されるデータ信号Ｄａｔａ１＿Ｉ１（＝０）をそのままデータ信号Ｄａｔａ２＿Ｉ１（＝０）として出力する。
【０１３５】
時刻ｔ８において、外部ストローブ信号Ｓｔｒｏｂｅ１が立ち下がり、カウンタＣＴが、セレクト信号ｌａｎｅ＿ｓｅｌ１を「２」に切り替えると、ラッチ回路１３２は、出力データ信号Ｄａｔａ２＿Ｉ１を「０」に保持する。
【０１３６】
時刻ｔ２よりも後で、かつ時刻ｔ１′よりもタイミングにおいて、セレクト信号ｌａｎｅ＿ｓｅｌ２が「０」であるので、レーンセレクタ５０は、データ信号Ｄａｔａ２＿Ｉ０（＝１）を選択して、データ信号Ｄａｔａ３（＝１）として出力する。
【０１３７】
時刻ｔ１′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「１」に切り替えると、レーンセレクタ５０は、データ信号Ｄａｔａ２＿Ｉ１（＝０）を選択して、データ信号Ｄａｔａ３（＝０）として出力する。
【０１３８】
時刻ｔ２′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「２」に切り替えると、レーンセレクタ５０は、データ信号Ｄａｔａ２＿Ｉ２（＝０）を選択して、データ信号Ｄａｔａ３（＝０）として出力する。
【０１３９】
時刻ｔ３′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ４＿ｒ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「１」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ４＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「０」に切り替えると、レーンセレクタ５０は、データ信号Ｄａｔａ２＿Ｉ０（＝０）を選択して、データ信号Ｄａｔａ３（＝０）として出力する。
【０１４０】
時刻ｔ４′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「１」に切り替えると、レーンセレクタ５０は、データ信号Ｄａｔａ２＿Ｉ１（＝１）を選択して、データ信号Ｄａｔａ３（＝１）として出力する。
【０１４１】
時刻ｔ５′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ４＿ｒ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ４＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「２」に切り替えると、レーンセレクタ５０は、データ信号Ｄａｔａ２＿Ｉ２（＝１）を選択して、データ信号Ｄａｔａ３（＝１）として出力する。
【０１４２】
時刻ｔ６′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「０」に切り替えると、レーンセレクタ５０は、データ信号Ｄａｔａ２＿Ｉ０（＝０）を選択して、データ信号Ｄａｔａ３（＝０）として出力する。
【０１４３】
時刻ｔ７′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ４＿ｒ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「１」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ４＿ｆ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「１」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「１」に切り替えると、レーンセレクタ５０は、データ信号Ｄａｔａ２＿Ｉ１（＝０）を選択して、データ信号Ｄａｔａ３（＝１）として出力する。
【０１４４】
時刻ｔ９′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ４＿ｒ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ４＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。
【０１４５】
以上のようにして、ダブルデータレートで入力されたデータ信号Ｄａｔａは、ダブルデータレートのＳｔｒｏｂｅ１の立ち上がりエッジに対応したデータ信号ＯｕｔｐｕｔＤａｔａ＿ｒと、Ｓｔｒｏｂｅ１の立ち下がりエッジに対応したデータ信号ＯｕｔｐｕｔＤａｔａ＿ｆとして出力される。
【０１４６】
本実施の形態では、第２の実施形態と同様に、図１２に示すように、立ち上がりエッジおよび立ち下りエッジのタイミングが１ＵＩ（厳密には１ＵＩよりΔｔ（微小時間）だけ小さい値）だけ変動する場合でも、ラッチ部３０によってデータ信号Ｄａｔａを取り込むことができる。
【０１４７】
本実施の形態では、あるデータ信号Ｄａｔａを外部ストローブ信号Ｓｔｒｏｂｅ１のタイミングから内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えるのに２ＵＩかかる。第２の実施形態の１ＵＩよりも長いのは、レーン数を２から３に増加させたためである。乗せ換えのための時間を２ＵＩとすることによって、外部ストローブ信号Ｓｔｒｏｂｅ１と内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングのずれが大きい場合でも、確実にタイミングの乗せ換えが可能となる。
【０１４８】
また、内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えた後、ＯｕｔｐｕｔＤａｔａ＿ｒ、ＯｕｔｐｕｔＤａｔａ＿ｆとして外部に出力するのには、第２の実施形態と同様に、４ＵＩである。これは、第２の実施形態と同様に、内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えた後、１段のフリップフロップを介して、ＯｕｔｐｕｔＤａｔａ＿ｒ、ＯｕｔｐｕｔＤａｔａ＿ｆが出力されるからである。よって、外部からサンプル回路２００に入力されたデータ信号Ｄａｔａが、サンプル回路２００から外部に出力されるのに要する時間であるレイテンシが６ＵＩとなる。
【０１４９】
なお、図９のサンプル回路は、３つのレーンを備えるものとしたが、これに限定するものではなく、Ｎ個のレーンを備えるものとしてもよい。
【０１５０】
サンプル回路がＮ個のレーンを備える場合には、第１のＮ進カウンタによって、セレクト信号ｌａｎｅ＿ｓｅｌ１を生成し、ゲート部がＮ個のゲート回路を備え、ラッチ部がＮ個のラッチ回路を備え、レーンセレクタが、第２のＮ進カウンタから出力されるセレクト信号ｌａｎｅ＿ｓｅｌ２に従って、Ｎ個のラッチ回路の出力の中から１つを選択して出力する。
【０１５１】
具体的には、第１のＮ進カウンタが、ストローブ信号Ｓｔｒｏｂｅ１の立ち上がりのタイミングおよび立ち下りのタイミングに同期して、セレクト信号ｌａｎｅ＿ｓｅｌ１の値を「１」だけ増加する。
【０１５２】
ゲート部が第１〜第Ｎセレクタを含む。第ｉセレクタ（ｉ＝１〜Ｎ）は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が第ｉの値（＝ｉ−１）のときにデータ信号を出力し、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が第ｉの値以外のときに０を出力する。
【０１５３】
ラッチ部が、第１〜第Ｎ比較回路と、第１〜第Ｎ透過型ラッチとを含む。
第ｉ比較回路（ｉ＝１〜Ｎ）は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値と第ｉの値（＝ｉ-１）とを比較して、同一のときにはハイレベルの信号を出力し、相違するときにはロウレベルの信号を出力する。
【０１５４】
第ｉ透過型ラッチ（ｉ＝１〜Ｎ）は、データ信号を受けるデータ入力端子と、第ｉ比較回路の出力信号を受けるイネーブル端子とを有する。
【０１５５】
第２のＮ進カウンタが、内部ストローブ信号Ｓｔｒｏｂｅ２に従って、第１〜第Ｎ透過型ラッチの出力のうちのいずれを選択するかを示すセレクト信号ｌａｎｅ＿ｓｅｌ２を生成する。第２のＮ進カウンタは、ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりのタイミングおよび立ち下りのタイミングに同期して、セレクト信号ｌａｎｅ＿ｓｅｌ２の値を「１」だけ増加する。
【０１５６】
レーンセレクタが、第１〜第Ｎ透過型ラッチの出力を受け、セレクト信号ｌａｎｅ＿ｓｅｌ２の値に基づいて、第１〜第Ｎ透過型ラッチの出力のうちのいずれか１つを出力する。
【０１５７】
フリップフロップＦＦ１＿ｒ、ＦＦ１＿ｆ、ＦＦ２＿ｒ、ＦＦ２＿ｆの構成および動作は、レーン数がＮの場合でも、レーン数が２つの場合と同様である。
【０１５８】
［第４の実施形態］
第４の実施形態では、第２の実施形態のサンプル回路１００およびサンプル回路２５０のうちの少なくとも１つに代えて、サンプル回路３００を用いる。
【０１５９】
図１３は、第４の実施形態のサンプル回路３００の構成を表わす図である。
サンプル回路３００は、ゲート回路１２１，１２２，１２３を含むゲート部１２０と、ラッチ回路１３１，１３２，１３３を含むラッチ部１３０と、レーンセレクタ１５０と、フリップフロップＦＦ１＿ｒ，ＦＦ１＿ｆと、フリップフロップＦＦ２＿ｒ，ＦＦ２＿ｆと、カウンタＣＴ，ＣＴ２とを備える。
【０１６０】
サンプル回路３００は、レシーバＲ１から出力されるダブルデータレートで転送されるデータ信号Ｄａｔａと、レシーバＲ２から出力される外部ストローブ信号Ｓｔｒｏｂｅ１を受ける。
【０１６１】
カウンタＣＴ、ゲート部１２０、ラッチ部１３０は、第３の実施形態と同じなので、説明を繰り返さない。
【０１６２】
カウンタＣＴ２は、第２の選択部であって、３進カウンタである。
カウンタＣＴ２は、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングに同期して、セレクト信号ｌａｎｅ＿ｓｅｌ２の値を「２」だけ増加する。セレクト信号ｌａｎｅ＿ｓｅｌ２の値は、レーンセレクタ１５０の第１の出力を示し、セレクト信号ｌａｎｅ＿ｓｅｌ２の値に「１」を加えた値（ただし、この値もセレクト信号ｌａｎｅ＿ｓｅｌ２と同様に０〜２の値で循環的に増加する）は、レーンセレクタ１５０の第２の出力を示す。
【０１６３】
セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「０」は、第１の透過型ラッチＬＴ０の出力を第１の出力として選択することを示し、第２の透過型ラッチＬＴ１の出力を第２の出力として選択することを示す。セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「１」は、第２の透過型ラッチＬＴ１の出力を第１の出力として選択することを示し、第３の透過型ラッチＬＴ２の出力を第２の出力として選択することを示す。セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「２」は、第３の透過型ラッチＬＴ２の出力を第１の出力して選択することを示し、第１の透過型ラッチＬＴ０の出力を第２の出力として選択することを示す。
【０１６４】
レーンセレクタ１５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２、データ信号Ｄａｔａ２＿Ｉ０、Ｄａｔａ２＿Ｉ１、Ｄａｔａ２＿Ｉ２を受ける。レーンセレクタ１５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２の値がｋのときには、データ信号Ｄａｔａ２＿Ｉｋを第１の出力データ信号Ｄａｔａ＿３ｒとして出力し、データ信号Ｄａｔａ２＿Ｉｊを第２の出力データ信号Ｄａｔａ＿３ｆとして出力する。ただし、ｊは、「０」〜「２」の間で循環的に増加する数（３進数）で、ｋよりも１より大きい。
【０１６５】
すなわち、レーンセレクタ１５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「０」のときには、第１の透過型ラッチＬＴ０の出力であるデータ信号Ｄａｔａ２＿Ｉ０を第１の出力データ信号Ｄａｔａ３＿ｒとして出力し、第２の透過型ラッチＬＴ１の出力であるデータ信号Ｄａｔａ２＿Ｉ１を第２の出力データ信号Ｄａｔａ３＿ｆとして出力する。レーンセレクタ１５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「１」のときには、第２の透過型ラッチＬＴ１の出力であるデータ信号Ｄａｔａ２＿Ｉ１を第１の出力データ信号Ｄａｔａ３＿ｒとして出力し、第３の透過型ラッチＬＴ２の出力であるデータ信号Ｄａｔａ２＿Ｉ２を第２の出力データ信号Ｄａｔａ３＿ｆとして出力する。レーンセレクタ１５０は、セレクト信号ｌａｎｅ＿ｓｅｌ２の値が「２」のときには、第３の透過型ラッチＬＴ２の出力であるデータ信号Ｄａｔａ２＿Ｉ２を第１の出力データ信号Ｄａｔａ３＿ｒとして出力し、第１の透過型ラッチＬＴ０の出力であるデータ信号Ｄａｔａ２＿Ｉ０を第２の出力データ信号Ｄａｔａ３＿ｆとして出力する。
【０１６６】
フリップフロップＦＦ１＿ｒは、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングに同期して、データ信号Ｄａｔａ３＿ｒを取り込み、保持してデータ信号Ｄａｔａ４＿ｒとして出力する。フリップフロップＦＦ１＿ｆは、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジが発生するタイミングに同期して、データ信号Ｄａｔａ３＿ｆを取り込み、保持してデータ信号Ｄａｔａ４＿ｆとして出力する。
【０１６７】
フリップフロップＦＦ２＿ｒは、チップクロック信号ＣｈｉｐＣｌｏｃｋの立ち上がりエッジが発生するタイミングに同期して、データ信号Ｄａｔａ４＿ｒを取り込み、保持してデータ信号ＯｕｔｐｕｔＤａｔａ＿ｒとして出力する。フリップフロップＦＦ２＿ｆは、チップクロック信号ＣｈｉｐＣｌｏｃｋの立ち上がりエッジが発生するタイミングに同期して、データ信号Ｄａｔａ４＿ｆを取り込み、保持してデータ信号ＯｕｔｐｕｔＤａｔａ＿ｆとして出力する。
【０１６８】
図１４は、第４の実施形態のサンプル回路３００の内部の信号（データ）、サンプル回路３００に入力される信号（データ）、サンプル回路３００から出力される信号（データ）のタイミング図である。
【０１６９】
図１４において、Ｄａｔａ（var）はデータ信号Ｄａｔａの劣化分（斜線部）を考慮した波形である。図１４において、右上り斜線のいずれかで信号が立ち上がり、左上り斜線のいずれかで信号が立ち下がるものとする。○印は取り込まれるデータを示す。データ信号Ｄａｔａの幅は１ＵＩ（Unit Interval）である。
【０１７０】
時刻ｔ２よりも後で、かつ時刻ｔ１′よりもタイミングにおいて、セレクト信号ｌａｎｅ＿ｓｅｌ２が[０」であるので、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ０（＝１）を選択して、データ信号Ｄａｔａ３＿ｒ（＝１）として出力する。また、セレクト信号ｌａｎｅ＿ｓｅｌ２の値＋１が[１」であるので、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ１（＝０）を選択して、データ信号Ｄａｔａ３＿ｆ（＝１）として出力する。
【０１７１】
時刻ｔ１′において、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がると、フリップフロップＦＦ１＿ｒによって、Ｄａｔａ３＿ｒ（＝１）が取り込まれ、フリップフロップＦＦ１＿ｒの出力データ信号Ｄａｔａ４＿ｒが「１」となる。これとともに、フリップフロップＦＦ１＿ｆによって、Ｄａｔａ３＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ１＿ｆの出力データ信号Ｄａｔａ４＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「２」に切り替えると、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ２（＝０）を選択して、データ信号Ｄａｔａ３＿ｒ（＝０）として出力する。また、セレクト信号ｌａｎｅ＿ｓｅｌ２の値＋１が[０」であるので、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ０（＝０）を選択して、データ信号Ｄａｔａ３＿ｆ（＝０）として出力する。
【０１７２】
時刻ｔ２′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ４＿ｒ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「１」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ４＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がると、フリップフロップＦＦ１＿ｒによって、Ｄａｔａ３＿ｒ（＝０）が取り込まれ、フリップフロップＦＦ１＿ｒの出力データ信号Ｄａｔａ４＿ｒが「０」となる。これとともに、フリップフロップＦＦ１＿ｆによって、Ｄａｔａ３＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ１＿ｆの出力データ信号Ｄａｔａ４＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「１」に切り替えると、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ１（＝１を含む）を選択して、データ信号Ｄａｔａ３＿ｒ（＝１を含む）として出力する。また、セレクト信号ｌａｎｅ＿ｓｅｌ２の値＋１が「２」であるので、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ２（＝１）を選択して、データ信号Ｄａｔａ３＿ｆ（＝１）として出力する。
【０１７３】
時刻ｔ３′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ４＿ｒ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ４＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がると、フリップフロップＦＦ１＿ｒによって、Ｄａｔａ３＿ｒ（＝１）が取り込まれ、フリップフロップＦＦ１＿ｒの出力データ信号Ｄａｔａ４＿ｒが「１」となる。これとともに、フリップフロップＦＦ１＿ｆによって、Ｄａｔａ３＿ｆ（＝１）が取り込まれ、フリップフロップＦＦ１＿ｆの出力データ信号Ｄａｔａ４＿ｆが「１」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「０」に切り替えると、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ０を選択して、データ信号Ｄａｔａ３＿ｒとして出力する。また、セレクト信号ｌａｎｅ＿ｓｅｌ２の値＋１が「１」であるので、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ１を選択して、データ信号Ｄａｔａ３＿ｆとして出力する。
【０１７４】
時刻ｔ４′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ４＿ｒ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「１」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ４＿ｆ（＝１）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「１」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち上がると、フリップフロップＦＦ１＿ｒによって、Ｄａｔａ３＿ｒ（＝０）が取り込まれ、フリップフロップＦＦ１＿ｒの出力データ信号Ｄａｔａ４＿ｒが「０」となる。これとともに、フリップフロップＦＦ１＿ｆによって、Ｄａｔａ３＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ１＿ｆの出力データ信号Ｄａｔａ４＿ｆが「０」となる。また、内部ストローブ信号Ｓｔｒｏｂｅ２が立ち下がり、カウンタＣＴ２が、セレクト信号ｌａｎｅ＿ｓｅｌ２を「２」に切り替えると、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ２を選択して、データ信号Ｄａｔａ３＿ｒとして出力する。また、セレクト信号ｌａｎｅ＿ｓｅｌ２の値＋１が「０」であるので、レーンセレクタ１５０は、データ信号Ｄａｔａ２＿Ｉ０を選択して、データ信号Ｄａｔａ３＿ｆとして出力する。
【０１７５】
時刻ｔ５′において、チップクロック信号ＣｈｉｐＣｌｏｃｋが立ち上がると、フリップフロップＦＦ２＿ｒによって、Ｄａｔａ４＿ｒ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｒの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｒが「０」となる。これとともに、フリップフロップＦＦ２＿ｆによって、Ｄａｔａ４＿ｆ（＝０）が取り込まれ、フリップフロップＦＦ２＿ｆの出力データ信号ＯｕｔｐｕｔＤａｔａ＿ｆが「０」となる。
【０１７６】
以上のようにして、ダブルデータレートで入力されたデータ信号Ｄａｔａは、ダブルデータレートのＳｔｒｏｂｅ１の立ち上がりエッジに対応したデータ信号ＯｕｔｐｕｔＤａｔａ＿ｒと、Ｓｔｒｏｂｅ１の立ち下がりエッジに対応したデータ信号ＯｕｔｐｕｔＤａｔａ＿ｆとして出力される。
【０１７７】
本実施の形態では、第３および第３の実施形態と同様に、図１４に示すように、立ち上がりエッジおよび立ち下りエッジのタイミングが１ＵＩ（厳密には１ＵＩよりΔｔ（微小時間）だけ小さい値）だけ変動する場合でも、ラッチ部によってデータ信号Ｄａｔａを取り込むことができる。
【０１７８】
本実施の形態では、第３の実施形態と同様に、あるデータ信号Ｄａｔａを外部ストローブ信号Ｓｔｒｏｂｅ１のタイミングから内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えるのに２ＵＩかかる。また、内部ストローブ信号Ｓｔｒｏｂｅ２のタイミングに乗せ換えた後、ＯｕｔｐｕｔＤａｔａ＿ｒ、ＯｕｔｐｕｔＤａｔａ＿ｆとして外部に出力するのには、第３および第３の実施形態と同様に、４ＵＩである。
【０１７９】
よって、外部からサンプル回路３００に入力されたデータ信号Ｄａｔａが、サンプル回路３００から外部に出力されるのに要する時間であるレイテンシが、第３の実施形態と同様に６ＵＩとなる。
【０１８０】
第３の実施形態では、レーンセレクタ５０の１つの出力を内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジでフリップフロップＦＦ１＿ｒに取り込み、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち下りエッジでフリップフロップＦＦ１＿ｆに取り込んだ。本実施の形態では、レーンセレクタ１５０の一方の出力を内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジでフリップフロップＦＦ１＿ｒに取り込み、レーンセレクタ１５０の他方の出力を内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジでフリップフロップＦＦ１＿ｆに取り込む。したがって、第３の実施形態では、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジと立ち下りエッジのタイミングが両方とも精度をよくする必要があるので、内部ストローブ信号Ｓｔｒｏｂｅ２のヂューティ比が５０％に近くなるように設計する必要がある。しかし、内部ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりエッジとの精度をよくすればよいだけなので、内部ストローブ信号Ｓｔｒｏｂｅ２のデューティ比を柔軟に設計することができる。
【０１８１】
なお、図１３のサンプル回路は、３つのレーンを備えるものとしたが、これに限定するものではなく、Ｎ個のレーンを備えるものとしてもよい。
【０１８２】
サンプル回路がＮ個のレーンを備える場合には、第１のＮ進カウンタによって、セレクト信号ｌａｎｅ＿ｓｅｌ１を生成し、ゲート部がＮ個のゲート回路を備え、ラッチ部がＮ個のラッチ回路を備え、レーンセレクタが、第２のＮ進カウンタから出力されるセレクト信号ｌａｎｅ＿ｓｅｌ２に従って、Ｎ個のラッチ回路の出力の中から２つを選択して出力する。
【０１８３】
具体的には、第１のＮ進カウンタが、ストローブ信号Ｓｔｒｏｂｅ１の立ち上がりのタイミングおよび立ち下りのタイミングに同期して、セレクト信号ｌａｎｅ＿ｓｅｌ１の値を「１」だけ増加する。
【０１８４】
ゲート部が第１〜第Ｎセレクタを含む。第ｉセレクタ（ｉ＝１〜Ｎ）は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が第ｉの値（＝ｉ-１）のときにデータ信号を出力し、セレクト信号ｌａｎｅ＿ｓｅｌ１の値が第ｉの値以外のときに０を出力する。
【０１８５】
ラッチ部が、第１〜第Ｎ比較回路と、第１〜第Ｎ透過型ラッチとを含む。
第ｉ比較回路（ｉ＝１〜Ｎ）は、セレクト信号ｌａｎｅ＿ｓｅｌ１の値と第ｉの値（＝ｉ−１）とを比較して、同一のときにはハイレベルの信号を出力し、相違するときにはロウレベルの信号を出力する。
【０１８６】
第ｉ透過型ラッチ（ｉ＝１〜Ｎ）は、データ信号を受けるデータ入力端子と、第ｉ比較回路の出力信号を受けるイネーブル端子とを有する。
【０１８７】
第２のＮ進カウンタが、内部ストローブ信号Ｓｔｒｏｂｅ２に従って、第１〜第Ｎ透過型ラッチの出力のうちのいずれを第１の出力として選択するかを示すセレクト信号ｌａｎｅ＿ｓｅｌ２を生成する。第２のＮ進カウンタは、ストローブ信号Ｓｔｒｏｂｅ２の立ち上がりのタイミングに同期して、セレクト信号ｌａｎｅ＿ｓｅｌ２の値を「２」だけ増加する。
【０１８８】
レーンセレクタが、第１〜第Ｎ透過型ラッチの出力を受け、セレクト信号ｌａｎｅ＿ｓｅｌ２の値に基づいて、第１〜第Ｎ透過型ラッチの出力のうちのいずれか１つを第１の出力として出力し、セレクト信号ｌａｎｅ＿ｓｅｌ２の値に「１」を加えた値に基づいて、第１〜第Ｎ透過型ラッチの出力のうちのいずれか１つを第２の出力として出力する。
【０１８９】
フリップフロップＦＦ１＿ｒ、ＦＦ１＿ｆ、ＦＦ２＿ｒ、ＦＦ２＿ｆの構成および動作は、レーン数がＮの場合でも、レーン数が２つの場合と同様である。
【０１９０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１９１】
１  半導体装置、２，２０，１２０  ゲート部、３，３０，１３０  ラッチ部、４，ＣＴ，ＣＴ２  カウンタ、２１，２２，１２１，１２２，１２３  ゲート回路、３１，３２，１３１，１３２，１３３  ラッチ回路、５０，１５０  レーンセレクタ、６０  レシーバ部、９０  ＦＩＦＯ、９１  ライトポインタ供給部、９２  リードポインタ供給部、５００  Ｓｏｃ、５０１  ＤＤＲメモリ、１００，２００，２５０，３００，９００  サンプル回路、Ｒ１〜Ｒ４  レシーバ、Ｄ１〜Ｄ４  ドライバ、ＦＦ１，ＦＦ２ｒ，ＦＦ３ｒ，ＦＦ３ｆ，ＦＦ４ｒ，ＦＦ４ｆ，ＦＦ１＿ｒ，ＦＦ１＿ｆ，ＦＦ２＿ｒ，ＦＦ２＿ｆ  フリップフロップ、ＬＣ０，ＬＣ１  論理回路、ＣＭ０，ＣＭ１，ＣＭ２  比較器、ＬＴ０，ＬＴ１，ＬＴ２  透過型ラッチ、ＳＬ０，ＳＬ１，ＳＬ２  セレクタ。
【図１】
2018055330.tif 000003
【図２】
2018055330.tif 000004
【図３】
2018055330.tif 000005
【図４】
2018055330.tif 000006
【図５】
2018055330.tif 000007
【図６】
2018055330.tif 000008
【図７】
2018055330.tif 000009
【図８】
2018055330.tif 000010
【図９】
2018055330.tif 000011
【図１０】
2018055330.tif 000012
【図１１】
2018055330.tif 000013
【図１２】
2018055330.tif 000014
【図１３】
2018055330.tif 000015
【図１４】
2018055330.tif 000016