(57)【要約】      （修正有）【課題】インタフェース回路のキャリブレーション時間を短縮する半導体装置を提供する。【解決手段】半導体装置に設けられたインタフェース回路１０１の受信制御回路１１０は、データ信号ＤＡＴＡ０〜ＤＡＴＡ２が入力される遅延線を含む遅延回路３４＿０〜３４＿２と、レジスタ３５＿０〜３５＿２と、キャリブレーション回路３３と備える。レジスタは、遅延線を伝送中のデータ信号を遅延線上の位置に対応付けて保持する。キャリブレーション回路は、レジスタに保持されたデータ信号ＤＡＴＡ０〜ＤＡＴＡ２に基づいてストローブ信号ＤＱＳおよびデータ信号ＤＡＴＡ０〜ＤＡＴＡ２のうちの少なくとも一方の遅延量の設定を行う。【選択図】図２
2020046800.tif 000002
【特許請求の範囲】
【請求項１】
ストローブ信号とデータ信号とを受信するインタフェース回路を備え、
前記インタフェース回路は、
前記ストローブ信号が入力される第１の遅延線を含み、遅延量が可変の第１の遅延回路と、
前記データ信号が入力される第２の遅延線を含み、遅延量が可変の第２の遅延回路と、
前記第２の遅延線を伝送中の前記データ信号を前記第２の遅延線上の位置に対応付けて保持するレジスタと、
前記レジスタに保持された前記データ信号に基づいて前記第１の遅延回路の遅延量および前記第２の遅延回路の遅延量の少なくとも一方の設定値を算出するキャリブレーション回路とを備える、半導体装置。
【請求項２】
前記インタフェース回路は、前記第２の遅延線を伝送中の前記データ信号の立上がりエッジまたは立下がりエッジに基づいてトリガを生成するトリガ生成回路をさらに備え、
前記レジスタは、前記トリガ生成回路によって生成されたトリガに応答して、前記データ信号を保持する、請求項１に記載の半導体装置。
【請求項３】
前記キャリブレーション回路は、前記レジスタに保持された前記データ信号の立上がりエッジと立下がりエッジとの間の間隔に基づいて有効ウィンドウサイズを算出し、
前記キャリブレーション回路は、算出した前記有効ウィンドウサイズに基づいて、前記第１の遅延回路の遅延量および前記第２の遅延回路の遅延量の少なくとも一方の設定値を算出する、請求項２に記載の半導体装置。
【請求項４】
前記インタフェース回路は、第１のトリガモードと第２のトリガモードとを有するトリガ生成回路をさらに備え、
前記トリガ生成回路は、前記第１のトリガモードにおいて、前記第２の遅延線を伝送中の前記データ信号の立上がりエッジまたは立下がりエッジに基づいてトリガを生成し、
前記トリガ生成回路は、前記第２のトリガモードにおいて、前記第１の遅延回路によって遅延された前記ストローブ信号に基づいてトリガを生成し、
前記レジスタは、前記トリガ生成回路によって生成されたトリガに応答して、前記データ信号を保持する、請求項１に記載の半導体装置。
【請求項５】
前記キャリブレーション回路は、前記第１のトリガモードにおいて、前記レジスタに保持された前記データ信号の立上がりエッジと立下がりエッジとの間の間隔に基づいて有効ウィンドウサイズを算出し、
前記キャリブレーション回路は、前記第２のトリガモードにおいて、前記レジスタに保持された前記データ信号の立上がりエッジまたは立下がりエッジに基づいて、前記ストローブ信号と前記データ信号との間のタイミングのずれを算出し、
前記キャリブレーション回路は、算出した前記有効ウィンドウサイズおよび算出した前記タイミングのずれに基づいて、前記第１の遅延回路の遅延量および前記第２の遅延回路の遅延量のうち少なくとも一方の設定値を算出する、請求項４に記載の半導体装置。
【請求項６】
前記インタフェース回路は、前記第１の遅延回路によって遅延された前記ストローブ信号に基づいてトリガを生成するトリガ生成回路をさらに備え、
前記レジスタは、前記トリガ生成回路によって生成されたトリガに応答して、前記データ信号を保持する、請求項１に記載の半導体装置。
【請求項７】
前記キャリブレーション回路は、前記レジスタに保持された前記データ信号の立上がりエッジと立下がりエッジとの間の間隔に基づいて有効ウィンドウサイズを算出し、
前記キャリブレーション回路は、前記レジスタに保持された前記データ信号の立上がりエッジまたは立下がりエッジに基づいて、前記ストローブ信号と前記データ信号との間のタイミングのずれを算出し、
前記キャリブレーション回路は、算出した前記有効ウィンドウサイズおよび算出した前記タイミングのずれに基づいて、前記第１の遅延回路の遅延量および前記第２の遅延回路の遅延量のうち少なくとも一方の設定値を算出する、請求項６に記載の半導体装置。
【請求項８】
前記第１の遅延回路は、前記第１の遅延線の第１端と第２端との間の複数の出力点のうちの１つを、第１の設定値に従って選択する第１の選択回路を含み、
前記第１の遅延線の前記第１端から入力された前記ストローブ信号は、前記第１の選択回路によって選択された前記第１の遅延線の出力端から出力され、
前記第２の遅延回路は、前記第２の遅延線の第１端と第２端との間の複数の出力点のうちの１つを、第２の設定値に従って選択する第２の選択回路を含み、
前記第２の遅延線の前記第１端から入力された前記データ信号は、前記第２の選択回路によって選択された前記第２の遅延線の出力端から出力される、請求項３に記載の半導体装置。
【請求項９】
前記第１の設定値および前記第２の設定値の設定後に、前記キャリブレーション回路は、前記レジスタに保持された前記データ信号に基づいて有効ウィンドウサイズを常時算出し、前記算出された有効ウィンドウサイズが閾値を超えて変化した場合には、前記第１の設定値および前記第２の設定値の少なくとも一方を再設定する、請求項８に記載の半導体装置。
【請求項１０】
前記インタフェース回路は、
参照電圧を生成する参照電圧生成器と、
前記第２の遅延回路の前段に設けられ、受信した前記データ信号の値と前記参照電圧とを比較し、比較結果に基づいて前記データ信号の波形を整形するレシーバとをさらに備える、請求項１に記載の半導体装置。
【請求項１１】
前記インタフェース回路は、
参照電圧を生成する参照電圧生成器と、
前記第２の遅延回路の前段に設けられ、受信した前記データ信号の値と前記参照電圧とを比較し、比較結果に基づいて前記データ信号の波形を整形するレシーバとをさらに備える、請求項２に記載の半導体装置。
【請求項１２】
前記インタフェース回路は、
参照電圧を生成する参照電圧生成器と、
前記第２の遅延回路の前段に設けられ、受信した前記データ信号の値と前記参照電圧とを比較し、比較結果に基づいて前記データ信号の波形を整形するレシーバとをさらに備える、請求項３に記載の半導体装置。
【請求項１３】
前記キャリブレーション回路は、前記参照電圧を順次変化させた場合の各設定値に対して、前記レジスタに保持された前記データ信号に基づいて有効ウィンドウサイズを算出し、前記算出した有効ウィンドウサイズが最大となるように前記参照電圧を設定する、請求項１２に記載の半導体装置。
【請求項１４】
ストローブ信号が入力される第１の遅延線を含み、遅延量が可変の第１の遅延回路と、
データ信号が入力される第２の遅延線を含み、遅延量が可変の第２の遅延回路と、
前記第１の遅延回路によって遅延された前記ストローブ信号の立上がりエッジおよび立下がりエッジの少なくとも一方のタイミングで、前記第２の遅延回路によって遅延された前記データ信号をサンプリングするサンプリング回路と、
前記第２の遅延線を伝送中の前記データ信号の立上がりエッジまたは立下がりエッジに基づいてトリガを生成するトリガ生成回路と、
前記トリガ生成回路によって生成されたトリガに応答して、前記第２の遅延線を伝送中の前記データ信号を前記第２の遅延線上の位置に対応付けて保持するレジスタとを備える、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、半導体装置に関し、たとえば、ストローブ信号およびデータ信号の送受信を行うインタフェース回路を備えた半導体装置において好適に用いられるものである。
【背景技術】
【０００２】
外部メモリとＳｏＣ（System  on  Chip）との間でデータの送受信を行う場合を例に挙げる。この場合、送信側のインタフェース回路は、ストローブ信号とともにそのストローブ信号に同期したデータ信号を受信側のインタフェース回路に向けて送信する。受信側のインタフェース回路は、データ信号の有効ウィンドウの中心でデータ信号をサンプリングできるように、ストローブ信号またはデータ信号の位相シフトを行う。確実にデータをサンプリングできるように、初期化時などに予め位相シフト量の調整（すなわち、キャリブレーション）が行われる。
【０００３】
たとえば、特開２００８−０５２３３５号公報（特許文献１）に記載のインタフェース回路は、ストローブ信号を遅延させる可変遅延回路と、この可変遅延回路の遅延シフト量を調整する遅延調整回路とを有する。遅延調整回路は、キャリブレーション時に、ストローブ信号の遅延シフト量を変えながらデータ信号をサンプリングし、サンプリングされたデータ信号の値が期待値と一致するか否かを判定する。これにより、遅延調整回路は、セットアップ限界およびホールド限界を検出し、その中間位置を最適遅延量として算出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−０５２３３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記の特許文献などに開示されている従来技術の問題点は、キャリブレーションに長時間を要する点にある。その理由は、セットアップおよびホールドの限界遅延をサーチして有効ウィンドウを決定するまでに、ストローブ信号の遅延シフト量を変えながら多数回のデータ信号のサンプリングを行わなければならないからである。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施形態による半導体装置は、ストローブ信号およびデータ信号を受信するインタフェース回路を備える。インターフェース回路は、データ信号が入力される遅延線と、その遅延線を伝送中のデータ信号を遅延線上の位置に対応付けて保持するためのレジスタとを備える。ストローブ信号およびデータ信号のうち少なくとも一方の遅延量は、レジスタに保持されたデータ信号に基づいて設定される。
【発明の効果】
【０００８】
上記の実施形態によれば、インタフェース回路のキャリブレーション時間を従来よりも短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の半導体装置を利用したシステムの構成例を示すブロック図である。
【図２】図１の受信制御回路の構成を示すブロック図である。
【図３】図２の遅延回路およびレジスタの具体的構成例を示す回路図である。
【図４】図３の遅延回路の変形例を示す回路図である。
【図５】インタフェース回路のキャリブレーションの手順の概略を説明するための図である。
【図６】レジスタを構成する各フリップフロップに保持される信号の一例を示す図である。
【図７】図６の例において、入力データ信号、各遅延素子の出力信号、およびトリガ信号の波形を示す図である。
【図８】データトレーニングの手順を示すフローチャートである。
【図９】最適な参照電圧の大きさについて説明するための図である。
【図１０】参照電圧トレーニングの手順を説明するためのフローチャートである。
【図１１】データ信号の遅延量を常時観測する手順を示すフローチャートである。
【図１２】第４の実施形態の半導体装置において、インタフェース回路の受信制御回路の構成を示すブロック図である。
【図１３】図１２のレジスタの構成を示す回路図である。
【図１４】第４の実施形態において、インタフェース回路１０１のキャリブレーションの手順を示すフローチャートである。
【図１５】第４の実施形態の半導体装置において、ビットごとの遅延回路に入力されている１サイクルパルスの波形を示す図である。
【図１６】第５の実施形態の半導体装置において、受信制御回路で用いられる遅延線およびレジスタの構成を示すブロック図である。
【図１７】第５の実施形態において、インタフェース回路１０１のキャリブレーションの手順を示すフローチャートである。
【図１８】第５の実施形態の半導体装置において、ストローブ信号をトリガとして、ビットごとにレジスタに取り込まれた１サイクルパルスの波形を示す図である。
【図１９】第５の実施形態の半導体装置において、ビットごとの入力信号の立上がりエッジまたは立下がりエッジに基づいて生成されたトリガに応答して、各レジスタに取り込まれた１サイクルパルスの波形を示す図である。
【発明を実施するための形態】
【００１０】
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【００１１】
＜第１の実施形態＞
［半導体装置およびシステムの概略構成］
図１は、第１の実施形態の半導体装置を利用したシステムの構成例を示すブロック図である。
【００１２】
図１を参照して、半導体システムは、複数の信号線を介して相互に接続された第１の半導体装置１００Ａと第２の半導体装置１００Ｂとを含む。半導体装置１００Ａ，１００Ｂについて総称する場合またはいずれか一方を示す場合に半導体装置１００と記載する。
【００１３】
図１の半導体装置１００Ａ，１００Ｂを接続する信号線は、ストローブ信号ＤＱＳ用の信号線と、データ信号ＤＡＴＡ用の信号線とを含む。図１の例では、ストローブ信号ＤＱＳは差動信号であり、データ信号ＤＡＴＡはシングルエンドのパラレル信号である。図１では、データ信号ＤＡＴＡのうち２ビット（ＤＡＴＡ０，ＤＡＴＡ１）が代表的に示されている。
【００１４】
以下の説明では、データ信号ＤＡＴＡを構成するビットごとの信号をビット信号ＤＡＴＡ０、ビット信号ＤＡＴＡ１、…のように記載する。
【００１５】
各半導体装置１００は、インタフェース回路１０１（１０１Ａ，１０１Ｂ）と、内部回路１０２（１０２Ａ，１０２Ｂ）とを含む。第１の半導体装置１００Ａは、たとえば、ＳｏＣ（System on a Chip）である。この場合、内部回路１０２Ａは、ＣＰＵ（Central  Processing  Unit）、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、および各種の周辺回路などを含む。第２の半導体装置１００Ｂは、たとえば、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）である。この場合、内部回路１０２Ｂは、メモリセルアレー、デコーダ、およびセンスアンプなどを含む。
【００１６】
なお、半導体装置１００ＡとしてのＳｏＣと、半導体装置１００Ｂとしてのメモリ装置とが、１つのチップまたはパッケージに集積されていてもよい。この場合、図１に示す構成全体が１つの半導体装置に相当する。
【００１７】
各インタフェース回路１０１は、ストローブ信号ＤＱＳの送受信に用いられるドライバ６０およびレシーバ３０と、データ信号ＤＡＴＡの送受信に用いられるドライバ６１＿０，６１＿１およびレシーバ３１＿０，３１＿１と、受信制御回路１１０とを含む。なお、図１および図２では、インタフェース回路１０１のうち、主としてデータ受信に関係する一部の共通の構成のみが示されている。
【００１８】
ドライバ６１＿０，６１＿１，…について総称する場合またはいずれか１つを示す場合にドライバ６１と記載する。レシーバ３１＿０，３１＿１，…について総称する場合またはいずれか１つを示す場合にレシーバ３１と記載する。
【００１９】
以下、インタフェース回路１０１Ａが送信側であり、インタフェース回路１０１Ｂが受信側の場合について説明する。送信側と受信側とが逆の場合も同様である。
【００２０】
送信側のインタフェース回路１０１Ａは、ストローブ信号ＤＱＳを受信側インタフェース回路１０１Ｂにドライバ６０を介して出力する。さらに、送信側インタフェース回路１０１Ａは、このストローブ信号ＤＱＳに同期するビット信号ＤＡＴＡ０，ＤＡＴＡ１を受信側インタフェース回路１０１Ｂに向けてドライバ６１＿０，６１＿１をそれぞれ介して出力する。ここで、ドライバ６０，６１は、送信信号の波形を整形するバッファとして機能する。
【００２１】
受信側のインタフェース回路１０１Ｂは、レシーバ３０を介してストローブ信号ＤＱＳを受信するとともに、レシーバ３１＿０，レシーバ３１＿１を介してビット信号ＤＡＴＡ０，ＤＡＴＡ１をそれぞれ受信する。ここで、レシーバ３０，３１は、受信信号の波形を整形するバッファとして機能する。
【００２２】
各インタフェース回路１０１の受信制御回路１１０は、受信したストローブ信号ＤＱＳおよび／またはデータ信号ＤＡＴＡの位相シフトを行う。さらに、受信制御回路１１０は、位相シフト後のストローブ信号ＤＱＳの立上がりおよび／または立下がりのタイミングで、位相シフト後の各ビット信号のサンプリングを行う。
【００２３】
［受信制御回路の構成］
図２は、図１の受信制御回路の構成を示すブロック図である。図２では、図１の受信制御回路１１０とともに、ストローブ信号ＤＱＳをそれぞれ受信するレシーバ３０と、ビット信号ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２をそれぞれ受信するレシーバ３１＿０，３１＿１，３１＿２とが示されている。図２の例では、データ信号ＤＡＴＡの３ビット分（ビット信号ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２）が代表的に示されている。
【００２４】
図２を参照して、レシーバ３０は、差動のストローブ信号ＤＱＳを受信して、シングルエンドのストローブ信号ＤＱＳに変換して出力する。
【００２５】
レシーバ３１＿０〜３１＿２は、ビット信号ＤＡＴＡ０〜ＤＡＴＡ２をそれぞれ受信し、受信したビット信号を参照電圧ＶＲＥＦと比較する。たとえば、レシーバ３１は、受信したビット信号が参照電圧ＶＲＥＦ以上のときハイ（Ｈ）レベルの信号を出力し、受信したビット信号が参照電圧ＶＲＥＦ未満のときロー（Ｌ）レベルの信号を出力する。なお、ビット信号の大きさと出力信号の論理レベルとの対応関係は逆であってもよい。
【００２６】
受信制御回路１１０は、参照電圧生成器３２と、遅延回路３４＿Ｓ，３４＿０，３４＿１，３４＿２と、サンプリング回路３６＿０，３６＿１，３６＿２と、レジスタ３５＿０，３５＿１，３５＿２と、キャリブレーション回路３３とを含む。
【００２７】
以下の説明では、遅延回路３４＿Ｓ，３４＿０，３４＿１，３４＿２について総称する場合またはいずれか１つを示す場合に遅延回路３４と記載する。同様に、サンプリング回路３６＿０，３６＿１，３６＿２について総称する場合またはいずれか１つを示す場合にサンプリング回路３６と記載する。レジスタ３５＿０，３５＿１，３５＿２について総称する場合またはいずれか１つを示す場合にレジスタ３５と記載する。
【００２８】
受信制御回路１１０の構成要素のうち、参照電圧生成器３２は、前述の参照電圧ＶＲＥＦを生成し、生成した参照電圧ＶＲＥＦを各レシーバ３１に供給する。
【００２９】
遅延回路３４＿Ｓはストローブ信号ＤＱＳに対応して設けられる。遅延回路３４＿０，３４＿１，３４＿２は、ビット信号ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２にそれぞれ対応して設けられる。各遅延回路３４は、遅延量を可変に制御することができ、これにより、受信信号の位相を所望の値だけシフトさせる。各遅延回路３４の遅延量は、遅延コードを用いて設定される。各遅延回路３４は、共通の構成を有しており、その具体的構成例については、図３および図４を参照して説明する。
【００３０】
サンプリング回路３６＿０，３６＿１，３６＿２は、ビット信号ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２にそれぞれ対応して設けられる。各サンプリング回路３６は、対応の遅延回路３４を通過した対応のビット信号と、遅延回路３４＿Ｓを通過したストローブ信号ＤＱＳとを受信する。各サンプリング回路３６は、受信したストローブ信号ＤＱＳの立上がりおよび／または立下がりのタイミングで、対応するビット信号をサンプリングする。
【００３１】
レジスタ３５＿０，３５＿１，３５＿２は、遅延回路３４＿０，３４＿１，３４＿２にそれぞれ対応して設けられる。各レジスタ３５は、トリガを受けたときに、対応する遅延回路３４の信号伝送経路を伝送中のビット信号（すなわち、信号伝送経路上の複数個所における信号の論理値（“Ｈ”または“Ｌ”））を、信号伝送経路上の位置に対応付けて保持するように構成される。このときのトリガは、対応する遅延回路３４を伝送中のビット信号の立上がりエッジまたは立下がりエッジを利用して生成される。
【００３２】
これによって、各レジスタ３５は、対応する遅延回路３４に１サイクルパルスが入力された場合に、入力された１サイクルパルス自身の立上がりエッジまたは立下がりエッジに基づいて適切なタイミングでトリガをかけることによって、１サイクルパルスの信号全体を確実に保持することできる。この結果、保持された１サイクルパルスの立上がりエッジから立下がりエッジまでに相当する有効ウィンドウを検出することが可能になる。
【００３３】
なお、１サイクルパルスとは、クロック信号の１サイクルでＬレベル、Ｈレベル、Ｌレベルの順にまたはＨレベル、Ｌレベル、Ｈレベルの順に変化する１ショットパルスをいう。以下、Ｌレベル、Ｈレベル、Ｌレベルの順に変化する波形をＬＨＬ波形と称し、Ｈレベル、Ｌレベル、Ｈレベルの順に変化する波形をＨＬＨ波形と称する。
【００３４】
キャリブレーション回路３３は、各レジスタ３５に保持された１サイクルパルスの信号波形に基づいて、ビット信号ごとの有効ウィンドウのサイズ（有効ウィンドウの幅とも称する）を計算する。キャリブレーション回路３３は、計算した有効ウィンドウサイズに基づいて、遅延回路３４の遅延量を表す遅延コードの最適値を決定する。
【００３５】
［遅延回路およびレジスタの回路構成例］
図３は、図２の遅延回路およびレジスタの具体的構成例を示す回路図である。図３を参照して、図２の遅延回路３４は、信号伝送経路である遅延線５０と、マルチプレクサ５１とを含む。
【００３６】
遅延線５０は、互いに縦続接続された複数の遅延素子Ｄ１〜Ｄ１１，ＤＯを含む。遅延素子Ｄ１〜Ｄ１１，ＤＯについて、総称する場合またはいずれか１つを示す場合に遅延素子Ｄと記載する。遅延素子Ｄは、たとえば、偶数個のＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）インバータを直列に接続することによって構成されたバッファである。遅延線５０の一端（すなわち、図３の遅延素子Ｄ１側）から入力ビット信号ＤＡＴＡ＿ｉｎが入力される。
【００３７】
マルチプレクサ５１には、遅延素子Ｄ１〜Ｄ１１，ＤＯの各々の出力信号が入力される。マルチプレクサ５１は、遅延コードＤＣに応じてこれらの遅延素子Ｄの出力信号のうちの１つを選択し、選択した信号を出力ビット信号ＤＡＴＡ＿ｏｕｔとして出力する。いずれの遅延素子Ｄの出力信号を出力するかに応じて、出力ビット信号ＤＡＴＡ＿ｏｕｔの遅延量を変更することができる。
【００３８】
図２のレジスタ３５は、複数のフリップフロップＦＦ１〜ＦＦ１１と、トリガ生成回路４０とを含む。フリップフロップＦＦ１〜ＦＦ１１について、総称する場合またはいずれか１つを示す場合にフリップフロップＦＦと記載する。なお、本明細書では、便宜上、トリガ生成回路４０をレジスタ３５の構成の一部として記載しているが、トリガ生成回路４０をレジスタ３５とは別個の構成と捉えてもよい。
【００３９】
フリップフロップＦＦ１〜ＦＦ１１は、遅延素子Ｄ１〜Ｄ１１にそれぞれ対応して設けられる。各フリップフロップＦＦは、共通のトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇに応答して、対応する遅延素子Ｄの出力信号の論理値を保持する。具体的に図３の例では、各フリップフロップＦＦは、共通のトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立上がりエッジのタイミングで、対応する遅延素子Ｄの出力信号を保持する。なお、図３の場合とは異なるが、フリップフロップＦＦは、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立下がりエッジのタイミングで、対応する遅延素子Ｄの出力信号を保持するように構成されていてもよい。
【００４０】
トリガ生成回路４０は、対応する遅延線５０を伝送中のビット信号の立上がりエッジまたは立下がりエッジに基づいてトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇを生成する。より詳細には、トリガ生成回路４０は、ある特定の遅延素子Ｄ（図３の例では遅延素子Ｄ８）の出力信号の立上がりまたは立下がりのタイミングを基準にして、生成するトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立上がりのタイミングを決定する。
【００４１】
ただし、実際上は、トリガ生成回路４０自身の遅延のために、遅延素子Ｄ８の出力信号の立上がりまたは立下がりのタイミングよりも遅れたタイミングで、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇがＬレベルからＨレベルに切り替わる。図３の例では、ＬＨＬ波形を有する１サイクルパルスが入力されたときに、遅延線５０の末端近くの遅延素子Ｄ１１の出力信号がＬレベルからＨレベルに変化する直前のタイミングでトリガがかかるように、遅延素子Ｄ８の出力信号に基づいてトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇが生成されている。これによって、１サイクルパルスの立上がりエッジおよび立下がりエッジの両方を含む波形全体を、確実にレジスタ３５に取り込むことができる。
【００４２】
ここで、遅延素子Ｄ８の出力信号の立上がりエッジおよび立下がりエッジのうちどちらを基準にするかは、エッジ選択信号ＲＦ＿ＳＥＬに従って決定される。たとえば、トリガ生成回路４０は、エッジ選択信号ＲＦ＿ＳＥＬがＨレベルの場合に遅延素子Ｄ８の出力信号の立上がりを基準にし、エッジ選択信号ＲＦ＿ＳＥＬがＬレベルの場合に遅延素子Ｄ８の出力信号の立下がりを基準にして、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇをＬレベルからＨレベルに変化させる。なお、エッジ選択信号ＲＦ＿ＳＥＬの論理値と遅延素子Ｄ８の出力信号の立上がりおよび立下がりとの対応関係は、上記と逆であってもよい。
【００４３】
また、レジスタ３５によるビット信号の取り込みを行うか否かを切り替えるために、イネーブル信号ＣＡＬ＿ＥＮが用いられる。たとえば、トリガ生成回路４０は、イネーブル信号ＣＡＬ＿ＥＮがアサート（たとえば、Ｈレベル）の場合に、ビット信号に基づいてトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇ信号を生成し、イネーブル信号ＣＡＬ＿ＥＮがネゲート（たとえば、Ｌレベル）の場合に、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇを生成しない。
【００４４】
以下、トリガ生成回路４０の具体的な回路構成例について説明する。図３に示すように、トリガ生成回路４０は、インバータ４３と、マルチプレクサ４２と、ＡＮＤゲート４１とを含む。インバータ４３は、遅延素子Ｄ８の出力信号の論理値と反対の論理値を有する信号（以下、論理反転信号と称する）を出力する。
【００４５】
マルチプレクサ４２は、エッジ選択信号ＲＦ＿ＳＥＬに応じて、遅延素子Ｄ８の出力信号およびインバータ４３の出力信号（すなわち、遅延素子Ｄ８の出力信号に対する論理反転信号）の一方を出力する。以下の説明では、エッジ選択信号ＲＦ＿ＳＥＬがＨレベルのときマルチプレクサ４２は遅延素子Ｄ８の出力信号を選択し、エッジ選択信号ＲＦ＿ＳＥＬがＬレベルのときマルチプレクサ４２はインバータ４３の出力信号を選択するものとする。
【００４６】
ＡＮＤゲート４１は、イネーブル信号ＣＡＬ＿ＥＮとマルチプレクサ４２の出力信号との論理積を、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇとして各フリップフロップＦＦに出力する。
【００４７】
したがって、イネーブル信号ＣＡＬ＿ＥＮがネゲート（Ｌレベル）のとき、トリガ生成回路４０から各フリップフロップＦＦに出力される信号はＬベルに固定されるので、レジスタ３５には対応するビット信号が格納されない。
【００４８】
一方、イネーブル信号ＣＡＬ＿ＥＮがアサート（Ｈレベル）のとき、トリガ生成回路４０は、マルチプレクサ４２の出力信号（すなわち、遅延素子Ｄ８の出力信号またはその論理反転信号）に基づいてトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇを生成して各フリップフロップＦＦに出力する。この結果、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立上がりエッジ（または、立下がりエッジ）のタイミングでレジスタ３５にデータ信号ＤＡＴＡが格納される。
【００４９】
［遅延回路の変形例］
図３の遅延回路３４は、入力ビット信号ＤＡＴＡ＿ｉｎが遅延線５０の端部に入力され、出力ビット信号ＤＡＴＡ＿ｏｕｔが遅延線５０の任意の箇所から出力可能なように構成されていた。したがって、遅延線５０からの出力ビット信号ＤＡＴＡ＿ｏｕｔの出力位置に応じてビット信号の遅延量が決定される。なお、この回路構成の場合には、入力ビット信号ＤＡＴＡ＿ｉｎは、出力ビット信号ＤＡＴＡ＿ｏｕｔの出力位置にかかわらず、遅延線５０の一端から他端までの全経路を伝送する。
【００５０】
一方、以下に示す変形例の遅延回路３４Ａは、入力ビット信号ＤＡＴＡ＿ｉｎは遅延線５０Ａの任意の箇所に入力可能であり、出力ビット信号ＤＡＴＡ＿ｏｕｔは遅延線５０Ａの端部である出力端から出力されるように構成される。したがって、遅延線５０への入力ビット信号ＤＡＴＡ＿ｉｎの入力位置に応じてビット信号の遅延量が決定される。なお、この回路構成の場合には、入力ビット信号ＤＡＴＡ＿ｉｎは、遅延線５０の出力端と反対側の端部に入力されない限り、遅延線５０の全経路を伝送しない。以下、図面を参照して詳しく説明する。
【００５１】
図４は、図３の遅延回路の変形例を示す回路図である。図４では、変形例の遅延回路３４Ａとともに、図３と同じ構成のレジスタ３５の回路構成も示されている。
【００５２】
図４を参照して、遅延回路３４Ａは、互いに縦続接続された複数の遅延素子Ｄ１〜Ｄ１１，ＤＯを含む。遅延素子Ｄ１〜Ｄ１１，ＤＯによって遅延線５０Ａが構成される。遅延素子Ｄ１は、図３の場合と同様のバッファの構成を有している。遅延素子Ｄ２〜Ｄ１１，ＤＯは、図３の場合と異なり、マルチプレクサの構成を有している。
【００５３】
具体的に、遅延素子Ｄｉ（ｉ＝２〜１１）は、遅延コードＤＣに従って、入力ビット信号ＤＡＴＡ＿ｉｎと前段の遅延素子Ｄｉ−１の出力信号とのうちいずれか一方を選択し、選択した信号を後段の遅延素子Ｄに出力する。遅延素子ＤＯも同様に、遅延コードＤＣに従って、入力ビット信号ＤＡＴＡ＿ｉｎと前段の遅延素子Ｄ１１の出力信号とのうちいずれか一方を選択し、選択した信号を出力ビット信号ＤＡＴＡ＿ｏｕｔとして出力する。
【００５４】
上記の回路構成において、遅延コードＤＣは、遅延素子Ｄ２〜Ｄ１１，ＤＯのうちどの遅延素子が選択されたか（またはいずれも非選択であるか）を表すコード番号である。たとえば、遅延コードＤＣによって、遅延素子Ｄ９が選択された場合には、入力ビット信号ＤＡＴＡ＿ｉｎは、遅延素子Ｄ９〜Ｄ１１，ＤＯを通過した後に、出力ビット信号ＤＡＴＡ＿ｏｕｔとして遅延回路３４Ａから出力される。
【００５５】
［インタフェース回路のキャリブレーション手順］
（１．キャリブレーション手順の概略）
次に、図２のインタフェース回路１０１のキャリブレーションの手順について説明する。
【００５６】
図５は、インタフェース回路のキャリブレーションの手順の概略を説明するための図である。図５では、図２のストローブ信号ＤＱＳの波形と、ビット信号ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２として各遅延回路３４に入力される１サイクルパルスの波形とが示されている。１サイクルパルスの波形は、ＬＨＬ波形の場合とＨＬＨ波形の場合とが重ねて示されている。
【００５７】
キャリブレーションの手順は、図５（Ａ）に示すビットデスキューと、図５（Ｂ）に示す有効ウィンドウサイズの検出およびそれに基づくタイミング調整とに大別される。この明細書では、後者の有効ウィンドウサイズ検出およびそれに基づくタイミング調整を「データトレーニング」と称する。
【００５８】
まず、ビットデスキューについて説明する。ストローブ信号ＤＱＳおよび送信側のインタフェース回路１０１Ａでは、ストローブ信号ＤＱＳとデータ信号ＤＡＴＡとは、互いに同期するように生成されている。しかし、温度および電源電圧などの変化ために、受信側のインタフェース回路１０１Ｂではストローブ信号ＤＱＳと各ビット信号ＤＡＴＡ０〜ＤＡＴＡ２との間にタイミングのずれ（スキュー）が生じる場合がある。そこで、位相ずれの調整（デスキュー）がビットごとに行われる（「ビットデスキュー」と称する）。
【００５９】
具体的に図５（Ａ）では、ＬＨＬ波形を有する１サイクルパルスが、ビット信号ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２としてビットごとに示されている。この場合、ビットごとの１サイクルパルスがＬレベルからＨレベルに変化するタイミングがストローブ信号ＤＱＳの立上がりに同期するように、ビットごとの遅延回路３４＿０〜３４＿２の遅延量が調整される。
【００６０】
なお、図５（Ａ）の場合とは逆の波形であるＨＬＨ波形を有する１サイクルパルスの場合には、ビットごとの１サイクルパルスがＨレベルからＬレベルに変化するタイミングがストローブ信号ＤＱＳの立上がりに同期するように、遅延回路３４＿０〜３４＿２の遅延量が調整される。
【００６１】
次に、データトレーニングについて説明する。受信側のインタフェース回路１０１Ｂでは、一般的には、各ビット信号の有効ウィンドウ（図５で斜線で示している範囲）の中心で各ビット信号がサンプリングされるように、ストローブ信号ＤＱＳと各ビット信号との間のタイミングが調整される。ところが、温度および電源電圧などの変化ために、ビットごとに有効ウィンドウのサイズが異なる場合がある。そこで、ビットごとに有効ウィンドウサイズを求め、最小となる有効ウィンドウの中心位置で各ビット信号がサンプリングされるように、ストローブ信号ＤＱＳと各ビット信号との間のタイミングが調整される。
【００６２】
具体的に図５（Ｂ）に示す例では、ビット信号ＤＡＴＡ０〜ＤＡＴＡ２のうちビット信号ＤＡＴＡ１の有効ウィンドウサイズが最小である。したがって、ビット信号ＤＡＴＡ１の有効ウィンドウの中央位置でサンプリングされるように、遅延回路３４＿Ｓの遅延量が調整される。これによって、ストローブ信号ＤＱＳの立上がりのタイミングが時刻ｔ１から時刻ｔ２に変化する。
【００６３】
なお、ストローブ信号ＤＱＳとデータ信号ＤＡＴＡとの位相関係は相対的なものなので、遅延回路３４＿Ｓによってストローブ信号ＤＱＳを遅らせるのに代えて、遅延回路３４＿０〜３４＿２によって同じシフト量だけビット信号ＤＡＴＡ０〜ＤＡＴＡ２を進めるように調整にしてもよい。
【００６４】
（２．有効ウィンドウサイズの計算方法）
次に、レジスタ３５に保持された１サイクルパルスに基づいて有効ウィンドウサイズを計算する手順について説明する。
【００６５】
図６は、レジスタを構成する各フリップフロップに保持される信号の一例を示す図である。図７は、図６の例において、入力データ信号、各遅延素子の出力信号、およびトリガ信号の波形を示す図である。
【００６６】
図６および図７を参照して、図７の時刻ｔ１１でトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇがＬレベルからＨレベルに立上がる。時刻ｔ１１では、遅延素子Ｄ１０の出力信号はＬレベルからＨレベルに変化する直後の状態であり、遅延素子Ｄ１１の出力信号はＬレベルからＨレベルに変化する直前の状態である。したがって、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立上がりに応答して、対応するフリップフロップＦＦ１１に保持される信号の論理値はＬレベルであり、フリップフロップＦＦ１０に保持される信号の論理値はＨレベルである。
【００６７】
また、時刻ｔ１１において、遅延素子Ｄ６〜Ｄ９の出力信号は、ＬレベルからＨレベルに切り替わった後、Ｈレベルのまま維持された状態である。したがって、時刻ｔ１１におけるトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立上がりに応答して、対応のフリップフロップＦＦ６〜ＦＦ９に保持される信号の論理値はＨレベルである。
【００６８】
また、時刻ｔ１１において、遅延素子Ｄ５の出力信号は、ＨレベルからＬレベルに戻る直前の状態であり、遅延素子Ｄ４の出力信号は、ＨレベルからＬレベルに戻った直後の状態である。したがって、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立上がりに応答して、対応するフリップフロップＦＦ５に保持される信号の論理値はＨレベルであり、フリップフロップＦＦ４に保持される信号の論理値はＬレベルである。
【００６９】
また、時刻ｔ１１において、遅延素子Ｄ１〜Ｄ３の出力信号は、ＨレベルからＬレベルに戻った後、Ｌレベルのまま維持された状態である。したがって、時刻ｔ１１におけるトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立上がりに応答して、対応のフリップフロップＦＦ１〜ＦＦ３に保持される信号の論理値はＬレベルである。
【００７０】
よって、以上説明した結果から、Ｈレベルの信号を保持している遅延素子Ｄ５〜Ｄ１１の遅延時間が有効ウィンドウサイズに対応することがわかる。
【００７１】
（３．データトレーニングの手順）
図８は、データトレーニングの手順を示すフローチャートである。以下、図２、図３および図８などを参照して、これまで説明したデータトレーニングの手順を総括する。
【００７２】
以下のデータトレーニングは、インタフェース回路の初期化時のキャリブレーション期間において、さらには、その後に遅延量にずれが生じた場合の再キャリブレーションの期間において実行される。また、以下の説明では、図１のインタフェース回路１０１Ａを送信側とし、インタフェース回路１０１Ｂを受信側とする。
【００７３】
なお、図５（Ａ）を参照して説明したビットデスキューは、スキューが小さく必要とされないか、または既に完了しているものとする。ビットデスキューを含めたキャリブレーションの手順については、第４および第５の実施形態で説明する。
【００７４】
まず、キャリブレーション期間の最初に、受信側のインタフェース回路１０１Ｂのキャリブレーション回路３３は、イネーブル信号ＣＡＬ＿ＥＮをアサート（たとえば、Ｈレベル）にする。
【００７５】
また、送信側のインタフェース回路１０１Ａから受信側のインタフェース回路１０１Ｂに出力する１サイクルパルスとしてＬＨＬ波形のパルス信号を用いる場合には、キャリブレーション回路３３は、遅延素子Ｄ８の出力信号がマルチプレクサ４２によって選択されるようにエッジ選択信号ＲＦ＿ＳＥＬの論理値を設定する。１サイクルパルスがＨＬＨ波形の場合には、キャリブレーション回路３３は、マルチプレクサ４２によってインバータ４３の出力信号（すなわち、遅延素子Ｄ８の出力信号の論理反転信号）が選択されるようにエッジ選択信号ＲＦ＿ＳＥＬの論理値を設定する。
【００７６】
図８のステップＳ１０１において、図１の送信側のインタフェース回路１０１Ａは、受信側のインタフェース回路１０１Ｂに向けて、ビットごとに１サイクルパルスを送信する。前述のように、１サイクルパルスは、ＬＨＬ波形であってもよいし、ＨＬＨ波形であってもよい。送信されたパルス信号は、ビットごとに設けられた遅延回路３４に入力される。
【００７７】
次のステップＳ１０２において、各レジスタ３５に設けられたトリガ生成回路４０は、対応する遅延回路３４の遅延線５０を伝送中の１サイクルパルスの立上がりエッジまたは立下がりエッジに基づいてトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇを生成する。各レジスタ３５は、生成されたトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇに応答して、対応する遅延回路３４を伝送中の１サイクルパルスを、伝送経路上の位置に対応付けて保持する。
【００７８】
より詳細には、各遅延回路３４は、縦続接続された複数の遅延素子Ｄ１〜Ｄ１１，ＤＯを含む遅延線５０を備える。各レジスタ３５は、遅延素子Ｄ１〜遅延素子Ｄ１１にそれぞれ対応するフリップフロップＦＦ１〜ＦＦ１１を備える。各フリップフロップＦＦは、対応する遅延素子Ｄの出力信号の論理値を、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇが活性化するタイミングで保持する。
【００７９】
ここで、トリガ生成回路４０は、１サイクルパルスがＬＨＬ波形の場合には、遅延線５０の末端近傍に位置する遅延素子Ｄ１１の出力信号がＬレベルからＨレベルに切り替わるタイミング付近で、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇが活性化するように構成されている。逆に、１サイクルパルスがＨＬＨ波形の場合には、トリガ生成回路４０は、遅延線５０の末端近傍に位置する遅延素子Ｄ１１の出力信号がＨレベルからＬレベルに切り替わるタイミング付近で、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇが活性化するように構成されている。これによって、各レジスタ３５は、１サイクルパルスの波形の全体（すなわち、立上がりエッジから立下がりエッジまで）を確実に保持することができる。
【００８０】
その次のステップＳ１０３において、キャリブレーション回路３３は、各レジスタ３５に格納されたデータに基づいて、ビットごとの有効ウィンドウサイズ（すなわち、１サイクルパルスの立上がりから立下がりまでの間隔）を計算する。
【００８１】
その次のステップＳ１０４において、キャリブレーション回路３３は、ビットごとに算出された有効ウィンドウサイズの最小値の半分を、各ビット信号に対するストローブ信号ＤＱＳの遅延量に設定する。この場合、キャリブレーション回路３３は、各ビット信号とストローブ信号ＤＱＳとの相対的な関係がそのような遅延量となるように、ストローブ信号ＤＱＳ用の遅延回路３４＿Ｓのための遅延コードを設定してもよいし、各ビット信号用の遅延回路３４＿０〜３４＿２のための遅延コードを設定してもよいし、両方の遅延コードを設定してもよい。
【００８２】
［第１の実施形態の効果］
上記のとおり、第１の実施形態の半導体装置によれば、ビットごとに設けられた遅延回路に１サイクルパルスを１度だけ入力するだけで、ビットごとの有効ウィンドウサイズを決定することができる。したがって、データトレーニング（すなわち、ストローブ信号の遅延量の設定）に要する時間を極めて短縮することができる。この結果、インタフェース回路の初期化時のキャリブレーションに要する時間を短縮することができ、さらには、再キャリブレーション時の待ち時間を短縮することができる。
【００８３】
＜第２の実施形態＞
第２の実施形態では、第１の実施形態で説明したデータトレーニングに、データ信号ＤＡＴＡ用のレシーバ３１に入力する参照電圧の最適化の手順を組み合わせる場合について説明する。この明細書では、レシーバ３１に入力する参照電圧の最適化の手順を、「参照電圧トレーニング」と称する。
【００８４】
［最適な参照電圧について］
図９は、最適な参照電圧の大きさについて説明するための図である。具体的に、図９では、クロック信号が高周波の場合において、ＬＨＬ波形を有する１サイクルパルス７０の時間変化の模式図と、ＨＬＨ波形を有する１サイクルパルス７１の時間変化の模式図とが重ねて示されている。図９の縦軸は電圧である。
【００８５】
一般に、クロック信号の周波数が高くなるほど、データ信号ＤＡＴＡのＨレベルとＬレベルとの切り替わりが緩やかになる。このため、レシーバ３１に入力される参照電圧を適切な値に設定しないと有効ウィンドウサイズが小さくなってしまい、結果として、ストローブ信号ＤＱＳの遅延量の設定が困難になる。
【００８６】
たとえば、図９の例では、参照電圧をＶ１に設定したときの有効ウィンドウサイズはＴ１で表される。この場合、１サイクルパルスがＬＨＬ波形を有する場合（７０）のウィンドウサイズと１サイクルパルスがＨＬＨ波形を有する場合（７１）のウィンドウサイズとは同じである。
【００８７】
一方、参照電圧Ｖ２に設定した場合には、ＬＨＬ波形を有する１サイクルパルス７０の場合のウィンドウサイズはＴ２となり、ＨＬＨ波形を有する１サイクルパルス７１の場合のウィンドウサイズはＴ３（ただし、Ｔ３＞Ｔ２）となる。したがって、最終的に、参照電圧Ｖ２の場合の有効ウィンドウサイズは両者の共通部分であるＴ２となり、参照電圧がＶ１の場合の有効ウィンドウサイズであるＴ１よりも小さくなる。
【００８８】
以上から、有効ウィンドウサイズを最大にするには、参照電圧をＶ１に設定するのが望ましい。以下、有効ウィンドウサイズの最適化（すなわち、参照電圧トレーニング）の手順について説明する。
【００８９】
［参照電圧トレーニングの手順］
図１０は、参照電圧トレーニングの手順を説明するためのフローチャートである。以下の説明では、半導体装置１００インタフェース回路１０１の構成は第１の実施形態の場合と同じであるので、第１の実施形態の図１〜図３を適宜参照する。また、図１のインタフェース回路１０１Ａを送信側とし、インタフェース回路１０１Ｂを受信側とする。図５（Ａ）を参照しながら説明したビットデスキューは、スキューが小さく必要とされないか、または既に完了しているものとする。
【００９０】
まず、キャリブレーション期間の最初に、図２に示す受信側のインタフェース回路１０１Ｂのキャリブレーション回路３３は、イネーブル信号ＣＡＬ＿ＥＮをアサート（たとえば、Ｈレベル）にする。
【００９１】
次に、受信側のキャリブレーション回路３３は、参照電圧コードを順次変更しながら、ステップＳ２０２〜Ｓ２０５を繰り返す（図１０のステップＳ２０１〜Ｓ２０６に対応する）。参照電圧コードは図２の参照電圧生成器３２から出力可能な参照電圧ＶＲＥＦに対応しており、参照電圧コードを変化させることによって、参照電圧ＶＲＥＦを最小値から最大値まで変化させることができる。
【００９２】
具体的に、ステップＳ２０２において、キャリブレーション回路３３は、参照電圧コードを設定することによって、参照電圧コードに応じた電圧値を参照電圧生成器３２に出力させる。
【００９３】
次のステップＳ２０３において、送信側のインタフェース回路１０１Ａは、受信側のインタフェース回路１０１Ｂに向けて、ビットごとにＬＨＬ波形の１サイクルパルスを送信する。受信側のインタフェース回路１０１Ｂのキャリブレーション回路３３は、ビットごとに受信したＬＨＬ波形の１サイクルパルスを用いて、図８のステップＳ１０１〜Ｓ１０３で説明した手順でデータトレーニングを実行する。これによって、ビットごとにウィンドウサイズが決定される。
【００９４】
その次のステップＳ２０４において、送信側のインタフェース回路１０１Ａは、受信側のインタフェース回路１０１Ｂに向けて、ビットごとにＨＬＨ波形の１サイクルパルスを送信する。受信側のインタフェース回路１０１Ｂのキャリブレーション回路３３は、ビットごとに受信したＨＬＨ波形の１サイクルパルスを用いて、図８のステップＳ１０１〜Ｓ１０３で説明した手順でデータトレーニングを実行する。これによって、ビットごとにウィンドウサイズが決定される。
【００９５】
その次のステップＳ２０５において、キャリブレーション回路３３は、ＬＨＬ波形の場合のウィンドウサイズとＨＬＨ波形の場合のウィンドウサイズとの小さいほうを、現在の参照電圧コードに対応する有効ウィンドウサイズに決定する。より正確には、ＬＨＬ波形の場合のウィンドウとＨＬＨ波形の場合のウィンドウとの共通部分（すなわち、両者の論理積）が最終的な有効ウィンドウに相当する。
【００９６】
以上のステップＳ２０２〜Ｓ２０５が、各参照電圧コードに対して実行される。最終的にステップＳ２０７において、キャリブレーション回路３３は、有効ウィンドウサイズが最大の場合に対応する参照電圧コードを選択し、参照電圧生成器３２に対して設定する参照電圧コードを、この選択した参照電圧コードの値に決定する。
【００９７】
［第２の実施形態の効果］
以上のとおり、第２の実施形態では、参照電圧トレーニングとデータトレーニングとを組み合わせてキャリブレーションを行う場合について説明した。この場合、設定可能な全参照電圧コードの各々に対してデータトレーニングを実行することになるが、ビットごとに設けられた遅延回路に１サイクルパルスを入力するだけで、ビットごとの有効ウィンドウサイズを決定することができる。したがって、インタフェース回路の初期化時のキャリブレーションに要する時間を短縮することができ、さらには、再キャリブレーション時の待ち時間を短縮することができる。
【００９８】
＜第３の実施形態＞
第３の実施形態では、キャリブレーション時だけではなく、半導体装置の通常使用時においてもデータ信号ＤＡＴＡを常時観測することによって、データ信号ＤＡＴＡの有効ウィンドウサイズが閾値を超えて変化した場合には、再キャリブレーションを行う場合について説明する。
【００９９】
ここで、第３の実施形態の場合には、遅延回路３４は、図３を参照して説明したように、入力ビット信号ＤＡＴＡ＿ｉｎが遅延線５０の端部に入力され、出力ビット信号ＤＡＴＡ＿ｏｕｔが遅延線５０の任意の箇所から出力可能なように構成されている必要がある。この構成の遅延回路３４では、入力ビット信号ＤＡＴＡ＿ｉｎは、出力ビット信号ＤＡＴＡ＿ｏｕｔの出力位置にかかわらず、遅延線５０の一端から他端までの全経路を伝送するので、データ信号ＤＡＴＡの常時観測が可能であるからである。以下、データ信号ＤＡＴＡ信号の遅延量の検査手順について説明する。
【０１００】
［遅延量の検査手順］
図１１は、データ信号の遅延量を常時観測する手順を示すフローチャートである。
【０１０１】
第３の実施形態では、遅延回路３４の構成は図３と同じかまたはそれに類似したものに限定され、図４で説明した遅延回路３４Ａの構成を用いることができない。その他の装置構成は第１の実施形態の場合と同様である。したがって、以下の説明では、図１〜図３を適宜参照する。初期化時のキャリブレーションは完了しているものとする。
【０１０２】
各インタフェース回路１０１のキャリブレーション回路３３は、イネーブル信号ＣＡＬ＿ＥＮを常時アサート（たとえば、Ｈレベル）にする。したがって、トリガ生成回路４０は、対応する遅延回路３４によって受信されたビット信号が、ＬレベルからＨレベルに変化するタイミングまたはＬレベルからＨレベルに変化するタイミングでトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇを生成する。このトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇに応答して、レジスタ３５は遅延線５０を伝送中のビット信号を、遅延線５０上の位置に対応付けて取り込む。
【０１０３】
ステップＳ３０１において、キャリブレーション回路３３は、ビットごとにレジスタ３５に保持されているデータを取り込む。なお、実使用時のビット信号の波形は様々なものがあるが、保持データの中に立上がりエッジと立下がりエッジとを含んでいるものであれば、遅延量の検査に用いることができる。
【０１０４】
次のステップＳ３０２において、キャリブレーション回路３３は、取り込んだビット信号のデータが、以前と異なっているか判定する。この結果、誤差範囲を超えるような違いが生じていない場合には、現在の遅延量の設定値が維持される。その後、遅延量の検査手順はステップＳ３０１に戻る。
【０１０５】
ステップＳ３０２の判定の結果、誤差範囲を超える違いが生じている場合には、キャリブレーション回路３３は、再キャリブレーションを実行する。具体的に、ステップＳ３０３において、キャリブレーション回路３３は、各レジスタ３５に格納されたデータに基づいて、ビットごとの有効ウィンドウサイズを計算する。次のステップＳ３０４において、キャリブレーション回路３３は、ビットごとに算出された有効ウィンドウサイズの最小値の半分を、各ビット信号に対するストローブ信号ＤＱＳの遅延量に設定する。
【０１０６】
［第３の実施形態の効果］
環境温度、電源電圧などが時間的に変動することによって、有効ウィンドウサイズは劣化する。第３の実施形態の半導体装置１００では、データ信号ＤＡＴＡの遅延量を常時観測することによって、遅延量に変動が生じた場合には、再キャリブレーションを行う。これによって、常に最適な状態でインタフェース回路１０１を動作させることが可能になる。
【０１０７】
＜第４の実施形態＞
第４の実施形態では、レジスタ３５を構成する各フリップフロップＦＦに供給するためのトリガ信号として、ストローブ信号ＤＱＳが用いられる。これによって、各レジスタ３５に保持されたデータに基づいて、ビットデスキューとデータトレーニングとの両方を行うことができる。以下、図面を参照して具体的に説明する。
【０１０８】
［受信制御回路の構成］
図１２は、第４の実施形態の半導体装置において、インタフェース回路の受信制御回路の構成を示すブロック図である。
【０１０９】
図１２のインタフェース回路１０１の受信制御回路１１０は、図２のインタフェース回路１０１の受信制御回路１１０に対応するものである。ただし、各レジスタの構成が、図１２の受信制御回路１１０と図２の受信制御回路１１０とで異なる。
【０１１０】
具体的に、図１２の受信制御回路１１０は、遅延回路３４＿Ｓを通過したストローブ信号ＤＱＳが各レジスタ３５Ａに取り込まれる点で、図２の受信制御回路１１０と異なる。この場合、各レジスタ３５Ａは、ストローブ信号ＤＱＳの立上がりをトリガとして、対応する遅延回路３４の信号伝送経路である遅延線５０上を伝送中のビット信号を、遅延線５０上の位置に対応付けて保持可能なように構成されている。
【０１１１】
図１３は、図１２のレジスタの構成を示す回路図である。図１３では、図１２のレジスタ３５Ａに加えて、遅延回路３４を構成する遅延線５０の構成も示されている。
【０１１２】
図１３のレジスタ３５Ａでは、トリガ生成回路４０Ａの構成が図３のレジスタ３５のトリガ生成回路４０と異なる。具体的に、トリガ生成回路４０Ａは、ストローブ信号ＤＱＳとイネーブル信号ＣＡＬ＿ＥＮとの論理積を出力するＡＮＤゲート４１を含む。ＡＮＤゲート４１の出力信号は、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇとして各フリップフロップＦＦに入力される。
【０１１３】
したがって、イネーブル信号ＣＡＬ＿ＥＮがネゲート（Ｌレベル）のとき、トリガ生成回路４０Ａから各フリップフロップＦＦに出力される信号はＬベルに固定されるので、レジスタ３５Ａを構成する複数のフリップフロップＦＦには対応するビット信号が格納されない。一方、イネーブル信号ＣＡＬ＿ＥＮがアサート（Ｈレベル）のとき、トリガ生成回路４０Ａは、ストローブ信号ＤＱＳをトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇとして各フリップフロップＦＦに出力する。したがって、ストローブ信号ＤＱＳの立上がりエッジで、各フリップフロップＦＦは、対応する遅延素子Ｄの出力信号の論理値を取り込む。
【０１１４】
図１２および図１３のその他の構成は、第１の実施形態の図２および図３の場合と同様であるので、同一または相当する部分には同一の参照符号を付して説明を繰り返さない。
【０１１５】
［キャリブレーションの手順］
次に、図１２のインタフェース回路１０１のキャリブレーションの手順について説明する。図１４は、第４の実施形態において、インタフェース回路１０１のキャリブレーションの手順を示すフローチャートである。以下の手順は、インタフェース回路１０１の初期化時のキャリブレーションとして、もしくはその後に遅延量にずれが生じた場合における再キャリブレーションとして実行される。また、以下の説明では、図１のインタフェース回路１０１Ａを送信側とし、インタフェース回路１０１Ｂを受信側とする。
【０１１６】
図１および図１２〜図１４を参照して、まず、キャリブレーション期間の最初に、受信側のインタフェース回路１０１Ｂのキャリブレーション回路３３は、イネーブル信号ＣＡＬ＿ＥＮをアサート（たとえば、Ｈレベル）にする。
【０１１７】
図１４のステップＳ４０１において、図１の送信側のインタフェース回路１０１Ａは、受信側のインタフェース回路１０１Ｂに向けて、ストローブ信号ＤＱＳ信号を出力するとともに、ビットごとに１サイクルパルスを送信する。なお、前述のように、１サイクルパルスは、ＬＨＬ波形であってもよいし、ＨＬＨ波形であってもよい。送信されたストローブ信号ＤＱＳ信号は、遅延回路３４＿Ｓに入力され、送信された１サイクルパルス信号は、ビットごとに設けられた遅延回路３４＿０〜３４＿２に入力される。
【０１１８】
次のステップＳ４０２において、各レジスタ３５Ａは、ストローブ信号ＤＱＳの立上がりエッジをトリガとして、対応する遅延回路３４を伝送中の１サイクルパルスを保持する。より詳細には、各レジスタ３５Ａを構成するフリップフロップＦＦ１〜ＦＦ１１は、対応する遅延線５０の遅延素子Ｄ１〜Ｄ１１の出力信号を、ストローブ信号ＤＱＳがＬレベルからＨレベルに立上がるタイミングで保持する。
【０１１９】
ここで、第１〜第３の実施形態では、各遅延回路３４に入力される１サイクルパルス自身の立上がりエッジまたは立下りエッジに基づいてトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇを生成するので、入力された１サイクルパルスの全体（すなわち、立上がりエッジから立下がりエッジまで）を確実にレジスタ３５に取り込むことができた。
【０１２０】
これに対して、第４の実施形態の場合には、ストローブ信号ＤＱＳをトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇとして用いているために、タイミングにずれが生じている場合には必ずしも最適な取り込みタイミングとはならない。したがって、タイミングにずれがあっても１サイクルパルス全体を取り込めるように、各遅延回路３４を構成する遅延線５０は、十分な長さ（すなわち、十分な個数の遅延素子Ｄ）を有する必要がある。もしくは、キャリブレーション回路３３は、遅延回路３４＿Ｓによってストローブ信号ＤＱＳの遅延量を調整しながら再度ステップＳ４０１，４０２を繰り返す。これによって、対応する遅延回路３４に入力される１サイクルパルスの全体がレジスタ３５Ａに保持できるようにする。
【０１２１】
その次のステップＳ４０３において、キャリブレーション回路３３は、各レジスタ３５Ａに保持されたデータに基づいて、ビットごとにスキューを計算する。具体的に、１サイクルパルスがＬＨＬ波形を有している場合には、キャリブレーション回路３３は、ストローブ信号ＤＱＳがＬレベルからＨレベルに変化するタイミングと各ビット信号がＬレベルからＨレベルに変化するタイミングとの間隔を計算する。１サイクルパルスがＨＬＨ波形を有している場合には、キャリブレーション回路３３は、ストローブ信号ＤＱＳ信号ＬレベルからＨレベルに変化するタイミングと各ビット信号がＨレベルからＬレベルに変化するタイミングとの間隔を計算する。
【０１２２】
さらに、ステップＳ４０３において、キャリブレーション回路３３は、ビットごとに有効ウィンドウサイズ（すなわち、１サイクルパルスの立上がりから立下がりまでの間隔）を計算する。
【０１２３】
その次のステップＳ４０４において、キャリブレーション回路３３は、ビットごとに算出されたスキューに基づいて、各ビット信号の遅延量を設定する。さらに、キャリブレーション回路３３は、算出された有効ウィンドウサイズの最小値の半分を、各ビット信号に対するストローブ信号ＤＱＳの遅延量に設定する。この場合、キャリブレーション回路３３は、各ビット信号とストローブ信号ＤＱＳとの相対的な関係が上記の遅延量の設定値になるように、ストローブ信号ＤＱＳ用の遅延回路３４＿Ｓのための遅延コードと、各ビット信号用の遅延回路３４＿０〜３４＿２との遅延コードとの少なくとも一方を設定する。
【０１２４】
［キャリブレーションの具体例］
図１５は、第４の実施形態の半導体装置において、ビットごとの遅延回路に入力されている１サイクルパルスの波形を示す図である。図１５の場合、各１サイクルパルスはＬＨＬ波形を有している。
【０１２５】
さらに、図１５では、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇがアサートされた時点において、フリップフロップＦＦ４〜ＦＦ１１に保持された遅延素子Ｄ４〜Ｄ１１の出力信号の論理値が、各１サイクルパルスの波形に重ねて示されている。
【０１２６】
たとえば、図１５を参照して、レジスタ３５Ａ＿０に保持されたビット信号ＤＡＴＡ０の値について説明する。なお、ビット信号ＤＡＴＡ０に対応する各フリップフロップＦＦの論理値は、図１３にも示されている。
【０１２７】
トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇ（すなわち、ストローブ信号ＤＱＳ）がＬレベルからＨレベルに立上がった時点において、フリップフロップＦＦ１１に保持された遅延素子Ｄ１１の出力信号はＬレベルであり、まだＨレベルに変化していない。フリップフロップＦＦ５〜ＦＦ１０にそれぞれ保持された遅延素子Ｄ５〜Ｄ１０の出力信号はＨレベルになっている。フリップフロップＦＦ４に保持された遅延素子Ｄ４の出力信号はＨレベルからＬレベルに戻っている。したがって、ビット信号ＤＡＴＡ０がＬレベルからＨレベルに立上がる部分は、フリップフロップＦＦ１０，ＦＦ１１に保持されていることがわかる。
【０１２８】
これに対して、ビット信号ＤＡＴＡ２がＬレベルからＨレベルに変化する部分は、フリップフロップＦＦ９，ＦＦ１０に保持されている。したがって、ビット信号ＤＡＴＡ２がＬレベルからＨレベルに変化するタイミングは、ビット信号ＤＡＴＡ０がＬレベルからＨレベルに変化するタイミングよりも遅れる。また、ビット信号ＤＡＴＡ１がＬレベルからＨレベルに変化する部分は、フリップフロップＦＦ８，ＦＦ９に保持されている。ビット信号ＤＡＴＡ１がＬレベルからＨレベルに変化するタイミングは、ビット信号ＤＡＴＡ２がＬレベルからＨレベルに変化するタイミングよりもさらに遅れる。このように、各ビット信号がＬレベルからＨレベルに立上がるタイミングには、ずれ（すなわち、スキュー）が生じている。
【０１２９】
以下、各遅延回路３４として図３に示す回路構成を用いた場合において、スキューの計算方法とビットデスキューのための遅延コードＤＣの設定例とについて説明する。
【０１３０】
ここで、ストローブ信号ＤＱＳ用の遅延回路３４＿Ｓから出力される出力ビット信号ＤＡＴＡ＿ｏｕｔとして、遅延コードＤＣに従って遅延素子Ｄ７の出力信号が選択されていたとする。この場合、ストローブ信号ＤＱＳに同期した１サイクルパルスがＬレベルからＨレベルに立上がる部分は、フリップフロップＦＦ７，ＦＦ８に保持されることになる。すなわち、フリップフロップＦＦ７に保持される遅延素子Ｄ７の出力信号がＨレベルになり、フリップフロップＦＦ８に保持される遅延素子Ｄ８の出力信号がＬレベルになる。
【０１３１】
図１５のビット信号ＤＡＴＡ０の場合、フリップフロップＦＦ１１に保持される遅延素子Ｄ１１の出力信号がＬレベルであり、フリップフロップＦＦ１０に保持される遅延素子Ｄ１０の出力信号がＨレベルである。したがって、ビット信号ＤＡＴＡ０の立上がりは、３個の遅延素子Ｄの遅延時間だけ上記のストローブ信号ＤＱＳの立上がりよりも進んでいる。よって、キャリブレーション回路３３は、ビットデスキューのために、ビット信号ＤＡＴＡ０に対応する遅延回路３４＿０の遅延コードＤＣを、現在の遅延量よりも３個の遅延素子Ｄの遅延時間だけ遅れた遅延量となるように設定する。これによって、ストローブ信号ＤＱＳがＬレベルからＨレベルに立上がるタイミングと、ビット信号ＤＡＴＡ０がＬレベルからＨレベルに立上がるタイミングとを同期させることができる。
【０１３２】
同様に、ビット信号ＤＡＴＡ１の立上がり部分は、フリップフロップＦＦ８，ＦＦ９の値に対応している。したがって、ビット信号ＤＡＴＡ１の立上がりは、１個の遅延素子Ｄの遅延時間だけストローブ信号ＤＱＳの立上がりよりも進んでいる。したがって、キャリブレーション回路３３は、ビットデスキューのために、ビット信号ＤＡＴＡ１に対応する遅延回路３４＿１の遅延コードＤＣを、現在の遅延量よりも１個の遅延素子Ｄの遅延時間だけ遅れた遅延量となるように設定する。
【０１３３】
同様に、ビット信号ＤＡＴＡ２の立上がり部分は、フリップフロップＦＦ９，ＦＦ１０の値に対応している。したがって、ビット信号ＤＡＴＡ２の立上がりは、２個の遅延素子Ｄの遅延時間だけストローブ信号ＤＱＳの立上がりよりも進んでいる。したがって、キャリブレーション回路３３は、ビットデスキューのために、ビット信号ＤＡＴＡ２に対応する遅延回路３４＿２の遅延コードＤＣを、現在の遅延量よりも２個の遅延素子Ｄの遅延時間だけ遅れた遅延量となるように設定する。
【０１３４】
次に、図１５の例において、ビットごとの有効ウィンドウサイズの計算と、ストローブ信号ＤＱＳの遅延量の設定について説明する。
【０１３５】
具体的に、図１５のビット信号ＤＡＴＡ０に対応する１サイクルパルスの場合、有効ウィンドウサイズは６個の遅延素子Ｄ５〜Ｄ１０の遅延時間に相当する。図１５のビット信号ＤＡＴＡ１の場合、有効ウィンドウサイズは３個の遅延素子Ｄ６〜Ｄ８の遅延時間に相当する。図１５のビット信号ＤＡＴＡ２の場合、有効ウィンドウサイズは３個の遅延素子Ｄ７〜Ｄ９の遅延時間に相当する。したがって、有効ウィンドウサイズの最小値は３個の遅延素子の遅延時間に相当する。
【０１３６】
したがって、キャリブレーション回路３３は、有効ウィドウサイズの最小値の半分である１〜２個の遅延素子Ｄの遅延時間だけ現在の遅延量よりも遅れた遅延量となるように、ストローブ信号ＤＱＳに対応する遅延回路３４＿Ｓの遅延コードＤＣを設定する。
【０１３７】
なお、ストローブ信号ＤＱＳの遅延量とデータ信号ＤＡＴＡの遅延量とは相対的なものである。したがって、ストローブ信号ＤＱＳ用の遅延回路３４＿Ｓとデータ信号ＤＡＴＡ用の遅延回路３４とのうち、一方の遅延回路３４の遅延量を増加させることと他方の遅延回路３４の遅延量を減少させることとは等価であるので、どちらの遅延量を調整してもよいし、両方の遅延量を調整してもよい。
【０１３８】
［第４の実施形態の効果］
以上のとおり、第４の実施形態によれば、ビットごとに設けられた遅延回路３４に１サイクルパルスを入力し、ストローブ信号ＤＱＳをトリガとして入力された１サイクルパルスの値が、各遅延回路３４に対応するレジスタ３５Ａに、遅延線５０の位置に対応付けて保持される。これにより、各レジスタ３５Ａに保持された１サイクルパルスに基づいて、ビットごとのスキューと有効ウィンドウサイズを決定することができる。この結果、キャリブレーションに要する時間をさらに短縮することができる。
【０１３９】
なお、第４の実施形態は、第２の実施形態で説明した参照電圧トレーニングに組合わせることもできる。
【０１４０】
＜第５の実施形態＞
第４の実施形態では、スキューと有効ウィンドウサイズの両方を計算するために、１サイクルパルスの全体（すなわち、立ち上がりエッジから立下がりエッジまで）を対応するレジスタ３５に保持する必要があった。このため、各遅延回路３４を構成する遅延線５０は、十分な長さ（すなわち、十分な個数の遅延素子Ｄ）を有する必要があった。もしくは、遅延回路３４＿Ｓによってストローブ信号ＤＱＳの遅延量を適切に調整する必要があった。
【０１４１】
第５の実施形態では、ストローブ信号ＤＱＳをトリガとしてビットごとに、ＬＨＬ波形を有する１サイクルパルスの一部である立ち上がりエッジのみをレジスタ３５に取り込む（ＨＬＨ波形の場合には、立下がりエッジのみをレジスタ３５に取り込む）。そして、この取り込んだ１サイクルパルスの立上がりエッジ（または立下がりエッジ）の部分を用いてストローブ信号ＤＱＳとのタイミングのずれ（すなわち、スキュー）のみを計算するようにする。有効ウィンドウサイズの計算については、第１〜第３の実施形態で説明した方法を用いる。これによって、第４の実施形態の場合の上記の制約を緩和することができる。以下、図面を参照して具体的に説明する。
【０１４２】
［受信制御回路の構成］
図１６は、第５の実施形態の半導体装置において、受信制御回路で用いられる遅延線およびレジスタの構成を示すブロック図である。
【０１４３】
第５の実施形態の半導体装置の受信制御回路は、図１２に示す第４の実施形態の受信制御回路１１０と同様の構成を有している。ただし、図１３を参照して説明したレジスタ３５Ａに代えて図１６に示すレジスタ３５Ｂが用いられる。
【０１４４】
図１６のレジスタ３５Ｂでは、トリガ生成回路４０Ｂの構成が、図３のレジスタ３５のトリガ生成回路４０の構成および図１３のレジスタ３５Ａのトリガ生成回路４０Ａの構成と異なる。
【０１４５】
具体的に、トリガ生成回路４０Ｂは、インバータ４３と、マルチプレクサ４２，４４と、ＡＮＤゲート４１とを含む。したがって、トリガ生成回路４０Ｂは、マルチプレクサ４４をさらに含む点で図３のトリガ生成回路４０と異なる。
【０１４６】
インバータ４３は、遅延素子Ｄ８の出力信号の論理反転信号を出力する。
マルチプレクサ４２は、エッジ選択信号ＲＦ＿ＳＥＬに応じて、遅延素子Ｄ８の出力信号およびインバータ４３の出力信号（すなわち、遅延素子Ｄ８の出力信号に対する論理反転信号）の一方を出力する。たとえば、マルチプレクサ４２は、エッジ選択信号ＲＦ＿ＳＥＬがＨレベルのときマルチプレクサ４２は遅延素子Ｄ８の出力信号を選択し、エッジ選択信号ＲＦ＿ＳＥＬがＬレベルのときインバータ４３の出力信号を選択する。
【０１４７】
マルチプレクサ４４は、トリガ選択信号ＴＲＧ＿ＳＥＬに応じて、ストローブ信号ＤＱＳおよびマルチプレクサ４２の出力信号（すなわち、遅延素子Ｄ８の出力信号またはその論理反転信号）のうちの一方を出力する。たとえば、マルチプレクサ４４は、トリガ選択信号ＴＲＧ＿ＳＥＬがＨレベルのときストローブ信号ＤＱＳを選択し、トリガ選択信号ＴＲＧ＿ＳＥＬがＬレベルのときマルチプレクサ４２の出力信号を選択する。なお、本開示では、トリガ選択信号ＴＲＧ＿ＳＥＬがＬレベルの場合を第１のトリガモードと称し、トリガ選択信号ＴＲＧ＿ＳＥＬがＨレベルの場合を第２のトリガモードとも称する場合がある。
【０１４８】
ＡＮＤゲート４１は、イネーブル信号ＣＡＬ＿ＥＮとマルチプレクサ４４の出力信号との論理積を、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇとして各フリップフロップＦＦに出力する。したがって、イネーブル信号ＣＡＬ＿ＥＮがネゲート（Ｌレベル）のとき、トリガ生成回路４０Ｂから各フリップフロップＦＦに出力される信号はＬベルに固定されるので、レジスタ３５Ｂには対応するビット信号が格納されない。
【０１４９】
一方、イネーブル信号ＣＡＬ＿ＥＮがアサート（Ｈレベル）のとき、トリガ生成回路４０Ｂは、マルチプレクサ４４の出力信号（すなわち、ストローブ信号ＤＱＳまたは遅延素子Ｄ８の出力信号またはその論理反転信号）に基づいて、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇを生成して各フリップフロップＦＦに出力する。この結果、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立上がりエッジのタイミングでレジスタ３５Ｂにデータ信号ＤＡＴＡが格納される。
【０１５０】
なお、図１６の場合と異なるが、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇの立下がりエッジのタイミングでデータ信号ＤＡＴＡが保持されるように各レジスタ３５Ｂが構成されていてもよい。
【０１５１】
［キャリブレーションの手順］
次に、図１２のインタフェース回路１０１において、レジスタ３５Ａに代えて図１６のレジスタ３５Ｂを用いた場合のキャリブレーションの手順について説明する。
【０１５２】
図１７は、第５の実施形態において、インタフェース回路１０１のキャリブレーションの手順を示すフローチャートである。以下の手順は、インタフェース回路１０１の初期化時のキャリブレーションとして、もしくはその後に遅延量にずれが生じた場合における再キャリブレーションとして実行される。また、以下の説明では、図１のインタフェース回路１０１Ａを送信側とし、インタフェース回路１０１Ｂを受信側とする。
【０１５３】
図１および図１２、図１６、図１７を参照して、まず、キャリブレーション期間の最初に、受信側のインタフェース回路１０１Ｂのキャリブレーション回路３３は、イネーブル信号ＣＡＬ＿ＥＮをアサート（たとえば、Ｈレベル）にする。
【０１５４】
さらに、ステップＳ５０１に実行前に、キャリブレーション回路３３は、トリガ選択信号ＴＲＧ＿ＳＥＬをたとえばＨレベルに設定することによって、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇとしてストローブ信号ＤＱＳを選択する。
【０１５５】
次に、図１７のステップＳ５０１において、図１の送信側のインタフェース回路１０１Ａは、受信側のインタフェース回路１０１Ｂに向けて、ストローブ信号ＤＱＳ信号を出力するとともに、ビットごとに１サイクルパルスを送信する。なお、前述のように、１サイクルパルスは、ＬＨＬ波形であってもよいし、ＨＬＨ波形であってもよい。送信されたストローブ信号ＤＱＳ信号は、遅延回路３４＿Ｓに入力され、送信された１サイクルパルス信号は、ビットごとに設けられた遅延回路３４＿０〜３４＿２に入力される。
【０１５６】
次のステップＳ５０２において、各レジスタ３５Ｂは、ストローブ信号ＤＱＳの立上がりエッジをトリガとして、対応する遅延回路３４を伝送中の１サイクルパルスの値を保持する。具体的には、各レジスタ３５Ｂを構成するフリップフロップＦＦ１〜ＦＦ１１は、対応する遅延線５０の遅延素子Ｄ１〜Ｄ１１の出力信号を、ストローブ信号ＤＱＳが立上がるタイミングで保持する。
【０１５７】
ここで、ビットデスキューに使用するために、各レジスタ３５Ｂは、１サイクルパルスがＬＨＬ波形を有している場合には、その一部であるＬレベルからＨレベルへの立上がり部分を取り込む必要がある。もしくは、１サイクルパルスがＨＬＨ波形を有している場合には、レジスタ３５Ｂは、１サイクルパルスの一部であるＨレベルからＬレベルへの立下がり部分を取り込む必要がある。第４の実施形態の場合には、１サイクルパルス全体（立上がりエッジから立下がりエッジまで）を取り込む必要があったが、第５の実施形態の場合にはその要件は緩和される。
【０１５８】
ただし、ビットごとに１サイクルパルスの立上がり部分または立下がり部分がレジスタ３５Ｂに取り込めていない場合には、キャリブレーション回路３３は、遅延回路３４＿Ｓによってストローブ信号ＤＱＳの遅延量を調整しながら再度ステップＳ５０１，５０２を繰り返す。
【０１５９】
その次のステップＳ５０３において、キャリブレーション回路３３は、各レジスタ３５に格納されたデータに基づいて、ビットごとにスキューを計算する。たとえば、１サイクルパルスがＬＨＬ波形を有している場合には、キャリブレーション回路３３は、ストローブ信号ＤＱＳ信号がＬレベルからＨレベルに変化するタイミングと各ビット信号がＬレベルからＨレベルに変化するタイミングとの間隔を計算する。１サイクルパルスがＨＬＨ波形を有している場合には、キャリブレーション回路３３は、ストローブ信号ＤＱＳ信号がＨレベルからＬレベルに変化するタイミングと各ビット信号がＨレベルからＬレベルに変化するタイミングとの間隔を計算する。
【０１６０】
その次のステップＳ５０４において、キャリブレーション回路３３は、ビットごとに算出されたスキューに基づいて、ビットデスキューのために各ビット信号の遅延量を設定する。ここで、キャリブレーション回路３３は、各ビット信号とストローブ信号ＤＱＳとの相対的な関係が上記の遅延量の設定値になるように、ストローブ信号ＤＱＳ用の遅延回路３４＿Ｓのための遅延コードと、各ビット信号用の遅延回路３４＿０〜３４＿２との遅延コードとの少なくとも一方を設定する。
【０１６１】
次のステップＳ１０１〜Ｓ１０４において、キャリブレーション回路３３は、図８を参照して説明したデータトレーニングを実行する。
【０１６２】
ここで、ステップＳ１０１の実行前に、キャリブレーション回路３３はトリガ選択信号ＴＲＧ＿ＳＥＬをたとえばＬレベルに設定することによって、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇとして遅延素子Ｄ８の出力信号または論理反転信号を選択する。さらに、送信側のインタフェース回路１０１Ａから受信側のインタフェース回路１０１Ｂに出力する１サイクルパルスの波形がＬＨＬ波形かＨＬＨ波形であるかに応じて、キャリブレーション回路３３は、遅延素子Ｄ８の出力信号またはその論理反転信号がそれぞれ選択されるように、エッジ選択信号ＲＦ＿ＳＥＬの論理値を設定する。
【０１６３】
ステップＳ１０１〜Ｓ１０４の具体的手順は図８の場合と同様であるので、同一または相当するステップには同一の参照符号を付して説明を繰り返さない。なお、ステップＳ１０１〜Ｓ１０３に示すビットごとの有効ウィンドウサイズの検出は、データトレーニングはビットデスキューとは独立に実行することができるので、ステップＳ５０１〜Ｓ５０４の前にステップＳ１０１〜Ｓ１０３を実行してもよい。
【０１６４】
［キャリブレーションの具体例］
以下、図１５の場合と同じ波形および同じスキューを有する１サイクルパルスが、ビットごとに受信側のインタフェース回路１０１の遅延回路３４に入力された場合について、具体的に説明する。
【０１６５】
（１．ビットデスキューの具体例）
図１８は、第５の実施形態の半導体装置において、ストローブ信号をトリガとして、ビットごとにレジスタに取り込まれた１サイクルパルスの波形を示す図である。さらに、図１８では、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇがアサートされた時点において、フリップフロップＦＦ１〜ＦＦ８に保持された遅延素子Ｄ１〜Ｄ８の出力信号の論理値が、各１サイクルパルスの波形に重ねて示されている。
【０１６６】
図１８の場合には、第４の実施形態で説明した図１５の場合と異なり、１サイクルパルス全体ではなく、ＬレベルからＨレベルへの立上がり部分がレジスタ３５Ｂに保持されている。
【０１６７】
ここで、図１５の場合と同様に、各遅延回路３４として図３に示す回路構成を用いた場合について説明する。ストローブ信号ＤＱＳ用の遅延回路３４＿Ｓの遅延量として最小の遅延量、すなわち、遅延コードＤＣによって遅延素子Ｄ１の出力信号が選択されているとする。なお、図１８の場合には、１サイクルパルス全体をレジスタ３５Ｂに保持する必要がないので、遅延回路３４＿Ｓの遅延量を図１５の場合と同じにする必要はない。
【０１６８】
上記のストローブ信号ＤＱＳの遅延量の設定の場合において、ストローブ信号ＤＱＳに同期した１サイクルパルスがＬレベルからＨレベルに立上がる部分は、フリップフロップＦＦ１，ＦＦ２に保持されていることになる。すなわち、フリップフロップＦＦ１に保持される遅延素子Ｄ１の出力信号がＨレベルになり、フリップフロップＦＦ２に保持される遅延素子Ｄ２の出力信号がＬレベルになる。
【０１６９】
図１８のビット信号ＤＡＴＡ０の場合、フリップフロップＦＦ５に保持される遅延素子Ｄ５の出力信号がＬレベルであり、フリップフロップＦＦ４に保持される遅延素子Ｄ４の出力信号がＨレベルである。したがって、ビット信号ＤＡＴＡ０の立上がりは、３個の遅延素子Ｄの遅延時間だけ上記のストローブ信号ＤＱＳの立上がりよりも進んでいる。よって、キャリブレーション回路３３は、ビットデスキューのために、ビット信号ＤＡＴＡ０に対応する遅延回路３４＿０の遅延コードＤＣを、現在の遅延量よりも３個の遅延素子Ｄの遅延時間だけ遅れた遅延量となるように設定する。これによって、ストローブ信号ＤＱＳがＬレベルからＨレベルに立上がるタイミングと、ビット信号ＤＡＴＡ０がＬレベルからＨレベルに立上がるタイミングとを同期させることができる。
【０１７０】
同様に、ビット信号ＤＡＴＡ１の立上がり部分は、フリップフロップＦＦ２，ＦＦ３の値に対応している。したがって、ビット信号ＤＡＴＡ１の立上がりは、１個の遅延素子Ｄの遅延時間だけストローブ信号ＤＱＳの立上がりよりも進んでいる。したがって、キャリブレーション回路３３は、ビットデスキューのために、ビット信号ＤＡＴＡ１に対応する遅延回路３４＿１の遅延コードＤＣを、現在の遅延量よりも１個の遅延素子Ｄの遅延時間だけ遅れた遅延量となるように設定する。
【０１７１】
同様に、ビット信号ＤＡＴＡ２の立上がり部分は、フリップフロップＦＦ３，ＦＦ４の値に対応している。したがって、ビット信号ＤＡＴＡ２の立上がりは、２個の遅延素子Ｄの遅延時間だけストローブ信号ＤＱＳの立上がりよりも進んでいる。したがって、キャリブレーション回路３３は、ビットデスキューのために、ビット信号ＤＡＴＡ２に対応する遅延回路３４＿２の遅延コードＤＣを、現在の遅延量よりも３個の遅延素子Ｄの遅延時間だけ遅れた遅延量となるように設定する。
【０１７２】
（２．データトレーニングの具体例）
図１９は、第５の実施形態の半導体装置において、ビットごとの入力信号の立上がりエッジまたは立下がりエッジに基づいて生成されたトリガに応答して、各レジスタに取り込まれた１サイクルパルスの波形を示す図である。さらに、図１９では、トリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇがアサートされた時点において、フリップフロップＦＦ４〜ＦＦ１１に保持された遅延素子Ｄ４〜Ｄ１１の出力信号の論理値が、各１サイクルパルスの波形に重ねて示されている。
【０１７３】
ここで、第１の実施形態の場合と同様に、図１６のトリガ生成回路４０Ｂは、遅延素子Ｄ８の出力信号に基づいてトリガ信号ｃａｌ＿ｓｍｐｌ＿ｔｒｇを生成する。ただし、実際上は、トリガ生成回路４０Ｂ自身の遅延のために、遅延素子Ｄ１１の出力信号がＬレベルからＨレベルに変化する直前のタイミングでトリガがかかるものとする。
【０１７４】
上記のトリガのタイミングはどのビットについても同じであるので、図１９に示すように、いずれのビット信号ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２についても、その立上がり部分は、フリップフロップＦＦ１０，ＦＦ１１に対応している。すなわち、フリップフロップＦＦ１１に保持された遅延素子Ｄ１１の出力信号はＬレベルであり、フリップフロップＦＦ１０に保持された遅延素子Ｄ１０の出力信号はＨレベルである。
【０１７５】
一方、ビット信号ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２の立下がり部分は、各ビット信号の有効ウィンドウサイズに応じて異なる。したがって、キャリブレーション回路３３は、ビットごとに対応するレジスタ３５Ｂに取り込まれた１サイクルパルスに基づいて、ビットごとの有効ウィンドウサイズの計算を行うことができ、さらに、ストローブ信号ＤＱＳの遅延量を設定することができる。
【０１７６】
具体的に、図１９のビット信号ＤＡＴＡ０に対応する１サイクルパルスの場合、有効ウィンドウサイズは６個の遅延素子Ｄ５〜Ｄ１０の遅延時間に相当する。図１５のビット信号ＤＡＴＡ１の場合、有効ウィンドウサイズは３個の遅延素子Ｄ８〜Ｄ１０の遅延時間に相当する。図１５のビット信号ＤＡＴＡ２の場合、有効ウィンドウサイズは３個の遅延素子Ｄ８〜Ｄ１０の遅延時間に相当する。したがって、有効ウィンドウサイズの最小値は３個の遅延素子の遅延時間に相当する。
【０１７７】
したがって、キャリブレーション回路３３は、有効ウィドウサイズの最小値の半分である１〜２個の遅延素子Ｄの遅延時間だけ現在の遅延量よりも遅れた遅延量となるように、ストローブ信号ＤＱＳに対応する遅延回路３４＿Ｓの遅延コードＤＣを設定する。
【０１７８】
［第５の実施形態の効果］
以上のとおり、第５の実施形態によれば、トリガ生成回路４０Ｂは、トリガ信号として、ストローブ信号ＤＱＳと入力ビット信号自身とを切り替えて用いることができるように構成される。したがって、トリガ信号としてストローブ信号ＤＱＳを用いる場合には、ビットごとにレジスタ３５Ｂに保持された１サイクルパルスの立上がりエッジまたは立下がりエッジを利用することによって、短時間でビットデスキューを実行することができる。さらに、上記の場合には第４の実施形態の場合と異なり、１サイクルパルス全体（立上がりエッジから立下がりエッジまで）を対応するレジスタ３５Ｂに取り込む必要はないというメリットがある。
【０１７９】
一方、トリガ信号として入力ビット信号自身を用いる場合には、第１の実施形態で説明したように、ビットごとに設けられた遅延回路に１サイクルパルスを１度だけ入力するだけで、ビットごとの有効ウィンドウサイズを決定することができる。したがって、データトレーニング（すなわち、ストローブ信号の遅延量の設定）に要する時間を極めて短縮することができる。
【０１８０】
以上により、第５の実施形態によれば、インタフェース回路の初期化時のキャリブレーションに要する時間を短縮することができ、さらには、再キャリブレーション時の待ち時間を短縮することができる。
【０１８１】
なお、第５の実施形態は、第２の実施形態で説明した参照電圧トレーニングに組合わせることもできる。
【０１８２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１８３】
３０，３１  レシーバ、３２  参照電圧生成器、３３  キャリブレーション回路、３４，３４Ａ  遅延回路、３５，３５Ａ，３５Ｂ  レジスタ、３６  サンプリング回路、４０，４０Ａ，４０Ｂ  トリガ生成回路、５０，５０Ａ  遅延線、６０，６１  ドライバ、１００，１００Ａ，１００Ｂ  半導体装置、１０１，１０１Ａ，１０１Ｂ  インタフェース回路、１０２，１０２Ａ，１０２Ｂ  内部回路、１１０  受信制御回路、Ｄ，Ｄ１〜Ｄ１１，ＤＯ，Ｄｉ  遅延素子、ＤＡＴＡ  データ信号、ＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２  ビット信号、ＤＱＳ  ストローブ信号、ＦＦ，ＦＦ１〜ＦＦ１１  フリップフロップ、ｃａｌ＿ｓｍｐｌ＿ｔｒｇ  トリガ信号。
【図１】
2020046800.tif 000003
【図２】
2020046800.tif 000004
【図３】
2020046800.tif 000005
【図４】
2020046800.tif 000006
【図５】
2020046800.tif 000007
【図６】
2020046800.tif 000008
【図７】
2020046800.tif 000009
【図８】
2020046800.tif 000010
【図９】
2020046800.tif 000011
【図１０】
2020046800.tif 000012
【図１１】
2020046800.tif 000013
【図１２】
2020046800.tif 000014
【図１３】
2020046800.tif 000015
【図１４】
2020046800.tif 000016
【図１５】
2020046800.tif 000017
【図１６】
2020046800.tif 000018
【図１７】
2020046800.tif 000019
【図１８】
2020046800.tif 000020
【図１９】
2020046800.tif 000021