以下、本願が開示する通信装置及びデータ再生方法の一実施の形態について、図面を参照して詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、以下の一実施の形態においては、通信装置の一例として光信号を受信する受信装置について説明するが、本発明は例えば無線通信装置などを含む種々の通信装置に適用することができる。
図1は、一実施の形態に係る受信装置100の構成を示すブロック図である。図1に示す受信装置100は、受信部110、OE(Optic-Electric)変換部120、AD(Analogue Digital)変換部130、LSI(Large Scale Integration)140、プロセッサ150及びメモリ160を有する。
受信部110は、光信号を受信し、受信された光信号に対して所定の受信処理を実行する。
OE変換部120は、例えばフォトダイオードなどを備え、受信された光信号を光電変換し、電気信号に変換された受信信号を得る。
AD変換部130は、受信信号をAD変換し、デジタル信号に変換された受信信号を得る。
LSI140は、受信信号を復調する回路を有し、受信信号に重畳されたデータを再生する。具体的には、LSI140は、所定のサンプリング周波数で受信信号をオーバサンプリングし、得られたサンプルから振幅が0となるゼロクロス点を決定する。そして、LSI140は、ゼロクロス点の半シンボル長後をピーク位置と推定し、ピーク位置からシンボル周期ごとの位置におけるサンプルの符号に応じて0又は1を示す二値のデータを再生する。このとき、LSI140は、複数のゼロクロス点を検出し、最初に検出したゼロクロス点と各ゼロクロス点との相対距離の平均値を算出する平均化処理を行って最終的なゼロクロス点を決定する。LSI140の具体的な構成及び動作については、後に詳述する。
プロセッサ150は、例えばCPU(Central Processing Unit)又はDSP(Digital Signal Processor)などを備え、受信装置100の各部を統括制御する。また、プロセッサ150は、LSI140によって受信信号が復調されて得られたデータを取得し、データに基づいて様々な処理を実行する。
メモリ160は、例えばRAM(Random Access Memory)などを備え、プロセッサ150によって実行される処理に使用されるプログラムやデータを一時的に記憶する。
図2は、一実施の形態に係るLSI140の構成を示すブロック図である。図2に示すLSI140は、周波数復調部210、バッファ部220、検出対象点サーチ部230、ゼロクロス検出部240、平均化処理部250、ピーク位置推定部260、サンプル選択部270及び二値化部280を有する。なお、LSI140は、これらの各処理部に対応する回路を有している。
周波数復調部210は、受信信号を周波数復調して、搬送波から受信データの波形を抽出する。そして、周波数復調部210は、受信データの波形を所定のサンプリング周波数でオーバサンプリングし、得られたサンプルを順次バッファ部220に格納する。ここで、周波数復調部210は、例えば1シンボルが16サンプルに相当するサンプリング周波数で受信データの波形をオーバサンプリングする。
バッファ部220は、周波数復調部210から出力されるサンプルを一時的に記憶する。バッファ部220は、少なくとも2シンボル分のサンプルを記憶可能な容量を有し、各サンプルを時系列順に記憶する。
検出対象点サーチ部230は、振幅が0となる点に最も近いサンプル(以下「ゼロクロスサンプル」という)を検出するための基準となる検出対象点をバッファ部220に記憶されたサンプルから探索する。具体的には、検出対象点サーチ部230は、所定の正及び負の閾値を利用し、バッファ部220に記憶された1シンボル分のサンプルから、振幅が所定の正の閾値以上又は所定の負の閾値未満のサンプルを特定する。そして、検出対象点サーチ部230は、特定したサンプルの1シンボル長後のサンプルの振幅が、所定の正の閾値以上又は所定の負の閾値未満であり、かつ先に特定されたサンプルの振幅とは符号が逆という条件を満たすか否かを判定する。すなわち、検出対象点サーチ部230は、例えば振幅が所定の正の閾値以上のサンプルを特定した場合、このサンプルの1シンボル長後のサンプルの振幅が所定の負の閾値未満であるか否かを判定する。
そして、検出対象点サーチ部230は、1シンボル長後のサンプルが条件を満たす場合に、先に特定されたサンプルを検出対象点に設定する。検出対象点サーチ部230がこのように検出対象点を設定することにより、検出対象点から1シンボル長の区間にゼロクロスサンプルが存在することを確定することができる。なお、検出対象点サーチ部230は、所定の正及び負の閾値として、例えば受信信号のピーク振幅の60〜70%程度の振幅の大きさを用いることができる。
ゼロクロス検出部240は、検出対象点サーチ部230によって設定された検出対象点を基準として、バッファ部220に記憶されたサンプルの中からゼロクロスサンプルを検出する。具体的には、ゼロクロス検出部240は、検出対象点から半シンボル長後のサンプルとその前後のサンプルとをバッファ部220から取得し、取得された3サンプルの符号を確認する。この結果、3サンプルの符号がすべて同じ場合には、ゼロクロス検出部240は、ゼロクロスサンプルを検出せずに、検出対象点サーチ部230によって新たな検出対象点が設定されるまで待機する。一方、3サンプルの符号が異なる場合には、ゼロクロス検出部240は、隣接するサンプルとは符号が異なる2サンプルの振幅を比較し、振幅が0に近い方のサンプルをゼロクロスサンプルとして検出する。
なお、ここでは、ゼロクロス検出部240は、検出対象点から半シンボル長後のサンプルを含む3サンプルの符号がすべて同じ場合に、ゼロクロスサンプルの検出を省略するものとした。しかしながら、検出対象点から1シンボル長以内の区間にゼロクロスサンプルが存在することが確定しているため、処理速度が十分に速ければ、ゼロクロス検出部240は、4つ以上のサンプルをバッファ部220から取得してゼロクロスサンプルを検出しても良い。すなわち、許容される時間内にゼロクロスサンプルを検出することが可能であれば、ゼロクロス検出部240は、すべての検出対象点からそれぞれ1つのゼロクロスサンプルを検出しても良い。
平均化処理部250は、検出対象点ごとに検出される複数のゼロクロスサンプルのサンプル番号に対して平均化処理を行う。そして、平均化処理部250は、平均化処理の結果得られるサンプル番号を最終的なゼロクロス点と決定する。具体的には、平均化処理部250は、複数のゼロクロスサンプルのうち1番目のゼロクロスサンプルを基準として、各ゼロクロスサンプルまでの相対距離をそれぞれ算出する。そして、平均化処理部250は、各ゼロクロスサンプルまでの相対距離を累積加算して平均値を求め、得られた平均値に基づいて最終的なゼロクロス点のサンプル番号を決定する。なお、平均化処理部250のより詳細な構成及び動作については、後に詳述する。
ピーク位置推定部260は、平均化処理部250によって決定されたゼロクロス点に基づいて、受信データの波形のピーク位置を推定する。具体的には、ピーク位置推定部260は、ゼロクロス点の半シンボル長後をピーク位置と推定する。したがって、例えば1シンボルが16サンプルに相当するサンプリング周波数で受信データの波形がオーバサンプリングされる場合は、ピーク位置推定部260は、ゼロクロス点の8サンプル後をピーク位置と推定する。そして、ピーク位置推定部260は、ピーク位置のサンプル番号をサンプル選択部270へ通知する。
サンプル選択部270は、ピーク位置のサンプル番号が通知されると、通知されたサンプル番号のサンプルをバッファ部220から取得し、二値化部280へ出力する。また、サンプル選択部270は、二値化部280へサンプルを出力した後、このサンプルからシンボル周期ごとのサンプルをバッファ部220から取得し、同様に二値化部280へ出力する。
二値化部280は、サンプル選択部270から出力されたサンプルの符号に基づく二値化を実行し、データを再生する。具体的には、二値化部280は、例えばサンプルの振幅の符号が正であればこのサンプルから「1」を再生し、サンプルの符号が負であればこのサンプルから「0」を再生する。また、二値化部280は、例えばサンプルの振幅値を所定の閾値と比較し、サンプルの振幅値が閾値以上であればこのサンプルから「1」を再生し、サンプルの振幅値が閾値未満であればこのサンプルから「0」を再生しても良い。このとき、サンプルの振幅値及び所定の閾値の大小と、再生される「1」及び「0」との関係は、任意で良い。
次に、上述した平均化処理部250の構成について、より詳細に説明する。図3は、一実施の形態に係る平均化処理部250の構成を示すブロック図である。図3に示す平均化処理部250は、剰余演算部310、ウインドウ設定部320、変換部330、相対距離算出部340、累積加算部350、検出回数カウント部360、平均値算出部370及びゼロクロス点決定部380を有する。
剰余演算部310は、ゼロクロス検出部240によって検出されたゼロクロスサンプルのサンプル番号に対する剰余演算を実行する。すなわち、剰余演算部310は、ゼロクロスサンプルのサンプル番号を1シンボル分のサンプル数で割った場合の剰余を求める。したがって、例えば1シンボルが16サンプルに相当する場合は、剰余演算部310は、ゼロクロスサンプルのサンプル番号を16で割って得られる剰余を求める。ここで求められる剰余は、1シンボル相当のサンプル数よりも小さく、ゼロクロスサンプルの正規化されたサンプル番号といえる。以下では、この正規化されたサンプル番号を単にサンプル番号という。
ウインドウ設定部320は、最初のゼロクロスサンプルに関する剰余演算が剰余演算部310によって実行されると、最初のゼロクロスサンプルを基準としたウインドウを設定する。具体的には、ウインドウ設定部320は、基準となるサンプル番号から正方向及び負方向への幅が均等であり、全体の幅が1シンボル分のサンプル数より1小さいウインドウを設定する。したがって、例えば1シンボルが16サンプルに相当する場合は、ウインドウ設定部320は、最初のゼロクロスサンプルから正方向へ7OS分の幅を有し、負方向へ8OS分の幅を有する全体で15OS分の幅のウインドウを設定する。なお、この例では、ウインドウ設定部320は、最初のゼロクロスサンプルから正方向へ8OS分の幅を有し、負方向へ7OS分の幅を有するウインドウを設定しても良い。
変換部330は、2番目以降のゼロクロスサンプルがウインドウ設定部320によって設定されたウインドウに入るか否かを判定し、入らない場合には、ゼロクロスサンプルのサンプル番号を変換する。具体的には、変換部330は、最初のゼロクロスサンプルからウインドウの正方向の幅を超えて大きいゼロクロスサンプルのサンプル番号から1シンボル分のサンプル数を減算する。また、変換部330は、最初のゼロクロスサンプルからウインドウの負方向の幅を超えて小さいゼロクロスサンプルのサンプル番号に1シンボル分のサンプル数を加算する。一方、変換部330は、ウインドウに入るゼロクロスサンプルのサンプル番号を変換しない。
具体的に、例えば最初のゼロクロスサンプルが1OSであり、この1OSを中心とするウインドウが正方向へ7OS分の幅を有し、負方向へ8OS分の幅を有する場合を考える。この場合、2番目以降のゼロクロスサンプルのサンプル番号が8(=1+7)より大きければ、変換部330は、このゼロクロスサンプルのサンプル番号から16を減算する。すなわち、変換部330は、2番目以降のゼロクロスサンプルが9〜15OSである場合、これらのゼロクロスサンプルをそれぞれ−7〜−1OSに変換する。また、2番目以降のゼロクロスサンプルのサンプル番号が8以下であれば、変換部330は、このゼロクロスサンプルのサンプル番号を変換しない。すなわち、変換部330は、2番目以降のゼロクロスサンプルが0〜8OSである場合、これらのゼロクロスサンプルをそのまま0〜8OSとする。
同様に、例えば最初のゼロクロスサンプルが15OSであり、この15OSを中心とするウインドウが正方向へ7OS分の幅を有し、負方向へ8OS分の幅を有する場合を考える。この場合、2番目以降のゼロクロスサンプルのサンプル番号が7(=15−8)未満であれば、変換部330は、このゼロクロスサンプルのサンプル番号に16を加算する。すなわち、変換部330は、2番目以降のゼロクロスサンプルが0〜6OSである場合、これらのゼロクロスサンプルをそれぞれ16〜22OSに変換する。また、2番目以降のゼロクロスサンプルのサンプル番号が7以上であれば、変換部330は、このゼロクロスサンプルのサンプル番号を変換しない。すなわち、変換部330は、2番目以降のゼロクロスサンプルが7〜15OSである場合、これらのゼロクロスサンプルをそのまま7〜15OSとする。
変換部330は、上記のようにゼロクロスサンプルのサンプル番号を変換することにより、2番目以降のゼロクロスサンプルが最初のゼロクロスサンプルを基準として設定されたウインドウに入るようにする。
相対距離算出部340は、最初のゼロクロスサンプルと2番目以降のゼロクロスサンプルとの相対距離を算出する。すなわち、相対距離算出部340は、2番目以降のゼロクロスサンプルそれぞれについて、変換部330による変換後のサンプル番号から、最初のゼロクロスサンプルのサンプル番号を減算することにより、最初のゼロクロスサンプルを基準とした相対距離を算出する。ここで、2番目以降のゼロクロスサンプルのサンプル番号が変換部330によって変換されているため、相対距離算出部340は、最初のゼロクロスサンプルを中心としたウインドウの範囲内で相対距離を算出することになる。したがって、相対距離算出部340が算出する相対距離の絶対値は、最初のゼロクロスサンプルに近いゼロクロスサンプルほど小さくなる。
累積加算部350は、相対距離算出部340によって算出される相対距離を累積加算する。すなわち、累積加算部350は、最初のゼロクロスサンプルを基準とした2番目以降のゼロクロスサンプルそれぞれの位置のずれを累積する。
検出回数カウント部360は、剰余演算部310によって実行される剰余演算の回数をカウントすることにより、ゼロクロス検出部240によってゼロクロスサンプルが検出された回数をカウントする。すなわち、剰余演算部310は、ゼロクロスサンプルが検出される度に剰余演算を実行するため、検出回数カウント部360は、剰余演算の回数をカウントしてゼロクロスサンプルの検出回数をカウントする。
平均値算出部370は、検出回数カウント部360によってカウントされる検出回数が所定回数に達した場合に、累積加算部350における累積加算結果を取得して、平均値を算出する。すなわち、平均値算出部370は、所定数のゼロクロスサンプルが検出されると、最初のゼロクロスサンプルを基準とした各ゼロクロスサンプルまでの相対距離の平均値を算出する。したがって、平均値算出部370は、累積加算部350における累積加算結果を、ゼロクロスサンプルの検出回数で除算する。
ゼロクロス点決定部380は、平均値算出部370によって算出された平均値に基づいて、最終的なゼロクロス点を決定する。具体的には、ゼロクロス点決定部380は、ウインドウの中心となっている最初のゼロクロスサンプルのサンプル番号に平均値を加算してゼロクロス点のサンプル番号を算出する。なお、ゼロクロス点決定部380は、最初のゼロクロスサンプルのサンプル番号に平均値を加算した結果が整数でない場合には、この結果に最も近い整数をゼロクロス点のサンプル番号としても良い。
次いで、上記のように構成されたLSI140におけるデータ再生方法について、図4に示すフロー図を参照しながら、具体的に例を挙げて説明する。
オーバサンプリングされた受信データのサンプルが時系列順にバッファ部220に記憶されると、検出対象点サーチ部230によって、最も古いサンプルが選択される(ステップS101)。そして、検出対象点サーチ部230によって、選択されたサンプルが検出対象点の条件を満たすか否かが判定される(ステップS102)。具体的には、まず、サンプルの振幅が所定の正の閾値以上又は所定の負の閾値未満であるという第1条件を満たすか否かが判定される。そして、第1条件を満たす場合には、このサンプルの1シンボル長後のサンプルの振幅が所定の正の閾値以上又は所定の負の閾値未満であり、かつ第1条件を満たすサンプルとは符号が逆という第2条件を満たすか否かが判定される。
第1条件及び第2条件が共に満たされる場合、検出対象点サーチ部230によって、第1条件を満たすサンプルが検出対象点に設定される。検出対象点は、この点から1シンボル長の区間にゼロクロスサンプルが存在する点である。すなわち、例えば図5に示すように、サンプルAは、振幅が所定の負の閾値Th−未満であるという第1条件を満たし、1シンボル長後のサンプルaの振幅が所定の正の閾値Th+以上であり、かつサンプルAとは符号が逆という第2条件も満たす。このため、サンプルAからサンプルaまでの1シンボル長の区間にはゼロクロスサンプルが存在する。この場合には、サンプルAが検出対象点に設定される。
一方、例えば図5に示すように、サンプルBは、振幅が所定の正の閾値Th+以上であるという第1条件を満たすが、1シンボル長後のサンプルbの符号がサンプルBと同じであるため、第2条件を満たさない。このため、サンプルBからサンプルbまでの1シンボル長の区間にゼロクロスサンプルが存在することが確定せず、サンプルBは、検出対象点に設定されない。
検出対象点サーチ部230によって、選択されたサンプルが検出対象点に設定されない場合は(ステップS102No)、次のサンプルが選択されるが(ステップS107)、このとき、既に1シンボル分のサンプルが選択されたか否かが判定される(ステップS108)。すなわち、例えば1シンボルが16サンプルに相当する場合は、既に16サンプルについての処理が終了したか否かが判断され、終了している場合は(ステップS108Yes)、次の16サンプルを対象とした処理が実行される。一方、1シンボル分のサンプルについての処理が終了していない場合は(ステップS108No)、検出対象点サーチ部230によって、処理が終了していないサンプルに関して、検出対象点に該当するか否かの判定が繰り返される(ステップS102)。
そして、検出対象点サーチ部230によって、選択されたサンプルが検出対象点に設定される場合は(ステップS102Yes)、ゼロクロス検出部240によって、検出対象点を基準としたゼロクロスサンプルの検出が行われる(ステップS103)。すなわち、ゼロクロス検出部240によって、検出対象点から半シンボル長後のサンプルとその前後のサンプルがバッファ部220から取得され、取得された3サンプルの中にゼロクロスサンプルがあるか否かが判断される。
具体的には、取得された3サンプルの符号がすべて同じである場合には、ゼロクロスサンプルがないと判断され、3サンプルの符号が異なる場合には、ゼロクロスサンプルがあると判断される。すなわち、例えば図6に示すように、検出対象点401(15OS)から半シンボル長後の7OSを含む6〜8OSの符号からゼロクロスサンプルの有無が判断される。ここでは、6OS及び7OSの符号が負であるのに対し、8OSの符号が正であるため、隣接するサンプルとは符号が異なる7OSと8OSの間で振幅が0となることがわかる。そこで、ゼロクロス検出部240によって、0に最も近い振幅を有する8OSがゼロクロスサンプル402と決定される。
ゼロクロス検出部240によって、ゼロクロスサンプルがないと判断された場合は(ステップS103No)、上述した検出対象点が設定されない場合と同様に、1シンボル分のサンプル単位で次のサンプルが選択される(ステップS107、S108)。
一方、ゼロクロス検出部240によって、ゼロクロスサンプルがあると判断された場合は(ステップS103Yes)、ゼロクロスサンプルのサンプル番号が平均化処理部250へ出力される。そして、平均化処理部250によって、ゼロクロスサンプルのサンプル番号の平均化処理が実行される(ステップS104)。平均化処理では、最初のゼロクロスサンプルを基準とした各ゼロクロスサンプルまでの相対距離の平均値が求められる。そして、この平均値と最初のゼロクロスサンプルとから、複数のゼロクロスサンプルを反映した最終的なゼロクロス点が決定され、ゼロクロス点のサンプル番号がピーク位置推定部260へ通知される。なお、平均化処理部250による平均化処理については、後に詳述する。
最終的なゼロクロス点のサンプル番号がピーク位置推定部260へ通知されると、ピーク位置推定部260によって、受信データの波形のピーク位置が推定される(ステップS105)。すなわち、ピーク位置推定部260によって、ゼロクロス点の半シンボル長後がピーク位置と推定される。このとき、ピーク位置推定部260によって、ゼロクロス点のサンプル番号に半シンボル分のサンプル数が加算され、加算結果を1シンボル分のサンプル数で除算した場合の剰余が求められることにより、ピーク位置のサンプル番号が算出される。
ピーク位置のサンプル番号は、サンプル選択部270へ通知され、サンプル選択部270によって、通知されたサンプル番号のサンプルがバッファ220から取得される。なお、サンプル番号は1シンボル長周期で各サンプルに付与されているため、サンプル選択部270によって、各シンボルのピーク位置におけるサンプルが取得されることになる。そして、二値化部280によって、ピーク位置におけるサンプルの振幅の符号が判別され、各サンプルが0又は1を示すデータに二値化される(ステップS106)。ここでは、例えばサンプルの振幅が正の値であれば「1」が再生され、サンプルの振幅が負の値であれば「0」が再生される。
このように、本実施の形態においては、複数のゼロクロスサンプルについて、最初のゼロクロスサンプルを基準とした各ゼロクロスサンプルまでの相対距離の平均値を算出し、各ゼロクロスサンプルを反映したゼロクロス点が決定される。そして、決定されたゼロクロス点から推定されるピーク位置のデータが再生される。このため、正確なゼロクロス点に基づく正確なピーク位置のデータを再生することができ、データ誤りを低減することができる。
次に、図4におけるステップS104の平均化処理について、図7に示すフロー図を参照しながら具体的に説明する。
平均化処理は、ゼロクロスサンプルのサンプル番号が平均化処理部250へ入力されると開始する。ゼロクロス検出部240から出力されるゼロクロスサンプルのサンプル番号は、剰余演算部310へ入力される。そして、剰余演算部310によって、ゼロクロスサンプルのサンプル番号に対する剰余演算が行われる(ステップS201)。すなわち、ゼロクロスサンプルのサンプル番号が1シンボル分のサンプル数で除算される場合の剰余が算出される。算出された剰余は、このゼロクロスサンプルの正規化されたサンプル番号となる。これにより、ゼロクロスサンプルのサンプル番号は、0から(1シンボル分のサンプル数−1)までの値になる。
なお、サンプル番号の正規化が行われるのは、以下の理由による。すなわち、ゼロクロスサンプルは、検出対象点を基準として検出され、検出対象点の半シンボル長後付近のサンプルである。このため、ゼロクロスサンプルのサンプル番号は、検出対象点のサンプル番号に半シンボル分のサンプル数を加算して算出される。例えば検出対象点が15OSであり、1シンボルが16サンプルに相当する場合、例えば23(=15+16/2)OSがゼロクロスサンプルとして検出される。このように、検出対象点のサンプル番号によっては、ゼロクロスサンプルのサンプル番号が1シンボル分のサンプル数以上となるため、剰余演算部310によってサンプル番号の正規化が行われる。上記の例では、23を16で割った場合の剰余が7であるため、サンプル番号が正規化された後のゼロクロスサンプルは7OSとなる。
剰余演算部310による剰余演算は、ゼロクロスサンプルのサンプル番号が入力される度に実行されるため、剰余演算が実行されると、検出回数カウント部360によって、ゼロクロスサンプルの検出回数がカウントアップされる(ステップS202)。すなわち、検出回数カウント部360によって、検出されたゼロクロスサンプルの数がカウントされる。そして、ウインドウ設定部320によって、検出回数が1回目であるか否かが判定され(ステップS203)、1回目であれば(ステップS203Yes)、1回目に検出されたゼロクロスサンプルを中心としたウインドウが設定される(ステップS204)。
具体的には、例えば図8に示すように、最初のゼロクロスサンプル501を中心として、全体の幅が1シンボル分のサンプル数より1小さいウインドウ502が設定される。すなわち、図8は1シンボルが16サンプルに相当する場合の例を示しているため、ウインドウ502の全体の幅は15OS分の幅である。そして、ウインドウ502の正方向の幅と負方向の幅とは均等である。ここでは全体の幅が15OS分の幅であるため、正方向の幅が7OS分であり、負方向の幅が8OS分である。
このように、最初のゼロクロスサンプル501を中心としたウインドウを設定することにより、ウインドウに入るゼロクロスサンプルについては、最初のゼロクロスサンプル501を基準とした相対距離を正確に算出することが可能となる。なお、ここでは、1シンボル分の0〜15OSすべてがゼロクロスサンプルになる可能性を考慮して、ウインドウ502の全体の幅を15OS分の幅とした。しかしながら、受信データの波形が良好であれば、通常は、2番目以降のゼロクロスサンプルも最初のゼロクロスサンプルの付近において検出される。このため、最初のゼロクロスサンプルと2番目以降のゼロクロスサンプルとの最大のずれが既知であれば、この最大のずれに応じてウインドウ502の幅を狭めても良い。また、同様の理由で、ウインドウ502の正方向の幅と負方向の幅とは必ずしも均等でなくても良い。
このようなウインドウ設定は、ゼロクロスサンプルの検出回数が2回以上である場合には(ステップS203No)行われない。すなわち、ウインドウ設定は、最初のゼロクロスサンプルを基準として行われ、2番目以降のゼロクロスサンプルについては行われない。したがって、剰余演算部310によって剰余演算が行われると、常に最初のゼロクロスサンプルを基準としたウインドウが設定済みとなる。
そこで、変換部330によって、設定済みのウインドウを用いたゼロクロスサンプルのサンプル番号の変換が行われる(ステップS205)。すなわち、変換部330によって、ゼロクロスサンプルがウインドウに入るか否かが判定され、ウインドウに入る場合には、このゼロクロスサンプルのサンプル番号はそのまま変換されない。したがって、例えばウインドウの基準となる最初のゼロクロスサンプルは必ずウインドウに入るため、最初のゼロクロスサンプルのサンプル番号は変換されない。
また、ウインドウに入らないゼロクロスサンプルについては、サンプル番号に1シンボル分のサンプル数が加算又は減算される。具体的には、最初のゼロクロスサンプルからウインドウの正方向の幅を超えた位置にあるゼロクロスサンプルのサンプル番号から1シンボル分のサンプル数が減算される。また、最初のゼロクロスサンプルからウインドウの負方向の幅を超えた位置にあるゼロクロスサンプルのサンプル番号に1シンボル分のサンプル数が加算される。これにより、すべてのゼロクロスサンプルがウインドウに入るように変換され、各ゼロクロスサンプルのサンプル番号は、最初のゼロクロスサンプルのサンプル番号と単純に比較可能な値となる。すなわち、最初のゼロクロスサンプルに近いゼロクロスサンプルほど、最初のゼロクロスサンプルのサンプル番号に近いサンプル番号を有する。
変換部330によるサンプル番号の変換が完了すると、相対距離算出部340によって、変換後のサンプル番号から最初のゼロクロスサンプルのサンプル番号が減算されることにより、最初のゼロクロスサンプルを基準とした相対距離が算出される(ステップS206)。ここで算出される相対距離は、最初のゼロクロスサンプルよりも正側にあるゼロクロスサンプルについては正の値となり、最初のゼロクロスサンプルよりも負側あるゼロクロスサンプルについては負の値となる。
そして、算出された相対距離は、累積加算部350によって累積加算される(ステップS207)。相対距離の累積加算は、各ゼロクロスサンプルに関して、最初のゼロクロスサンプルからのずれを累積することを意味している。
相対距離の算出及び累積加算と並行して、平均値算出部370によって、ゼロクロスサンプルの検出回数が所定回数に到達したか否かが監視される(ステップS208)。すなわち、平均値算出部370によって、検出回数カウント部360におけるカウントが所定数に達したか否かが判定される。ここで、所定回数は、最終的なゼロクロス点を決定するために用いるゼロクロスサンプルの検出回数であり、例えば3回などとあらかじめ決定されている。
そして、ゼロクロスサンプルの検出回数が所定回数に到達していない場合は(ステップS208No)、新たなゼロクロスサンプルを検出して相対距離の算出及び累積加算を繰り返すべく、図4に示したステップS101からの処理を再度実行する。一方、ゼロクロスサンプルの検出回数が所定回数に到達した場合は(ステップS208Yes)、平均値算出部370によって、累積加算部350における現時点での累積加算結果が取得され、平均値が算出される(ステップS209)。すなわち、平均値算出部370によって、累積加算結果が検出回数カウント部360におけるカウントで除算されることにより、各ゼロクロスサンプルに関する相対距離の平均値が算出される。上述したように、相対距離の累積加算は、各ゼロクロスサンプルの最初のゼロクロスサンプルからのずれを累積することを意味するため、平均値は、最初のゼロクロスサンプルからのずれの平均値に相当する。
そして、ゼロクロス点決定部380によって、ウインドウの中心である最初のゼロクロスサンプルと算出された平均値とが用いられることにより、最終的なゼロクロス点が決定される(ステップS210)。すなわち、ゼロクロス点決定部380によって、最初のゼロクロスサンプルのサンプル番号に平均値が加算され、この加算結果に最も近いサンプル番号を有するサンプルがゼロクロス点に決定される。
このように、本実施の形態に係る平均化処理では、最初のゼロクロスサンプルを中心としたウインドウを設定し、2番目以降のゼロクロスサンプルがウインドウに入るようにサンプル番号を変換する。そして、変換されたサンプル番号に基づいて、最初のゼロクロスサンプルを基準とした各ゼロクロスサンプルまでの相対距離を平均化する。このため、検出時の各ゼロクロスサンプルのサンプル番号に拘らず、最初のゼロクロスサンプルからのずれを正しく平均化して、正確なゼロクロス点を決定することができる。
次に、ゼロクロス点を決定する具体例について図9及び図10を参照して説明する。以下では、1シンボルが16サンプルに相当するものとし、3つのゼロクロスサンプルを利用してゼロクロス点を決定する場合について説明する。
図9は、検出される3つのゼロクロスサンプルを示す図である。すなわち、図9(a)は、検出対象点601が8OSに設定され、この検出対象点601から9OS後の17(=8+9)OSがゼロクロスサンプル602として検出されたことを示す。また、図9(b)は、検出対象点603が6OSに設定され、この検出対象点603から9OS後の15(=6+9)OSがゼロクロスサンプル604として検出されたことを示す。さらに、図9(c)は、検出対象点605が10OSに設定され、この検出対象点605から9OS後の19(=10+9)OSがゼロクロスサンプル606として検出されたことを示す。なお、図9においては、横軸の時間を1シンボル分の16OS周期で示しているが、上述したように、検出対象点のサンプル番号を基準としてゼロクロスサンプルが検出されるため、ゼロクロスサンプルのサンプル番号は16以上となることがある。また、図9(a)に示すゼロクロスサンプル602が最初のゼロクロスサンプルであり、図9(b)、(c)に示すゼロクロスサンプル604、606がそれぞれ2番目、3番目のゼロクロスサンプルであるものとする。
このように検出された各ゼロクロスサンプルのサンプル番号は、剰余演算部310による剰余演算によって正規化される。ここでは、各サンプル番号を16で割った場合の剰余が算出され、各ゼロクロスサンプルのサンプル番号となる。したがって、ゼロクロスサンプル602は1(=17 mod 16:ただし、modは剰余演算を示す)OSとなり、ゼロクロスサンプル604は15(=15 mod 16)OSとなり、ゼロクロスサンプル606は3(=19 mod 16)OSとなる。
ここではゼロクロスサンプル602が最初のゼロクロスサンプルであるため、ウインドウ設定部320によって、ゼロクロスサンプル602を基準としたウインドウが設定される。このウインドウは、例えば正方向に7OS分の幅を有し、負方向に8OS分の幅を有する。そして、変換部330によって、ゼロクロスサンプル604、606がウインドウに入るか否かが判定され、ウインドウに入らないゼロクロスサンプルのサンプル番号が変換される。
図10は、ゼロクロスサンプルのサンプル番号の変換を示す図である。すなわち、図10(a)は、ゼロクロスサンプル602を中心としたウインドウ502とゼロクロスサンプル604とを示す。この図に示すように、ゼロクロスサンプル604は15OSであるため、1OSを中心としたウインドウ502の正方向の幅を超えた位置にある。このため、変換部330によって、ゼロクロスサンプル604のサンプル番号から1シンボル分のサンプル数が減算され、ゼロクロスサンプル604は−1(=15−16)OSに変換される。このように、ゼロクロスサンプル604は、ゼロクロスサンプル602からウインドウ502の正方向の幅を超えた位置にあるため、シンボル長単位で負方向へ移動させる変換が行われることによりウインドウ502内へ移動する。同様に、基準となるゼロクロスサンプルからウインドウの負方向の幅を超えた位置にあるゼロクロスサンプルは、シンボル長単位で正方向へ移動させる変換が行われることによりウインドウ内へ移動する。
一方、図10(b)は、ゼロクロスサンプル602を中心としたウインドウ502とゼロクロスサンプル606とを示す。この図に示すように、ゼロクロスサンプル606は3OSであるため、1OSを中心としたウインドウ502の正方向の幅を超えない位置にある。このため、変換部330によって、ゼロクロスサンプル606のサンプル番号が変換されることはなく、ゼロクロスサンプル606は3OSのままとされる。
このようにゼロクロスサンプル604、606の変換が行われることにより、ゼロクロスサンプル602、604、606は、それぞれ1OS、−1OS、3OSとなる。これらのサンプル番号は、各ゼロクロスサンプルの相対的な位置を正確に表す値であり、単純に減算することでゼロクロスサンプル間の相対距離を算出することができる。そこで、相対距離算出部340によって、ゼロクロスサンプル602とゼロクロスサンプル604、606それぞれとの間の相対距離が算出される。具体的には、ゼロクロスサンプル602とゼロクロスサンプル604との間の相対距離は−2(=−1−1)であり、ゼロクロスサンプル602とゼロクロスサンプル606との間の相対距離は2(=3−1)である。
これらの相対距離は、累積加算部350によって累積加算される。したがって、3つのゼロクロスサンプル602、604、606が検出された時点では、累積加算部350における累積加算結果は、0(=−2+2)となっている。また、この時点では、検出回数カウント部360によってカウントされる検出回数が所定回数の3回に到達しているため、平均値算出部370によって、累積加算部350における累積加算結果が検出回数で除算されて平均値が算出される。つまり、平均値算出部370によって相対距離の平均値が0(=0/3)と算出される。この結果、ゼロクロス点決定部380によって、ゼロクロスサンプル602のサンプル番号である1に相対距離の平均値である0が加算され、ゼロクロス点のサンプル番号が1であると決定される。すなわち、最終的なゼロクロス点は、1OSと決定される。このゼロクロス点は、ゼロクロスサンプル602、604、606のいずれからも近い位置にあり、妥当な結果であることがわかる。
以上のように、本実施の形態によれば、複数のゼロクロスサンプルを検出し、1つのゼロクロスサンプルを基準としたウインドウ内に入るように他のゼロクロスサンプルのサンプル番号を変換する。そして、基準のゼロクロスサンプルから変換後の各ゼロクロスサンプルまでの相対距離の平均値を算出し、基準のゼロクロスサンプルと相対距離の平均値とから最終的なゼロクロス点を決定する。このため、各ゼロクロスサンプルの相対的な位置を正しく反映してゼロクロス点のサンプル番号を算出することができ、正確なゼロクロス点を決定することができる。
なお、上記一実施の形態においては、最初のゼロクロスサンプルを基準としてウインドウを設定するものとした。しかしながら、例えばバッファ部220の容量が大きく、多数のサンプルを一時的に記憶することができ、処理時間にも余裕がある場合には、2番目以降のゼロクロスサンプルを基準としてウインドウを設定しても良い。すなわち、複数のゼロクロスサンプルのうち、いずれか1つのゼロクロスサンプルを基準としたウインドウを設定し、このウインドウに入るように他のゼロクロスサンプルを移動させるようにしても良い。
また、上記一実施の形態において説明したデータ再生処理をコンピュータが実行可能なプログラムとして記述することも可能である。このプログラムは、例えば図1に示したプロセッサ150によってメモリ160が利用されることにより実行されても良い。また、このプログラムをコンピュータが読み取り可能な記録媒体に格納し、コンピュータに導入することも可能である。コンピュータが読み取り可能な記録媒体としては、例えばCD−ROM、DVDディスク、USBメモリなどの可搬型記録媒体や、例えばフラッシュメモリなどの半導体メモリが挙げられる。