(57)【特許請求の範囲】
【請求項１】
第１装置と、第２装置と、を有し、前記第１装置と前記第２装置との間でデータ通信を行うデータ通信装置であって、
前記データ通信は、連続したデータサイクルごとにデータを通信し、
連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した時間長は一定で、前記各データサイクルの時間長は可変であり、
前記第１装置は、
前記時間長を変更したトレーニングパターンデータを発生して前記第２装置に送信し、前記第２装置から受信した前記トレーニングパターンデータに対応する返信データと前記トレーニングパターンデータを比較した結果に基づいて、変更した前記時間長の良否を判定するトレーニングを、前記時間長を変更しながら繰り返し行い、良否判定した結果のうち良判定された前記時間長の範囲内で、前記Ｎ個のデータサイクルの各データサイクルの時間長を設定するトレーニング回路を有し、
前記トレーニング回路が設定した前記Ｎ個のデータサイクルの各データサイクルの時間長のデータサイクルで、データ通信を行うことを特徴とするデータ通信装置。
【請求項２】
前記第１装置は、ストローブ信号を前記第２装置に送信し、
前記第２装置は、前記ストローブ信号に基づいて、前記Ｎ個のデータサイクルの各データサイクルの時間長で送信されたデータを受信する請求項１に記載のデータ通信装置。
【請求項３】
前記第１装置は、サイクル長が変更されたクロックを生成し、生成した前記クロックを前記第２装置に送信するとともに、前記クロックに基づいて、設定した前記Ｎ個のデータサイクルの各データサイクルの時間長でデータ信号を生成し、
前記第２装置は、受信した前記クロックに基づいて、前記返信データを生成する請求項１または２に記載のデータ通信装置。
【請求項４】
前記第１装置は、データ信号の受信におけるデータ値判定のための基準電位を生成する基準電位生成回路を有し、
前記第１装置は、前記基準電位を前記第２装置に供給し、
前記第１装置は、
前記トレーニング回路における動作を、前記基準電位を変更しながら繰り返し行い、前記基準電位について、良判定された前記基準電位の範囲を求め、前記基準電位を前記良判定された基準電位の範囲内に設定し、
前記第２装置は、供給された前記良判定された基準電位の範囲内の基準電位で受信を行う請求項１から３のいずれか１項に記載のデータ通信装置。
【請求項５】
第１装置と第２装置との間でデータ通信を行うデータ通信方法であって、
前記データ通信は、連続したデータサイクルごとにデータを通信し、
連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した時間長は一定で、前記各データサイクルの時間長は可変であり、
前記第１装置から、前記時間長を変更したトレーニングパターンデータを前記第２装置に送信し、前記第２装置から受信した前記トレーニングパターンデータに対応する返信データを前記第１装置に送信し、前記第１装置で、受信した前記返信データと前記トレーニングパターンデータを比較した結果に基づいて、変更した前記時間長の良否を判定するトレーニングを、前記時間長を変更しながら繰り返し行い、
良否判定した結果のうち良判定された前記時間長の範囲内で、前記Ｎ個のデータサイクルの各データサイクルの時間長を設定し、設定した前記Ｎ個のデータサイクルの各データサイクルの時間長のデータサイクルで、データ通信を行うことを特徴とするデータ通信方法。
【請求項６】
第１装置と、第２装置と、を有し、前記第１装置と前記第２装置との間でデータ通信を行うデータ通信装置であって、
前記データ通信は、連続したデータサイクルごとにデータを通信し、
連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した合計時間長は一定で、前記各データサイクルの時間長は可変であり、
前記Ｎ個のデータサイクルのそれぞれの時間長は、すべて前記合計時間長の１／Ｎであるか、すべて前記合計時間長の１／Ｎ以外であるかのいずれかであり、
前記データ通信の通信経路長に応じた伝搬遅延時間の２倍の時間が前記合計時間長の１／Ｎと一致する場合、前記Ｎ個のデータサイクルのそれぞれの時間長はすべて前記合計時間長の１／Ｎ以外であることを特徴とするデータ通信装置。
【請求項７】
第１装置と、第２装置と、を有し、前記第１装置と前記第２装置との間でデータ通信を行うデータ通信方法であって、
前記データ通信は、連続したデータサイクルごとにデータを通信し、
連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した合計時間長は一定で、前記各データサイクルの時間長は可変であり、
前記Ｎ個のデータサイクルのそれぞれの時間長は、すべて前記合計時間長の１／Ｎであるか、すべて前記合計時間長の１／Ｎ以外であるかのいずれかであり、
前記データ通信の通信経路長に応じた伝搬遅延時間の２倍の時間が前記合計時間長の１／Ｎと一致する場合、前記Ｎ個のデータサイクルのそれぞれの時間長はすべて前記合計時間長の１／Ｎ以外であることを特徴とするデータ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信装置およびデータ通信方法に関する。
【背景技術】
【０００２】
電子装置では、データ通信が、チップ内のブロック間、チップ間、装置間で広く行われる。例えば、メモリコントローラとＳＤＲＡＭ間では、メモリコントローラからＳＤＲＡＭへの書込みデータの送信が行われ、ＳＤＲＡＭからメモリコントローラへの読み出しデータの送信が行われる。以下、メモリコントローラおよびＳＤＲＡＭ、またはメモリコントローラを含む主装置およびＳＤＲＡＭを有し、それらの間でデータ通信を行う場合を例として説明を行うが、開示の実施形態は、これに限定されるものではない。
【０００３】
上記のようなメモリコントローラおよびＳＤＲＡＭを有する装置を開発する場合、仕様に応じて、メモリコントローラおよびＳＤＲＡＭの内部構成を設計する。その上で、メモリコントローラとＳＤＲＡＭ間のデータ通信速度などを決定する。これにより、メモリコントローラとＳＤＲＡＭ間のデータ通信経路の長さが決定される。
【０００４】
メモリコントローラとＳＤＲＡＭ間のデータ通信経路をバス形式で形成し、複数のＳＤＲＡＭを接続する場合がある。この場合、ＳＤＲＡＭによりメモリコントローラまでのデータ通信経路長が異なることになる。
【０００５】
送信側から出力されたデータ信号は、データ通信経路長に応じた伝搬遅延時間後に受信側に到着する。この際、受信側での信号の反射が生じないようにインピーダンスマッチングが図られているが、反射をゼロにすることはできず、反射した信号は、伝搬遅延時間の２倍の時間後に送信側に到着し、送信するデータ信号を劣化させる。この劣化が特に問題になるのが、伝搬遅延時量の２倍がデータ信号のサイクル時間（以下、データサイクル時間と称する）と一致する場合である。このようなデータ信号の伝搬遅延量とデータサイクル時間との関係で、データ信号が劣化する状態をビタースポットと称する。ビタースポットの状態では、データ信号の品質(Signal Integrity: SI)が劣化し、正常なデータ通信が行えなくなる場合がある。
【０００６】
そこで、メモリコントローラとＳＤＲＡＭを配置する場合、ビタースポットの状態にならないように、データ通信経路の長さを設計する。しかし、装置の小型化が求められており、実装密度を高める必要がある場合、ビタースポットの状態を回避できない場合が生じる。
【０００７】
また、上記のように、バス形式のデータ通信経路に複数のＳＤＲＡＭを接続する場合、すべてのＳＤＲＡＭをビタースポットでない状態にするのが難しく、一部のＳＤＲＡＭがビタースポットに近い状態になる場合がある。
【０００８】
さらに、ＳＤＲＡＭを使用する電子装置では、複数の動作モード（複数の異なる処理内容を実行するモード、通常モードと省電力モード）で動作し、モードによりメモリコントローラとＳＤＲＡＭの間のデータ通信速度が異なる場合がある。この場合、すべての種類のデータ通信速度について、ビタースポットになるのを回避するのが難しい場合が起こり得る。
【０００９】
さらに、ＳＤＲＡＭを使用する電子装置を設計する場合、ベースとなるハードウェアを設計し、顧客の仕様に合わせて動作周波数やデータ通信速度を決定する場合がある。このような場合には、後で決定したデータ通信速度で、ビタースポットになる場合も起こり得る。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−１５５４３０号公報
【特許文献２】特開２００２−０８２８３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
データ信号の伝搬時間とデータ信号のデータサイクル長がビタースポットに近似した場合でも、信号品質の劣化を低減するデータ通信装置およびデータ通信方法が望まれていた。
【課題を解決するための手段】
【００１２】
本発明の第１の態様のデータ通信装置は、第１装置と、第２装置と、を有し、第１装置と第２装置との間でデータ通信を行うデータ通信装置である。データ通信は、連続したデータサイクルごとにデータを通信し、連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した時間長は一定で、各データサイクルの時間長は可変である。第１装置は、トレーニング回路を有す。トレーニング回路は、時間長を変更したトレーニングパターンデータを発生して第２装置に送信し、第２装置から受信したトレーニングパターンデータに対応する返信データとトレーニングパターンデータを比較する。トレーニング回路は、比較結果に基づいて、変更した時間長の良否を判定するトレーニングを、時間長を変更しながら繰り返し行い、良否判定した結果のうち良判定された時間長の範囲内で、Ｎ個のデータサイクルの各データサイクルの時間長を設定する。第１装置は、トレーニング回路が設定したＮ個のデータサイクルの各データサイクルの時間長のデータサイクルで、データ通信を行う。
【００１３】
本発明の第２の態様のデータ通信装置は、第１装置と、第２装置と、を有し、第１装置と第２装置との間でデータ通信を行う。データ通信は、連続したデータサイクルごとにデータを通信し、連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した合計時間長は一定で、各データサイクルの時間長は可変である。Ｎ個のデータサイクルのそれぞれの時間長は、すべて合計時間長の１／Ｎであるか、すべて合計時間長の１／Ｎ以外であるかのいずれかであり、データ通信の通信経路長に応じた伝搬遅延時間の２倍の時間が合計時間長の１／Ｎと一致する場合、Ｎ個のデータサイクルのそれぞれの時間長はすべて合計時間長の１／Ｎ以外である。
【発明の効果】
【００１４】
実施形態によれば、常に良好なデータ通信が行える。
【図面の簡単な説明】
【００１５】
【図１】図１は、データ通信装置の基本構成およびビタースポットについて説明する図であり、（Ａ）が基本構成を、（Ｂ）が送信側および受信側の信号波形例を、（Ｃ）がビタースポット発生を説明するグラフである。
【図２】図２は、実施形態においてビタースポットであることによる信号品質SIの低下を回避する原理を説明する図であり、（Ａ）が原理を説明し、（Ｂ）が各通信周期における通信回数のヒストグラムを示す。
【図３】図３は、第１実施形態のデータ通信装置の構成を示す図である。
【図４】図４は、第１実施形態のデータ通信装置における動作を説明するタイムチャートであり、参考として一般例のタイムチャートを合わせて示す。
【図５】図５は、Ｄｕｔｙ調整回路およびそこで使用されるディレイライン(Delay Line)の回路構成を示す図である。
【図６】図６は、Ｄｕｔｙ調整回路の動作を示すタイムチャートである。
【図７】図７は、トレーニング用データパターン生成回路の入出力信号および動作タイムチャートを示す図であり、（Ａ）が入出力信号を、（Ｂ）が動作タイムチャートを示す。
【図８】図８は、期待値比較回路の入出力信号および動作タイムチャートを示す図であり、（Ａ）が入出力信号を、（Ｂ）が動作タイムチャートを示す。
【図９】図９は、トレーニング結果判定回路の入出力信号および動作タイムチャートを示す図であり、（Ａ）が入出力信号を、（Ｂ）が動作タイムチャートを示す。
【図１０】図１０は、第１実施形態の第１装置（メモリコントローラ）におけるトレーニング動作を示すフローチャートである。
【図１１】図１１は、良好な通信が行えるDuty調整信号の値の範囲例を示す図である。
【図１２】図１２は、第１実施形態のデータ通信装置で、ビタースポットになる通信速度で通信する場合で、デューティ調整を行わない場合とデューティ調整を行った場合の第１装置の出力（対向デバイスの入力）信号波形を示す図である。
【図１３】図１３は、第１実施形態において図１２のようなデータ信号波形を受信することによる効果を説明する図である。
【図１４】図１４は、第２実施形態のデータ通信装置の構成を示す図である。
【図１５】図１５は、基準電位生成回路の回路図である。
【図１６】図１６は、第２実施形態のデータ通信装置におけるトレーニング時の動作を示すフローチャートである。
【図１７】図１７は、良好な通信が行えるDuty調整信号および基準電位調整信号の値の範囲例を示す図であり、（Ａ）が基準電(VREF)を固定してDuty調整信号を変化した例を、（Ｂ）が、Duty調整信号および基準電位調整信号の両方を変化した例を示す。
【発明を実施するための形態】
【００１６】
実施形態の受信回路について説明する前に、一般的なデータ通信装置およびデータ通信方法について説明する。
【００１７】
図１は、データ通信装置の基本構成およびビタースポットについて説明する図であり、（Ａ）が基本構成を、（Ｂ）が送信側および受信側の信号波形例を、（Ｃ）がビタースポット発生を説明するグラフである。
【００１８】
図１の（Ａ）に示すように、データ通信装置では、送信側のドライバ(DRIVER)１の出力するデータ信号が、伝送線路３を伝搬し、受信側のレシーバ(RECEIVER)２に取り込まれる。レシーバ２では、信号の反射が生じないようにインピーダンスマッチングが図られている。しかし、反射をゼロにすることはできず、反射した信号は、伝送線路３を伝搬してドライバ１の出力端に伝搬し、ドライバ１の出力信号に重畳され、送信するデータ信号を劣化させる。この劣化が特に問題になるのが、伝搬遅延量の２倍がデータ信号のサイクル時間（以下、データサイクル時間と称する）と一致する場合である。このようなデータ信号の伝搬遅延量とデータサイクル時間との関係で、データ信号が劣化する状態をビタースポットと称する。ビタースポットの状態では、データ信号の品質(Signal Integrity: SI)が劣化し、正常なデータ通信が行えなくなる場合がある。
【００１９】
通常、ドライバ１は、クロックCKに同期して動作し、ドライバ１の出力するデータ信号は、クロックCKの１動作周期tCKで変化する。ここでは、データ信号の通信周期がクロックCKの１動作周期tCKに等しいとして説明する。伝送線路３の配線長をLength[mm]とし、伝搬遅延時間をtpd[psec/mm]とすると、tCK=2×tpd×Lengthの時がビタースポットである。ここでは、ビタースポットとの近似具合をSI/Timing Margin = tCK-2×tpd×Lengthで表す。SI/Timing Marginの絶対値が小さいとビタースポットに近く、大きいとビタースポットから遠いことになる。
【００２０】
データ通信で信号の劣化が顕著なのは、データ信号がクロックＣＫの１動作周期tCKごとに「高（Ｈ）」レベルと「低（Ｌ）」レベルに変化する場合である。
図１の（Ｂ）は、ビタースポットで、ドライバ１が、クロックＣＫの１動作周期tCKごとにＨとＬに変化するデータ信号を出力した時の、ドライバ１の出力端およびレシーバ２の入力端の信号を示す。図示のように、Ｌレベルのドライバ１の出力が、反射してtCK後にドライバ１の出力端に到着し、ドライバ１のＨレベルの出力に重畳され、信号品質SIを劣化させる。
【００２１】
上記のように、ビタースポットとなるデータ信号の通信周期と伝送線路の線路長は、線形関係を有する。図１の（Ｃ）は、この関係を示すグラフで、横軸が通信周期で、縦軸が線路長である。ここでは、線路長を、ドライバ１およびレシーバ２のパッケージ（ＰＫＧ）内の線長とプリント回路基板（ＰＣＢ）の線長の和（ＰＫＧ＋ＰＣＢ線長）で表している。
【００２２】
図１の（Ｃ）に示すように、ビタースポットとなる通信周期とＰＫＧ＋ＰＣＢ線長は線形関係にある。したがって、あるＰＫＧ＋ＰＣＢ線長の場合、Ａで示す通信周期Ｔ１の場合には、ビタースポットとならないが、Ｂで示す通信周期Ｔ０の場合には、ビタースポットとなる。したがって、電子装置で、あるＰＫＧ＋ＰＣＢ線長に設計した後、通信周期をＴ０に設定する場合にはビタースポットとなり、データ信号SIが劣化することが起こり得る。
【００２３】
これまで、設計段階でビタースポットとなることが判明した時には、何らかの対策を施してビタースポットとなるのを回避していたが、その場合標準設計のものが使用できないことになり、設計工数の増加や製造コストの増加という問題が発生していた。また、ベース設計が終了した後、個別に通信周期を設定する場合などには、設計段階でビタースポットとなることが判明せず、試作の段階や量産の段階でビタースポットによる通信不良が発生することになる。この場合には、それまでの設計や製造費用が無駄になり、納期の遅れが生じるという問題が発生していた。
【００２４】
以下に説明する実施形態では、所望の通信周期ではビタースポットとなる場合でも、ビタースポットであることによる信号品質SIの低下を抑制しながら実質的に所望の通信周期でのデータ通信が行える。
【００２５】
図２は、実施形態においてビタースポットであることによる信号品質SIの低下を回避する原理を説明する図であり、（Ａ）が原理を説明し、（Ｂ）が各通信周期における通信回数のヒストグラムを示す。
【００２６】
図２の（Ａ）に示すように、あるＰＫＧ＋ＰＣＢ線長の場合、Ａで示す通信周期Ｔ１の場合にはビタースポットにならないが、Ｂで示す通信周期Ｔ０の場合にはビタースポットになるとする。ここで、何らかの理由（例えば動作モードの変更に伴う通信周期の変更など）で、通信周期をＴ１からＴ０に変更する場合が生じたとする。このＰＫＧ＋ＰＣＢ線長の場合、通信周期Ｔ０ではビタースポットになるから、通信周期Ｔ０でのデータ通信は、信号品質が劣化する場合がある。
【００２７】
そこで、実施形態では、データ信号の隣接する２サイクルを１つの組とし、各組の時間（２サイクルの合計サイクル時間）は一定で、各組内の２つのデータサイクルの時間長が変更可能（可変）とする。図２の（Ａ）に示すように、各組の合計サイクル時間を２Ｔ０とすると、２サイクルの一方のサイクル時間はＴ０−ａ、２サイクルの他方のサイクル時間はＴ０＋ａとなり、時間長ａは０から上限値まで変化可能である。時間長ａの上限値は、Ｔ０−ａおよびＴ０＋ａ（特に、Ｔ０−ａ）でのデータ通信が正常に行える範囲で設定される。ここでは、各組内の２つのデータサイクルの時間長を変更することを、デューティ(Duty)調整と称する。言い換えれば、実施形態では、Ｔ０でビタースポットになる場合に、隣接する２サイクルの時間長をＴ０−ａおよびＴ０＋ａとすることにより、ビタースポットになるのを回避する。
【００２８】
なお、本発明は、２サイクルを１つの組とする場合に限定されず、３サイクル以上を１組としてもよい。例えば、３サイクルが１組の場合、各組に含まれる３サイクルのサイクル時間は、Ｔ０−ａ／２、Ｔ０−ａ／２およびＴ０＋ａとする。これであれば、３サイクルの合計サイクル時間は、３Ｔ０である。
【００２９】
実際には、通信周期Ｔ０でビタースポットになるか分からず、時間長ａの最適値も不明であるため、時間長ａを変更したトレーニングパターンデータの通信を行い、正常なデータ通信が可能な時間長ａの範囲を求め、それに応じて時間長ａを設定する。
【００３０】
２サイクルを１つの組とする場合、図２の（Ｂ）に示すように、時間長ａ＝０でのデータ通信、すなわち各組の２サイクルとも通信周期Ｔ０でデータ通信を行う場合の頻度は、Ｔ０−ａとＴ０＋ａの２サイクルでデータ通信を行う場合の頻度の２倍である。
【００３１】
図３は、第１実施形態のデータ通信装置の構成を示す図である。
第１実施形態のデータ通信装置は、第１装置１０と、第２装置３０と、を有する。例えば、第１装置１０は、データ通信装置を主導する主装置である。第２装置３０は、主装置にしたがって動作する従装置であり、ここでは対向デバイスと称する。より具体的な例としては、例えば、第１装置１０は、メモリコントローラであり、第２装置３０は、メモリコントローラにより制御されるＳＤＲＡＭ（シンクロナス・ダイナミック・ランダム・アクセス・メモリ）である。第２装置３０であるＳＤＲＡＭは、メモリコントローラから出力される送信クロックおよび送信ストローブ信号に基づいて、メモリコントローラからのライトデータを受信し、メモリコントローラへのリードデータを送信し、さらに内部動作を行う。第１装置１０は、一般的なメモリコントローラの回路構成に加えて、データサイクルのデューティ(Duty)を変更する回路、およびDutyを設定するためのトレーニングを行う回路を有する。
【００３２】
第１装置１０は、入力セレクタ１１と、フリップフロック（Ｆ／Ｆ）１２と、Ｆ／Ｆ１３−１５と、ドライバ（ＩＯ）１６−１８と、を有する。第１装置１０は、さらに、Ｄｕｔｙ調整回路２１と、トレーニング結果判定回路２２と、トレーニング用データパターン生成回路２３と、期待値比較回路２４と、出力セレクタ２５と、レシーバ（ＩＯ）２６と、を有する。
【００３３】
入力セレクタ１１は、トレーニングEnable信号に応じて、通常時動作時に、対向デバイス３０に出力する通常出力output_normalを選択し、トレーニング時に、対向デバイス３０に出力するトレーニングパターンTxを選択して出力する。
Ｆ／Ｆ１２は、入力セレクタ１１の出力を、第１装置１０の出力動作用クロックclockの１周期分遅延して出力する。
【００３４】
Ｆ／Ｆ１３は、Ｆ／Ｆ１２の出力する送信データを、Ｄｕｔｙ調整回路２１が生成するclock_dutyに同期してラッチし、ＩＯ１６に出力する。ＩＯ１６は、入力した信号を、送信データDQ(OUT)として出力する。
【００３５】
Ｆ／Ｆ１４は、clock_dutyを２分周し、ＩＯ１７に出力する。ＩＯ１７は、入力した信号を、出力クロックCKとして出力する。
Ｆ／Ｆ１５は、Ｄｕｔｙ調整回路２１が生成するclock_strobeを２分周し、ＩＯ１８に出力する。ＩＯ１８は、入力した信号を、ストローブ信号DQSとして出力する。
【００３６】
Ｄｕｔｙ調整回路２１は、出力動作用クロックclockの隣接する２サイクルの時間長を調整（デューティ調整）し、データ出力に使用するデューティ調整クロックclock_dutyと、対向デバイス３０がデータ受信に使用するclock_strobeを生成する。Ｄｕｔｙ調整回路２１は、トレーニング時に、トレーニング結果判定回路２２からのDuty調整信号に応じて上記の動作を行い、通常動作時には、トレーニング結果判定回路２２により設定されたデューティ調整値のclock_dutyおよびclock_strobeを生成する。
【００３７】
トレーニング用データパターン生成回路２３は、トレーニング結果判定回路２２からのトレーニングパターン生成信号に応じて、トレーニング用データパターンを生成する。
【００３８】
期待値比較回路２４は、トレーニング用データパターン生成回路２３からのトレーニング用データパターンと、出力セレクタ２５からの受信データを比較し、対応するデータが一致するか判定し、比較結果をトレーニング判定信号として出力する。
【００３９】
レシーバ（ＩＯ）２６は、対向デバイス３０からの送信データを受信する。出力セレクタ２５は、レシーバ（ＩＯ）２６からの受信データを受け、トレーニングEnable信号に応じて、通常時は通常入力input_normalとして第１装置１０の内部に出力し、トレーニング時は期待値比較回路２４に出力する。
【００４０】
トレーニング結果判定回路２２は、トレーニングEnable信号に応じて起動し、トレーニング動作のシーケンス制御を行い、Ｄｕｔｙ調整回路２１にDuty調整信号を出力し、トレーニング用データパターン生成回路２３にトレーニングパターン生成信号を出力する。さらに、トレーニング結果判定回路２２は、期待値比較回路２４からのトレーニング判定信号に基づいて正常な通信が行えるデューティの調整範囲を求め、その範囲内の適当な値を通常動作時のデューティに設定し、その後トレーニングDisable信号を出力する。トレーニングEnable信号は、第１装置１０の主制御部（図示せず）から供給され、トレーニングDisable信号は主制御部に供給される。
【００４１】
以上の各回路要素のうち、入力セレクタ１１、Ｆ／Ｆ１２−１５、ＩＯ１６−１８およびＩＯ２６は、一般的な回路（メモリコントローラ）に設けられている回路要素である。Ｆ／Ｆ１３および１４にはclockが供給され、Ｆ／Ｆ１５にはインバータで反転したlockが供給される。Ｄｕｔｙ調整回路２１、トレーニング結果判定回路２２、トレーニング用データパターン生成回路２３、期待値比較回路２４および出力セレクタ２５は、第１実施形態で新たに設けられる回路要素である。
【００４２】
対向デバイス３０は、通常動作時およびトレーニング時で同様の動作を行い、ストローブ信号DQSに応じて送信データDQ(OUT)を受信し、出力クロックCKの立ち上りおよび立ち下りエッジに応じて第１装置（メモリコントローラ）１０へのデータを出力する。対向デバイス３０についてのこれ以上の説明は省略する。
【００４３】
図４は、第１実施形態のデータ通信装置における動作を説明するタイムチャートであり、参考として一般例のタイムチャートを合わせて示す。
【００４４】
出力動作用クロックclockは、一般例も第１実施形態も同じである。
一般例では、送信データDQ(OUT)は、clockの立ち上りエッジに同期して変化する。clock_strobeは、clockの反転信号である。ストローブ信号DQSは、clock_strobeを２分周した信号である。一般例では、出力クロックCKは、ストローブ信号DQSと同じ信号であり、送信する必要はない。
【００４５】
第１実施形態では、隣接する２サイクルのclock_dutyは、一方のサイクルの時間長（Ｐ）が長く、他方のサイクルの時間長（Ｑ）が短く、Ｐ＋Ｑはclockの２サイクル分の時間長である。したがって、clockの２サイクルの時間長を２Ｔ０とすると、Ｐ＝Ｔ０＋ａ、Ｑ＝Ｔ０−ａである。なお、図４では、clock_dutyの立ち上りから次の立ち上りまでの時間長をＰおよびＱとしているが、clock_dutyの立ち下りから次の立ち下りまでの時間長も同様にＰおよびＱである。
【００４６】
送信データDQ(OUT)は、clock_dutyの立ち上りに同期して変化する。したがって、DQ(OUT)の隣接する２つのサイクルの時間長は、Ｐ（Ｔ０＋ａ）およびＱ（Ｔ０−ａ）であり、２サイクル分の時間長は２Ｔ０で一定である。clock_strobeは、ＰおよびＱの時間長のサイクルの中間のタイミングで立ち上る信号であり、clockをａ／２シフトした信号である。CKは、clock_dutyを立ち下りで２分周した信号である。DQSは、clock_strobeを立ち上りで２分周した信号である。したがって、CKは、隣接する２サイクルでデューティが異なるが、DQSは、デューティ一定の信号である。
【００４７】
図５は、Ｄｕｔｙ調整回路２１およびそこで使用されるディレイライン(Delay Line)の回路構成を示す図である。
【００４８】
図５の（Ａ）に示すように、Ｄｕｔｙ調整回路２１は、ディレイライン(Delay Line)４１と、クロック選択信号発生回路４２と、セレクタ４４と、を有する。Delay Line４１は、clockを受け、Duty調整信号に応じて遅延量を調整した２つの信号clock_dおよびclock_strobeを出力する。前述のように、clock_strobeはＦ／Ｆ１５に出力される。クロック選択信号発生回路４２は、Delay Line４１の出力するclock_dを２分周し、clock_selを出力するＦ／Ｆ４３を有する。セレクタ４４は、clock_selがＨレベルの時にはclock_dを、clock_selがＬレベルの時にはclockを、選択してclock_dutyとして出力する。
【００４９】
図５の（Ｂ）に示すように、Delay Line４１は、６段の遅延ユニット(Delay Unit)５１Ａ−５１Ｆと、マルチプレクサ(Mux)５２と、マルチプレクサ(Mux)５３と、インバータ５４と、を有する。Delay Unit５１Ａ−５１Ｆは、同じ遅延量を有し、１段目のDelay Unit５１Ａにclockが入力される。clock、２段目のDelay Unit５１Ｂの出力、４段目のDelay Unit５１Ｄの出力、６段目のDelay Unit５１Ｆの出力が、Mux５２に入力される。Mux５２は、Duty調整信号に応じて、４入力のいずれかを選択してclock_dとして出力する。clock、１段目のDelay Unit５１Ａの出力、２段目のDelay Unit５１Ｂの出力、３段目のDelay Unit５１Ｃの出力が、Mux５３に入力される。Mux５３は、Duty調整信号に応じて、４入力のいずれかを選択して出力し、その出力はインバータ５４で反転されてclock_strobeとして出力される。したがって、clock_dおよびclock_strobeは、clockを選択した時は、共にclockと同じ信号であり、それ以外の時は、clock_strobeは、clock_dの１／２の遅延量の信号である。
【００５０】
図６は、Ｄｕｔｙ調整回路２１の動作を示すタイムチャートである。
Duty調整信号に応じてた遅延量のclock_dが生成される。clock_selは、clock_dを立ち下りで２分周した信号であり、セレクタ４４は、clock_sel＝低レベルの時にはclockを、clock_sel＝高レベルの時にはclock_dを、選択する。これにより、clock_dutyは、clockとclock_dの高レベルのパルス部分を交互に選択した信号となり、立ち上りから次に立ち上り（または立ち下りから次の立ち下り）までの時間長が、交互に長短を繰り返す。また、clock_strobeは、clock_dの遅延量の１／２の遅延量の信号である。clock_dutyを立ち下りで２分周すると図４のCKとなり、clock_strobeを立ち上りで２分周すると図４のDQSとなる。
【００５１】
図７は、トレーニング用データパターン生成回路２３の入出力信号および動作タイムチャートを示す図であり、（Ａ）が入出力信号を、（Ｂ）が動作タイムチャートを示す。
トレーニング用データパターン生成回路２３は、トレーニング結果判定回路２２からのトレーニングパターン生成信号が高レベルの時に動作し、低レベルの時に動作を停止する。図７の（Ａ）および（Ｂ）に示すように、トレーニング用データパターン生成回路２３は、動作中、トレーニング結果判定回路２２から送信コマンドTX_CMDを受け、トレーニングパターンTxを生成して出力する。同様に、トレーニング用データパターン生成回路２３は、トレーニング結果判定回路２２から受信コマンドRX_CMDを受け、トレーニングパターンTxと同じトレーニングパターンRxを生成して出力する。トレーニングパターンTxおよびRxは、擬似ランダムパターンであり、既存の公知のアルゴリズムにしたがって生成される。
【００５２】
図８は、期待値比較回路２４の入出力信号および動作タイムチャートを示す図であり、（Ａ）が入出力信号を、（Ｂ）が動作タイムチャートを示す。
【００５３】
図８の（Ａ）に示すように、期待値比較回路２４は、出力セレクタ２５からの信号input_testと、トレーニング用データパターン生成回路２３が生成したトレーニングパターンRxと、を比較し、比較結果をトレーニング判定信号として出力する。図８の（Ｂ）に示すように、期待値比較回路２４は、１つでも不一致のビットがあるとトレーニング判定信号をＨレベルにし、すべてのビットが一致すればトレーニング判定信号をＬレベルに保持する。トレーニング判定信号は、Duty調整信号の切り替え時にＬレベルにリセットされる。期待値比較回路２４の入力input_testおよびトレーニングパターンRxは、通常動作時には変化しないため、期待値比較回路２４は通常動作には実質的に動作しないが、トレーニングEnable信号に応じて動作するようにしてもよい。
【００５４】
図９は、トレーニング結果判定回路２２の入出力信号および動作タイムチャートを示す図であり、（Ａ）が入出力信号を、（Ｂ）が動作タイムチャートを示す。
【００５５】
図９の（Ａ）および（Ｂ）に示すように、トレーニング結果判定回路２２は、トレーニングEnable信号に応じてトレーニング動作を開始し、トレーニング動作を終了するとトレーニングDisable信号を出力する。トレーニング結果判定回路２２は、ＭビットのDuty調整信号を出力し、例えば初期値として４ビットのDuty調整信号０("0000")を出力する。トレーニング結果判定回路２２は、トレーニング中の一定期間、トレーニングパターン生成回路２３に出力するトレーニングパターン生成信号をＨレベルにする。図７に示したように、これに応じて、トレーニングパターン生成回路２３が動作する。トレーニングパターン生成回路２３は、Duty調整信号の値を１ずつ増加させながら、トレーニング判定信号を受け、良好なデータ通信の行えるDuty調整信号の値の範囲を求め、その範囲内で通常動作時のDuty調整信号の値を設定する。
【００５６】
まず、Duty調整信号を初期値０("0000")に設定し、トレーニングパターン生成信号を所定期間Ｈレベルにする。これに応じて、初期値に対応する通信周期（隣接する２つの通信サイクルの組の両方のサイクルがＴ０）で、一連のトレーニングパターンTxに対応する通信データが対向デバイス３０に送信される。対向デバイス３０は、受信した一連のトレーニングパターンTxに対応する通信データを受信し、一旦レジスタ（メモリ）（図示せず）に記憶する。次に、対向デバイス３０は、記憶した受信データを読み出して、第１装置（メモリコントローラ）１０に通信する。第１装置１０のＩＯ２６は、対向デバイス３０からの送信データDQ(IN)を受信し、出力セレクタ２５を介して、期待値比較回路２４に送る。この時、トレーニング用データパターン生成回路２３は、RX_CMDに応答してトレーニングパターンTxと同じトレーニングパターンRxを出力しており、期待値比較回路２４が２つのトレーニングパターンが一致するか判定する。第１装置１０と対向デバイス３０間のデータ通信が良好に行われる場合、すなわち、ビタースポットでない時には、第１装置１０から対向デバイス３０に送信され、送り返されたデータ信号は一致する。期待値比較回路２４が２つのトレーニングパターンが不一致であるとの判定結果、すなわちトレーニング判定信号がＨレベルになった時には、第１装置１０と対向デバイス３０間のデータ通信は不良であると判断される。トレーニング結果判定回路２２は、Duty調整信号の値とトレーニング判定信号の値(L(Pass)/H(Fail))を対応づけて記憶する。
【００５７】
以下、トレーニング結果判定回路２２は、Duty調整信号の値を"0000"から"1110"まで１５段階で変化させて、その時のトレーニング判定信号の値を記憶する。そして、トレーニング結果判定回路２２は、"1110"の値でのトレーニングが終了すると、トレーニングDisableがＨレベルを変化させる。これと同時に、トレーニング結果判定回路２２は、トレーニング判定信号の値がPassとなるDuty調整信号の値の範囲を求め、Duty調整信号の値をその範囲内の最適値に設定し、Duty調整回路２１に出力する。例えば、範囲の中央値を最適値とする。Duty調整回路２１は、Duty調整信号の最適値を保持し、通常動作時にこのDuty調整信号の最適値でclock_dutyを生成する。さらに、第１装置１０の主制御部（図示せず）は、トレーニングDisableがＨレベルを変化するのに応じて、トレーニングEnableをＬレベルにする。
【００５８】
図１０は、第１実施形態の第１装置（メモリコントローラ）１０におけるトレーニング動作を示すフローチャートである。
【００５９】
ステップＳ１１で、トレーニングを開始し、トレーニングEnableが、ＬレベルからＨレベルに変化する。
ステップＳ１２で、Duty調整信号の値を初期値＝０("0000")に設定する。
【００６０】
ステップＳ１３で、トレーニング用データパターンを、設定されているDuty調整信号の値で通信するトレーニングを実施する。
ステップＳ１４で、トレーニング結果判定回路２２は、トレーニング判定信号を受信する。
【００６１】
ステップＳ１５で、Duty調整信号の値が上限値＝１４("1110")に達したか判定し、達していなければ、Duty調整信号の値を１増加（＋１）して、Ｓ１３に戻り、Duty調整信号の値が上限値になるまでＳ１３からＳ１５を繰り返す。Duty調整信号の値が上限値になると、ステップＳ１６に進み、トレーニングDisableがＨレベルになる。
【００６２】
ステップＳ１６で、Duty調整信号の１６個の値に対するトレーニング判定信号のPass/Failの値から、良好な通信が行えるDuty調整信号の値の範囲を求め、その範囲内の最適値にDuty調整信号を設定する。
ステップＳ１７で、トレーニングEnableおよびDisableがＬレベルに戻り、トレーニングを終了する。
【００６３】
図１１は、良好な通信が行えるDuty調整信号の値の範囲例を示す図である。
最下段に示すように、Duty調整信号の値は、０("0000")からＦ("1110")まで１６段階で変化し、Duty調整回路２１は、隣接する２つのサイクルの時間長がＴ０＋ａとＴ０−ａに変更する。ここで、ａはDuty調整信号の値に対応する時間長である。
【００６４】
（Ｒ）に示すように、ビタースポット無しの状態では、Duty調整信号の値が０("0000")から８("1000")の範囲は良好(Pass)になり、Duty調整信号の値が９("1001")以上の範囲は不良(Fail)になる。これは、Duty調整信号の値が９以上の範囲では、ａが大きくなり、Ｔ０−ａのサイクルは、時間長が小さくなり、通信周期が短くなるためと考えられる。
【００６５】
（Ｓ）に示すように、ビタースポット無しの状態では、Duty調整信号の値が３("0011")から８("1000")の範囲は良好(Pass)になり、Duty調整信号の値が１("0000")から２("0010")および９("1001")以上の範囲は不良(Fail)になる。
【００６６】
（Ｒ）のように、良好な範囲が０のDuty調整信号の値を含む場合には、最適なDuty調整信号の値を０に設定する。（Ｓ）のように、良好な範囲が０のDuty調整信号の値を含まない場合には、最適なDuty調整信号の値を、良好な範囲の中間値に設定する。図１１の例であれば、Duty調整信号の値を５または６に設定する。
【００６７】
図１１の例で、（Ｒ）のビタースポット無しの状態では、Duty調整信号の値は０に設定されるので、通信サイクルの時間長を調整しない場合と同様である。（Ｓ）のビタースポット有りの状態では、これまでは不良となっていたが、第１実施形態では、Duty調整信号の値を５または６に設定することにより、不良発生を回避できる。
【００６８】
図１２は、第１実施形態のデータ通信装置で、ビタースポットになる通信速度で通信する場合で、デューティ調整を行わない場合とデューティ調整を行った場合の第１装置１０の出力（対向デバイスの入力）信号波形を示す図である。
【００６９】
破線で示すデューティ調整を行わない場合の波形は、１サイクル内で変動し、サイクルの中心付近にレベルの低い部分が生じる。レベルの低い部分で信号を受信すると、誤った値を受信する可能性が高くなる。これに対して、実線で示すデューティ調整を行った場合の波形は、１サイクル内で比較的平坦であり、サイクル期間の全域で高いレベルになっており、誤った値を受信する可能性は低い。
【００７０】
図１３は、第１実施形態において図１２のようなデータ信号波形を受信することによる効果を説明する図である。図１３の（Ａ）はデューティ調整無しでビタースポットに当たらない場合を、図１３の（Ｂ）はデューティ調整無しでビタースポットに当たる場合を、図１３の（Ｃ）は第１実施形態のデューティ調整有りでビタースポットに当たる場合を、示す。
【００７１】
図１３の（Ａ）から（Ｃ）において、DQ(OUT)は、第１装置１０のドライバから出力されるデータ信号を示し、clock_strobeは、これを受信した対向デバイス３０が、データ信号を取り込む（ラッチする）タイミングを示す。具体的には、clock_strobeの立ち上りに同期してデータ信号をラッチする。したがって、clock_strobeの立ち上り時に、データ信号が安定していることが求められる。
【００７２】
図１３の（Ａ）および（Ｂ）に示すように、デューティ調整無しの場合には、データ信号DQ(OUT)のサイクル長は一定である。これに対して、図１３の（Ｃ）に示すように、デューティ調整有りでビタースポットに当たる場合には、隣接する２つのデータ信号サイクルの一方は時間長が長くなり、他方は時間長が短くなる。
【００７３】
図１３の（Ａ）に示すように、データ通信周期がビタースポットに当たらない場合は、点線で示すノイズは比較的小さく、データ信号を正しく受信できるアイウィンドウ(Eye Window)は、データ信号サイクル中の広い範囲を有しており、良好なデータ通信が可能である。なお、第１実施形態でも、ビタースポットに当たらない場合は、図１３の（Ａ）に示すようなアイウィンドウとなる。
【００７４】
図１３の（Ｂ）に示すように、データ通信周期がビタースポットに当たる場合には、ノイズが大きくなる。特に、データ信号サイクル中の中心から少し前でノイズが大きくなっており、アイウィンドウは、サイクル後半の狭い範囲となっており、clock_strobeの立ち上り時に、データ信号は不安定になる。そのため、データ通信におけるエラーが発生しやすくなる。
【００７５】
図１３の（Ｃ）に示すように、データ通信周期がビタースポットに当たる場合でも、第１実施形態のように、隣接する２つのデータ信号サイクルの一方を長く、他方を短くするデューティ調整を行うため、各サイクルがビタースポットに当たるのを回避できる。そのため、ノイズは小さいままであり、アイウィンドウは、各サイクル中の広い範囲を有している。データ通信周期が少し短くなるサイクルがあり、アイウィンドウは、図１３の（Ａ）に比べて若干狭くなるが、図１３の（Ｂ）に比べてアイウィンドウは広く、データ通信におけるエラーが発生しにくい。データ通信周期を変更する場合のデータ通信の信頼性は、変更するすべてのデータ通信周期中の最大のエラー率で評価されるため、デューティ調整しない場合に比べて、第１実施形態では、データ通信の信頼性が大幅に向上する。
【００７６】
第１装置１０と対向デバイス３０間でデータ通信を行う場合、反射信号などによりノイズが重畳され、レシーバの受信するデータ信号波形が劣化する。前述のように、データ信号の通信周期を変更すると、ビタースポットになる場合があり、信号波形の劣化具合が変化する。信号波形の劣化具合に応じて、レシーバにおける基準電位も最適なレベルが変化する。そこで、次に説明する第２実施形態では、トレーニングにおいて、第１実施形態と同様に隣接する２つのデータ通信サイクルの時間長をプラスマイナスで変化させて最適にすると共に、基準電位についても最適なレベルを探して設定する。
【００７７】
図１４は、第２実施形態のデータ通信装置の構成を示す図である。
第２実施形態のデータ通信装置は、第１装置１０が基準電位生成回路２７をさらに有することが第１実施形態のデータ通信装置と異なる。図３の第１実施形態のデータ通信装置の対向デバイス３０は、図示しなかっただけで、同様にレシーバを有する。第１実施形態では、レシーバは、固定の基準電位と入力するデータ信号を比較していたのに対して、第２実施形態では、レシーバ３１は、基準電位生成回路２７から供給される基準電位(VREF)と入力するデータ信号を比較することが異なる。さらに、第１装置１０のレシーバ２６は、第１実施形態では固定の基準電位と入力するデータ信号を比較していたのに対して、第２実施形態では、基準電位生成回路２７から供給される基準電位(VREF)と入力するデータ信号を比較することが異なる。第１装置１０から対向デバイス３０への基準電位(VREF)の供給はアナログ信号で行われる。さらに、トレーニング結果判定回路２２は、基準電位調整信号を生成し、基準電位生成回路２７に出力する。基準電位生成回路２７は、トレーニング終了時に、トレーニング結果判定回路２２により設定された基準電位調整信号の最適値を保持する機能を有する。
【００７８】
図１５は、基準電位生成回路２７の回路図である。
基準電位生成回路２７は、複数の異なる電位レベルを発生する抵抗列６１と、基準電位調整信号にしたがって抵抗列６１の出力する複数の電位レベルから１つの電位レベルを選択し、基準電位(VREF)として出力するマルチプレクサ６２と、を有する。抵抗列６１は、高電位電源ＶＤＤと、低電位電源ＶＳＳ間に直列に接続された複数の抵抗を有し、抵抗分割により複数の異なる電位を抵抗の接続ノードから出力する。
【００７９】
以上説明したように、第２実施形態のデータ通信装置では、トレーニング結果判定回路２２が基準電位調整信号を変化させることにより、レシーバにおける基準電位(VREF)を段階的に変更することができる。
【００８０】
図１６は、第２実施形態のデータ通信装置におけるトレーニング時の動作を示すフローチャートである。
【００８１】
ステップＳ２１で、トレーニングを開始し、トレーニングEnableが、ＬレベルからＨレベルに変化する。
ステップＳ２２で、Duty調整信号の値を初期値＝０("0000")に、基準電位調整信号を初期値（最小値(min)("000")）に設定する。
【００８２】
ステップＳ２３で、トレーニング用データパターンを、設定されているDuty調整信号の値で通信し、設定された基準電位調整信号に対応する基準電位で受信するトレーニングを実施する。
ステップＳ２４で、トレーニング結果判定回路２２は、トレーニング判定信号を受信する。
【００８３】
ステップＳ２５で、Duty調整信号の値が上限値＝１４("1110")に達したか判定し、達していなければ、Duty調整信号の値を１増加（＋１）して、Ｓ２３に戻り、Duty調整信号の値が上限値になるまでＳ２３からＳ２５を繰り返す。Duty調整信号の値が上限値になると、ステップＳ２６に進む。
【００８４】
ステップＳ２６で、基準電位調整信号の値が上限値＝５("101")に達したか判定し、達していなければ、基準電位調整信号の値を１増加（＋１）して、Ｓ２３に戻り、基準電位調整信号の値が上限値になるまでＳ２３からＳ２６を繰り返す。基準電位調整信号の値が上限値になると、ステップＳ２７に進む。
【００８５】
ステップＳ２７で、Duty調整信号の１６個の値および基準電位調整信号の５個の値に対するトレーニング判定信号のPass/Failの値から、良好な通信が行えるDuty調整信号および基準電位調整信号の値の範囲を求める。そして、その範囲内の最適値にDuty調整信号および基準電位調整信号を設定する。
ステップＳ２８で、トレーニングEnableおよびDisableがＬレベルに戻り、トレーニングを終了する。
【００８６】
図１７は、良好な通信が行えるDuty調整信号および基準電位調整信号の値の範囲例を示す図であり、（Ａ）が基準電(VREF)を固定してDuty調整信号を変化した例を、（Ｂ）が、Duty調整信号および基準電位調整信号の両方を変化した例を示す。
【００８７】
図１７の（Ａ）は、基準電位(VREF)を５０％("011")、すなわち(VDD+VSS)/2に設定して、Duty調整信号を変化した例であり、図１１の（Ｓ）のビタースポット有りの場合と同じである。
図１７の（Ｂ）は、基準電位(VREF)を、４０％("000")から６０％("100")まで５％ずつ５段階に変化させ、基準電位(VREF)の各段階で、Duty調整信号を変化した例である。この例は、ビタースポット有りの場合の例で、Duty調整信号＝０では不良(Fail)となっている。良好(Pass)となる範囲は、基準電位(VREF)＝５０％の場合が最大で、基準電位(VREF)が５０％から離れるにしたがって狭くなる。図１７の（Ｂ）の良好(Pass)となる範囲から、ノイズマージンも考慮して、Duty調整信号および基準電位調整信号を最適値に設定する。図１７の（Ｂ）の例では、基準電位(VREF)＝５０％、Duty調整信号＝５(1001)に設定される。
【００８８】
以上、第１および第２実施形態のデータ通信装置を説明したが、各種の変形例が可能であるのはいうまでもない。例えば、第１および第２実施形態では、隣接する２つのデータ通信サイクルの一方を長く他方を同じだけ短くする例を示した。この場合、ビタースポットに当たらなければ、２つのサイクルの長さは同じで、ビタースポットに当たる場合、２つのサイクルの一方を長く他方を同じ量だけ短く、言い換えれば、両方ともデータ通信周期と異なる長さを有することになる。しかし、前述のように、隣接する３つのデータ通信サイクルを１組とし、ビタースポットに当たらなければ、３つのサイクルの長さは同じで、ビタースポットに当たる場合、３つのうち２つを同じ量だけ短く、１つを２倍の量だけ長くする変形もあり得る。
【００８９】
さらに、第１装置１０としてメモリコントローラを、第２装置（対向デバイス）３０としてＳＤＲＡＭを使用する例を説明したが、これに限定されず、双方向で通信を行うデータ通信装置であれば、実施形態の構成が適用可能である。
【００９０】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
第１装置と、第２装置と、を有し、前記第１装置と前記第２装置との間でデータ通信を行うデータ通信装置であって、
前記データ通信は、連続したデータサイクルごとにデータを通信し、
連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した時間長は一定で、前記各データサイクルの時間長は可変であり、
前記第１装置は、
前記時間長を変更したトレーニングパターンデータを発生して前記第２装置に送信し、前記第２装置から受信した前記トレーニングパターンデータに対応する返信データと前記トレーニングパターンデータを比較した結果に基づいて、変更した前記時間長の良否を判定するトレーニングを、前記時間長を変更しながら繰り返し行い、良否判定した結果のうち良判定された前記時間長の範囲内で、前記Ｎ個のデータサイクルの各データサイクルの時間長を設定するトレーニング回路を有し、
前記トレーニング回路が設定した前記Ｎ個のデータサイクルの各データサイクルの時間長のデータサイクルで、データ通信を行うことを特徴とするデータ通信装置。
（付記２）
前記第１装置は、ストローブ信号を前記第２装置に送信し、
前記第２装置は、前記ストローブ信号に基づいて、前記Ｎ個のデータサイクルの各データサイクルの時間長で送信されたデータを受信する付記１に記載のデータ通信装置。
（付記３）
前記第１装置は、サイクル長が変更されたクロックを生成し、生成した前記クロックを前記第２装置に送信するとともに、前記クロックに基づいて、設定した前記Ｎ個のデータサイクルの各データサイクルの時間長でデータ信号を生成し、
前記第２装置は、受信した前記クロックに基づいて、前記返信データを生成する付記１または２に記載のデータ通信装置。
（付記４）
前記第１装置は、データ信号の受信におけるデータ値判定のための基準電位を生成する基準電位生成回路を有し、
前記第１装置は、前記基準電位を前記第２装置に供給し、
前記第１装置は、
前記トレーニング回路における動作を、前記基準電位を変更しながら繰り返し行い、前記基準電位について、良判定された前記基準電位の範囲を求め、前記基準電位を前記良判定された基準電位の範囲内に設定し、
前記第２装置は、供給された前記良判定された基準電位の範囲内の基準電位で受信を行う付記１から３のいずれかに記載のデータ通信装置。
（付記５）
第１装置と第２装置との間でデータ通信を行うデータ通信方法であって、
前記データ通信は、連続したデータサイクルごとにデータを通信し、
連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した時間長は一定で、前記各データサイクルの時間長は可変であり、
前記第１装置から、前記時間長を変更したトレーニングパターンデータを前記第２装置に送信し、前記第２装置から受信した前記トレーニングパターンデータに対応する返信データを前記第１装置に送信し、前記第１装置で、受信した前記返信データと前記トレーニングパターンデータを比較した結果に基づいて、変更した前記時間長の良否を判定するトレーニングを、前記時間長を変更しながら繰り返し行い、
良否判定した結果のうち良判定された前記時間長の範囲内で、前記Ｎ個のデータサイクルの各データサイクルの時間長を設定し、設定した前記Ｎ個のデータサイクルの各データサイクルの時間長のデータサイクルで、データ通信を行うことを特徴とするデータ通信方法。
（付記６）
前記Ｎ個のデータサイクルの各データサイクルの時間長で送信されたデータを受信するためのストローブ信号が、送信側から受信側に送信される付記５に記載のデータ通信方法。
（付記７）
設定した前記Ｎ個のデータサイクルの各データサイクルの時間長でデータ信号を生成するために、サイクル長が変更されたクロックが生成され、生成された前記クロックが前記第１装置から前記第２装置に送信され、
前記第２装置は、受信した前記クロックに基づいて、前記返信データを生成する付記５または６に記載のデータ通信方法。
（付記８）
データ信号の受信におけるデータ値判定のための基準電位が前記第１装置で生成され、
前記第１装置は、前記基準電位を前記第２装置に供給し、
前記基準電位を変更しながら前記トレーニングを繰り返し行い、前記基準電位についても、良判定された前記基準電位の範囲を求め、前記基準電位を前記基準電位の範囲内に設定する付記５から７のいずれかに記載のデータ通信方法。
（付記９）
第１装置と、第２装置と、を有し、前記第１装置と前記第２装置との間でデータ通信を行うデータ通信装置であって、
前記データ通信は、連続したデータサイクルごとにデータを通信し、
連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した合計時間長は一定で、前記各データサイクルの時間長は可変であり、
前記Ｎ個のデータサイクルのそれぞれの時間長は、すべて前記合計時間長の１／Ｎであるか、すべて前記合計時間長の１／Ｎ以外であるかのいずれかであることを特徴とするデータ通信装置。
（付記１０）
前記第１装置は、前記第２装置が前記Ｎ個のデータサイクルの各データサイクルの時間長で送信されたデータを受信するためのストローブ信号を、前記第２装置に送信する付記９に記載のデータ通信装置。
（付記１１）
前記第１装置は、設定した前記Ｎ個のデータサイクルの各データサイクルの時間長でデータ信号を生成するために、サイクル長が変更されたクロックを生成し、生成した前記クロックを前記第２装置に送信し、
前記第２装置は、受信した前記クロックに基づいて、前記返信データを生成する付記９または１０に記載のデータ通信装置。
（付記１２）
前記データ信号の受信におけるデータ値判定のための基準電位が可変である付記９から１１のいずれかに記載のデータ通信装置。
（付記１３）
第１装置と、第２装置と、を有し、前記第１装置と前記第２装置との間でデータ通信を行うデータ通信方法であって、
前記データ通信は、連続したデータサイクルごとにデータを通信し、
連続するＮ（Ｎ：２以上の整数）個のデータサイクルの各データサイクルの時間長を合計した合計時間長は一定で、前記各データサイクルの時間長は可変であり、
前記Ｎ個のデータサイクルのそれぞれの時間長は、すべて前記合計時間長の１／Ｎであるか、すべて前記合計時間長の１／Ｎ以外であるかのいずれかであることを特徴とするデータ通信方法。
（付記１４）
前記Ｎ個のデータサイクルの各データサイクルの時間長で送信されたデータを受信するためのストローブ信号が、送信側から受信側に送信される付記１３に記載のデータ通信方法。
（付記１５）
設定した前記Ｎ個のデータサイクルの各データサイクルの時間長でデータ信号を生成するために、サイクル長が変更されたクロックが生成され、生成された前記クロックが前記第１装置と前記第２装置の間で送信される付記１３または１４に記載のデータ通信方法。
（付記１６）
前記データ信号の受信におけるデータ値判定のための基準電位が可変である付記１３から１５のいずれかに記載のデータ通信方法。
【００９１】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００９２】
１０    第１装置（メモリコントローラ）
１１    入力セレクタ
１２−１５    Ｆ／Ｆ
１６−１８    ドライバ（ＩＯ）
２１    Duty 調整回路
２２    トレーニング結果判定回路
２３    トレーニング用データパターン生成回路
２４    期待値比較回路
２５    出力セレクタ
２６    レシーバ（ＩＯ）
２７    基準電位生成回路
３０    第２装置（対向デバイス）（ＳＤＲＡＭ）
【図１】
0006550907.tif 000002
【図２】
0006550907.tif 000003
【図３】
0006550907.tif 000004
【図４】
0006550907.tif 000005
【図５】
0006550907.tif 000006
【図６】
0006550907.tif 000007
【図７】
0006550907.tif 000008
【図８】
0006550907.tif 000009
【図９】
0006550907.tif 000010
【図１０】
0006550907.tif 000011
【図１１】
0006550907.tif 000012
【図１２】
0006550907.tif 000013
【図１３】
0006550907.tif 000014
【図１４】
0006550907.tif 000015
【図１５】
0006550907.tif 000016
【図１６】
0006550907.tif 000017
【図１７】
0006550907.tif 000018