(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
図1は、本実施形態による送信回路の構成例を示す図である。送信回路は、32ビットパラレル送信データD1[31:0]をシリアル送信データD8に変換し、シリアル送信データD8を送信する。
【0011】
電圧制御発振器(VCO)124は、第1のクロック信号CLK1を生成する。第1のクロック信号CLK1は、例えば28GHzである。2分周器125は、第1のクロック信号CLK1を2分周して第2のクロック信号CLK2を生成する。第2のクロック信号CLK2は、例えば14GHzであり、4相のクロック信号である。第2のクロック信号CLK2の周波数は、第1のクロック信号CLK1の周波数より低く、第1のクロック信号CLK1の周波数の1/2である。位相調整回路126は、例えば位相補間回路であり、位相コードPICに応じて、第2のクロック信号CLK2を基に第2のクロック信号CLK3の位相を調整する。第2のクロック信号CLK3は、4相のクロック信号であり、0°のクロック信号CLK3(0°)と90°のクロック信号CLK3(90°)と180°のクロック信号CLK3(180°)と270°のクロック信号CLK3(270°)を有する。第2のクロック信号CLK3の周波数は、第2のクロック信号CLK2の周波数と同じである。電圧制御発振器124及び2分周器125は、第1のクロック信号CLK1及び第2のクロック信号CLK2を生成するクロック生成回路である。
【0012】
マルチプレクサ101は、第2のクロック信号CLK3(0°)及びCLK3(90°)に同期して、32ビットパラレル送信データD1[31:0]を多重化して4ビットパラレル送信データD3[0]〜D3[3]を生成する。すなわち、マルチプレクサ101は、第2のクロック信号CLK3(0°)及びCLK3(90°)に基づいて、32ビットパラレル送信データD1[31:0]を4ビットパラレル送信データD3[0]〜D3[3]に変換する。4ビットパラレル送信データD3[0]〜D3[3]は、32ビットパラレル送信データD1[31:0]よりビット幅が狭い。
【0013】
テストデータ生成回路103は、固定値「1」を示すハイレベルの1ビットテストデータTD[0]を生成する。テストデータ生成回路104は、固定値「0」を示すローレベルの1ビットテストデータTD[1]を生成する。テストデータ生成回路105は、固定値「0」を示すローレベルの1ビットテストデータTD[2]を生成する。テストデータ生成回路106は、固定値「1」を示すハイレベルの1ビットテストデータTD[3]を生成する。
【0014】
図2(A)は、
図1のテストデータ生成回路103の構成例を示す図である。テストデータ生成回路103は、pチャネル電界効果トランジスタ201を有し、値「1」を示すハイレベルの1ビットテストデータTD[0]を生成する。pチャネル電界効果トランジスタ201は、ソースが電源電位VDDのノードに接続され、ゲートがグランド電位のノードに接続され、ドレインが1ビットテストデータTD[0]のノードに接続される。pチャネル電界効果トランジスタ201は、ゲートがグランド電位であるので、オンする。その結果、1ビットテストデータTD[0]は、値「1」を示すハイレベルに固定される。テストデータ生成回路106は、テストデータ生成回路103と同様の構成を有し、値「1」を示すハイレベルの1ビットテストデータTD[3]を生成する。
【0015】
図2(B)は、
図1のテストデータ生成回路104の構成例を示す図である。テストデータ生成回路104は、nチャネル電界効果トランジスタ204を有し、値「0」を示すローレベルの1ビットテストデータTD[1]を生成する。nチャネル電界効果トランジスタ204は、ソースがグランド電位のノードに接続され、ゲートが電源電位VDDのノードに接続され、ドレインが1ビットテストデータTD[1]のノードに接続される。nチャネル電界効果トランジスタ204は、ゲートが電源電位VDDであるので、オンする。その結果、1ビットテストデータTD[1]は、値「0」を示すローレベルに固定される。テストデータ生成回路105は、テストデータ生成回路104と同様の構成を有し、値「0」を示すローレベルの1ビットテストデータTD[2]を生成する。
【0016】
図1において、制御ブロック138は、位相調整モード又は送信モードを示す選択信号SELをセレクタ107〜110に出力する。セレクタ107は、選択信号SELが位相調整モードを示す場合には、1ビットテストデータTD[0]を選択し、選択信号SELが送信モードを示す場合には、1ビット送信データD3[0]を選択し、その選択したデータを1ビット送信データD4[0]として出力する。
【0017】
セレクタ108は、選択信号SELが位相調整モードを示す場合には、1ビットテストデータTD[1]を選択し、選択信号SELが送信モードを示す場合には、1ビット送信データD3[1]を選択し、その選択したデータを1ビット送信データD4[1]として出力する。
【0018】
セレクタ109は、選択信号SELが位相調整モードを示す場合には、1ビットテストデータTD[2]を選択し、選択信号SELが送信モードを示す場合には、1ビット送信データD3[2]を選択し、その選択したデータを1ビット送信データD4[2]として出力する。
【0019】
セレクタ110は、選択信号SELが位相調整モードを示す場合には、1ビットテストデータTD[3]を選択し、選択信号SELが送信モードを示す場合には、1ビット送信データD3[3]を選択し、その選択したデータを1ビット送信データD4[3]として出力する。
【0020】
すなわち、セレクタ107〜110は、選択信号SELが位相調整モードを示す場合には、4ビットテストデータTD[0]〜TD[3]を選択し、選択信号SELが送信モードを示す場合には、4ビット送信データD3[0]〜D3[3]を選択し、その選択したデータを4ビット送信データD4[0]〜D4[3]として出力する。
【0021】
まず、送信回路は、位相調整モードで、位相調整回路126の位相調整量を決定する。その後、送信回路は、送信モードで、位相調整量を固定し、32ビットパラレル送信データD1[31:0]をシリアル送信データD8に変換する。
【0022】
マルチプレクサ111は、第2のクロック信号CLK3(0°)及びCLK3(90°)に同期して、4ビットパラレル送信データD4[0]〜D4[3]を多重化して2ビット送信データD5[0]及びD5[1]を生成する。マルチプレクサ111は、第1の変換回路であり、第2のクロック信号CLK3に基づいて、4ビットパラレル送信データ(入力データ)D4[0]〜D4[3]を2ビットパラレル送信データ(中間データ)D5[0]及びD5[1]に変換する。2ビットパラレル送信データD5[0]及びD5[1]は、4ビットパラレル送信データD4[0]〜D4[3]よりビット幅が狭い。
【0023】
図3は、
図1のマルチプレクサ111の動作例を示す図であり、位相調整モードの動作例を示す。セレクタ107〜110は、テストデータTD[0]〜TD[3]を選択する。送信データD4[0]は、値「1」を示すハイレベル固定のテストデータTD[0]と同じである。送信データD4[1]は、値「0」を示すローレベル固定のテストデータTD[1]と同じである。送信データD4[2]は、値「0」を示すローレベル固定のテストデータTD[2]と同じである。送信データD4[3]は、値「1」を示すハイレベル固定のテストデータTD[3]と同じである。
【0024】
第2のクロック信号CLK3は、例えば14GHzである。
図1のシリアル送信データD8の1ビット期間は1UI(ユニットインターバル)であり、第2のクロック信号CLK3の1周期は4UIである。
【0025】
マルチプレクサ111は、第2のクロック信号CLK3(0°)がハイレベルの期間では、送信データD4[0]を送信データD5[0]として出力し、第2のクロック信号CLK3(0°)がローレベルの期間では、送信データD4[1]を送信データD5[0]として出力する。送信データD4[0]がハイレベル固定であり、送信データD4[1]がローレベル固定であるので、送信データD5[0]は、「101010」のパターンを繰り返す。
【0026】
また、マルチプレクサ111は、第2のクロック信号CLK3(90°)がハイレベルの期間では、送信データD4[2]を送信データD5[1]として出力し、第2のクロック信号CLK3(90°)がローレベルの期間では、送信データD4[3]を送信データD5[1]として出力する。送信データD4[2]がローレベル固定であり、送信データD4[3]がハイレベル固定であるので、送信データD5[1]は、「101010」のパターンを繰り返す。
【0027】
図1において、マルチプレクサ113は、第1のクロック信号CLK1に同期して、2ビットパラレル送信データD5[0]及びD5[1]を多重化してシリアル送信データD6を生成する。すなわち、マルチプレクサ113は、第2の変換回路であり、第1のクロック信号CLK1に基づいて、2ビットパラレル送信データ(中間データ)D5[0]及びD5[1]をシリアル送信データ(出力データ)D6に変換する。シリアル送信データD6は、2ビットパラレル送信データD5[0]及びD5[1]よりビット幅が狭い。
【0028】
プリドライバ回路114は、シリアル送信データD6を入力し、シリアル送信データD7を出力する。ドライバ回路115は、シリアル送信データD7を入力し、シリアル送信データD8を出力する。
【0029】
図4(A)は、
図1のマルチプレクサ113の動作例を示す図であり、位相調整モードの動作例を示す。セレクタ107〜110は、テストデータTD[0]〜TD[3]を選択する。送信データD5[0]は、
図3の送信データD5[0]と同じであり、「101010」のパターンを繰り返す。送信データD5[1]は、
図3の送信データD5[1]と同じであり、「101010」のパターンを繰り返す。
【0030】
第1のクロック信号CLK1は、例えば28GHzである。シリアル送信データD6の1ビット期間は1UIであり、第1のクロック信号CLK1の1周期は2UIである。
【0031】
マルチプレクサ113は、第1のクロック信号CLK1がハイレベルの期間では、送信データD5[0]を送信データD6として出力し、第1のクロック信号CLK1がローレベルの期間では、送信データD5[1]を送信データD6として出力する。送信データD5[0]が「1010」のパターンの繰り返しであり、送信データD5[1]が「1010」のパターンの繰り返しであるので、送信データD6は、「11001100」のパターンを繰り返す。送信データD6のパルス幅は、すべてのサイクルで2UIの一定である。送信データD6の4UIでは、エッジ数が1個である。
【0032】
図4(A)では、送信データD5[0],D5[1]の位相が、第1のクロック信号CLK1の位相に一致している。次に、
図4(B)を参照しながら、送信データD5[0],D5[1]の位相が第1のクロック信号CLK1の位相に対してずれている場合を説明する。
【0033】
図4(B)は、送信データD5[0],D5[1]の位相が第1のクロック信号CLK1の位相に対してずれている場合のマルチプレクサ113の動作例を示す図である。
図4(B)の送信データD5[0]及びD5[1]は、
図4(A)の送信データD5[0]及びD5[1]に対して位相がずれている。マルチプレクサ113は、第1のクロック信号CLK1がハイレベルの期間では、送信データD5[0]を送信データD6として出力し、第1のクロック信号CLK1がローレベルの期間では、送信データD5[1]を送信データD6として出力する。送信データD5[0]は、「1010」のパターンの繰り返しである。送信データD5[1]は、「1010」のパターンの繰り返しである。しかし、送信データD6は、パルス幅が1UIのサイクルと、パルス幅が0.5UIのサイクルとを有する。送信データD6の4UIでは、エッジ数が5個である。送信データD6は、1UIの期間の真中付近でデータ遷移するサイクルがあるので、ビットエラーの発生率が高くなる。
【0034】
以上のように、
図4(A)の送信データD6は、送信データD5[0],D5[1]と第1のクロック信号CLK1との位相関係が正常な場合のデータである。これに対し、
図4(B)の送信データD6は、送信データD5[0],D5[1]と第1のクロック信号CLK1との位相関係が異常な場合のデータである。
【0035】
すなわち、
図4(A)の送信データD6は、位相調整回路126が調整する第2のクロック信号CLK3の位相が正常である場合のデータである。これに対し、
図4(B)の送信データD6は、位相調整回路126が調整する第2のクロック信号CLK3の位相が異常である場合のデータである。したがって、
図4(B)の異常な送信データD6が得られた場合には、位相調整回路126が第2のクロック信号CLK3の位相を調整することにより、
図4(A)の正常な送信データD6を得ることができる。以下、その詳細な説明をする。
【0036】
図1において、4分周器128は、
図5(A)に示すように、第1のクロック信号CLK1を4分周し、0°のクロック信号DIV4_0及び90°のクロック信号DIV4_90を生成する。クロック信号DIV4_0及びDIV4_90は、例えば7GHzである。クロック信号DIV4_0及びDIV4_90の周波数は、第1のクロック信号CLK1の周波数より低く、第1のクロック信号CLK1の周波数の1/4である。クロック信号DIV4_0及びDIV4_90の間の位相差は2UIである。
【0037】
インバータ131は、第1のクロック信号CLK1を論理反転したクロック信号CLK5を生成する。4分周器132は、クロック信号CLK5を4分周し、
図5(A)に示すように、45°のクロック信号DIV4_45及び135°のクロック信号DIV4_135を生成する。クロック信号DIV4_45及びDIV4_135は、例えば7GHzである。クロック信号DIV4_45及びDIV4_135の周波数は、第1のクロック信号CLK1の周波数より低く、第1のクロック信号CLK1の周波数の1/4である。クロック信号DIV4_45及びDIV4_135の間の位相差は2UIである。クロック信号DIV4_0及びDIV4_45の間の位相差は1UIである。
【0038】
遅延回路129は、クロック信号DIV4_0を遅延し、22.5°のクロック信号DIV4_0_2を生成する。遅延回路130は、クロック信号DIV4_90を遅延し、112.5°のクロック信号DIV4_90_2を生成する。遅延回路133は、クロック信号DIV4_45を遅延し、67.5°のクロック信号DIV4_45_2を生成する。遅延回路134は、クロック信号DIV4_135を遅延し、157.5°のクロック信号DIV4_135_2を生成する。遅延回路129,130,133,134の遅延時間は、0.5UIであり、1UIより短い。これらの8個のクロック信号DIV4_0〜DIV4_135_2は、
図5(A)に示すように、8相クロック信号である。
【0039】
図5(A)は、
図1のD型フリップフロップ回路116〜123の動作例を示す図であり、
図4(A)の正常の場合の動作例を示す。送信データD7は、
図4(A)の正常な送信データD6と同じ論理値である。
【0040】
D型フリップフロップ回路116は、クロック信号DIV4_0の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD0として出力する。データOD0は、値「1」である。
【0041】
D型フリップフロップ回路117は、クロック信号DIV4_0_2の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD0_2として出力する。データOD0_2は、値「1」である。
【0042】
D型フリップフロップ回路118は、クロック信号DIV4_45の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD1として出力する。データOD1は、値「1」である。
【0043】
D型フリップフロップ回路119は、クロック信号DIV4_45_2の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD1_2として出力する。データOD1_2は、値「1」である。
【0044】
D型フリップフロップ回路120は、クロック信号DIV4_90の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD2として出力する。データOD2は、値「0」である。
【0045】
D型フリップフロップ回路121は、クロック信号DIV4_90_2の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD2_2として出力する。データOD2_2は、値「0」である。
【0046】
D型フリップフロップ回路122は、クロック信号DIV4_135の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD3として出力する。データOD3は、値「0」である。
【0047】
D型フリップフロップ回路123は、クロック信号DIV4_135_2の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD3_2として出力する。データOD3_2は、値「0」である。
【0048】
以上のように、D型フリップフロップ回路116〜123は、送信データD7のデータ列を順次キャプチャするキャプチャ回路である。送信データD7の4UIのデータ列は、「1100」である。D型フリップフロップ回路116〜123は、送信データD7のデータ列の4UIに異なる8個のタイミングでキャプチャする。すなわち、D型フリップフロップ回路116〜123は、送信データD7のデータ列の1UIに異なる2個のタイミングでキャプチャする。
【0049】
図5(B)は、
図4(B)の異常の場合のD型フリップフロップ回路116〜123の動作例を示す図である。送信データD7は、
図4(B)の異常な送信データD6と同じ論理値である。
【0050】
D型フリップフロップ回路116は、クロック信号DIV4_0の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD0として出力する。データOD0は、値「1」である。
【0051】
D型フリップフロップ回路117は、クロック信号DIV4_0_2の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD0_2として出力する。データOD0_2は、値「0」である。
【0052】
D型フリップフロップ回路118は、クロック信号DIV4_45の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD1として出力する。データOD1は、値「1」である。
【0053】
D型フリップフロップ回路119は、クロック信号DIV4_45_2の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD1_2として出力する。データOD1_2は、値「1」である。
【0054】
D型フリップフロップ回路120は、クロック信号DIV4_90の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD2として出力する。データOD2は、値「0」である。
【0055】
D型フリップフロップ回路121は、クロック信号DIV4_90_2の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD2_2として出力する。データOD2_2は、値「1」である。
【0056】
D型フリップフロップ回路122は、クロック信号DIV4_135の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD3として出力する。データOD3は、値「0」である。
【0057】
D型フリップフロップ回路123は、クロック信号DIV4_135_2の立ち上がりエッジに同期して送信データD7をラッチし、そのラッチしたデータをデータOD3_2として出力する。データOD3_2は、値「0」である。
【0058】
図1において、分周器135は、第1のクロック信号CLK1を分周したクロック信号CLK6をシフトレジスタ136に出力する。シフトレジスタ136は、クロック信号CLK6に同期して、データOD0,OD0_2,OD1,OD1_2,OD2,OD2_2,OD3,OD3_2の列をラッチしてシフトすることにより、データ列D9を出力する。データ列D9は、データOD0,OD0_2,OD1,OD1_2,OD2,OD2_2,OD3,OD3_2の列である。エッジカウンタ137は、データ列D9のエッジ数CNTを検出する。制御ブロック138は、エッジ数CNTを基に、位相コードPICを決定する。位相調整回路126は、位相コードPICを基に、第2のクロック信号CLK3の位相を調整する。
【0059】
図6は、
図1のシフトレジスタ136の構成例を示す図である。シフトレジスタ136は、8個のセレクタ601〜608及び9個のD型フリップフロップ回路611〜619を有する。8個のセレクタ601〜608は、それぞれ、8個のデータOD3_2,OD3,OD2_2,OD2,OD1_2,OD1,OD0_2,OD0を入力する。
【0060】
制御ブロック138は、位相調整モードでは、ハイレベルのリセット信号RSTを出力する。すると、D型フリップフロップ回路611〜619の記憶値は、0にリセットされる。次に、制御ブロック138は、ローレベルのリセット信号RSTを出力し、D型フリップフロップ回路611〜619のリセット状態を解除する。
【0061】
次に、制御ブロック138は、ローレベルのイネーブル信号ENをD型フリップフロップ回路619に出力する。すると、D型フリップフロップ回路619は、クロック信号CLK6に同期して、ローレベルのイネーブル信号ENをラッチし、ローレベルのイネーブル信号EN1をセレクタ601〜608に出力する。すると、セレクタ601〜608は、それぞれ、データOD3_2,OD3,OD2_2,OD2,OD1_2,OD1,OD0_2,OD0をD型フリップフロップ回路611〜618の入力端子Dに出力する。D型フリップフロップ回路611〜618は、それぞれ、クロック信号CLK6に同期して、データOD3_2,OD3,OD2_2,OD2,OD1_2,OD1,OD0_2,OD0をラッチし、出力端子QからデータOD3_2,OD3,OD2_2,OD2,OD1_2,OD1,OD0_2,OD0を出力する。
【0062】
次に、制御ブロック138は、ハイレベルのイネーブル信号ENをD型フリップフロップ回路619に出力する。すると、D型フリップフロップ回路619は、クロック信号CLK6に同期して、ハイレベルのイネーブル信号ENをラッチし、ハイレベルのイネーブル信号EN1をセレクタ601〜608に出力する。すると、セレクタ601は、値「0」をD型フリップフロップ回路611の入力端子Dに出力する。D型フリップフロップ回路611は、クロック信号CLK6に同期して、値「0」をラッチし、出力端子Qから値「0」を出力する。
【0063】
セレクタ602〜608は、それぞれ、D型フリップフロップ回路611〜617の出力端子Qから出力されるデータOD3_2,OD3,OD2_2,OD2,OD1_2,OD1,OD0_2をD型フリップフロップ回路612〜618の入力端子Dに出力する。D型フリップフロップ回路612〜618は、それぞれ、クロック信号CLK6に同期して、データOD3_2,OD3,OD2_2,OD2,OD1_2,OD1,OD0_2をラッチし、出力端子QからデータOD3_2,OD3,OD2_2,OD2,OD1_2,OD1,OD0_2を出力する。
【0064】
次に、D型フリップフロップ回路613〜618は、それぞれ、クロック信号CLK6に同期して、データOD3_2,OD3,OD2_2,OD2,OD1_2,OD1をラッチして出力する。その後、D型フリップフロップ回路611〜618は、クロック信号CLK6に同期して、ラッチ及び出力を繰り返す。その結果、最終段のフリップフロップ回路618は、データ列D9として、データOD0,OD0_2,OD1,OD1_2,OD2,OD2_2,OD3,OD3_2の列を出力する。
図5(A)の場合、データ列D9は、「11110000」になる。
図5(B)の場合、データ列D9は、「10110100」になる。
【0065】
図7は、
図1のエッジカウンタ137の構成例を示す図である。エッジカウンタ137は、エッジ検出器701及び3ビットカウンタ702を有する。エッジ検出器701は、遅延回路703及び排他的論理和回路704を有する。遅延回路703は、データ列D9を1データ分遅延したデータ列D10を出力する。排他的論理和回路704は、データ列D9及びD10の排他的論理和信号をエッジ信号D11として出力する。具体的には、排他的論理和回路704は、データ列D9及びD10の各データが同じ場合には、「0」のエッジ信号D11を出力し、データ列D9及びD10の各データが異なる場合には、「1」のエッジ信号D11を出力する。すなわち、エッジ検出器701は、データ列D9のうちのエッジである部分では、「1」のエッジ信号D11を出力し、データ列D9のうちのエッジでない部分では、「0」のエッジ信号D11を出力する。
【0066】
3ビットカウンタ702は、D型フリップフロップ回路705〜707を有する。D型フリップフロップ回路705は、クロック端子がエッジ信号D11を入力し、入力端子Qが反転出力端子/Qに接続される。D型フリップフロップ回路706は、クロック端子がD型フリップフロップ回路705の出力端子Qに接続され、入力端子Qが反転出力端子/Qに接続される。D型フリップフロップ回路707は、クロック端子がD型フリップフロップ回路706の出力端子Qに接続され、入力端子Qが反転出力端子/Qに接続される。D型フリップフロップ回路705〜707の出力端子Qは、3ビットカウント値として、エッジ数CNT[0]〜CNT[2]を出力する。エッジ数CNT[0]〜CNT[2]は、
図1のエッジ数CNTに対応する。
【0067】
制御ブロック138は、ハイレベルのリセット信号RSTを出力する。すると、D型フリップフロップ回路705〜707の記憶値は、0にリセットされる。次に、制御ブロック138は、ローレベルのリセット信号RSTを出力する。すると、D型フリップフロップ回路705〜707のリセット状態は解除される。D型フリップフロップ回路705〜707は、それぞれ、出力端子Qから「0」を出力し、反転出力端子/Qから「1」を出力する。
【0068】
1回目のエッジでは、エッジ信号D11が「1」から「0」に変化し、D型フリップフロップ回路705は、入力端子Dの「1」をラッチし、「1」のエッジ数CNT[0]を出力する。D型フリップフロップ回路706は、「0」のエッジ数CNT[1]を出力する。D型フリップフロップ回路707は、「0」のエッジ数CNT[2]を出力する。
【0069】
2回目のエッジでは、エッジ信号D11が「1」から「0」に変化し、D型フリップフロップ回路705は、入力端子Dの「0」をラッチし、「0」のエッジ数CNT[0]を出力する。D型フリップフロップ回路706は、「1」のエッジ数CNT[1]を出力する。D型フリップフロップ回路707は、「0」のエッジ数CNT[2]を出力する。
【0070】
同様に、3回目のエッジでは、エッジ数CNT[0]及びCNT[1]は「1」になり、エッジ数CNT[2]は「0」になる。エッジ数CNT[0]〜CNT[2]は、データ列D9のエッジの3ビットカウント値を示す。
図5(A)に示すように、データ列D9が「11110000」である場合、エッジ数CNT[0]〜CNT[2]は、1になる。また、
図5(B)に示すように、データ列D9が「10110100」である場合、エッジ数CNT[0]〜CNT[2]は、5になる。
【0071】
図8は、
図1の制御ブロック138の制御方法を示すフローチャートである。ステップS801では、制御ブロック138は、位相コードPICを0にする。位相調整回路126は、位相コードPICに応じて、第2のクロック信号CLK3の位相を調整する。
【0072】
次に、ステップS802では、制御ブロック138は、送信回路の状態安定後、リセット信号RSTにより、シフトレジスタ136及びエッジカウンタ137をリセットする。次に、制御ブロック138は、イネーブル信号ENにより、エッジカウンタ137によるエッジ数CNT
のカウントをスタートさせる。
【0073】
次に、ステップS803では、制御ブロック138は、4UI内のエッジ数CNTが2以下であるか否かを判断する。制御ブロック138は、エッジ数CNTが2以下である場合には、
図5(A)のように、位相コードPICの時の送信データD7が正常であると判断し、ステップS804に処理を進める。これに対し、制御ブロック138は、エッジ数CNTが3以上である場合には、
図5(B)のように、位相コードPICの時の送信データD7が異常であると判断し、ステップS805に処理を進める。
【0074】
ステップS804では、制御ブロック138は、位相コードPICの正常フラグOK[PIC]に1を設定し、正常フラグOK[PIC]を記録し、ステップS806に処理を進める。
【0075】
ステップS805では、制御ブロック138は、位相コードPICの正常フラグOK[PIC]に0を設定し、正常フラグOK[PIC]を記録し、ステップS806に処理を進める。
【0076】
ステップS806では、制御ブロック138は、位相コードPICが最大コードであるか否かを判断する。そして、制御ブロック138は、位相コードPICが最大コードでない場合には、ステップS807に処理を進め、位相コードPICが最大コードである場合には、ステップS808に処理を進める。
【0077】
ステップS807では、制御ブロック138は、位相コードPICをインクリメントする。位相調整回路126は、位相コードPICに応じて、第2のクロック信号CLK3の位相を調整する。その後、制御ブロック138は、ステップS802に処理を戻し、ステップS802〜S806の処理を繰り返す。これにより、制御ブロック138は、
図9に示すように、第2のクロック信号CLK3の1周期内のすべての位相コードPICの正常フラグOK[PIC]を設定することができる。
【0078】
ステップS808では、制御ブロック138は、正常フラグOK[PIC]を基に、第1の位相コードP1及び第2の位相コードP2を計算する。その詳細は、
図9を参照しながら説明する。
【0079】
図9は、
図8のステップS808の処理を説明するための図である。上記のように、制御ブロック138は、第2のクロック信号CLK3の1周期内のすべての位相コードPICの正常フラグOK[PIC]を設定する。例えば、位相範囲901は、正常フラグOK[PIC]が1に設定されている正常な位相範囲である。位相範囲902は、正常フラグOK[PIC]が0に設定されている異常な位相範囲である。この場合、制御ブロック138は、正常な位相範囲901の真中の位相を示す位相コードPICを決定するために、以下に示す方法により、第1の位相コードP1及び第2の位相コードP2を計算する。
【0080】
まず、制御ブロック138は、正常コードOK[PIC]が1である位相範囲901と正常コードOK[PIC]が0である位相範囲902との間の2個の境界の位相コードPICのうちの小さい方の位相コードを位相コードCMINとして設定し、大きい方の位相コードを位相コードCMAXとして設定する。
【0081】
次に、制御ブロック138は、下記の第1のデータDEL1及び第2のデータDEL2を計算する。ここで、データMAXは、1周期内の最大の位相を示す位相コードPICである。
DEL1=(CMAX−CMIN)/2
DEL2={MAX−(CMAX−CMIN)}/2
【0082】
次に、制御ブロック138は、下記の第1の位相コードP1及び第2の位相コードP2を計算する。
P1=CMIN+DEL1
P2_1=CMIN−DEL2
P2_2=CMAX+DEL2
P2_2>MAXの時には、P2=P2_1、
P2_2≦MAXの時には、P2=P2_2
【0083】
第1の位相コードP1は、位相範囲901の真中の位相を示す位相コードである。第2の位相コードP2は、位相範囲902の真中の位相を示す位相コードである。ただし、この時点では、制御ブロック138は、位相範囲901及び902のうちのいずれが正常な位相範囲であるのかは認識していない。次に、制御ブロック138は、位相範囲901及び902のうちのいずれが正常な位相範囲であるのかを判断する。そして、制御ブロック138は、位相範囲901が正常な位相範囲である場合には、第1の位相コードP1を選択し、位相範囲902が正常な位相範囲である場合には、第2の位相コードP2を選択する。以下、その詳細を
図10を参照しながら説明する。
【0084】
図10は、制御ブロック138が第1の位相コードP1又は第2の位相コードP2を選択する方法を示すフローチャートである。ステップS1001では、制御ブロック138は、正常フラグOK[P1]が1であるか否かを判断する。第1の位相コードP1は、位相範囲901の真中の位相を示す。正常フラグOK[P1]は、位相範囲901の真中の位相を示す第1の位相コードP1の正常フラグOK[PIC]である。制御ブロック138は、正常フラグOK[P1]が1である場合には、位相範囲901が正常な位相範囲であると判断し、ステップS1002に処理を進める。これに対し、制御ブロック138は、正常フラグOK[P1]が0である場合には、位相範囲901が正常な位相範囲でないと判断し、ステップS1003に処理を進める。
【0085】
ステップS1003では、制御ブロック138は、正常フラグOK[P2]が1であるか否かを判断する。第2の位相コードP2は、位相範囲902の真中の位相を示す。正常フラグOK[P2]は、位相範囲902の真中の位相を示す第2の位相コードP2の正常フラグOK[PIC]である。制御ブロック138は、正常フラグOK[P2]が1である場合には、位相範囲902が正常な位相範囲であると判断し、ステップS1004に処理を進める。これに対し、制御ブロック138は、正常フラグOK[P2]が0である場合には、位相範囲902が正常な位相範囲でないと判断し、ステップS1005に処理を進める。
【0086】
ステップS1002では、制御ブロック138は、第1の位相コードP1を位相コードPICとして設定し、処理を終了する。位相調整回路126は、位相コードPICに応じて、第2のクロック信号CLK3の位相を調整する。
【0087】
ステップS1004では、制御ブロック138は、第2の位相コードP2を位相コードPICとして設定し、処理を終了する。位相調整回路126は、位相コードPICに応じて、第2のクロック信号CLK3の位相を調整する。
【0088】
ステップS1005では、制御ブロック138は、エラーフラグERRに1を設定することにより、エラーを通知し、処理を終了する。
【0089】
以上のように、制御ブロック138は、ステップS1002又はS1004で、最適な位相コードPICを設定する。位相調整回路126は、正常な位相範囲901の真中の位相の位相コードになるように、第2のクロック信号CLK3の位相を調整する。具体的には、位相調整回路126は、エッジ数CNTが閾値以下(2以下)になるように、第2のクロック信号CLK3の位相を調整する。これにより、
図4(A)に示すように、第1のクロック信号CLK1と送信データD5[0],D5[1]の位相が一致し、正常な送信データD6を得ることができる。
【0090】
制御ブロック138は、上記の位相調整モードの後、送信モードを示す選択信号SELをセレクタ107〜110に出力する。すると、セレクタ107〜110は、送信データD3[0]〜D3[3]を送信データD4[0]〜D4[3]として出力する。送信モードでは、送信回路は、32ビットパラレル送信データD1[31:0]をシリアル送信データD8に変換し、シリアル送信データD8を送信する。位相調整回路126の位相調整により、シリアル送信データD8の位相は、第1のクロック信号CLK1の位相と一致している。これにより、シリアル送信データD8のビットエラー(受信エラー)を低減することができる。
【0091】
仮に、位相調整回路126がない場合には、マルチプレクサ111は、第2のクロック信号CLK2に同期して動作する。その場合、第2のクロック信号CLK2は、第1のクロック信号CLK1に対して遅延しているため、
図4(B)のように、異常な送信データD6が得られ、ビットエラーが増大する。
【0092】
また、ユーザが位相調整回路126の位相コードPICを環境に応じてマニュアル設定する方法が考えられが、その方法は煩雑である。本実施形態によれば、制御ブロック138は、自動で最適な位相コードPICを設定することができる。
【0093】
なお、テストデータTD[0]〜TD[3]は、送信データD6が1100又は0011になるようなテストデータであればよい。
【0094】
図11(A)は、他の実施形態による送信回路のパルス幅検出回路1100の構成例を示す図である。パルス幅検出回路1100は、
図1のエッジカウンタ137の代わりに設けられる。パルス幅検出回路1100は、nチャネル電界効果トランジスタ1101,1102、抵抗1103、容量1104、及び比較器1105を有し、データ列D9のパルス幅を検出する。
【0095】
nチャネル電界効果トランジスタ1101は、ドレインが抵抗1103を介して電源電位VDDのノードに接続され、ゲートがデータ列D9を入力し、ソースがノードNPに接続される。容量1104は、ノードNP及びグランド電位のノード間に接続される。nチャネル電界効果トランジスタ1102は、ドレインがノードNPに接続され、ゲートがリセット信号RST1を入力し、ソースがグランド電位のノードに接続される。比較器1105は、ノードNPの電位と参照電位Vrefとを比較し、その比較の結果をパルス幅信号OUTとして出力する。ノードNPの電位が参照電位Vrefより低い場合は、パルス幅信号OUTは、ハイレベルになる。これに対し、ノードNPの電位が参照電位Vrefより高い場合は、パルス幅信号OUTは、ローレベルになる。nチャネル電界効果トランジスタ1102は、リセット信号RST1により、所定間隔でオンし、ノードNPを0Vにリセットする。
【0096】
図11(B)は、
図5(A)と同様に、正常なシリアル送信データD7を示す図である。シリアル送信データD7のパルス幅は、2UIである。この場合、データ列D9は、「11110000」になる。データ列D9のパルス幅が2UIの場合、ノードNPの電位は、
図12に示すように、参照電位Vrefより高くなり、パルス幅信号OUTは、ローレベルになる。制御ブロック138は、パルス幅信号OUTがローレベルになると、送信データD7が正常であると判断し、正常フラグOK[PIC]に1を設定する。
【0097】
図11(C)は、
図5(B)と同様に、異常なシリアル送信データD7を示す図である。シリアル送信データD7は、1UIのパルス幅と、0.5UIのパルス幅を有する。この場合、データ列D9は、「10110100」になる。データ列D9のパルス幅が1UI及び0.5UIの場合、ノードNPの電位は、
図12に示すように、参照電位Vrefより低くなり、パルス幅信号OUTは、ハイレベルを維持する。制御ブロック138は、パルス幅信号OUTがハイレベルの場合には、送信データD7が異常であると判断し、正常フラグOK[PIC]に0を設定する。
【0098】
図12は、RC時定数τに対するノードNPの電圧レベルの例を示すグラフである。データ列D9のパルス幅が2UIの場合、RC時定数が2τである場合を例に説明する。データ列D9のパルス幅が1.4UIの場合に、ノードNPは、0.75Vになる。そこで、参照電位Vrefは、例えば0.75Vに設定される。比較器1105は、データ列D9のパルス幅が1.4UIより広い場合には、ローレベルのパルス幅信号OUTを出力する。これに対し、比較器1105は、データ列D9のパルス幅が1.4UIより狭い場合には、ハイレベルのパルス幅信号OUTを出力する。
【0099】
図11(B)のように、データ列D9のパルス幅が2UIの場合、比較器1105は、0.6UIの期間、ローレベルのパルス幅信号OUTを出力する。そして、
図11(C)のように、データ列D9のパルス幅が1UI及び0.5UIの場合、比較器1105は、ハイレベルのパルス幅信号OUTを出力する。
【0100】
上記のように、
図1のエッジカウンタ137及びパルス幅検出回路1100は、データ列D9の解析を行う解析回路である。位相調整回路126は、解析回路の解析の結果に基づいて、第2のクロック信号CLK3の位相を調整する。例えば、位相調整回路126は、データ列D9のパルス幅が閾値(1.4UI)より広くなるように、第2のクロック信号CLK3の位相を調整する。
【0101】
図13は、集積回路1301及び受信回路1304の構成例を示す図である。集積回路1301は、内部回路1302と、送信回路1303とを有する。内部回路1302は、32ビットパラレル送信データ(内部データ)D1[31:0]を生成する。送信回路1303は、
図1の送信回路であり、32ビットパラレル送信データD1[31:0]を内部回路1302から受けとり、シリアル送信データD8を受信回路1304に出力する。受信回路1304は、クロックデータリカバリ(CDR)回路を有し、シリアル送信データD8を基に、データ及びクロック信号を再生する。上記のように、送信回路の位相調整回路126が位相調整することにより、受信回路1304は、データ再生のエラーを低減することができる。
【0102】
本実施形態によれば、マルチプレクサ111における第2のクロック信号CLK3及び送信データD4[0]〜D4[3]間、並びにマルチプレクサ113における第1のクロック信号CLK1及び送信データD5[0],D5[1]間のタイミング関係を最適化でき、送信データD6におけるビットエラーの発生を防止することができる。
【0103】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。