(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
以下では、図面を参照して、本発明に係る受信データ復元装置の一実施形態である受信機1について説明する。
【0018】
図1に示すように、受信機1は、伝送路3を介して送信機2に接続されており、伝送路3を介して送信機2から受信機1にデジタル信号が伝送される。
【0019】
送信機2は、デジタル信号をシリアルデータとして、受信機1に送信する装置である。
図2に示すように、本実施形態におけるデジタル信号は、プリアンブル、データ、および終端記号から構成されている。
プリアンブルは、「1」、「0」の繰り返しからなり、「1」から開始されるビット列であり、デジタル信号の先頭に付与される。プリアンブルの長さは、2
nビットであることが好ましい。なお、本実施形態において、プリアンブルは、8ビットのビット列である。つまり、本実施形態において、プリアンブルは、「10101010」である。プリアンブルの最終ビットは、0であるが、プリアンブルの終了判定のために、プリアンブルの最後には、立ち上がりエッジが付与される。前述のように、プリアンブルは、「1」、「0」の繰り返しであるため、プリアンブルの長さが2
nビットの場合、プリアンブルの遷移数(ビットの反転数)は、2
n+1となる。したがって、プリアンブルの遷移数は、2
n+1であることが好ましい。なお、本実施形態において、プリアンブルの遷移数は、9である。
データは、所定の意味を有するビット列である。
終端記号は、デジタル信号の終了を示す、予め定められたビット列である。
なお、プリアンブルの後に、所定のスタートビット列を付与することも可能である。
また、スタートビット列を付与した場合に、プリアンブルの長さを、受信機1および送信機2の安定性に応じて可変とし、受信機1によってスタートビット列を検出することにより、プリアンブルの長さを算出することも可能である。これにより、受信機1によるプリアンブルの検出精度を向上させることができる。
また、プリアンブルとスタートビット列とを1つのプリアンブルとみなすことも可能である。これにより、プリアンブルの有効ビット数が増加し、受信機1によるプリアンブルの検出精度を向上させることができる。
【0020】
送信機2は、受信機1に送信するデジタル信号に対して、4B5B符号化、およびNRZI(Non Return to Zero Inversion)を行う。
4B5B符号化は、所定の規則に基づいて、4ビットのデータを5ビットのシンボルで表現する手法である。本実施形態においては、デジタル信号中に、「0」が3個以上連続しないように4B5B符号化を行っている。
NRZIは、デジタル信号に遷移が有る場合を「1」とし、遷移が無い場合を「0」とする、デジタル信号の変換法である。NRZIを行うことにより、高調波成分を少なくすることができ、伝送帯域幅を小さくすることができる。
なお、必ずしも、受信機1に送信するデジタル信号に対して、4B5B符号化およびNRZIを行う必要はなく、いずれか一方のみを行ってもよいし、双方共に行わなくともよい。
また、4B5B符号化に代えて、8B6T符号化、5B6B符号化、または8B10B符号化などを行うことも可能である。
【0021】
受信機1は、送信機2から送信されたデジタル信号を受信し、それを復元する装置である。
受信機1のクロック周波数Frは、送信機2のクロック周波数Ft以上に設定される。好ましくは、受信機1のクロック周波数Frは、送信機2のクロック周波数Ftの2倍以上に設定される(Fr≧2*Ft)。
【0022】
図3に示すように、受信機1は、遷移検出器11と、遷移カウンタ12と、ステートマシン13と、β演算器14と、窓時間演算器15と、窓時間カウンタ16と、シフトレジスタ17と、復号器18とを具備する。
【0023】
図4に示すように、遷移検出器11は、3つのD型フリップフロップであるD−FF110・111・112と、XORゲート113とから構成されている。
図4において、D型フリップフロップの中心に記載された文字列は、D型フリップフロップの変数名を示している。これは、以下、
図5などにおいても同様である。
【0024】
受信機1によって受信されたデジタル信号(以下、「受信データ」と記す)は、D−FF110に入力される。なお、
図4における「serial」は、受信機1によって受信された1ビット分の受信データを示す変数である。
D−FF110の出力は、D−FF111の入力に接続され、D−FF111の出力は、D−FF112の入力に接続されている。さらに、D−FF112の出力は、XORゲート113の一方の入力に接続されると共に、D−FF111の出力は、XORゲート113の他方の入力に接続されている。
XORゲート113においては、現在の1ビット分の受信データと、1つ前の1ビット分の受信データとのXOR演算が行われ、その結果が「serial_edge」として出力される。つまり、「serial_edge」は、受信データ中で遷移が検出された場合に「1」となり、遷移が検出されない場合に「0」となる変数である。
なお、D−FF110およびD−FF111は、メタステーブルを抑制するためのシンクロナイザとして構成されている。しかしながら、D−FF110およびD−FF111の双方を設けずに、それらの少なくとも一方を設ける構成とすることも可能である。
【0025】
このように、遷移検出器11においては、「serial」に基づいて、「serial_edge」が出力される。
前述のように、送信機2から送信されて受信機1によって受信されるデジタル信号には、NRZIが掛けられているため、「serial_edge」の上記の特性から、「serial_edge」は、NRZIが解除された「serial」とみなすことができる。
また、「serial_edge」は、所定のタイミングで間欠的に、シフトレジスタ17に入力され、5ビットのシンボルがパラレルデータとしてシフトレジスタ17から出力される。シフトレジスタ17から出力された5ビットのシンボルは、復号器18によって4B5B復号化が行われ、4ビットのデータとして復号されることとなる(
図3参照)。
【0026】
図5に示すように、遷移カウンタ12は、4つのマルチプレクサであるMUX120・121・122・123と、D型フリップフロップであるD−FF124と、加算器125と、3つの比較器126・127・128と、ANDゲート129とから構成されている。なお、遷移カウンタ12の構成要素の間で入出力されるデータの長さは、5ビットである。
【0027】
MUX120の選択制御入力には、「serial_edge」が入力され、MUX120の出力は、MUX123の「0」側の入力に接続されている。
MUX121の選択制御入力には、「bit_ready」が入力され、MUX121の出力は、MUX122の「0」側の入力に接続されている。「bit_ready」は、シフトレジスタ17(
図6参照)に「serial_edge」が入力される際に「1」となり、それ以外は「0」となる変数である。
MUX122の「1」側の入力には、0が入力されている。MUX122の選択制御入力には、「symbol_ready」が入力され、MUX122の出力は、MUX123の「1」側の入力に接続されている。「symbol_ready」は、5ビットのシンボルが4ビットのデータとして復号された際に「1」となり、それ以外は「0」となる変数である。
MUX123の選択制御入力には、「state」が入力され、MUX123の出力は、D−FF124の入力に接続されている。「state」は、後述のステートマシン13のD−FF132の変数である。「state」は、プリアンブルの受信期間中には「0」となり、プリアンブルの受信が終了した場合には「1」となる。
D−FF124の出力は、加算器125の「A」側の入力、比較器126・127・128の「A」側の入力、MUX120の「0」側の入力、およびMUX121の「1」側の入力に接続されている。
加算器125の「B」側の入力には、1が入力され、加算器125の出力は、MUX120の「1」側の入力、およびMUX121の「0」側の入力に接続されている。加算器125は、「A」側の入力値と、「B」側の入力値との合計(A+B)を出力する。
比較器126の「B」側の入力には、0が入力され、比較器126の出力は、後述のβ演算器14のANDゲート140の一方の入力に接続されている。比較器126は、「A」側の入力値が「B」側の入力値(0)よりも大きい場合(A>B)に1を出力し、それ以外の場合に0を出力する。
比較器127の「B」側の入力には、8が入力され、比較器127の出力は、後述のステートマシン13のMUX141の「0」側の入力に接続されている(
図6参照)。比較器127は、「A」側の入力値と、「B」側の入力値(8)とが等しい場合(A=B)に1を出力し、それ以外の場合に0を出力する。比較器127は、プリアンブルの終了を判定するために設けられている。したがって、比較器127の「B」側の入力値は、プリアンブルの長さである。
比較器128の「B」側の入力には、4が入力され、比較器128の出力は、ANDゲート129の一方の入力に接続されている。比較器128は、「A」側の入力値と、「B」側の入力値(4)とが等しい場合(A=B)に1を出力し、それ以外の場合に0を出力する。
ANDゲート129の他方の入力には、「state」が入力され、ANDゲート129の出力は、後述の復号器18のデータ変換部181の「Enable」入力に接続されている(
図6参照)。
【0028】
以上のように構成された遷移カウンタ12は、プリアンブル受信期間中において、受信データの遷移数を算出する。遷移カウンタ12においては、D−FF124の変数である「edge_count」が、受信データの遷移数を示す変数として扱われる。
なお、本実施形態においては、受信データの遷移数を算出する際には、立ち上がりエッジおよび立ち下りエッジの両方がカウントされる。しかしながら、立ち上がりエッジおよび立ち下りエッジのいずれか一方のみをカウントする構成としてもよい。
【0029】
図6に示すように、ステートマシン13は、マルチプレクサであるMUX131と、D型フリップフロップであるD−FF132とから構成されている。
【0030】
MUX131の「0」側の入力には、遷移カウンタ12の比較器127の出力が接続され(
図5参照)、MUX131の「1」側の入力には、後述の復号器18のNORゲート186の出力が接続されている。MUX131の出力は、D−FF132の入力に接続されている。
D−FF132の出力は、MUX131の選択制御入力に接続されている。
【0031】
以上のように構成されたステートマシン13においては、遷移カウンタ12の比較器127の出力が0の場合(edge_count≠8)、つまり、プリアンブルを受信中である場合は、D−FF132の変数である「state」が0を維持し、遷移カウンタ12の比較器127の出力が1となった場合(edge_count=8)、つまり、プリアンブルの受信が完了した場合に、D−FF132の変数である「state」が1となる。
【0032】
図5に示すように、β演算器14は、ANDゲート140と、2つのマルチプレクサであるMUX141・142と、D型フリップフロップであるD−FF143と、加算器144と、比較器145とから構成されている。なお、β演算器14の構成要素の間で入出力されるデータの長さは、6ビットである。
【0033】
ANDゲート140の出力は、MUX141の選択制御入力に接続されている。
MUX141の出力は、MUX142の「0」側の入力に接続されている。
MUX142の選択制御入力には、「state」が入力され、MUX142の出力は、D−FF143の入力に接続されている。さらに、MUX142の出力は、後述の窓時間演算器15のシフト演算器1501・1502・1503の入力、および加算器1504・1505の「A」側の入力に接続されている(
図10参照)。
D−FF143の出力は、加算器144の「B」側の入力、比較器145の「A」側の入力、MUX142の「1」側の入力、およびMUX141の「0」側の入力に接続されている。
加算器144の「A」側の入力には、1が入力され、加算器144の出力は、MUX141の「1」側の入力に接続されている。加算器144は、「A」側の入力値と、「B」側の入力値との合計(A+B)を出力する。
比較器145の「B」側の入力には、63が入力され、比較器145の出力は、ANDゲート140の他方の入力に接続されている。比較器145は、「A」側の入力値が「B」側の入力値(63)よりも小さい場合(A<B)に1を出力し、それ以外の場合に0を出力する。
【0034】
以上のように構成されたβ演算器14は、プリアンブル受信期間中の受信機1のクロックカウント数を算出する。β演算器14においては、D−FF143の変数である「beta_count」が、プリアンブル受信期間中の受信機1のクロックカウント数を示す変数として扱われる。
ここで、受信機1(受信データ復元装置)のオーバーサンプリング率βを、「beta_count」を用いて数式で表すと、下記の数1のように表すことができる。
【0036】
数1における「pre_length」は、プリアンブルの長さである。
本実施形態において、「pre_length」は、予め設定された定数であり、8が入力されている。
【0037】
数1に示すように、オーバーサンプリング率βは、プリアンブル受信期間中の受信機1のクロックカウント数を、プリアンブルの長さで除することによって算出される。
なお、プリアンブルの長さが2
nビット(本実施形態においては、8)である場合には、プリアンブル受信期間中の受信機1のクロックカウント数(2進数)を、nビット右シフトすることによってオーバーサンプリング率βが算出可能である。そのため、プリアンブルの長さを2
nビットとすることにより、受信機1の構造を簡略化できる。
【0038】
上記の数1を変換すると、「beta_count」は、オーバーサンプリング率βに、「pre_length」を乗じたものとなる。本実施形態において、「pre_length」は、8であるため、「beta_count」は、8βとなる。
プリアンブルの受信が完了したら、「state」が0から1に切り替わるので(
図6参照)、β演算器14が停止する。そして、8βが窓時間演算器15(
図10参照)に入力される。換言すれば、β演算器14がオーバーサンプリング率βを算出することとなる。
なお、本実施形態において、プリアンブル受信期間中の受信機1のクロックカウント数は、24となっている(beta_count=24、β=3)。
【0039】
図7に、本実施形態における、プリアンブル受信期間中の、遷移カウンタ12およびβ演算器14の動作を示すタイミングチャートを示す。
なお、
図7における「CLK」は、受信機1のクロックを示している。
【0040】
以下では、
図8を参照して、プリアンブル受信期間中の、遷移カウンタ12およびβ演算器14の動作態様を説明する。
図8は、プリアンブル受信期間中の、遷移カウンタ12およびβ演算器14の動作を示すフローチャートである。
【0041】
図8に示すように、まず、ステップS1において、「beta_count」および「edge_count」の初期化、つまり、「beta_count」および「edge_count」への0の代入が行われる(beta_count=0、edge_count=0)。
ステップS1の後は、ステップS2が行われる。
【0042】
ステップS2においては、受信機1のクロックが立ち上がったか否かが判定される。
受信機1のクロックの立ち上がりが検出されるまで、ステップS2を繰り返し、受信機1のクロックの立ち上がりが検出された場合には、ステップS3が行われる。
【0043】
ステップS3においては、「edge_count」が0より大きいか否かが判定される。「edge_count」が0より大きいことは、受信データ中で最初に遷移が生じたこと、つまり、プリアンブルの先頭ビットの1が受信されたことを意味する。
「edge_count」が0より大きい場合(edge_count>0)は、ステップS4が行われ、それ以外の場合には、ステップS5が行われる。
【0044】
ステップS4においては、「beta_count」のインクリメントが行われる(beta_count=beta_count+1)。つまり、受信機1のクロックカウント数がカウントアップされる。
ステップS4の後は、ステップS5が行われる。
【0045】
ステップS5においては、受信データ中でエッジが検出されたか否かが判定される。
受信データ中でエッジが検出された場合は、ステップS6が行われ、検出されなかった場合には、ステップS2に戻る。
【0046】
ステップS6においては、「edge_count」のインクリメントが行われる(edge_count=edge_count+1)。つまり、受信データの遷移数がカウントアップされる。
ステップS6の後は、ステップS7が行われる。
【0047】
ステップS7においては、受信データの遷移数を示す「edge_count」が、プリアンブルの遷移数を示す「pre_count」と等しいか否かが判定される。
ここで、「pre_count」は、「pre_length」と同様に、予め設定される定数である。前述のように、本実施形態において、プリアンブルの遷移数は、9である(pre_count=9)。
【0048】
上記のように、ステップS7においては、受信データの遷移数を示す「edge_count」が、プリアンブルの遷移数を示す「pre_count」と等しいか否かが判定されるが、これは、プリアンブルの受信が完了したか否かを判定しているのである。
「edge_count」が「pre_count」と等しい場合(edge_count=pre_count)は、ステップS8が行われ、それ以外の場合には、ステップS2に戻る。
【0049】
ステップS8においては、前記の数1に基づいて、オーバーサンプリング率βが算出される。
【0050】
以上のように、プリアンブル受信期間において、遷移カウンタ12およびβ演算器14が動作する。
【0051】
前述のように、β演算器14から出力された8βは、窓時間演算器15に入力される(
図5および
図10参照)。
以下では、窓時間演算器15について説明する。
窓時間演算器15は、β演算器14の出力(8β)に基づいて、サンプリング窓時間T0・T1・T2を算出する装置である。
ここで、「サンプリング窓時間」とは、復元対象となる1ビットのデータを抽出するための時間幅である。換言すれば、シフトレジスタ17(
図6参照)に入力される「serial_edge」の値が確定される時間幅である。
【0052】
サンプリング窓時間T0・T1・T2は、受信データの遷移の有無に応じて選択される。
受信データに遷移が検出された場合は、そのビットを抽出するためのサンプリング窓時間T0が選択される。そして、次のビットで遷移が検出されなかった場合は、当該ビットを抽出するためのサンプリング窓時間T1が選択され、さらに次のビットで遷移が検出されなかった場合は、当該ビットを抽出するためのサンプリング窓時間T2が選択される。
このように、受信データに遷移が検出された場合に選択されるサンプリング窓時間T0を基準として、遷移が検出されない場合は、サンプリング窓時間T1、サンプリング窓時間T2と、順に選択されることとなる。
なお、本実施形態においては、受信データ中に「0」が3個以上連続しないように4B5B符号化が行われているため、3つのサンプリング窓時間T0・T1・T2が存在することとなる。
【0053】
ここでは、サンプリング窓時間の算出方法について説明する。
受信機1において、受信された1ビットのデータは、オーバーサンプリング率βのクロック間隔で現れるといえる。
図9は、経過時間と、受信された1ビットのデータの検出確率との関係を示すグラフである。
図9に示すように、正規分布を仮定すると、受信データに遷移が検出された場合(「serial_edge」が1の場合)、次のビットは、遷移から1.5βクロック後(βと2βとの中間点)には、確実に現れるとみなせる。なお、説明の便宜上、遷移が検出されたビットを「1番目のビット」、次のビットを「2番目のビット」、さらに次のビットを「3番目のビット」と記す。
したがって、1番目のビットを抽出するためのサンプリング窓時間T0は、下記の数2のように表すことができる。
なお、プリアンブルは「1」から始まるため、受信データは立ち上がりで開始、つまり、遷移から開始される。
【0055】
数2における「floor」は、引数の小数点以下を切り捨てる関数である。
クロック数は整数であるため、floor関数を使用している。
【0056】
2番目のビットで遷移が検出されない場合(「serial_edge」が1、0と続いた場合)、2番目のビットを抽出するためのサンプリング窓時間の終点は、2βと3βとの中間点である2.5βであればよい。
したがって、2番目のビットを抽出するためのサンプリング窓時間T1は、下記の数3のように表すことができる。
【0058】
なお、2番目のビットで遷移が検出された場合(「serial_edge」が1、1と続いた場合)は、2番目のビットを1番目のビットとみなして以下同様の処理を行う。つまり、サンプリング窓時間が、T0、T0の順で選択される。この場合、1番目のビットを抽出するためのサンプリング窓時間の終点は、2番目のビットを抽出するためのサンプリング窓時間の始点に設定される。
【0059】
2番目のビットで遷移が検出されず、3番目のビットでも遷移が検出されない場合(「serial_edge」が1、0、0と続いた場合)、3番目のビットを抽出するためのサンプリング窓時間の終点は、3βと4βとの中間点である3.5βであればよい。
したがって、3番目のビットを抽出するためのサンプリング窓時間T2は、下記の数4のように表すことができる。
【0061】
なお、2番目のビットで遷移が検出されず、3番目のビットで遷移が検出された場合(「serial_edge」が1、0、1と続いた場合)は、3番目のビットを1番目のビットとみなして以下同様の処理を行う。つまり、サンプリング窓時間が、T0、T1、T0の順で選択される。この場合、2番目のビットを抽出するためのサンプリング窓時間の終点は、3番目のビットを抽出するためのサンプリング窓時間の始点に設定される。
【0062】
前述のように、本実施形態においては、受信データ中に「0」が3個以上連続しないように4B5B符号化が行われているため、3つのサンプリング窓時間T0・T1・T2が設定される。しかしながら、このような4B5B符号化が行われない場合、または他の符号化が行われる場合には、受信データ中に「0」が3個以上連続する可能性があるため、サンプリング窓時間を3つ以上設定する必要がある。
このような事情を考慮すると、サンプリング窓時間は、下記の数5および数6のように表すことができる。
【0064】
数5および数6における「a」は、上記のように正規分布を仮定した場合、0である。「a」は、受信機1のクロック、および送信機2のクロックのばらつき分布により、−0.2〜+0.2の範囲内で適宜調整すればよい。
【0065】
また、サンプリング窓時間Tpの算出には、上記の数6に代えて、下記の数7を用いることも可能である。
なお、数6を用いたサンプリング窓時間Tpの算出結果、および数7を用いたサンプリング窓時間Tpの算出結果は同一である。
【0067】
なお、本実施形態においては、サンプリング窓時間を算出する式に、引数の小数点以下を切り捨てるfloor関数を用いているが、引数の小数点以下を切り上げるceil関数を、floor関数に代えて用いることも可能である。
例えば、受信データ中に「0」が3個以上連続しないように4B5B符号化を行った場合に、下記の数8のようにサンプリング窓時間T0・T1・T2を算出することも可能である。
【数8】
【0068】
図10に示すように、窓時間演算器15は、3つのシフト演算器1501・1502・1503と、3つの加算器1504・1505・1506と、2つのシフト演算器1507・1508と、3つの減算器1509・1510・1511と、2つのシフト演算器1512・1513とから構成されている。なお、窓時間演算器15の構成要素の間で入出力されるデータの長さは、8ビットである。
【0069】
β演算器14の出力(8β)は、シフト演算器1501・1502・1503、および加算器1504・1505の「A」側の入力に入力される。
シフト演算器1501の出力は、加算器1504の「B」側の入力に接続されている。シフト演算器1501は、入力値を1ビット右シフトした値を出力する。
シフト演算器1502の出力は、加算器1505の「B」側の入力に接続されている。シフト演算器1502は、入力値を2ビット右シフトした値を出力する。
シフト演算器1503の出力は、加算器1506の「A」側の入力に接続されている。シフト演算器1503は、入力値を1ビット右シフトした値を出力する。
加算器1504の出力は、シフト演算器1507の入力に接続されている。加算器1504は、「A」側の入力値と、「B」側の入力値との合計(A+B)を出力する。
加算器1505の出力は、減算器1509の「A」側の入力、および加算器1506の「B」側の入力に接続されている。加算器1505は、「A」側の入力値と、「B」側の入力値との合計(A+B)を出力する。
加算器1506の出力は、減算器1510の「A」側の入力に接続されている。加算器1506は、「A」側の入力値と、「B」側の入力値との合計(A+B)を出力する。
シフト演算器1507の出力は、シフト演算器1508の入力に接続されている。シフト演算器1507は、入力値を3ビット右シフトした値を出力する。シフト演算器1507の出力値は、サンプリング窓時間T0である。
シフト演算器1508の出力は、減算器1509・1510の「B」側の入力に接続されている。シフト演算器1508は、入力値を2ビット左シフトした値を出力する。
減算器1509の出力は、シフト演算器1512の入力、および減算器1511の「B」側の入力に接続されている。減算器1509は、「A」側の入力値から「B」側の入力値を引いた値(A−B)を出力する。
減算器1510の出力は、減算器1511の「A」側の入力に接続されている。減算器1510は、「A」側の入力値から「B」側の入力値を引いた値(A−B)を出力する。
減算器1511の出力は、シフト演算器1513の入力に接続されている。減算器1511は、「A」側の入力値から「B」側の入力値を引いた値(A−B)を出力する。
シフト演算器1512は、入力値を2ビット右シフトした値を出力する。シフト演算器1512の出力値は、サンプリング窓時間T1である。
シフト演算器1513は、入力値を2ビット右シフトした値を出力する。シフト演算器1513の出力値は、サンプリング窓時間T2である。
【0070】
以上のように構成された窓時間演算器15は、サンプリング窓時間T0・T1・T2を算出可能となっている。
サンプリング窓時間T0・T1・T2を算出するための式が示された上記の数2〜数4は、下記の数9〜数11の如く、窓時間演算器15の入力値である8βを用いた式に変換することができる。
窓時間演算器15は、下記の数9〜数11における下段の式を実現するように構成されているのである。
【0072】
なお、窓時間演算器15は、受信データの処理が行われる度に、サンプリング窓時間T0・T1・T2を算出するように構成してもよいし、予めサンプリング窓時間T0・T1・T2を算出しておき、以後その算出値を参照できるように構成してもよい。
【0073】
図11に示すように、窓時間カウンタ16は、4つのマルチプレクサであるMUX161・162・163・164と、減算器165と、D型フリップフロップであるD−FF166と、比較器167と、NORゲート168とから構成されている。なお、窓時間カウンタ16の構成要素の間で入出力されるデータの長さは、8ビットである。
【0074】
MUX161の「1」側の入力には、サンプリング窓時間T1が入力され、MUX161の「0」側の入力には、サンプリング窓時間T2が入力される。MUX161の選択制御入力には、「coded_symbol[0]」が入力され、MUX161の出力は、MUX162の「1」側の入力に接続されている。「coded_symbol」は、シフトレジスタ17の変数である(
図6参照)。シフトレジスタ17は、5つのD型フリップフロップを有し、直列入力並列出力形(Serial−In Parallel−Out:SIPO)のシフトレジスタとして構成されている。シフトレジスタ17の5つのD型フリップフロップの変数は、上流側から「coded_symbol[0]」、「coded_symbol[1]」、「coded_symbol[2]」、「coded_symbol[3]」、および「coded_symbol[4]」と定義されている。
シフトレジスタ17に入力される「serial_edge」は、「coded_symbol[0]」、「coded_symbol[1]」、「coded_symbol[2]」、「coded_symbol[3]」、および「coded_symbol[4]」を、順にシフトしていくこととなる。
そのため、「coded_symbol[0]」の値は、1つ前の「serial_edge」の値である。
さらに、「coded_symbol[1]」の値は、2つ前の「serial_edge」の値であり、「coded_symbol[2]」の値は、3つ前の「serial_edge」の値であり、「coded_symbol[3]」の値は、4つ前の「serial_edge」の値であり、「coded_symbol[4]」の値は、5つ前の「serial_edge」の値である。
【0075】
MUX162の選択制御入力には、「bit_expired」が入力され、MUX162の出力は、MUX163の「0」側の入力に接続されている。
MUX163の「1」側の入力には、サンプリング窓時間T0が入力されている。MUX163の選択制御入力には、「serial_edge」が入力され、MUX163の出力は、MUX164の「1」側の入力に接続されている。
MUX164の「0」側の入力には、サンプリング窓時間T0が入力されている。MUX164の選択制御入力には、「state」が入力され、MUX164の出力は、減算器165の「A」側の入力に接続されている。
減算器165の「B」側の入力には、1が入力され、減算器165の出力は、D−FF166の入力に接続されている。減算器165は、「A」側の入力値から「B」側の入力値を引いた値(A−B)を出力する。
D−FF166の出力は、MUX162の「0」側の入力、および比較器167の「A」側の入力に接続されている。
比較器167の「B」側の入力には、0が入力され、比較器167の出力は、NORゲート168の一方の入力に接続されている。比較器167は、「A」側の入力値と、「B」側の入力値(0)とが等しい場合(A=B)に1を出力し、それ以外の場合に0を出力する。比較器167の出力値は、「bit_expired」とされる。
NORゲート168の他方の入力には、「bit_expired」が入力され、NORゲート168の出力は、「bit_ready」とされる。
「bit_ready」は、シフトレジスタ17の「Enable」入力に入力されており(
図6参照)、「bit_ready」が「1」となった場合に、シフトレジスタ17に「serial_edge」が入力されることとなる。
【0076】
以上のように構成された窓時間カウンタ16においては、D−FF166の変数である「timer」が、サンプリング窓時間を示す変数として扱われる。
【0077】
前述のように、シフトレジスタ17には、「serial_edge」が、サンプリング窓時間T0・T1・T2に応じたタイミングで間欠的に入力され、「coded_symbol[0]」、「coded_symbol[1]」、「coded_symbol[2]」、「coded_symbol[3]」、および「coded_symbol[4]」を、順にシフトしていく。
したがって、シフトレジスタ17の「coded_symbol[4]」、「coded_symbol[3]」、「coded_symbol[2]」、「coded_symbol[1]」、「coded_symbol[0]」の値を順に並べたものが、復号器18によって復号される5ビットのシンボルである。
【0078】
図6に示すように、復号器18は、データ変換部181と、4つのD型フリップフロップであるD−FF182・183・184・185と、NORゲート186とから構成されている。
【0079】
データ変換部181は、シフトレジスタ17と電気的に接続されており、「coded_symbol[4]」〜「coded_symbol[0]」が入力される。
本実施形態において、データ変換部181は、
図12に示す変換テーブルに基づいて、シフトレジスタ17内の5ビットのシンボル、つまり、「coded_symbol[4]」〜「coded_symbol[0]」を4ビットのデータとして復号する。
【0080】
図6に示すように、データ変換部181は、復号した4ビットのデータをD−FF182に出力する。D−FF182の変数である「decoded_symbol」は、復号された4ビットのデータを示す変数である。
また、データ変換部181は、復号終了後に、1をD−FF183に出力する。D−FF183の変数は、復号終了後に「1」となり、それ以外は「0」となる「symbol_ready」である。
また、データ変換部181は、復号したデータが終端記号であった場合、NORゲート168の一方の入力、およびD−FF184に、1を出力し、それ以外は、0を出力する。
また、データ変換部181は、復号したデータが無効であった場合、NORゲート168の他方の入力、およびD−FF185に、1を出力し、それ以外は、0を出力する。
なお、復号したデータが無効であるか否かの判定は、CRC(Cyclic Redundancy Check)などの誤り検出、NZRI逆変換、または4B5B逆変換などによって実現可能である。また、復号したデータが4B5Bの変換テーブルに存在しない場合、復号したデータの終端記号が異なる場合、所定の時間信号が途絶えた場合、または所定の時間経過しても終端記号が検出できない場合などに、復号したデータが無効であると判定してもよい。
【0081】
図13に、本実施形態における、プリアンブル受信期間後の、窓時間カウンタ16、シフトレジスタ17、および復号器18の動作を示すタイミングチャートを示す。
図13には、5ビットのシンボルである「01001」および「01111」が、
図12に示す変換テーブルに基づいて、4ビットのデータである「1111」(16進数表記では、「F」)および「1000」(16進数表記では、「8」)に復号される様子が示されている。
なお、
図13における「CLK」は、受信機1のクロックを示している。
【0082】
以下では、
図14を参照して、プリアンブル受信期間後の、窓時間カウンタ16、シフトレジスタ17、および復号器18の動作態様を説明する。
図14は、プリアンブル受信期間後の、窓時間カウンタ16、シフトレジスタ17、および復号器18の動作を示すフローチャートである。
【0083】
図14に示すように、まず、ステップS11において、「p」および「edge_count」の初期化、つまり、「p」および「edge_count」への0の代入が行われる(p=0、edge_count=0)。
ステップS11の後は、ステップS12が行われる。
【0084】
ステップS12においては、「timer」に、サンプリング窓時間である「Tp」が代入される。
ステップS12の後は、ステップS13が行われる。
【0085】
ステップS13においては、「timer」のデクリメントが行われる(timer=timer−1)。
ステップS13の後は、ステップS14が行われる。
【0086】
ステップS14においては、受信機1のクロックが立ち上がるまで待機する。
ステップS14の後は、ステップS15が行われる。
【0087】
ステップS15においては、受信データ中でエッジが検出されたか否かが判定される。
受信データ中でエッジが検出された場合は、ステップS16が行われ、検出されなかった場合には、ステップS17が行われる。
【0088】
ステップS16においては、「p」に0が代入される(p=0)。
ステップS16の後は、ステップS19が行われる。
【0089】
ステップS17においては、「timer」が0であるか否かが判定される。
「timer」が0である場合は、ステップS18が行われ、0でない場合には、ステップS13に戻る。
【0090】
ステップS18においては、「p」のインクリメントが行われる(p=p+1)。なお、本実施形態においては、3つのサンプリング窓時間T0・T1・T2のみが存在するため、pが2を上回る場合の処理は行われない。
ステップS18の後は、ステップS19が行われる。
【0091】
ステップS19においては、「serial_edge」がシフトレジスタ17に入力される。
ステップS19の後は、ステップS20が行われる。
【0092】
ステップS20においては、シフトレジスタ17に入力された5ビットのシンボルが有効であるか否かが判定される。換言すれば、シフトレジスタ17の「coded_symbol[4]」〜「coded_symbol[0]」に値が正常に格納されているか否かが判定される。
5ビットのシンボルが有効である場合には、ステップS21が行われ、無効である場合には、ステップS22が行われる。
【0093】
ステップS21においては、「edge_count」に0が代入される(edge_count=0)。
ステップS21の後は、ステップS23が行われる。
【0094】
ステップS22においては、「edge_count」のインクリメントが行われる(edge_count=edge_count+1)。
ステップS22の後は、ステップS12に戻る。
【0095】
ステップS23においては、5ビットのシンボルが復号器18によって4ビットのデータに復号される。
ステップS23の後は、ステップS24が行われる。
【0096】
ステップS24においては、復号されたデータが終端記号であるか否かが判定される。
復号されたデータが終端記号である場合には、復号処理が終了し、終端記号ではない場合には、ステップS12に戻る。
【0097】
以上のように構成された受信機1は、位相同期回路を有しないため、VCOからのノイズを受けることがない。さらに、受信機1は、位相補間回路を有しないため、高精度のクロックが不要である。