以下に添付図面を参照して、この発明にかかるデータ通信システムの実施の形態を詳細に説明する。
[第1の実施形態]
はじめに、本発明の第1の実施形態にかかるデータ通信システムの構成について図1を用いて説明する。図1は、第1の実施形態にかかるデータ通信システムの全体構成を示すブロック図である。
図1に示すように、送信側チップにはデータ送信部101が搭載され、受信側チップにはデータ受信部102が搭載される。
詳細は後述するが、データ送信部101は、基準クロックRefCLKTxと、データと、分周比設定信号RefMと、データ受信部102からの位相判定信号の各信号が入力され、伝送クロックTxCLK及び伝送データをデータ受信部102へ出力する。データ受信部102は、データ送信部101からの伝送クロックTxCLKと伝送データが入力され、受信データと、データ送信部101への位相判定信号(詳細は後述)の各信号を出力する。送信側チップと受信側チップは同一ボード上もしくは異なるボード上に実装される。異なるボード上に実装された場合、ボード間の接続はコネクタを介して直接接続されるか、もしくはハーネスやツイストペアケーブルなどを用いて接続されることを想定している。また上記伝送データはGND基準のシングルエンド出力でもよいし、差動出力にしてもよい。また、伝送データは任意のチャネル数(ビット幅)でデータ送信を行うことができる。
(第1の実施形態におけるデータ送信部の第1の構成例)
続いて、図1のデータ送信部1の詳細(第1の構成例)を、図2を用いて説明する。
図2は、図1のデータ通信システムにおけるデータ送信部101の第1の構成例を示すブロック図である。
図2において、高周波クロック生成部101は、入力される基準クロックRefCLKTxを基に、それを逓倍した高周波クロックVCLKを生成するものであり、周知のPLL(Phase Locked Loop)回路により構成される。入力する基準クロックRefCLKTxを例えば精度のよい水晶発振出力を用いることにより、精度のよい高周波クロックVCLKが得られる。
分周器2は、この高周波クロックVCLKを分周することで、伝送クロックTxCLKを生成する。この分周器2は、例えばM進カウンタにより構成され、カウント値countMをさらに出力する。また、分周比Mは、周波数演算部3からの分周比指示信号Mnowに従って変更される。
周波数演算部3は、入力される分周比設定信号RefMに基づいて分周比指示信号Mnowを生成する。このように伝送クロックTxCLKは、安定かつ高精度に発振させた高周波クロックVCLKを分周することにより生成されるので、この分周比指示信号Mnowを変更することにより、瞬時にかつ安定的に伝送クロックの周波数を変更することが可能となる。
また、伝送データ生成部4は、高周波クロックVCLKを基準に、入力されるデータから伝送データを生成する。この際、データ受信部102から供給される位相判定信号に基づいて伝送データの位相を変更することで、受信側にとって最適な位相でデータを出力することができるようになる。なお、ここでの伝送データの位相設定の詳細については後述する。また、図2では伝送データ生成部4は一つであるが、必要なビット幅の分だけ並列に拡張することができる。また、周波数演算部3が出力する分周比指示信号Mnowは、高周波クロックVCLKのカウント数であり、整数である。ただし、分周比設定信号RefMが整数でない場合でも、下記のようにして、周波数演算部3がMnowを切り替えることで、平均すれば所望の周波数となるTxCLKを得ることができる。
図3に、このような分周比設定信号RefMが整数でない場合の動作を実現する周波数演算部3の構成例を示す。図3の回路は高周波クロックVCLKで動作する。
入力信号RefMは、整数部分Mintと小数部分Mdecに分けられ、小数部分Mdecは積算器5に入力される。積算器5はMdecを積算してゆき、1を越えた時に整数部分Mcalを出力する。またこの出力の際、積算器5は積算値から整数部分Mcalを引き、小数部分のみを残す。加算器6はRefMの整数部分Mintと積算器5の出力Mcalを加算し、分周比指示信号Mnowとして出力する。このようにすることで、図2のデータ送信部101は整数でない分周比RefMに対しても平均すれば所望の周波数となるTxCLKを生成することができる。
また、TxCLKに所望のスペクトルを持たせるSSC変調をかけるようなデジタル演算機能を周波数演算部3に持たせることもできる。図4は、周波数演算部3がSSC変調機能を持つ場合の構成例を示したものである。このうち、加算部7は図3に示したものと同様であるため、その詳細な説明は省略する。
変調位相カウンタ8は、VCLK(図4にて図示せず)によってインクリメントされ、カウント値Pcountをメモリ9へ出力する。メモリ9は、変換テーブルとして機能し、入力されたPcountの値に応じて変調信号Mfineを出力する。加算器10はRefMにMfineを加算した値を基にしてMnowを生成する。所望の変調周波数・範囲に適した値をメモリ9にあらかじめ設定することで、所望の変調がかかったTxCLKを生成することができる。メモリ9の値はデジタル値であるので、変調の設定を変更することも容易である。
次に、伝送データ生成部4の構成とその動作を図5および図6を用いて説明する。
図5は伝送データ生成部4の構成を示すブロック図であり、図6は、伝送データ生成部4の動作を説明するタイミング図である。ここでは、データDataは1bitデータであり、これを基に、伝送データMdataが生成される。
図6において、(a)VCLKの矢印は高周波クロック(周期Tv)の立ち上がりを示し、(b)countMは分周器2でカウントしたカウント値であり、今、RefM=Mnow=16と設定されているものとする。(c)TxCLKは伝送クロックであり、ここでは周期は16Tvとなっている。(d)DataはTxCLKに同期して入力されるデータである。このデータの値に従って出力される伝送データ(e)Mdataのパルス幅TwはTxCLK周期と同一となっている。
伝送データMdataの生成は高周波クロックVCLKを基準にし、位相補正情報生成部13によって生成された位相補正情報Npcに基づいて行われる。Npcは伝送データDataをTxCLKに対してどれだけ遅延させるかを表すものである。図5中のデータ変調部11は、countM=Mnowの時にDataをラッチしてDmとして出力する。
データ遅延部12は、上記DmをVCLKでNpcサイクル分遅延させて、Mdataを生成する。例として図6中(e−1)のMdataはNpc=0、(e−2)のMdataはNpc=1、(e−3)のMdataはNpc=8の時のそれぞれの伝送データ出力を示したものである。これにより、データ受信部102においては、各チャネルの伝送データのほぼ中央でTxCLKが立ち上がるように設定することができるようになり、データ取り込みミスが起こりにくくなり良好な通信システムを実現することができる。
続いて、図5に示す位相補正情報生成部13の詳細な動作について、図7を用いて説明する。図7は、位相補正情報生成部13の動作を説明するためのフローチャートである。
図7においてステップS701は位相補正情報設定工程であり、ここで位相補正情報は0もしくは正の整数であり初期値は0であるとする。
ステップS702は位相補正用データ送信工程であり、ここで位相補正用データとはこのデータ通信システムによって予め定められたデータパターンであって、位相判定時に伝送データ生成部4により出力される。その詳細は図8を用いて後述する。
ステップS703は、伝送データとしての位相補正用データと伝送クロックTxCLKが位相同期しているか否かを示す位相判定信号により分岐処理する工程である。この位相判定信号は、データ受信部102において、上記位相補正用データを受信することにより下記のようにして生成され、フラグ“1”が立つことにより位相同期したと判定をする。ここでの判定(本明細書において、位相判定と称す)がNoの場合にはステップS701に戻り位相補正情報を1だけインクリメントする。そして再びステップS702にて新しい位相補正情報に応じた位相補正用データを送信し、受信した位相判定信号によりステップS703の判断をする。以上のルーチンをステップS703での位相判定の結果がYesになるまで繰り返す。そして位相判定の結果がYesになったとき、その時点での位相補正情報から算出される確定された位相補正情報を設定する。ここでの位相補正情報の具体的な算出方法は後述する。
ここで、図8に位相補正用データと、関連する信号の一例を示す。図8(A)の例では、(a)の位相補正情報は0であり、(b)の位相補正用データはデータ受信部102が受信する伝送クロックTxCLKの周期Ttxの5倍のパルス幅をもつパルスである。データ送信部101が、この位相補正用データをデータ受信部102に送信した時、データ受信部102は、データ“1”を5回連続で検出する。この時、(e)の位相判定信号は0のままである。
次に図8(B)の例では、(a)の位相補正情報は“24”であり、その時の位相補正用データは図8(a)に示した位相補正用データよりも立ち上がり時刻が24*Tvだけ遅れたパルスとなっている。したがって、この位相補正用データのパルス幅は5*Ttx−24*Tvとなる。ここでTvは、高周波クロックVCLKの周期もしくは多相クロックの位相差(T/P)であり、演算の単位時間となる。この時データ受信部102における(d)の受信データはデータ1の数が1つ減り4つとなる。この場合位相判定信号にフラグ“1”が立つ。位相判定信号はこのように生成される。またこのとき、位相補正用データの立ち上がりと伝送クロックTxCLKの立ち上がりはほぼ同時刻であり、位相補正情報を1ずつインクリメントしていった場合には、演算単位時間Tvの精度で伝送されるデータと伝送クロックTxCLKの位相を合わせることができる。
この後、実際に送信側に設定する位相補正情報は、現在の位相補正情報の値に、伝送クロックTxCLKの周期Ttxの半周期を演算単位時間Tvの単位で表した数だけ足すもしくは引くことにより算出する。
一例として、位相判定終了時の位相補正情報をNpc’とし、実際に設定する位相補正情報をNpcとし、Ttx=160*Tvとすると、
Npc = Npc’ + (Ttx/2)/Tv
から求まるNpcが設定される。図8(B)に示した例では、Npc’=24で、Npc=104となる。ただし、Npc’ > (Ttx/2)/Tvの場合には、
Npc = Npc’ − (Ttx/2)/Tv
とした方がよい。
実際のデータ通信時に、このように設定された位相補正情報に従って、伝送データをNpc*Tvだけ遅延させてやることにより、各チャネルの伝送データのほぼ中央でTxCLKが立ち上がるように(図示せず)設定することができ、データ受信部102においてデータ取り込みミスが起こりにくくなる。
また、一般のデータ通信システムにおいて、伝送路はある周波数特性を持ち、周波数が高くなると信号の振幅が減衰し、パルス幅を正確に伝送できなくなるといったことが起こる。実際の位相補正用データのパルス幅を設定するときには、この伝送路特性を考慮し設定する必要がある。図8(A)では位相補正用データのパルス幅は送信クロックTxCLKの周期Ttxの5倍としたが、実際はその通信システムにおける伝送路特性を考慮し、その伝送路によって影響を受けない(パルス幅が縮まらない)パルス幅に設定する。
次に、図9(A)および図9(B)に、位相補正用データの第2の例を示す。
図9(A)の例では、位相補正情報は0であり、位相補正用データは受信クロックの周期Ttxの5倍から、ある定められた時間ΔTを引いた5*Ttx−ΔTのパルス幅をもつパルスである。この位相補正用データをデータ受信部102に送信した時、データ受信部102が受信する位相補正用データと伝送クロックTxCLKの位相関係により、データ受信部102において受信されるデータは“1”が5回連続する場合と4回連続する場合が発生する。図9(A)の例はデータ“1”が5回連続する場合である。この時、位相判定信号は0のままである。
次に図9(B)の例では、(a)の位相補正情報は24であり、その時の位相補正用データは、図9(A)の位相補正用データよりも立ち上がり時刻、立ち下がり時刻共に24*Tvだけ遅れたパルスとなる。ここでTvは演算単位時間(高周波クロックVCLKの周期もしくは多相クロックの位相差(T/P))である。この時データ受信部102で受信される(d)の受信データはデータ“1”の数が1つ減り4つとなる。この場合、位相判定信号はフラグ“1”が立つ。位相判定信号はこのように生成される。またこのとき、位相補正用データの立ち上がりと受信クロックの立ち上がりはほぼ同時刻であり、位相補正情報を1ずつインクリメントしていった場合には、演算単位時間の精度で位相を合わせることができる。
この後、実際に送信側に設定する位相補正情報は、現在の位相補正情報の値に、伝送クロックTxCLKの周期Ttxの半周期を演算単位時間で表した数だけ足すもしくは引くことにより算出する。
例えば、位相判定終了時の位相補正情報をNpc’とし、実際に設定する位相補正情報をNpcとし、Ttx=160*Tvとすると、
Npc = Npc’ + (Ttx/2)/Tv
から求まるNpcが設定される。図9(B)に示した例では、Npc’=24で、Npc=104となる。ただし、Npc’ > (Ttx/2)/Tvの場合には、
Npc = Npc’ − (Ttx/2)/Tv
とした方がよい。
なお、ΔTの時間としては、位相判定が正確に行えるくらい十分大きく設定する必要があるが、あまり大きくし過ぎると位相同期精度が悪くなるので、その点を考慮して設定する必要がある。
以上述べた位相補正にかかる動作は、伝送されるデータの各ビットについてそれぞれ行うことで、全てのビットを、単一の伝送クロックでエラー無く取り込むことができる。
(第1の実施形態におけるデータ送信部の第2の構成例)
次に、第1の実施形態におけるデータ送信部の第2の構成例について説明する。なお、受信側の構成は前述のものと同様である。
まず、第2の構成例として示すデータ送信部101bの構成の概要とその動作について図10および図11を用いて説明する。図10は、本実施形態におけるデータ送信部101bを示す構成図であり、図11は、データ送信部101bに備わる高周波クロック生成部21で生成する各クロックのタイミングを示す図である。
図10のデータ送信部101bにおいて、高周波クロック生成部21は、基準クロックRefCLKTxを逓倍し、位相差が等間隔の多相クロックを生成するものである。なお、本実施形態では16位相(すなわち、相数P=16)の多相クロックVCLK0〜15を生成するものとする。また、この多相クロックのうちの1つをQ分周(ここではQ=4とする)した内部動作用クロックGCLKを生成し、図示はしないがデータ送信部101bの各部へ供給する。
図11に示す(a−0)〜(a−15)は多相クロックVCLK0〜15を示しており、VCLK0からVCLK15まで順に等間隔の位相差を有しており、図11において隣り合うクロックの位相差(T/P;ここで、TはVCLKの周期)を表す時間間隔をTvとする。また、(b)に示すGCLKは(a−0)のVCLK0を4分周したクロックである。
図10のデータ送信部101bは、基本的に上記クロックGCLKを動作クロックとして動作する。図11に示すように、GCLKを4分割した期間を順にQT0,QT1,QT2,QT3と称し、また多相クロックVCLK0〜15の立ち上がりにそれぞれ対応したクロックサイクル内の時刻(PH0を基準とする相対的な時間)を位相PH0〜PH15と称することとする。この期間QT0〜3と位相PH0〜15とによりGCLK中の時間情報QPを表す。ここで時間情報QPは0〜63の64値であり、本実施形態ではこの多相クロックにおける位相差Tvを基準として伝送クロックTxCLKを生成する。つまり伝送クロックの周波数を制御する演算を、動作クロックGCLKを基準に、時間情報QP(QT,PH)の演算を行うことにより行う。
図10において計数部23は、周波数演算部22からの分周比指示信号Mnowに従って時間を計数するものである。この計数部23は、計数値がMnowに達する度に、GCLKに同期したSETpls信号と時間情報SETqpとからなるSet信号を生成する。さらに、このSet信号からMnow/2にあたる時間を計数し、GCLKに同期したRSTpls信号と時間情報RSTqpとからなるRst信号を生成する。この計数する時間単位は、多相クロックVCLK0〜15の位相差Tvである。
伝送クロック出力部24は、計数部23より供給されるSet信号及びRst信号に従って「H」<−>「L」を切り替えて伝送クロックTxCLKを生成し出力する。これらの詳細構成及び動作説明は後述する。また、伝送データ生成部25はVCLK0〜15を基準に伝送データを生成する。この際、データ受信部102から供給される位相判定信号に基づいて伝送データの位相を変更することで、受信側にとって最適な位相でデータを出力することができるようになる。図10では伝送データ生成部25を一つだけ示しているが、必要なビット幅の分だけ並列に拡張して構わない。なお、周波数演算部22は、図2の周波数演算部3と同様の機能を果たし、構成も同様であるのでその詳細な説明は省略する。
続いて、本実施形態におけるデータ送信部101bを構成する各部の詳細をさらに説明する。
(高周波クロック生成部21)
図12に、高周波クロック生成部21の構成例を示す。
この高周波クロック生成部21は、基準クロックRefCLKTxから、多相クロックVCLK0〜15と内部動作用クロックGCLKを生成する。電圧制御発振器(VCO)33は、8段の差動バッファ34a〜hを接続したリングオシレータで構成され、16位相のクロックVCLK0〜15を生成する。分周器30はこの多相クロックのうちの1つ(ここではVCLK8)をNv分周する。位相周波数検出器(PFD)31は基準クロックRefCLKTxと分周器30出力との位相比較を行い、この位相差情報に基づき内在するチャージポンプを駆動する。ローパスフィルタ(LPF)32はチャージポンプ出力を平滑化し制御電圧VcをVCO33に供給する。VCO33内の差動バッファ34a〜hはこの制御電圧Vcに従って遅延量が変化し、位相同期制御が行われる。
例えば基準クロックRefCLKTxとして100MHzのクロックを供給し、分周比Nvを20とすると、多相クロックVCLK0〜15は2GHzで、VCLK0からVCLK15まで順に等間隔の位相差を有するクロックが生成できる。また、分周器35は多相クロックVCLK0〜15のうちの1つ(ここではVCLK0)をQ分周(ここではQ=4とする)してクロックGCLKを生成する。なお、適用し得る多相クロックの相数は本実施例の16に限らないが、演算の簡便性より2のべき乗がもっとも望ましい。同様にGCLKを生成するための分周比Qも2のべき乗がもっとも望ましい。
(計数部23及び伝送クロック出力部24)
図13に、計数部23の構成例を示し、図14に、伝送クロック出力部24の構成例を示す。さらに、図15には、計数部23及び伝送クロック出力部24における各信号のタイミングの一例を示している。これらの図に基づき、分周比指示信号Mnowに従って伝送クロックTxCLKを生成するための詳細構成ならびにその動作を説明する。
図13における各部は、クロックGCLKに同期して動作する。SET時間演算部70は、現在のTxCLK立ち上がり時間情報(SETqp)に分周比指示信号Mnowを加算し、次のTxCLKの立ち上がり時間を表すセット時間情報nextSを演算して出力するものであり、この演算の更新はカウンタ72からのpSet信号により行う。なお、セット時間情報nextSを64で割った商をnextSc、余りをnextSqpとする。つまりnextSc=nextS[MSB:6](すなわちnextSのMSBから第6bitまで)、nextSqp=nextS[5:0](すなわちnextSの第5bitからLSBまで)とする。
RST時間演算部71は、現在のTxCLK立ち上がり時間情報(SETqp)に分周比指示信号Mnowの1/2を加算し、次のTxCLKの立ち下がり時間を表すリセット時間情報nextRを演算して出力するものであり、この演算の更新はカウンタ72からのpSet信号により行う。また、リセット時間情報nextRを64で割った商をnextRc、余りをnextRqpとする。つまりnextRc=nextR[MSB:6]、nextRqp=nextR[5:0]とする。なお、現在のTxCLK立ち上がり時間情報にMnow/2を加算するのは、TxCLKのデューティをほぼ50%にするためであり、デューティ50%を要求しない場合はこの演算を簡略化できるような値を加算するようにしても良い。
カウンタ72は、クロックGCLKを基準としてnextScサイクルのカウントを行い、pSet信号を生成する。このpSet信号が「H」の時カウンタは「1」にクリアされ、カウント値がnextScと一致する時、pSet信号を「H」とする。
F/F73はpSet信号を1GCLK分遅延させてSETpls信号を生成するフリップフロップである。F/F74は、pSet信号をイネーブルとしてnextSqpをラッチし、SETqp信号を生成するフリップフロップである。このSETpls信号はTxCLKの立ち上がりをGCLK単位で指定し、これに同期したSETqp信号によりそのGCLKサイクル内での立ち上がり時間情報を指定する。これらのSETpls信号とSETqp信号の組をSet信号と称し、伝送クロック出力部24に供給する。
カウンタ75は、クロックGCLKを基準としてnextRcサイクルのカウントを行い、RSTpls信号を生成する。SETplsが「H」の時カウンタを「1」にクリアし、カウント値がnextRcに一致する時、RSTpls信号を「H」とする。F/F76は、SETpls信号をイネーブル信号としてnextRqp信号をラッチし、RSTqp信号を生成するフリップフロップである。このRSTpls信号はTxCLKの立ち下がりをGCLK単位で指定し、RSTqp信号によりそのGCLKサイクル内での立ち下がり時間情報を指定する。これらのRSTpls信号とRSTqp信号の組をRst信号と称し、伝送クロック出力部24に供給する。なお、SETqp信号及びRSTqp信号は、それぞれSETpls及びRSTpls信号が「H」の時有効となっていればよいので、各部の制御タイミングはこの実施形態のみに限定されるものではない。
続いて、伝送クロック出力部24の第1の構成例を図14に示す。
図14において、遅延部77は、多相クロックVCLK0〜15を基準として、計数部23から供給されるSETplsを時間情報SETqpに従って遅延させたパルスSを出力するものである。このパルスSはSETplsをSETqp*Tvだけ遅延させたパルスとなる。この遅延部77には、GCLKサイクル中の期間QT0〜3を特定するためクロックGCLKも入力する。あるいはGCLKの代わりに期間QT0〜3を示す期間信号QTを入力しても良い(この場合は高周波クロック生成部21でこのQT信号を生成する)。
遅延部78は、同様に、多相クロックVCLK0〜15を基準として、計数部23から供給されるRSTplsを時間情報RSTqpに従って遅延させたパルスRを出力するものである。このパルスRはRSTplsをRSTqp*Tvだけ遅延させたパルスとなる。
SR−F/F79は、パルスSの立ち上がりで出力を「H」にセットし、パルスRの立ち上がりで出力を「L」にリセットした伝送クロックTxCLKを出力するSet−Resetフリップフロップである。
ここで、以上のように構成された計数部23及び伝送クロック出力部24におけるタイミングチャートを図15に示す。
図15において、(a)はGCLK、(b)のMnowは周波数演算部22から供給される分周比指示信号であり、図示したように入力されるものとする。
(c−1)のnextSはSET時間演算部70で演算される次のTxCLKの立ち上がり時間を表す。図15の例ではまず多相クロックであるVCLKの10番目の位相(PH10)でTxCLKが立ち上がるようになっており、次のTxCLKの立ち上がりは10+Mnow=250Tv後となる。ここで図中右辺のカンマの前(同図向かって左側)の数値はnextScを表し、カンマの後(同図向かって右側)の数値はnextSqpを表す。次のnextSは、nextSqp+Mnow=298となる。
(c−2)のnextRはRST時間演算部71で演算される次のTxCLKの立ち下がり時間を表す。次のTxCLK立ち上がり時間(同図の例で最初は10)にMnow/2を加算した値(=130)がTxCLKの立下り時間となる。(c−1)のnextSと同様に右辺のカンマの前の数値はnextRcを表し、カンマの後の数値はnextRqpを表す。
(d)のpSetは、SETqp信号を更新するためにSETplsの1GCLK前に出力するパルスであり、カウンタ72のカウント値がnextScと一致した時「H」となる。なお、図中示した括弧付き数字はnextScのカウント値を表す。
(e−1)SETplsは、pSet信号を1GCLK遅延させたパルスであり、TxCLKの立ち上がりをGCLK単位で指定する。
(e−2)SETqpは、SETplsの遅延値を示すTxCLK立ち上がり時間情報となるものであり、(d)のpSetが「H」の時の(c−1)のnextSqpの値に更新されるものである。
(f−1)のRSTplsはTxCLKの立ち下がりをGCLK単位で指定したパルスであり、カウンタ75のカウント値がnextRcと一致した時「H」となる。
(f−2)のRSTqpは、RSTplsの遅延値を示すTxCLK立ち下がり時間情報となるものである。
(g−1)のSは、(e−1)のSETplsを、対応する(e−2)のSETqpの値だけ遅延させたパルスであり、遅延値の単位は多相クロックVCLK0〜15の位相差Tvである。同様に、(g−2)のRは、(f−1)のRSTplsを、対応する(f−2)のRSTqpの値だけ遅延させたパルスである。
(h)のTxCLKは、(g−1)のSの立ち上がりで「H」に、(g−2)のRの立ち上がりで「L」として生成される伝送クロックである。
上記のように構成される計数部23及び伝送クロック出力部24により、伝送クロックTxCLKが生成される。
続いて、伝送クロック出力部24の第2の構成例について説明する。図16は、伝送クロック出力部24の第2の構成例を示す図である。さらに、図17は、計数部23及び伝送クロック出力部24の第2の構成例における各信号のタイミングの一例を示す図である。なお、計数部23の動作は上述した通りであるのでその説明は省略する。
図16において、クロックパターン生成部80は、SETpls,SETqp,RSTpls,RSTplsの各信号に基づいてTxCLKの出力パターンを表すCKDataを生成する。CKDataはGCLK中に含まれるVCLKの位相数(16*4)だけのビット幅(=64)を持ち、図17の例ではCKData[63:0]と表される。
図17において、(a)はGCLKである。Mnow、nextS,nextR,pSetは図15に示した例と同様であり、(e−1)のSETpls,(e−2)のSETqp,(f−1)のRSTpls,(f−2)のRSTqpも図15の例と同様となる。
(e−1)のSETpls信号がアサートされると、CKDataはMSBから(SETqp−1)ビット目までを「0」とし、SETqpビット目以降を「1」とする。その後、(f−1)のRSTpls信号がアサートされるまでは、(i)のCKDataは全ビットが「1」となる。
(f−1)のRSTpls信号がアサートされると、CKDataはMSBから(RSTqp−1)ビット目までを「1」とし、それ以降のビットを「0」とする。以降、次に(e−1)のSETpls信号がアサートされるまでは(i)のCKDataは全ビットが「0」となる。
図16に示すシリアライザ81は、VCLK0〜15を基準として、図17(i)のCKDataをMSB側からシリアライズし、(h)のTxCLKを生成する。
次に、伝送データ生成部25の構成例とその動作を図18および図19を用いて説明する。図18は、伝送データ生成部25の構成例であり、図19は、伝送データ生成部25の動作を説明するタイミング図である。なお、ここではGCLK及びVCLKについては図15の例と同様であるとする。また、図19の(j)のデータDataはTxCLKと同期した1bitデータであり、これを元に(m)の伝送データMdataが生成される。
位相補正情報生成部43は、位相判定信号を元に位相補正信号Npcを生成する。位相補正情報生成部43の動作については図5のもの(13)と同様であるため、その詳細な説明は省略する。
遅延情報加算部42は、計数部23から入力されるNextS及びpSet信号に対して、Npcで定められるだけの遅延補正を行い、それぞれNextS’、pSet’として出力する。遅延情報加算部42による補正は、基本的にpSet’=pSetでありNextS’=NextS+Npcであるが、NextS’が、GCLKに含まれるVCLK位相数(この例では64)以上となる場合は、その数を引いた値となり、その場合にはpSet’はpSetに1GCLK分の遅延を持たせたものとなる。
データパターン生成部40は、入力される1ビットDataからデータパターンDptnを生成する。DptnはGCLKに含まれるVCLK位相数(ここでは64)分のビット幅をもつデータ列である。データパターン生成部40は、pSet=「H」の時のDataの値をDmとして内部に保持する。そして、pSet’=「H」の時に、MSBから数えてNextS’ビット目以降をDmとする。以降、次にpSet’=Hとなるまで、Dptnの全ビットはDmで与えられる。次にpSet’=Hとなった時には、新しいDmとNextS’の値に基づいてDptnを生成する。
シリアライザ41は、VCLKを基準に、DptnをMSBから順にシリアライズし、Mdataとして出力する。こうして、TxCLKからNpc*Tvだけ遅延させた伝送データMdataを得ることができる。これにより、データ受信部102においては、位相判定信号を使って各チャネルの伝送データのほぼ中央でTxCLKが立ち上がるように(図示せず)設定することができ、データ取り込みミスが起こりにくくなり良好な通信システムを実現することができる。
以上説明したように、第1の構成例のデータ送信部によれば、高精度に生成された高周波クロックを基準として伝送クロック及び伝送データを生成し、また高周波クロックを基準として伝送データの位相を調整することにより、伝送路長の差異などの要因によるデータスキューを補正することができる。したがって、エラーなく大容量のデータ伝送を行うことができ、また伝送路の設計も容易に行うことができる。
また、データの変調はデジタル的に行うため、伝送データの多ビット化への拡張が容易である。また、デジタル的に周波数変調を行うことで、出力周波数は基準クロック周波数に依存しないため、他のシステムへの組み込みが容易であり、且つSSC変調などの任意のクロック変調に柔軟に対応することができる。また、受信側にクロック生成回路を持つ必要がないために回路規模の低減につながる。
さらに、第2の構成例のデータ送信部101bを用いれば、高周波クロックの代わりに多相クロックを用いることで、クロックの周波数を高くせず済むので、回路の設計が容易となり消費電流も低減できる。
[第2の実施形態]
次に、本発明によるデータ通信システムの第2の実施形態について説明する。図20に、本発明によるデータ通信システムの第2の実施形態の全体構成を示す。
図20において送信側チップにはデータ送信部201が、受信側チップにはデータ受信部202が搭載される。データ送信部201は、RefCLKTx、データ、RefN、位相判定信号、Rx同期クロック(受信同期クロック)の各信号が入力され、TxCLK及び伝送データを出力する(詳細は後述)。
また、データ受信部202には、TxCLKと伝送データが入力され、受信データ、位相判定信号、Rx同期クロックの各信号を出力する。同図に示すRx同期クロックは、受信側チップに限らず、受信側のシステム全体におけるいずれかから出力されるようにしても構わない。送信側チップと受信側チップは同一ボード上もしくは異なるボード上に実装される。異なるボード上に実装された場合、ボード間の接続はコネクタにおいて直接接続もしくはハーネスやツイストペアケーブルなどで接続されることを想定している。また伝送データはGND基準のシングルエンド出力でもよいし、差動出力にしてもよい。図20に示す本実施形態におけるデータ通信システムにおいて、伝送データは任意のチャネル数(ビット幅)でデータ送信を行うことができる。
(第2の実施形態におけるデータ送信部の第1の構成例)
続いて、図20のデータ送信部201の詳細を、図21を用いて説明する。図21は、図20のデータ通信システムにおけるデータ送信部201の第1の構成例を示すブロック図である。図21において、高周波クロック生成部1、分周器(1/M)2、伝送データ生成部4の動作は、図2に示したものと同様であるため、その詳細な説明は省略する。また、図21では、伝送データ生成部4は一つだが、必要なビット幅の分だけ並列に拡張して構わない。
Rx同期検出部50は、データ受信部202から送られるRx同期クロックの立ち上がりエッジを、高周波クロックVCLKを基準として検出するものである。このRx同期検出部50は、Rx同期クロックの立ち上がりを検出すると、伝送クロックTxCLKに同期した検出パルスRDplsとカウント値RDmを出力する。
比較部51は、検出パルスRDplsの時間間隔Trxを検出し、通信データレートおよびRx同期クロックの設定周期に応じて予め定められた基準時間間隔と、計測した時間間隔Trxとの差を誤差Lerrとして算出する。つまり適正な基準時間間隔と計測時間間隔Trxとの差が、送信側と受信側での周波数の差として現れる。
この誤差Lerrは高周波クロックVCLKを基準としてカウントし演算を行っても良いが、高周波クロックVCLKは非常に高周波であり、またカウントするビット数も非常に大きくなるので、回路規模、消費電力の点で不利である。そこで本実施形態では、時間間隔Trxを、伝送クロックTxCLKを基準としてカウントし、予め定められた基準値RefNとの比較をして、最後に高周波クロック基準の誤差Lerrとして変換をし、出力している。
フィルタ52は、誤差Lerrをフィルタリングして誤差データErrを出力するデジタルフィルタであり、例えば簡単には、直近の数周期分の誤差Lerrの平均をとり誤差データErrを得る。
周波数演算部53は、誤差データErrに従って適正な伝送クロック周波数を算出し、これを分周比指示信号Mnowに変換して出力する。高周波クロック周期をTv、伝送クロック周期をTtxとし、今、Ttx=K*Tvとして伝送クロック周波数を設定して送信した時、目標値Ttx’(Ttx’=K’*Tv)との誤差Errが周波数演算部53に入力される。従って、RefN*Ttx’=RefN*Ttx + Err*Tvとなる。よって、
K’=K + Err/RefN ・・・(1)
としてK’を設定するようにすれば、伝送クロック周波数を目標値に制御することができる。
本実施形態では、Rx同期クロックを参照クロックとして、TxCLKおよび伝送データをRx同期クロックと同期させるように、分周器2、比較部51、フィルタ52及び周波数演算部53でデジタルPLL制御を行っている。これにより、伝送クロックが変動してもTxCLKがそれに追随し、誤差を高精度に補正できる。なお、フィルタ52の特性がこのPLL制御特性を決定するので、制御系が安定になるようにフィルタ特性が決定される。また、K’=K+α・Err/RefNとしてループゲインを変えるようにしても良い。
また、分周器2の分周数Mは正の整数であるので、伝送クロックの設定値Kを次のようにして分周比指示信号Mnowに変換すると、丸め誤差を低減することができ、より精度のよい伝送クロックが得られる。例えば、通常は設定値Kを四捨五入して整数に丸めた値をMとし、Mnow=Mとして、伝送クロックのCサイクルに1回、Mnow=M+1またはM−1とすることにより、K=M±1/Cとなり丸め誤差を低減できる。また丸め誤差の振り分けも均等に行えるので、伝送クロックの局所的な偏差も抑えられる。この場合は前記M値とC値を制御するようにすればよい。
続いて、図22に、比較部51の構成例を示すとともに、図23に、図21の一部信号のタイミング図の一例を示し、これに基づき比較部51の詳細動作説明を行う。
図23において、(a)のRx同期クロックはデータ受信部202におけるデータの取り込みタイミングを表す同期信号であり、前述のようにRx同期検出部50に入力される。(c)のVCLKは高周波クロック生成部1で生成される高周波クロックの立ち上がりエッジを示している。(d)のcountMは分周器2で高周波クロックVCLKを基準としてカウントされるカウント値であり、(e)のTxCLKは(d)のcountMが0の時立ち上がる伝送クロックである。
(f)のRDplsは、(a)のRx同期クロックの立ち上がりを示す、TxCLKに同期したパルスであり、(g)のRDmは、(a)のRx同期クロックの立ち上がり時の(d)のcountMの値である。(h−1)のcountN’は、伝送クロックTxCLKを基準としてカウントするカウンタ(下記のカウンタ55)の値であり、(f)のRDplsの立ち下がりで0にリセットされる。また(h−2)のcountNは、(h−1)のcountN’が0にリセットされる直前の値を保持する。
図22の比較部51において、カウンタ55は、伝送クロックTxCLKを基準にカウントするカウンタであり、RDplsの立ち下がりで0にリセットされ、その直前の値をcountNに保持し出力する。減算部56はcountNから基準カウント値RefNの減算を行い、減算結果diffNを出力する。誤差演算部57は、下記の演算を行い高周波クロックVCLK周期Tvを単位とする誤差Lerrを出力する。
Lerr = diffN*K + RDm
ここで、diffN = n − RefN、 RDm = m2、Ttx = K*Tvであり、TtxはTxCLKの周期、nとm2はそれぞれRx同期クロックの立ち上がりから次の立ち上がりまでのTxCLKのサイクル数と位相誤差である。
次に、周波数演算部53の詳細を、図24を用いて説明する。図24は、周波数演算部53の構成例を示すブロック図である。
演算部60は、演算部60が保持している現在の設定値M,C,Rと、誤差データErrとから次の設定値NextM,NextC,NextR,Kを演算する。この現在の設定値M,C,Rの関係は、Ttx=(M±1/C)Tvであり、C=RefN/Rである。これらの式と前述の(1)式より、
M’ + R’/Nr = M + R/Nr + Err/Nr、
C’ = Nr/R’
と表される。ここで、M’=NextM、 C’=NextC、R’=NextR、Nr=RefNである。このとき、演算は次の手順で行う。
<1> R+Err (=TmpRとする)を計算する。
<2> TmpR>Nr/2であれば、M’=M+1とし、R’=TmpR−Nrとする。TmpR<−Nr/2であれば、M’=M−1とし、R’=TmpR+Nrとする。それ以外は、M’=M, R’=TmpRとする。
<3> Nr÷R’の商をC’とする。なお、R’=0であれば、C’=0とする。
また、設定値Kは、K=M±1/Cとして求められ、演算部60から出力される。
レジスタRegM61は、上記の演算により求めたM値を保持しておくデータ保持部である。また、演算制御部64からの更新信号Renewに従いレジスタ値をNextMに更新する。同様にレジスタRegC62は現在設定しているC値を保持しておくデータ保持部であり、レジスタRegR63は現在設定しているR値を保持しておくデータ保持部である。それぞれ更新信号Renewに従いレジスタ値をNextC,NextRに更新する。なお、CsignはC値の符号を示す。
カウンタ66はTxCLKを基準としてC値をカウント(0からC−1まで)するもので、カウント値がC−1となったとき、Csignが正を示していれば+1を、負を示していれば−1を出力し、それ以外の時は0を出力する。なお、C=0の時は常に0を出力する。加算器65は、レジスタRegM61の出力するM値とカウンタ66の出力する値とを加算し、その結果を分周比指示信号Mnowとして出力する。よって、TxCLKのCサイクルに1回、M値が+1または−1されるように変換され、伝送クロックの平均周期は(M±1/C)*Tvとなる。
演算制御部64は上述した演算を制御するものであり、RDplsを検出してから誤差データErr及びNextM,NextC,NextRの演算が確定するまで待って、更新信号Renewをアクティブにし、各レジスタの値をNext値に更新する。なおこの際、TxCLKに同期して更新すればcountMの値が更新された後のMを越えていることはないため誤動作の可能性を防ぐことができる。
続いて、周波数演算部53の他の構成例の詳細を説明する。図25は、周波数演算部53の他の構成例を示すブロック図である。
演算制御部64は、図24のものと同様にしてこの周波数演算部53における演算を制御するものである。演算部60bは、演算部60bが保持している現在の設定値M,Fと、誤差データErrとから次の設定値NextM,NextF,Kを演算し出力するものである。この例では、伝送クロック周波数の設定値Kを次のようにして分周比指示信号Mnowに変換する。すなわち、設定値Kの整数部をMとし、小数部をa桁(2進数表記)の値Fに丸める。そして2^a(=Naとする;Naは小数部の桁数で決まる固有の定数)サイクルにF回、Mnow=M+1とすることにより、K=M+F/Naと設定される。ここで設定値による丸め誤差は最大refN/Naとなるので、所望の誤差許容値に収まるように小数部の桁数aを決定すればよい。また、局所的な周波数偏差を抑えるため+1加算するF回のサイクルは均等に振り分けられるようにする。この機能は変換部69が担う。よって前述の(1)式とこのKの関係式により、
M’ + F’/Na = M+F/Na +Err/Nr
(ここで、M’=NextM、F’=NextF)となる。したがって、演算は次の手順で行う。
<1> F+(Err/Nr)*Na(=TmpFとする)を計算する。Naは2^aであるので、ここでの*Naの演算は被乗数(Err/Nr)の上位aビットを取ればよく、またNrはこの周波数制御を行っている間は固定であるので、予めNrの逆数を計算しておいてこれをErrに乗算すれば演算は簡便に行える。
<2> TmpF>Naであれば、M’=M+1、F’=TmpF−Naとする。TmpF<0であれば、M’=M−1、F’=TmpF+Naとする。
図24と同様にレジスタRegM61bは上記の演算により求められたM値を保持しておくデータ保持部であり、レジスタRegF67は同様にF値を保持しておくデータ保持部である。そして更新信号Renewに従いレジスタ値をNextC、NextRに更新する。
カウンタ68は、TxCLKを基準にカウントするaビットカウンタであり、そのカウント値countAを出力する。
変換部69は、カウント値countAに従い、Na(=2^a)サイクル中、Fサイクルは「1」を、残りのNa−Fサイクルは「0」として信号UP(+1/0)を出力する。このUP信号の生成は、カウント値countA[a−1:0]のビット並びを逆転させたcountA[0:a−1]をArevとして、ArevがFより小さい場合1とするようにすれば(すなわちUP=(Arev<F))、Naサイクル中均等にF回「1」が生成される。
加算器65bはレジスタRegM61bの出力するMと変換部69の出力するUPとを加算し、結果を分周比指示信号Mnowとして出力する。よって、TxCLKのNaサイクルにF回、M値が+1加算されるように変換され、伝送クロックの平均周期は(M+F/Na)Tvとなる。
前述したように、伝送クロック周波数の制御はRx同期クロック1周期毎に誤差Lerrを検出し、これが0になるようにデジタルPLL制御を行っている。図21のフィルタ52は制御ループ内に置かれたデジタルフィルタであり、このフィルタ特性を変更することにより、制御帯域を設定できる。以下にフィルタの設定例を示す。
まず、ループフィルタを除くDPLL制御系のループゲインは、図26の(a)に示すようになる。ここでfsはサンプリング周波数であり、ここではRx同期クロック周波数である。この制御系に同図の(b)のような特性を持つラグリードフィルタを挿入し、(c)のループゲインとすることにより、制御系を安定化させることができる。
ここで、τ1=1/(2πf1)、τ2=1/(2πf2)とすると、ループフィルタの伝達関数H(s)は次式のようになる。
H(s)=(1+τ2s)/(1+τ1s)
上式を、双一次変換(s=(2/T)*{(1−z^−1)/(1+z^−1)})してz変換形式にし、さらにT=1として正規化すれば、ループフィルタの伝達関数H(z)は次式となる。
H(z)=(b0+b1z^−1)/(1+a1z^−1)
ここで、a1=(1−2τ1)/(1+2τ1)、b0=(1+2τ2)/(1+2τ1)、b1=(1−2τ2)/(1+2τ1)である。
図27に、上式の伝達関数H(z)を実現するフィルタ52の構成例を示す。これは一次のIIR型フィルタであり、加算器85及び86はそれぞれの入力を加算し、乗算器82、83、84はそれぞれ入力に対し、係数:−a1、b1、b0を掛けた値を出力し、遅延素子87は中間変数wを1サンプル毎遅延させる。このフィルタに誤差Lerrを入力すれば、誤差データErrを得る。また、乗算器の各係数を変更する手段を設ければ、動的にフィルタ特性を変更可能となる。なお、本例のフィルタ特性及び構成は一例であり、もちろんその他の構成のフィルタを用いることができる。デジタルフィルタについては公知技術であるので、その他の構成の例示は省略する。
(第2の実施形態におけるデータ送信部の第2の構成例)
次に、図20に示したデータ通信システムにおけるデータ送信部201の第2の構成例(201b)について図28を用いて説明する。図28は、第2の実施形態におけるデータ送信部201の第2の構成例(201b)を示す図である。
なお、受信側の構成は、前述した、第2の実施形態におけるデータ通信システムの受信側と同様である。また、図28のデータ送信部201bにおいて、高周波クロック生成部21、伝送クロック出力部24、伝送データ生成部25は、第1の実施形態における図10のものと同様であるため、その詳細な説明は省略する。
Rx同期検出部90は、Rx同期クロックの立ち上がりエッジを多相クロックVCLK0〜15を基準として検出するものである。このRx同期検出部90は、Rx同期クロックの立ち上がりを検出すると、クロックGCLKに同期した検出パルスRDplsと、立ち上がり時の期間QTと位相PHを示す時間情報RDqpを出力する。
計数部92は、周波数演算部91からの分周比指示信号Mnowに従って時間を計数するものである。この計数部92は、計数値がMnowに達する度にGCLKに同期したSETpls信号と時間情報SETqpとからなるSet信号を生成し出力する。さらに、このSet信号からMnow/2にあたる時間を計数し、GCLKに同期したRSTpls信号と時間情報RSTqpとからなるRst信号を生成し出力する。この計数する時間単位は多相クロックVCLK0〜15の位相差Tvである。
比較部93は、検出パルスRDplsの時間間隔Trxを検出し、通信データレートおよびRx同期クロックの設定周期に応じて予め定められた基準時間間隔と、計測した時間間隔Trxとの差を誤差Lerrとして算出する。つまり適正な基準時間間隔と計測時間間隔Trxとの差が、送信側と受信側の周波数の差として現れる。ここでは、RDplsが立ち上がってから次に立ち上がるまでの期間中に入力されるSETplsの数をカウントし、この値と基準値RefNとの比較をし、さらに各パルスの時間情報とから誤差Lerrとして変換している。この誤差の単位は位相差Tvである。
フィルタ94は、誤差Lerrをフィルタリングして誤差データErrを出力するデジタルフィルタである。周波数演算部91は誤差データErrに従って適正な伝送クロック周波数を算出し、これを分周比指示信号Mnowに変換して出力する。高周波クロック周期をTv、伝送クロック周期をTtxとし、今、Ttx=K*Tvとして伝送クロック周波数を設定して送信した時、目標値Ttx’(Ttx’=K’*Tv)との誤差Errが入力される。よって、前述と同様に(1)式により求めたK’を設定するようにすれば、伝送クロック周波数を目標値に制御することができる。
なお、これらフィルタ94及び周波数演算部91は、図21のフィルタ52及び周波数演算部53と同様の機能を果たし、構成も同様に適用できるのでその詳細な説明は省略する。また、本実施例はRx同期クロックの立ち上がりに位相同期してTxCLKの生成を開始する以外は図21の構成例と同様であり、計数部92は図13に示した構成例で実現できるため、詳細な説明は省略する。
図29に、計数部92及び伝送クロック出力部24における各信号のタイミングの一例を示す。以下では、図29に基づき、分周比指示信号Mnowに従って伝送クロックTxCLKを生成する詳細動作を説明する。
図29において、(a)はGCLKである。Rx同期検出部90では、(b)のRx同期クロックの立ち上がりを検出すると、その次のGCLK1サイクルが「H」となるタイミングで(c−1)に示すRDpls信号を出力する。またGCLKサイクル内のどの時刻で立ち上がったかを示す(c−2)のRDqp信号(本例ではその値を10とする)も出力する。
(d)のMnowは周波数演算部91から供給される分周比指示信号であり、図示したように入力されるものとする。
(e−1)のnextSは計数部92内SET時間演算部(図示せず)で演算される次のTxCLKの立ち上がり時間を表す。最初はRx同期クロックの立ち上がりに同期してTxCLKが立ち上がるようになっているので、次のTxCLKの立ち上がりはSETqp+Mnow=250Tv後となる。ここで図中の右辺のカンマの前の数値はnextScを、カンマの後の数値はnextSqpを表す。またその次のnextSは、nextSqp+Mnow=298となる。
(e−2)のnextRは計数部92内のRST時間演算部(図示せず)で演算される次のTxCLKの立ち下がり時間を表す。まずはRx同期クロックの立ち上がり時間(同図の例で最初は10)にMnow/2を加算した値(=130)がTxCLKの立下り時間となる。(e−1)のnextSと同様に右辺のカンマの前の数値はnextRcを、カンマの後の数値はnextRqpを表す。
(f)のpSetは、SETqp信号を更新するためにSETplsの1GCLK前に出力するパルスであり、計数部92の内部カウント値がnextScと一致した時「H」となる。なお、図中示した括弧付き数字はnextScのカウント値を表す。
(g−1)のSETplsは、RDplsとpSet信号を1GCLK遅延させたパルスであり、TxCLKの立ち上がりをGCLK単位で指定する。
(g−2)のSETqpはこのSETplsの遅延値を示すTxCLK立ち上がり時間情報であり、(f)pSetが「H」の時の(e−1)nextSqpの値に更新していく。
(h−1)のRSTplsはTxCLKの立ち下がりをGCLK単位で指定したパルスであり、計数部92の内部カウンタのカウント値がnextRcと一致した時「H」となる。
(h−2)のRSTqpはRSTplsの遅延値を示すTxCLK立ち下がり時間情報である。
(i−1)のSは、(g−1)のSETplsを、対応する(g−2)のSETqpの値だけ遅延させたパルスであり、遅延値の単位は多相クロックVCLK0〜15の位相差Tvである。同様に、(i−2)のRは、(h−1)のRSTplsを、対応する(h−2)のRSTqpの値だけ遅延させたパルスである。(j)のTxCLKは、(i−1)のSの立ち上がりで「H」に、(i−2)のRの立ち上がりで「L」として生成される伝送クロックである。
次に、図30に、比較部93の構成例を示す。また、図31は、比較部93における各信号のタイミングの一例を示す図であり、この図に基づき比較部93の詳細な動作説明を行う。
図30において、カウンタ98は、RDplsの立ち下がりで‘0’クリアし、pSet信号を基準としてインクリメントするカウンタであり、そのカウント値countNを出力する。減算部95は、RDdetが「H」の時のカウンタ98の出力値countN(図31ではn)から基準カウント値RefNの減算を行い、減算結果diffN(=n−RefN)を出力する。
誤差検出部97は、RDdetが「H」の時のSETqp及びSETcntをそれぞれEndqp、Endcntとすると、次式の演算を行い、位相差diffMを算出する。
diffM = Endcnt*Mp+(RDqp−Endqp)
ここでMpはGCLKの時間情報分割数であり、本実施例では64である。また図31の例ではdiffM=144となる。
誤差演算部96は、下記の演算を行い多相クロックVCLK0〜15の位相差Tvを単位とする誤差Lerrを出力する。
Lerr = diffN*K+diffM
ここで、K = Ttx/Tvであり、TtxはTxCLKの周期である。
このようにして、図28中の周波数演算部91、計数部92、比較部93、フィルタ94は、TxCLKがRx同期クロックに同期したクロックとなり、Lerr=0となるよう制御するデジタルPLLとして動作する。
図31において、(a)はGCLKである。(b)はRx同期クロックであり、このRx同期クロックの立ち上がりの時間間隔がTrxである。(c)はRDplsである。また、(d−2)のRDqpはRx同期クロックの時間情報である。さらに(e−1)のSETpls、(e−2)のSETqpはTxCLKの立ち上がりを表す時間情報である。これらは前述したので説明は省略する。
(e−3)のSETcntは計数部92でのカウント値である。本例ではMnow=192で一定とする。このとき前述したように伝送クロック出力部24において(f)のTxCLKが生成される。TxCLKはRx同期クロックの丁度2GCLK後に同期して生成される。よって、(c)のRDplsを1GCLK遅延させた(d−1)のRDdetが「H」の時の各信号値から誤差Lerrを検出する。
(g)はpSetであり、(h)のcountNは、(c)のRDplsの立ち下がりで’0’クリアされ、(g)のpSet信号によりインクリメントされる、図30中のカウンタ98のカウント値である。これらより、Rx同期クロックの立ち上がりから次の立ち上がりまでのTxCLKのサイクル数nと位相誤差m2を検出する。
以上説明したように、第2の実施形態におけるデータ送受信部の第2の構成例によれば、高精度に生成された高周波クロックを基準とし伝送クロック及び伝送データを生成し、また高周波クロックを基準として伝送データの位相を調整することにより、伝送路長の差異などの要因によるデータスキューを補正することができる。したがって、エラーなく大容量のデータ伝送を行うことができ、また伝送路の設計も容易に行うことができる。
また、伝送クロック及び伝送データはRx同期クロックに同期するように生成されるため、受信側のシステム要求に対応した伝送クロックを高精度に生成することができる。また、データの変調はデジタル的に行うため、伝送データの多ビット化への拡張が容易である。また、デジタル的に周波数変調を行うことにより、出力周波数は基準クロック周波数に依存しないため、他のシステムへの組み込みが容易であり、且つSSC変調などの任意のクロック変調に柔軟に対応することができる。
[画像形成装置への適用]
以上説明してきた各データ通信システムを、図32に示す、レーザプリンタ、デジタル複写機等、周知の画像形成装置内の半導体チップ間もしくはPCBボード間における画像データ通信に適用することができる。その場合、以下のような利点がある。
一般的なデータ通信方式において、伝送されるクロックとデータの間には伝送路長の差異などによるスキューが発生する。そのため、クロック周波数はデータスキューが生じても通信エラーが発生しない程度に低くする必要があり、データレートが高くできないという問題があった。前述のデータ通信システムでは、データの出力位相を各ビットごとに設定することができるため、データ通信クロックは通常のものより高く設定することができ、また基板等の伝送路設計が容易なものにできる。また、伝送クロックを受信システムと同期して生成することで、伝送クロックをそのまま受信側のシステムクロックや画像形成装置の画素クロックとして使用することができ、回路規模の縮小にもつながる。
一般に図32のような画像形成装置では、受信側の回路規模が小さいことが望ましい。そのため、受信側システムクロック生成、伝送データ位相調整などの複雑な機能を全て送信側に持つ構成は好適である。
以上説明したように、本発明による第1の実施形態のデータ通信システムによれば、データ送信部において、高精度に生成された高周波クロックVCLKあるいは多相クロックVCLK0〜15を基準として伝送クロックを生成し、位相補正期間内に伝送クロックと伝送データ各ビットとの位相関係を調整し位相誤差を補正するするシーケンスをもつことにより、伝送クロックに位相同期した伝送データを生成でき、データ受信エラーのほとんどない通信システムを実現できる。
さらに、本発明による第2の実施形態のデータ通信システムによれば、Rx同期クロックに合わせて伝送クロック周波数を制御しているので、受信クロックの周波数に変動があってもこの誤差を高精度に補正できる伝送クロックが生成できる。
さらに、伝送クロックの生成及び伝送データの生成は多相クロックVCLK0〜15の位相差Tvの単位で正確に制御できるので、多相クロックの発振周波数を高くしなくてもよく、回路の設計が容易となり消費電流も低減できる。さらには、多相クロックの1つをさらに分周したクロックGCLKで動作するようにしているので、動作周波数がさらに低下され、消費電流の低減ができる。
また、受信側のシステムに同期したクロックとデータを同時に送信することで、受信側ではCDRなどの大規模回路を用意する必要はなく、簡易な構成で実現することが可能となる。また送信側ではデジタル的に周波数変調を行うため、受信チップの数に合わせてアナログPLLを用意する必要がなく、基準となるクロックは全ての通信チャネルにおいて同一にすることができる。
さらに画像形成装置内での画像データ通信に適用することにより一般的な通信方式に比べて通信システムとして要求されるエラーレートを高く(緩く)することができる。
また、伝送データと伝送クロックを同時に送信するため、受信側はクロック生成回路を持つ必要が無く、簡易な構成で実現することが可能となる。またデジタル的に周波数変調を行うため、受信チップの数に合わせてアナログPLLを用意する必要がなく、基準となるクロックは全ての通信チャネルにおいて同一にすることができる。また、送信クロックを受信側のシステムに同期して生成することもできるため、受信側のシステムクロックを送信側で生成することもできる。