(57)【要約】      （修正有）【課題】異なる二つのクロックのサンプリングレート間で高精度で変換を行うサンプリングレート変換装置および方法を提供する。【解決手段】第１クロック信号で第１データを格納、第２クロック信号で第１データを第２データとして出力のＦＩＦＯは、直前に書込の第１データをライト制御信号で格納し、リード制御信号で第２データを出力。第１クロック信号の現在期間での計測で第１現在クロック周波数値を、第１現在クロック周波数値と前回予測クロック周波数値から現在予測クロック周波数値を生成、現在予測クロック周波数値を次回期間で前回予測クロック周波数値として使用の周波数検出部を備え、第１データを入力してＦＩＦＯに出力、第２クロック信号を現在期間での計測で生成の第２現在クロック周波数値と、現在予測クロック周波数値とからライト制御信号とリード制御信号を生成してＦＩＦＯに出力の演算部を備えるサンプリングレート変換装置で実行。【選択図】図２
2005217664.tif 000002
【特許請求の範囲】
【請求項１】
第１のサンプリングレートによりサンプリングされた第１データを第２のサンプリングレートによりサンプリングされた第２データに変換するサンプリングレート変換装置において、
第１クロック信号に応答して、第１データを格納し、
第２クロック信号に応答して、前記第１データを第２データとして出力するＦＩＦＯと、前記ＦＩＦＯは、直前に書込まれた前記第１データを前記第１データに更新するべきか否かを示すライト制御信号に基づいて前記第１データを格納し、読み出された第２データが次回期間にも読み出されるべきか否かを示すリード制御信号に基づいて読み出された第２データを出力し、
現在期間に対する第２現在クロック周波数値と現在予測クロック周波数値とから前記ライト制御信号と前記リード制御信号を生成して前記ＦＩＦＯに出力する演算部とを具備し、
前記第２現在クロック周波数値は、前記現在期間における前記第２クロック信号の周波数の計測値であり、
前記現在予測クロック周波数値は、現在期間における前記第１クロック信号の周波数の予測値を表すサンプリングレート変換装置。
【請求項２】
第１のサンプリングレートによりサンプリングされた第１データを第２のサンプリングレートによりサンプリングされた第２データに変換するサンプリングレート変換装置において、
第１クロック信号に応答して、第１データを格納し、
第２クロック信号に応答して、前記第１データを第２データとして出力するＦＩＦＯと、前記ＦＩＦＯは、直前に書込まれた前記第１データを前記第１データに更新するべきか否かを示すライト制御信号に基づいて前記第１データを格納し、読み出された第２データが次回期間にも読み出されるべきか否かを示すリード制御信号に基づいて読み出された第２データを出力し、
前記第１クロック信号を現在期間において計測して第１現在クロック周波数値を生成し、前記第１現在クロック周波数値と前回予測クロック周波数値から現在予測クロック周波数値を生成し、前記現在予測クロック周波数値を次回期間において前記前回予測クロック周波数値として使用する周波数検出部と、
前記第２クロック信号を前記現在期間において計測することによって生成された第２現在クロック周波数値と、前記現在予測クロック周波数値とから前記ライト制御信号と前記リード制御信号を生成して前記ＦＩＦＯに出力する演算部
を具備する、
サンプリングレート変換装置。
【請求項３】
請求項１または２に記載のサンプリングレート変換装置において、
第１現在クロック周波数値は、前記第１クロック信号に変えて前記第２クロック信号を前記現在期間において計測することによって生成され、前記第１現在クロック周波数値と前回予測クロック周波数値から現在予測クロック周波数値を生成し、前記現在予測クロック周波数値を次回期間において前記前回予測クロック周波数値とし、
前記演算部は、前記第２クロック信号に変えて前記第１クロック信号を前記現在期間において計測することによって生成された第２現在クロック周波数値と、前記現在予測クロック周波数値とから前記ライト制御信号と前記リード制御信号を生成して前記ＦＩＦＯに出力する
サンプリングレート変換装置。
【請求項４】
請求項１乃至３の何れか１項に記載のサンプリングレート変換装置において、
前記ＦＩＦＯは、ライトポインタとリードポインタを有し、
前記第１データが前記ライトポインタにより指定された領域に格納されたとき、前記ライトポインタはインクリメントされ、前記第２データが前記リードポインタにより指定された領域から読み出されたとき、前記リードポインタはインクリメントされ、
前記ライト制御信号は、前記ライトポインタのインクリメントの禁止を制御し、
前記リード制御信号は、前記リードポインタのインクリメントの禁止を制御する
サンプリングレート変換装置。
【請求項５】
請求項１乃至４の何れか１項に記載のサンプリングレート変換装置において、
周波数測定期間である前記現在期間の時間間隔が、所定値よりも大きいと予想される前記第1クロック信号に対しては短く、前記所定値よりも小さいと予想される前記第1クロック信号に対しては長い
サンプリングレート変換装置。
【請求項６】
請求項２乃至５の何れか１項に記載のサンプリングレート変換装置において、
前記周波数検出部は、前記前回予測クロック周波数値と前記第１現在クロック周波数値との差と、前回累積誤差とに基づいて、現在までの累積誤差である現在累積誤差を決定する
サンプリングレート変換装置。
【請求項７】
請求項６に記載のサンプリングレート変換装置において、
前記周波数検出部は、前記現在期間において、前記前回累積誤差を前記現在累積誤差に更新し、
前記現在累積誤差は次回期間において前記前回累積誤差として使用される
サンプリングレート変換装置。
【請求項８】
請求項２乃至７の何れか１項に記載のサンプリングレート変換装置において、
前記周波数検出部は、前記第１現在クロック周波数値と前記現在累積誤差をｋ倍（０＜ｋ≦１）した値とに基づいて前記現在予測クロック周波数値を決定する
サンプリングレート変換装置。
【請求項９】
請求項８に記載のサンプリングレート変換装置において、
前記ｋは、前記現在予測クロック周波数値が前記第１現在クロック周波数値に近づく速度を制御するためのパラメータであり、
前記周波数検出部は、クロック周波数の変動の度合いに基づいて前記ｋの値を決定する
サンプリングレート変換装置。
【請求項１０】
第１のサンプリングレートによりサンプリングされた第１データを第２のサンプリングレートによりサンプリングされた第２データに変換するサンプリングレート変換方法において、
第１クロック信号に応答して、第１データを格納するステップと、
第２クロック信号に応答して、前記第１データを第２データとして出力するステップと、
直前に書込まれた前記第１データを前記第１データに更新するべきか否かを示すライト制御信号に基づいて前記第１データを格納するステップと、
読み出された第２データが次回期間にも読み出されるべきか否かを示すリード制御信号に基づいて第２データを読み出すステップと、
現在期間に対する前記第２クロック信号の周波数の計測値である第２現在クロック周波数値と、前記第１クロック信号の周波数の予測値を表す現在予測クロック周波数値とから前記ライト制御信号と前記リード制御信号を生成して出力するステップ
を具備するサンプリングレート変換方法。
【請求項１１】
第１のサンプリングレートによりサンプリングされた第１データを第２のサンプリングレートによりサンプリングされた第２データに変換するサンプリングレート変換方法において、
第１クロック信号に応答して、第１データを格納するステップと、
第２クロック信号に応答して、前記第１データを第２データとして出力するステップと、直前に書込まれた前記第１データを前記第１データに更新するべきか否かを示すライト制御信号に基づいて前記第１データを格納するステップと、
読み出された第２データが次回期間にも読み出されるべきか否かを示すリード制御信号に基づいて読み出された第２データを出力するステップと、
前記第１クロック信号を現在期間において計測して第１現在クロック周波数値を生成するステップと、
前記第１現在クロック周波数値と前回予測クロック周波数値から現在予測クロック周波数値を生成するステップと、
前記現在予測クロック周波数値を次回期間において前記前回予測クロック周波数値として使用するステップと、
前記第２クロック信号を前記現在期間において計測することによって生成された第２現在クロック周波数値と、前記現在予測クロック周波数値とから前記ライト制御信号と前記リード制御信号を生成するステップ
を具備するサンプリングレート変換方法。
【請求項１２】
請求項１０または１１に記載のサンプリングレート変換方法において、
前記第１クロック信号に変えて前記第２クロック信号を前記現在期間において計測して第１現在クロック周波数値を生成するステップと、
前記第１現在クロック周波数値と前回予測クロック周波数値から現在予測クロック周波数値を生成するステップと、
前記現在予測クロック周波数値を次回期間において前記前回予測クロック周波数値とするステップと、
前記第２クロック信号に変えて前記第１クロック信号を前記現在期間において計測することによって生成された第２現在クロック周波数値と、前記現在予測クロック周波数値とから前記ライト制御信号と前記リード制御信号を生成して出力するステップ
を具備するサンプリングレート変換方法。
【請求項１３】
請求項１０乃至１２の何れか１項に記載のサンプリングレート変換方法において、
前記第１データがライトポインタにより指定された領域に格納されたとき、前記ライトポインタがインクリメントされるステップと、
前記第２データがリードポインタにより指定された領域から読み出されたとき、前記リードポインタがインクリメントされるステップと、
前記ライト制御信号により、前記ライトポインタのインクリメントの禁止を制御するステップと、
前記リード制御信号により、前記リードポインタのインクリメントの禁止を制御するステップ
を具備するサンプリングレート変換方法。
【請求項１４】
請求項１０乃至１３の何れか１項に記載のサンプリングレート変換方法において、
周波数測定期間である前記現在期間の時間間隔が、所定値よりも大きいと予想される前記第1クロック信号に対しては短く、前記所定値よりも小さいと予想される前記第1クロック信号に対しては長い
サンプリングレート変換方法。
【請求項１５】
請求１０乃至１４の何れか１項に記載のサンプリングレート変換方法において、
前記前回予測クロック周波数値と前記第１現在クロック周波数値との差と、前回累積誤差とに基づいて現在までの累積誤差である現在累積誤差を決定するステップ
を具備するサンプリングレート変換方法。
【請求項１６】
請求項１５に記載のサンプリングレート変換方法において、
前記現在期間において、前記前回累積誤差を前記現在累積誤差に更新するステップと、
前記現在累積誤差は次回期間において前記前回累積誤差として使用されるステップ
を具備するサンプリングレート変換方法。
【請求項１７】
請求項１０乃至１６に記載のサンプリングレート変換方法において、
前記第１現在クロック周波数値と前記現在累積誤差をｋ倍（０＜ｋ≦１）した値とに基づいて前記現在予測クロック周波数値を決定する
サンプリングレート変換方法。
【請求項１８】
請求項１７に記載のサンプリングレート変換方法において、
前記ｋは、前記現在予測クロック周波数値が前記第１現在クロック周波数値に近づく速度を制御するためのパラメータであり、
クロック周波数の変動の度合いに基づいて決定される
サンプリングレート変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サンプリングレート変換装置に関し、特に、周波数も発生源も異なる二つのクロックを用いるサンプリングレート間におけるサンプリングレート変換を行う装置及びその方法に関する。
【背景技術】
【０００２】
アナログ信号である音声データをデジタル信号へ変換（ＡＤ変換）する場合に、所定の時間に所定回数のサンプリングを行うことにより、その音声データをデジタル化する技術が知られている。音声信号の場合、サンプリング周波数が高いほど高い音の記録が可能となり、サンプリングレートの半分にあたる周波数成分までなら完全に元のアナログ信号に復元することができる。
【０００３】
サンプリングレートが低いほど、データ量を低減することが可能になるので、採取元のアナログ信号によっては、低いサンプリングレートでその音源からの信号をデジタルデータとして記録することが有効である場合が存在する。あるサンプリングレートでデジタル化された音声信号を、そのサンプリングレートに対応しない装置で再生しようとする場合、サンプリングレートが異なるために再生が不可能な場合が存在する。そのような不具合を解消するために、あるサンプリングレートでデジタル化された音声信号を異なるサンプリングレートのデジタル音声信号に変換する技術が知られている（例えば、特許文献１参照）。
【０００４】
図１は、特許文献１に記載されているサンプリングレート変換装置の構成を示すブロック図である。図１記載のクロック周波数が異なる２つのクロック間のサンプリングレート変換では、温度ドリフトや発振子のジッタ特性に依存してそれぞれのクロック周波数がダイナミックに変動する。このサンプリングレート変換装置は、周波数比検出部Ｊ２により入力用クロックと出力用クロックの周波数比Ｒを算出し、その結果をもとにｆｓ変換演算部Ｊ１によりサンプリングレート変換を行っている。
周波数比Ｒは、出力クロックを基準として入力クロックの立ち上がりエッジのカウント値に基づいて、つまり実測値に基づいて求められる。
【０００５】
この周波数比検出部Ｊ２だけでは入力用クロック周波数の緩やかな変化に対応できずに誤差が蓄積し、その結果ＦＩＦＯＪ３においてアンダーランやオーバーランが発生してしまう可能性がある。そこで余裕度検出部Ｊ６を設けてＦＩＦＯＪ３の状態をｆｓ変換演算部Ｊ１にフィードバックすることで、ＦＩＦＯＪ３におけるアンダーランやオーバーランを防止している。
【０００６】
特許文献１に記載の技術は、周波数比発生部Ｊ２と余裕度検出部Ｊ６の２箇所から補正部Ｊ５に対して制御が行われる。また、図１に示される構成は、余裕度検出部６からｆｓ変換演算部１への制御はフィードバックループとなっている。このような構成は回路の動作が不安定になることがある。また、補正データ発生部Ｊ４、補正部Ｊ５、余裕度検出部Ｊ６などの回路ブロックが必要となるため、装置の規模が大きくなってしまう。
【０００７】
ＦＩＦＯＪ３におけるアンダーランやオーバーランを防止しつつ構造が簡易で、且つ、精度が高いサンプリングレート変換装置が望まれる。
【０００８】
【特許文献１】特開平１１−１１２４４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明が解決しようとする課題は、周波数も発生源も異なる二つのクロックに基づくサンプリングレート間で高い精度で変換を行うサンプリングレート変換装置およびサンプリングレート変換方法を提供することにある。
【００１０】
本発明が解決しようとする他の課題は、簡易な回路で構成されたサンプリングレート変換装置を提供することにある。
【課題を解決するための手段】
【００１１】
以下に、［発明を実施するための最良の形態］で使用される符号または用語を用いて、課題を解決するための手段を説明する。これらの符号または用語は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの符号または用語を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１２】
第１のサンプリングレートによりサンプリングされた第１データを第２のサンプリングレートによりサンプリングされた第２データに変換するサンプリングレート変換装置において
第１クロック信号（ｃｌｋ１）に応答して、第１データを格納し、第２クロック信号（ｃｌｋ２）に応答して、前記第１データを第２データとして出力するＦＩＦＯ（３）と、前記ＦＩＦＯ（３）は、直前に書込まれた前記第１データを前記第１データに更新するべきか否かを示すライト制御信号（ｄｉｓａｂｌｅフラグ）に基づいて前記第１データを格納し、読み出された第２データが次回期間にも読み出されるべきか否かを示すリード制御信号（ｈｏｌｄフラグ）に基づいて読み出された第２データを出力し、
前記第１データを入力して前記ＦＩＦＯ（３）に出力し、現在期間に対する第２現在クロック周波数値と現在予測クロック周波数値（ｆ（ｉ））とから前記ライト制御信号（ｄｉｓａｂｌｅフラグ）と前記リード制御信号（ｈｏｌｄフラグ）を生成して前記ＦＩＦＯ（３）に出力する演算部（１）とを具備し、
前記第２現在クロック周波数値は、前記現在期間における前記第２クロック信号（ｃｌｋ２）の周波数の計測値であり、前記現在予測クロック周波数値（ｆ（ｉ））は、現在期間における前記第１クロック信号（ｃｌｋ１）の周波数の予測値を表すサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００１３】
第１のサンプリングレートによりサンプリングされた第１データを第２のサンプリングレートによりサンプリングされた第２データに変換するサンプリングレート変換装置において
第１クロック信号（ｃｌｋ１）に応答して、第１データを格納し、第２クロック信号（ｃｌｋ２）に応答して、前記第１データを第２データとして出力するＦＩＦＯ（３）と、前記ＦＩＦＯ（３）は、直前に書込まれた前記第１データを前記第１データに更新するべきか否かを示すライト制御信号（ｄｉｓａｂｌｅフラグ）に基づいて前記第１データを格納し、読み出された第２データが次回期間にも読み出されるべきか否かを示すリード制御信号（ｈｏｌｄフラグ）に基づいて読み出された第２データを出力し、
前記第１データを入力して前記ＦＩＦＯ（３）に出力し、前記第１クロック信号（ｃｌｋ１）を現在期間において計測して第１現在クロック周波数値（ｇ（ｉ））を生成し、前記第１現在クロック周波数値（ｇ（ｉ））と前回予測クロック周波数値（ｆ（ｉ−１））から現在予測クロック周波数値（ｆ（ｉ））を生成し、前記現在予測クロック周波数値（ｆ（ｉ））を次回期間において前記前回予測クロック周波数値（ｆ（ｉ−１））として使用する周波数検出部（２）と、
前記第２クロック信号（ｃｌｋ２）を前記現在期間において計測することによって生成された第２現在クロック周波数値と、前記現在予測クロック周波数値（ｆ（ｉ））とから前記ライト制御信号（ｄｉｓａｂｌｅフラグ）と前記リード制御信号（ｈｏｌｄフラグ）を生成して前記ＦＩＦＯ（３）に出力する演算部（１）とを具備するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００１４】
そのサンプリングレート変換装置において、前記周波数検出部（２）は、前記第１クロック信号（ｃｌｋ１）に変えて前記第２クロック信号（ｃｌｋ２）を前記現在期間において計測して前記第１現在クロック周波数値（ｇ（ｉ））を生成し、前記演算部（１）は前記第２クロック信号（ｃｌｋ２）に変えて前記第１クロック信号（ｃｌｋ１）を前記現在期間において計測して前記第２現在クロック周波数値を生成するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００１５】
これによって、一定期間測定したクロック数から周波数の変動をリアルタイムに検出することが可能になる。また前回算出した予測周波数と今回実際に計測した周波数との累積誤差を算出することが可能になり、累積誤差が０に近づくように予測周波数値を算出することで、長時間装置を動作させた場合でも正確な周波数比を用いたサンプリングレート変換が可能になる。
【００１６】
そのサンプリングレート変換装置において、前記ＦＩＦＯ（３）は、ライトポインタとリードポインタを有し、前記第１データが前記ライトポインタにより指定された領域に格納されたとき、前記ライトポインタはインクリメントされ、前記第２データが前記リードポインタにより指定された領域から読み出されたとき、前記リードポインタはインクリメントされ、前記ライト制御信号（ｄｉｓａｂｌｅフラグ）は、前記ライトポインタのインクリメントの禁止を制御し、前記リード制御信号（ｈｏｌｄフラグ）は、前記リードポインタのインクリメントの禁止を制御するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００１７】
そのサンプリングレート変換装置において、周波数測定期間である前記現在期間の時間間隔は、変動の度合いが激しいと予想される前記第1クロック信号に対しては短く、変動の度合いが激しくないと予想される前記第1クロック信号に対しては長いサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００１８】
そのサンプリングレート変換装置において、前記周波数検出部（２）は、前記前回予測クロック周波数値（ｆ（ｉ−１））と前記第１現在クロック周波数値（ｇ（ｉ））との差と、前回累積誤差Δ（ｉ−１）に基づいて現在までの累積誤差である現在累積誤差Δ（ｉ）を決定し、前回累積誤差Δ（ｉ−１）を、決定したその現在累積誤差Δ（ｉ）に更新し、前記現在累積誤差Δ（ｉ）は次回期間において前記前回累積誤差Δ（ｉ−１）として使用されるサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００１９】
そのサンプリングレート変換装置において、前記周波数検出部（２）は、前記第１現在クロック周波数値（ｇ（ｉ））と前記現在累積誤差Δ（ｉ）のｋ倍（０＜ｋ≦１）した値とに基づいて前記現在予測クロック周波数値（ｆ（ｉ））を決定するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００２０】
そのサンプリングレート変換装置において、前記ｋは、前記現在予測クロック周波数値（ｆ（ｉ））が前記第１現在クロック周波数値（ｇ（ｉ））に近づく速度を制御するためのパラメータであり、前記周波数検出部（２）は、クロック周波数の変動の度合いに基づいて前記ｋの値を決定するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００２１】
このような値（ｋ）を用いることで、例えば実際のクロックの周波数値が振動しているような場合には予測周波数の振動を抑えるようにｋの値を小さく設定することで、予測周波数を安定させることができる。また、実際のクロックの周波数値が急に大きく変動してしまうような場合には、予測周波数が実測周波数の変動に追従できるようにｋの値を大きく設定することで、予測周波数を安定させることができる。
【００２２】
第１のサンプリングレートによりサンプリングされた第１データを第２のサンプリングレートによりサンプリングされた第２データに変換するサンプリングレート変換方法において、
第１クロック信号（ｃｌｋ１）に応答して、第１データを格納するステップと、
第２クロック信号（ｃｌｋ２）に応答して、前記第１データを第２データとして出力するステップと、
直前に書込まれた前記第１データを前記第１データに更新するべきか否かを示すライト制御信号（ｄｉｓａｂｌｅフラグ）に基づいて前記第１データを格納するステップと、
読み出された第２データが次回期間にも読み出されるべきか否かを示すリード制御信号（ｈｏｌｄフラグ）に基づいて第２データを読み出すステップと、
現在期間に対する前記第２クロック信号（ｃｌｋ２）の周波数の計測値である第２現在クロック周波数値と、前記第１クロック信号（ｃｌｋ１）のクロック信号の周波数の予測値を表す現在予測クロック周波数値（ｆ（ｉ））とから前記ライト制御信号（ｄｉｓａｂｌｅフラグ）と前記リード制御信号（ｈｏｌｄフラグ）を生成して出力するステップ
を具備するサンプリングレート変換方法を使用してサンプリングレート変換を行う。
【００２３】
第１のサンプリングレートによりサンプリングされた第１データを第２のサンプリングレートによりサンプリングされた第２データに変換するサンプリングレート変換方法において、
第１クロック信号（ｃｌｋ１）に応答して、第１データを格納するステップと、
第２クロック信号（ｃｌｋ２）に応答して、前記第１データを第２データとして出力するステップと、直前に書込まれた前記第１データを前記第１データに更新するべきか否かを示すライト制御信号（ｄｉｓａｂｌｅフラグ）に基づいて前記第１データを格納するステップと、
読み出された第２データが次回期間にも読み出されるべきか否かを示すリード制御信号（ｈｏｌｄフラグ）に基づいて読み出された第２データを出力するステップと、
前記第１クロック信号（ｃｌｋ１）を現在期間において計測して第１現在クロック周波数値（ｇ（ｉ））を生成するステップと、
前記第１現在クロック周波数値（ｇ（ｉ））と前回予測クロック周波数値（ｆ（ｉ−１））から現在予測クロック周波数値（ｆ（ｉ））を生成するステップと、
前記現在予測クロック周波数値（ｆ（ｉ））を次回期間において前記前回予測クロック周波数値（ｆ（ｉ−１））として使用するステップと、
前記第２クロック信号（ｃｌｋ２）を前記現在期間において計測することによって生成された第２現在クロック周波数値と、前記現在予測クロック周波数値（ｆ（ｉ））とから前記ライト制御信号（ｄｉｓａｂｌｅフラグ）と前記リード制御信号（ｈｏｌｄフラグ）を生成するステップ
を具備するサンプリングレート変換方法を使用してサンプリングレート変換を行う。
【００２４】
そのサンプリングレート変換方法において、
前記第１クロック信号（ｃｌｋ１）に変えて前記第２クロック信号（ｃｌｋ２）を前記現在期間して前記第１現在クロック周波数値（ｇ（ｉ））を生成するステップと、
前記第２クロック信号（ｃｌｋ２）に変えて前記第１クロック信号（ｃｌｋ１）を前記現在期間において計測して前記第２クロック周波数値を生成するステップ
を具備するサンプリングレート変換方法を使用してサンプリングレート変換を行う。
【００２５】
そのサンプリングレート変換方法において、
前記第１データがライトポインタにより指定された領域に格納されたとき、前記ライトポインタがインクリメントされるステップと、
前記第２データがリードポインタにより指定された領域から読み出されたとき、前記リードポインタがインクリメントされるステップと、
前記ライト制御信号（ｄｉｓａｂｌｅフラグ）により、前記ライトポインタのインクリメントの禁止を制御するステップと、
前記リード制御信号（ｈｏｌｄフラグ）により、前記リードポインタのインクリメントの禁止を制御するステップ
を具備するサンプリングレート変換方法を使用してサンプリングレート変換を行う。
【００２６】
そのサンプリングレート変換方法において、
周波数測定期間である前記現在期間の時間間隔は、変動の度合いが激しいと予想される前記第1クロック信号に対しては短く、変動の度合いが激しくないと予想される前記第1クロック信号に対しては長い
サンプリングレート変換方法を使用してサンプリングレート変換を行う。
【００２７】
そのサンプリングレート変換方法において、
前記前回予測クロック周波数値（ｆ（ｉ−１））と前記第１現在クロック周波数値（ｇ（ｉ））との差と前回累積誤差Δ（ｉ−１）に基づいて現在までの累積誤差である現在累積誤差Δ（ｉ）を決定し、前回累積誤差Δ（ｉ−１）を、決定したその現在累積誤差Δ（ｉ）に更新するステップと、
前記現在累積誤差Δ（ｉ）は次回期間において前記前回累積誤差Δ（ｉ−１）として使用されるステップ
を具備するサンプリングレート変換方法を使用してサンプリングレート変換を行う。
【００２８】
そのサンプリングレート変換方法において、
前記第１現在クロック周波数値（ｇ（ｉ））と前記現在累積誤差Δ（ｉ）のｋ倍（０＜ｋ≦１）した値とに基づいて前記現在予測クロック周波数値（ｆ（ｉ））を決定するサンプリングレート変換方法を使用してサンプリングレート変換を行う。
【００２９】
そのサンプリングレート変換方法において、前記ｋは、前記現在予測クロック周波数値ｆ（ｉ）が前記第１現在クロック周波数値ｇ（ｉ）に近づく速度を制御するためのパラメータであり、
クロック周波数の変動の度合いに基づいて決定されるサンプリングレート変換方法を使用してサンプリングレート変換を行う。
【００３０】
また、上記の解決手段を別の表現で述べるならば、第１クロック信号（ｃｌｋ１）と第２クロック信号（ｃｌｋ２）とが入力され、前記第１クロック信号（ｃｌｋ１）を現在期間において計測し、前記計測により算出された第１現在クロック周波数値（ｇ（ｉ））と、予め予測された前回予測クロック周波数値（ｆ（ｉ−１））と、前回累積誤差（Δ（ｉ−１））とに基づいて現在累積誤差（Δ（ｉ））を算出する周波数検出手段（２）と、前記周波数検出手段（２）は前回予測クロック周波数値（ｆ（ｉ−１））と第２クロック信号（ｃｌｋ２）を前記現在期間において計測することによって生成された第２現在クロック周波数値を出力し、
第１サンプリングレートでデジタル化された第１データを第２サンプリングレートに対応する第２データに変換するための演算を行う演算手段（１）と、前記演算手段（１）は前記前回予測クロック周波数値（ｆ（ｉ−１））と前記第２現在クロック周波数値を入力し、前記前回予測クロック周波数値（ｆ（ｉ−１））と前記第２現在クロック周波数値とに対応して前記演算を実行し、
前記第１クロック信号（ｃｌｋ１）に同期して入力された前記第１データを、前記演算手段（１）の出力に基づいて前記第２クロック信号（ｃｌｋ２）に同期して出力するＦＩＦＯ（３）とを備え、
前記周波数検出手段（２）は、前記現在期間の経過に応答して前記現在累積誤差（Δ（ｉ））と前記第１現在クロック周波数値（ｇ（ｉ））に対応する現在予測クロック周波数値を算出し、前記現在予測クロック周波数値ｆ（ｉ）を次回期間において前記前回予測クロック周波数値（ｆ（ｉ−１））として使用するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３１】
そのサンプリングレート変換装置において、前記周波数検出手段（２）は、０より大きく１以下の範囲の任意の乗算値を設定され、前記現在累積誤差（Δ（ｉ））に前記乗算値を乗算した値に前記第１現在クロック周波数値（ｇ（ｉ））を加算し、前記加算結果を前記現在予測クロック周波数値ｆ（ｉ）とするサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３２】
そのサンプリングレート変換装置において、前記演算手段（１）は前記第１クロック信号（ｃｌｋ１）の周波数変動度合いを検知し、検出結果に基づいて前記乗算値の値を決定するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３３】
予測クロック周波数値と第２クロック周波数値とが入力され、第１クロック信号（ｃｌｋ１）に同期して前記予測クロック周波数値を累積加算した値を保持する第１累積加算部と、
前記第１クロック信号（ｃｌｋ１）に同期して前記第２クロック周波数値を累積加算した値を保持する第２累積加算部と、前記第１累積加算部出力と前記第２累積加算部出力を比較し、前記第１累積加算部出力が前記第２累積加算部出力より小さい場合に保持フラグをアクティブにする第１比較部とを備える演算手段（１）と、
前記第１クロック信号（ｃｌｋ１）に同期して入力された第１データを、前記第１比較部出力に基づいて前記第２クロック信号（ｃｌｋ２）に同期して出力するＦＩＦＯ（３）とを具備する、サンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３４】
そのサンプリングレート変換装置において、前記演算手段（１）は前記第１累積加算部出力と前記第２累積加算部出力を比較し、前記第２累積加算部出力が前記第１累積加算部出力より小さい場合に待機フラグをアクティブにする第２比較部を備え、前記ＦＩＦＯ（３）は前記第１比較部出力と前記第２比較部出力に基づいて前記第１データを前記第２クロック信号（ｃｌｋ２）に同期して出力するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３５】
そのサンプリングレート変換装置において、前記演算手段（１）は、前記第１クロック信号（ｃｌｋ１）に同期して前記予測クロック周波数値を累積加算した値を保持する第１レジスタと、前記第１クロック信号（ｃｌｋ１）に同期して前記第２クロック周波数値を累積加算した値を保持する第２レジスタと、前記第１レジスタ出力と前記第２レジスタ出力を比較する第１比較器を備え、前記第１比較器は、前記第１レジスタ出力より大きい前記第２レジスタ出力の検出に応答して保持フラグをアクティブにし、前記第２レジスタは、前記保持フラグを入力され前記保持フラグに対応して、累積加算動作を保留し、前記第２レジスタ出力値を保持し、前記ＦＩＦＯ（３）は前記第１比較器出力に基づいて前記第１データを前記第２クロック信号（ｃｌｋ２）に同期して出力するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３６】
そのサンプリングレート変換装置において、前記演算手段（１）は、前記第１クロック信号（ｃｌｋ１）に同期して前記予測クロック周波数値を累積加算した値を保持する第１レジスタと、前記第１クロック信号（ｃｌｋ１）に同期して前記第２クロック周波数値を累積加算した値を保持する第２レジスタと、前記第１レジスタ出力と前記第２レジスタ出力を比較する第２比較器を備え、
前記第２比較器は、前記第２レジスタ出力より大きい前記第１レジスタ出力の検出に応答して待機フラグをアクティブにし、前記第１レジスタは、前記待機フラグを入力され前記待機フラグに対応して、累積加算動作を保留し、前記第１レジスタ出力値を保持し、前記ＦＩＦＯ（３）は前記第１比較器出力と前記第２比較器出力とに基づいて前記第１データを前記第２クロック信号（ｃｌｋ２）に同期して出力するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３７】
そのサンプリングレート変換装置において、前記ＦＩＦＯ（３）は、前記第１クロック信号（ｃｌｋ１）に同期して前記第１データに前記保持フラグを追加したデータが書込まれるメモリと、前記メモリにデータを書込むためのライトポインタをインクリメントするレジスタとを備え、
前記レジスタは、前記待機フラグを入力され、前記待機フラグに応答して前記データを上書きするためにライトポインタのインクリメントを禁止するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３８】
そのサンプリングレート変換装置において、前記ＦＩＦＯ（３）は前記メモリからデータを読み出すためのリードポインタをインクリメントするレジスタを備え、前記メモリは、前記第２クロック信号（ｃｌｋ２）に応答して前記データの読出しを行い、前記レジスタは、読み出された前記データに追加された保持フラグに応答して、前記リードポインタのインクリメントを禁止するサンプリングレート変換装置を使用してサンプリングレート変換を行う。
【００３９】
第１クロック信号（ｃｌｋ１）と第２クロック信号（ｃｌｋ２）とが入力され、入力された前記第１クロック信号（ｃｌｋ１）を現在期間において計測し、前記計測により算出された第１現在クロック周波数値（ｇ（ｉ））と予め予測された前回予測クロック周波数値（ｆ（ｉ−１））と、前回累積誤差（Δ（ｉ−１））とに基づいて現在累積誤差（Δ（ｉ））を算出するステップと、
第２クロック信号（ｃｌｋ２）を前記現在期間において計測して第２現在クロック周波数値を生成するステップと、
第１サンプリングレートでデジタル化された第１データを第２サンプリングレートに対応する第２データに変換するため、前記前回予測クロック周波数値（ｆ（ｉ−１））と前記第２現在クロック周波数値とに対応して演算を実行するステップと、
前記第２現在クロック周波数値と前記前回予測クロック周波数値（ｆ（ｉ−１））とを出力するステップと、
前記現在期間の経過に応答して前記現在累積誤差（Δ（ｉ））と前記第１現在クロック周波数値（ｇ（ｉ））に対応する現在予測クロック周波数値ｆ（ｉ）を算出するステップと、
前記現在予測クロック周波数値ｆ（ｉ）を次回期間において前記前回予測クロック周波数値（ｆ（ｉ−１））として使用するステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【００４０】
そのサンプリングレート変換方法において、
０より大きく１以下の範囲の任意の乗算値を設定され、前記現在累積誤差（Δ（ｉ））に前記乗算値を乗算した値に前記第１現在クロック周波数値（ｇ（ｉ））を加算し、前記加算結果を前記現在予測クロック周波数値ｆ（ｉ）とするステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【００４１】
そのサンプリングレート変換方法において、
前記第１クロック信号（ｃｌｋ１）の周波数変動度合いを検知するステップと、検出結果に基づいて前記乗算値の値を決定するステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【００４２】
第１クロック信号（ｃｌｋ１）に同期して前記予測クロック周波数値を累積加算した第１累積加算値を保持するステップと、
前記第１クロック信号（ｃｌｋ１）に同期して前記第２クロック周波数値を累積加算した第２累積加算値を保持するステップと、
前記第１累積加算値と前記第２累積加算値を比較するステップと、
前記第１累積加算値より大きい前記第２累積加算値の検出に応答して保持フラグをアクティブにするステップと、
前記保持フラグに基づいて前記第１データを前記第２クロック信号（ｃｌｋ２）に同期して出力するステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【００４３】
そのサンプリングレート変換方法において、
前記第１累積加算値と前記第２累積加算値を比較するステップと、
前記第２累積加算値より大きい前記第１累積加算値の検出に応答して待機フラグをアクティブにするステップと、
前記保持フラグと前記待機フラグとに基づいて前記第１データを前記第２クロック信号（ｃｌｋ２）に同期して出力するステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【００４４】
そのサンプリングレート変換方法において、
前記第１クロック信号（ｃｌｋ１）に同期して前記予測クロック周波数値を累積加算した値を第１レジスタに保持するステップと、
前記第１クロック信号（ｃｌｋ１）に同期して前記第２クロック周波数値を累積加算した値を第２レジスタに保持するステップと、
前記第１レジスタ出力と前記第２レジスタ出力を比較するステップと、
前記第１レジスタ出力より大きい前記第２レジスタ出力の検出に応答して保持フラグをアクティブにするステップと、
前記第２レジスタが前記保持フラグを入力され前記保持フラグに対応して、累積加算動作を保留し、前記第２レジスタ出力値を保持するステップと、
前記第１比較器出力に基づいて前記第１データを前記第２クロック信号（ｃｌｋ２）に同期して出力するステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【００４５】
そのサンプリングレート変換方法において、
前記第１レジスタ出力と前記第２レジスタ出力を比較するステップと、
前記第２レジスタ出力より大きい前記第１レジスタ出力の検出に応答して待機フラグをアクティブにするステップと、
前記第１レジスタが前記待機フラグを入力され前記待機フラグに対応して、累積加算動作を保留し、前記第１レジスタ出力値を保持するステップと、
前記第１比較器出力と前記第２比較器出力に基づいて前記第１データを前記第２クロック信号（ｃｌｋ２）に同期して出力するステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【００４６】
そのサンプリングレート変換方法において、
前記第１クロック信号（ｃｌｋ１）に同期して前記第１データに前記保持フラグを追加したデータをメモリに書込むステップと、
前記メモリにデータを書込むためのライトポインタをインクリメントするステップと、
前記待機フラグを入力され、前記待機フラグに応答してメモリにデータを書込むライトポインタのインクリメントを保留するステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【００４７】
そのサンプリングレート変換方法において、
前記メモリからデータを読み出すためのリードポインタをインクリメントするステップと、
前記第２クロック信号（ｃｌｋ２）に同期して前記データの読出しをするステップと、
読み出された前記データに追加された保持フラグに応答して、前記リードポインタのインクリメントを保留するステップ
を具備するサンプリングレート変換方法でサンプリングレート変換を行う。
【発明の効果】
【００４８】
本発明は、周波数も発生源も異なる二つのクロック信号に基づくサンプリングレート間で高い精度で変換された出力信号を生成するサンプリングレート変換装置、およびサンプリングレート変換方法を提供することが可能になるという効果がある。
【００４９】
本発明はさらに、簡易な回路で構成された高精度のサンプリングレート変換装置を提供することが可能になるという効果がある。
【発明を実施するための最良の形態】
【００５０】
以下に図面を用いて本発明を実施するための最良の形態について述べる。
【００５１】
図２は、本発明を実施するための最良の形態におけるサンプリングレート変換装置の構成を示すブロック図である。以下の説明において入力側クロック信号ｃｌｋ１の予測周波数を算出する場合を例に述べるが、出力側クロックｃｌｋ２の予測周波数を算出してサンプリングレート変換を行う場合でも、同様の動作で本発明におけるサンプリングレート変換を実現することが可能である。図２を参照すると、本実施の形態に述べるサンプリングレート変換装置はｆｓ変換演算部１と周波数比検出部２とＦＩＦＯ３とで構成される。
【００５２】
ｆｓ変換演算部１は、周波数比検出部２から出力された予測周波数と実測周波数と更新通知信号に基づいてサンプリングレート変換の為に必要な演算処理を行う演算機能ブロックである。
【００５３】
周波数比検出部２は、入力側クロック信号ｃｌｋ１と出力側クロック信号ｃｌｋ２と測定期間設定信号に基づいてサンプリングレート変換に必要な周波数値を算出する周波数比検出機能ブロックである。周波数比検出部２は入力クロック信号ｃｌｋ１の周波数がダイナミックに変動することを予測し、その変動に対応して予測周波数を求める。実測周波数は、周波数比検出部２に入力された出力側クロック信号ｃｌｋ２を周波数比検出部２が備えるカウンタが測定期間設定信号によって設定された期間カウントした値である。
【００５４】
ＦＩＦＯ３はｆｓ変換演算部１から出力された音声データを、ｆｓ変換演算部１から出力されたｈｏｌｄフラグとｄｉｓａｂｌｅフラグに基づいて、出力側クロック信号ｃｌｋ２に同期して新たな音声データとして出力することによってサンプリングレートの変換を行う。
【００５５】
図３は周波数比検出部２が予測周波数を算出する動作を示すフローチャートである。図３に示される実測周波数ｇ（ｉ）は、周波数比検出部２に備えられたカウンタが入力側クロック信号ｃｌｋ１を実際にカウントして得た周波数を示す。“ｉ”は誤差補正回数を表し、一定時間毎にインクリメントされる。
【００５６】
実測周波数ｆ（ｉ）は、周波数比検出部２が予測する周波数を示し、
ｆ（ｉ）＝｛ｇ（ｉ）＋ｋΔ（ｉ）｝  …  ［１］
で示される値をとる。
また、累積誤差Δ（ｉ）は予測周波数ｆ（ｉ−１）と実測周波数ｇ（ｉ）と累積誤差Δ（ｉ−１）から算出される累積誤差を示し、
Δ（ｉ）＝ｇ（ｉ）−｛ｆ（ｉ−１）−Δ（ｉ−１）｝  …  ［２］
（または、Δ（ｉ＋１）＝ｇ（ｉ＋１）−｛ｆ（ｉ）−Δ（ｉ）｝  …  ［２］’）
で示される値をとる。
ここで表すｋは収束速度制御用パラメータであり、０＜ｋ≦１の範囲の任意の値を取る。ｋの値を温度ドリフトやジッタ特性に応じて設定することで、装置に合わせて予測周波数ｆ（ｉ）の収束速度を変化させることができる。例えば、実際の入力側クロック信号ｃｌｋ１の実測周波数ｇ（ｉ）が振動しているように変化する場合に、ｋの値を大きく設定してしまうと、予測周波数ｆ（ｉ）も振動してしまう。このような場合にはｋの値を小さく設定すれば、予測周波数ｆ（ｉ）の振動を抑え、予測周波数ｆ（ｉ）を安定させることができる。また、入力側クロック信号ｃｌｋ１の実測周波数ｇ（ｉ）が急に大きく変動してしまうような場合に、ｋの値を小さく設定してしまうと、予測周波数ｆ（ｉ）の変化はゆるやかになってしまうため、実測周波数の変動に追従することができない。このような場合にはｋの値を大きく設定すれば、予測周波数ｆ（ｉ）は実測周波数ｇ（ｉ）の変動に追従することができるようになる。
【００５７】
図３を参照すると、周波数比検出部２の動作は本実施の形態におけるサンプリングレート変換装置の動作開始時（例えばサンプリングレート変換装置の電源投入時やリセット時など）に対応して開始する。
【００５８】
ステップＳ１０１において、周波数比検出部２は予め設定されレジスタに格納された初期値の読み込みを行う。ステップＳ１０２において、出力側クロック信号ｃｌｋ２を基準としてクロック数を測定する。例えば入力側クロック信号ｃｌｋ１の立ち上がりエッジをカウントするカウンタを用意し、出力側クロック信号ｃｌｋ２で動作するタイマーを用いて一定時間毎にそのカウンタの値を取り込むことにより実現する。
【００５９】
ステップＳ１０３において、周波数比検出部２は測定期間設定信号で設定された測定期間が経過したかどうかの監視を行い、測定期間が経過した場合ステップＳ１０４に進み、設定された測定期間が経過していない場合、クロック数のカウントを継続する。測定期間の設定は、入力側クロック信号ｃｌｋ１の実際の周波数と予測周波数の誤差が大きいことが予想される場合や、変動が激しい場合などは短い期間を設定する。また、入力側クロック信号ｃｌｋ１の実際の周波数と予測周波数の誤差が小さいことが予想される場合は、長い期間を設定する。このように設定することで安定した動作を実現することができる。通常動作の場合、動作開始時には測定期間を長めに設定しておき、算出された累積誤差に対応して、測定期間を設定し直すことが望ましい。
【００６０】
ステップＳ１０４において、周波数比検出部２は一定時間にカウントされたクロック数より実測周波数ｇ（ｉ）を計測し、ステップＳ１０５において、実測周波数ｇ（ｉ）の計測完了に応答して累積誤差Δ（ｉ）を算出する。ステップＳ１０６において、周波数比検出部２は計測した実測周波数ｇ（ｉ）と累積誤差Δ（ｉ）から予測周波数ｆ（ｉ）を算出する。実測周波数ｇ（ｉ）、累積誤差Δ（ｉ）、予測周波数ｆ（ｉ）の各々の算出が完了した周波数比検出部２は、ステップＳ１０７においてサンプリングレート変換装置の動作を終了させる信号が入力されたかどうかの判断を行う。その判断の結果、終了信号を受信した場合には処理を終了する。そのような信号を受信していない場合、ステップＳ１０２の処理に戻って、ステップ１０２〜ステップ１０７の処理を続ける。この動作によって、予測周波数ｆ（ｉ）は測定期間設定信号で設定された時間毎に更新される。
【００６１】
以下に具体的な周波数を使用して本実施の形態の動作を述べる。図４は、予測周波数ｆ（ｉ）、入力側クロック信号ｃｌｋ１の実測周波数ｇ（ｉ）、及び累積誤差Δ（ｉ）が時間経過で移り変わる動作を示す図である。図４には、入力される音声データのサンプリングレートが３８０００Ｈｚ付近であり、期間設定信号で設定された測定期間が１秒間の場合を例に示すが、これは本発明の入力音声データのサンプリングレートや測定期間を限定するものではない。また、図４はｋ＝１の場合の動作を示す。
【００６２】
図４を参照するとｉ＝０の時、初期設定予測周波数ｆ（０）、初期設定累積誤差Δ（０）が
ｆ（ｉ）＝ｆ（０）＝３８０００
Δ（ｉ）＝Δ（０）＝０
に設定されていた場合を示している。測定期間の経過に応答して周波数比検出部２は実測周波数ｇ（ｉ）を計測する。測定期間が１秒間なので発振子の精度が非常に高ければ、ｉ＝１における実測周波数ｇ（１）＝３８０００になる。図４を参照すると、周波数比検出部２が実際に計測したｉ＝１における実測周波数ｇ（１）は、
ｇ（１）＝３８００８
である。
【００６３】
ここで周波数比検出部２は、初期設定予測周波数ｆ（０）、初期設定累積誤差Δ（０）及び実測周波数ｇ（１）から累積誤差Δ（１）を算出する。［２］式より周波数比検出部２は、
Δ（１）＝ｇ（１）−｛ｆ（０）−Δ（０）｝＝３８００８−（３８０００−０）
＝８
を算出する。周波数比検出部２は、この値を新たな累積誤差Δ（１）として記憶する。さらに周波数比検出部２は、その累積誤差Δ（１）と実測周波数ｇ（１）とを用いて予測周波数ｆ（１）を算出する。今、ｋ＝１なので［１］式より周波数比検出部２は、
ｆ（１）＝｛ｇ（１）＋Δ（１）｝＝３８００８＋８
＝３８０１６
を算出する。周波数比検出部２はこの“３８０１６”を新たな予測周波数ｆ（１）として記憶する。
【００６４】
更に時間が経過し、ｉ＝２になった場合、周波数比検出部２はｉ＝２における実測周波数ｇ（２）を計測する。図４を参照すると周波数比検出部２が実際に計測したｉ＝２における実測周波数ｇ（ｉ）は
ｇ（２）＝３８０１２
である。ここで周波数比検出部２は、ｉ＝１で記憶した予測周波数ｆ（１）と累積誤差Δ（１）よりｉ＝２における累積誤差Δ（２）を算出する。［２］式より周波数比検出部２は、
Δ（２）＝ｇ（２）−｛ｆ（１）−Δ（１）｝＝３８０１２−（３８０１６−８）
＝４
を算出する。ここでｉ＝１の場合と同様に周波数比検出部２はこの値を新たな累積誤差Δ（２）として記憶する。更に周波数比検出部２は、その累積誤差Δ（２）と実測周波数ｇ（２）を用いて予測周波数ｆ（２）を算出する。やはり、ｋ＝１なので［１］式より
ｆ（２）＝｛ｇ（２）＋Δ（２）｝＝３８０１２＋４
＝３８０１６
となる。同様の動作を終了信号（例えば、電源断を示す信号）を受信するまで実行する。周波数比検出部２は、ｉの値をインクリメントしながら、図３に示すフローチャートの動作を繰り返すことで、予測周波数ｆ（ｉ）を一定期間毎に算出する。
今回計測された実測周波数ｇ（ｉ＋１）から新たな累積誤差Δ（ｉ＋１）を算出する場合、新たな累積誤差Δ（ｉ＋１）は、今回計測された実測周波数ｇ（ｉ＋１）と前期間において予測された予測周波数ｆ（ｉ）と前期間に算出された累積誤差Δ（ｉ）とに基づいて算出される。前期間において予測された予測周波数ｆ（ｉ）が、更にその前の期間に予測された予測周波数ｆ（ｉ−１）よりも実測周波数ｇ（ｉ＋１）に近づいているならば、新たな累積誤差Δ（ｉ＋１）は前回の累積誤差Δ（ｉ）よりも絶対値が小さくなる。その新たな累積誤差Δ（ｉ＋１）に基づいて新たな予測周波数ｆ（ｉ＋１）が算出されるため、ｉの値をインクリメントしながら予測周波数を算出することで、実測周波数が緩やかに変動する場合に精度の高い予測周波数の算出が可能になる。
【００６５】
図５は、図４と同様に予測周波数ｆ（ｉ）、入力側クロック信号ｃｌｋ１の実測周波数ｇ（ｉ）、及び累積誤差Δ（ｉ）が時間経過で移り変わる動作を示す図である。図５には、入力される音声データのサンプリングレートが３８０００Ｈｚ付近であり、測定期間が１秒間の場合を例に示すが、これは本発明の入力音声データのサンプリングレートや測定期間を限定するものではない。また、図５はｋ＝０．５の場合の動作を示す。
【００６６】
図５を参照すると、ｉ＝０のとき、初期設定予測周波数ｆ（０）、初期設定累積誤差Δ（０）が
ｆ（ｉ）＝ｆ（０）＝３８０００
Δ（ｉ）＝Δ（０）＝０
に設定されていた場合を示している。測定期間の経過に応答して周波数比検出部２は実測周波数ｇ（ｉ）を計測する。設定期間が１秒間なので発振子の精度が非常に高ければ、ｉ＝１における実測周波数ｇ（１）＝３８０００になる。図５を参照すると、周波数比検出部２が実際に計測したｉ＝１における実測周波数ｇ（１）は
ｇ（１）＝３８００８
である。
【００６７】
ここで周波数比検出部２は初期設定予測周波数ｆ（０）、初期設定累積誤差Δ（０）及び実測周波数ｇ（１）から累積誤差Δ（１）を算出する。［２］式より周波数比検出部２は、
Δ（１）＝ｇ（１）−｛ｆ（０）−Δ（０）｝＝３８００８−（３８０００−０）
＝８
を算出する。周波数比検出部２はこの値を新たな累積誤差Δ（１）として記憶する。さらに周波数比検出部２はその累積誤差Δ（１）と実測周波数ｇ（１）とを用いて予測周波数ｆ（１）を算出する。今、ｋ＝０．５なので［１］式より周波数比検出部２は、
ｆ（１）＝｛ｇ（１）＋０．５・Δ（１）｝＝３８００８＋４
＝３８０１２
を算出する。周波数比検出部２はこの“３８０１２”を新たな予測周波数ｆ（１）として記憶する。
【００６８】
更に時間が経過し、ｉ＝２になった場合、周波数比検出部２はｉ＝２における実測周波数ｇ（２）を計測する。図５を参照すると周波数比検出部２が実際に計測したｉ＝２における実測周波数ｇ（ｉ）は
ｇ（２）＝３８０１２
である。ここで周波数比検出部２はｉ＝１で記憶した予測周波数ｆ（１）と累積誤差Δ（１）よりｉ＝２における累積誤差Δ（２）を算出する。［２］式より周波数比検出部２は、
Δ（２）＝ｇ（２）−｛ｆ（１）−Δ（１）｝＝３８０１２−（３８０１２−８）
＝８
を算出する。ここでｉ＝１の場合と同様に周波数比検出部２はこの値を新たな累積誤差Δ（２）として記憶する。更に周波数比検出部２は、その累積誤差Δ（２）と実測周波数ｇ（２）を用いて予測周波数ｆ（２）を算出する。やはり、ｋ＝０．５なので［１］式より、
ｆ（２）＝｛ｇ（２）＋０．５・Δ（２）｝＝３８０１２＋４
＝３８０１６
となる。同様の動作を終了信号（例えば、電源断を示す信号）を受信するまで実行する。周波数比検出部２は、ｉの値をインクリメントしながら、図３に示すフローチャートの動作を繰り返すことで、予測周波数ｆ（ｉ）を一定期間毎に算出する。
今回計測された実測周波数ｇ（ｉ＋１）から新たな累積誤差Δ（ｉ＋１）を算出する場合、新たな累積誤差Δ（ｉ＋１）は、今回計測された実測周波数ｇ（ｉ＋１）と前期間において予測された予測周波数ｆ（ｉ）と前期間に算出された累積誤差Δ（ｉ）とに基づいて算出される。前期間において予測された予測周波数ｆ（ｉ）が、更にその前の期間に予測された予測周波数ｆ（ｉ−１）よりも実測周波数ｇ（ｉ＋１）に近づいているならば、新たな累積誤差Δ（ｉ＋１）は前回の累積誤差Δ（ｉ）よりも絶対値が小さくなる。その新たな累積誤差Δ（ｉ＋１）に基づいて新たな予測周波数ｆ（ｉ＋１）が算出されるため、ｉの値をインクリメントしながら予測周波数を算出することで、実測周波数が緩やかに変動する場合に精度の高い予測周波数の算出が可能になる。
【００６９】
これによって、予測周波数ｆ（ｉ）を求めるときに、実測周波数ｇ（ｉ）だけでなく累積誤差Δ（ｉ）の値も加味することにより、サンプリングレート変換装置を長時間動作させたとしても誤差の影響でバッファあふれやデータの欠損が発生することなくサンプリングレート変換を行うことができる。すなわち、周波数比検出部２が累積誤差Δ（ｉ）が０に近づくように動作するため、誤差の影響によるバッファあふれが発生しない。したがって、ＦＩＦＯ３の余裕度を監視する必要も無くなり、結果として装置の規模を小さくすることができる。
【００７０】
図６は予測周波数ｆ（ｉ）、入力側クロック信号ｃｌｋ１の実測周波数ｇ（ｉ）が時間経過で移り変わる動作を示すグラフである。図６は、実測周波数ｇ（ｉ）がｉ＝１、２、３、４のときにそれぞれ、実測周波数ｇ（１）＝３８００８、実測周波数ｇ（２）＝３８０１２、実測周波数ｇ（３）＝３８０１４、実測周波数ｇ（４）＝３８０１６の値を取った場合のｋ＝１における予測周波数ｆ（ｉ）とｋ＝０．５における予測周波数ｆ（ｉ）を示している。上述のようにｋは収束速度を制御するためのパラメータであり、ｋを０＜ｋ≦１の任意の値に設定することで予測周波数ｆ（ｉ）が実測周波数ｇ（ｉ）に近づく速度を制御することができる。図６を参照すると、ｋの値が０に近いほど収束速度は遅いが、収束するまでの予測周波数ｆ（ｉ）の変動は小さくなる。逆にｋの値が１に近いほど収束速度は速いが、収束するまでの予測周波数ｆ（ｉ）の変動は大きくなる。したがって、ｋの値を温度ドリフトやジッタ特性に応じて設定することで、装置に合わせて予測周波数ｆ（ｉ）の収束速度を変化させることができる。
【００７１】
図７はｆｓ変換演算部１の具体的な回路構成の一例を示す図である。図７を参照すると、ｆｓ変換演算部１は、レジスタ１０１とコンパレータ１０２、１０３、１１２、１１３とレジスタ１０４、１０５と加算器１０６、１０７とセレクタ１０８、１０９とレジスタ１１０、１１１とＡＮＤゲート１１４、１１５とで構成される。
【００７２】
レジスタ１０１は入力音声データを一時的に保持するレジスタである。入力音声データｓ１０２を一時的に保持し、ＦＩＦＯ３に対して音声データｓ１０３として出力する。コンパレータ１０２、１１２とＡＮＤゲート１１５によって２つの入力信号の大小を比較する第１比較機能ブロックが構成される。第１比較機能ブロックは、予測周波数の累積加算値と出力側クロック信号ｃｌｋ２の周波数の累積加算値とを比較し、出力側クロック信号ｃｌｋ２の周波数の累積加算値が予測周波数の累積加算値に比較して大きいときにｈｏｌｄフラグをアクティブにする。また、コンパレータ１０３、１１３とＡＮＤゲート１１４によって第１比較機能ブロックと同様の２つの入力信号の大小を比較する第２比較機能ブロックが構成される。第２比較機能ブロックは予測周波数の累積加算値と出力側クロック信号ｃｌｋ２の周波数の累積加算値とを比較し、出力側クロック信号ｃｌｋ２の周波数の累積加算値が予測周波数の累積加算値に比較して小さいときにｄｉｓａｂｌｅフラグをアクティブにする。
【００７３】
レジスタ１０４は予測周波数を累積加算するためのレジスタである。加算器１０６から出力された信号ｓ１０８が入力され、入力された値を保持する。加算器１０６は、２つの入力信号の値を加算する加算器である。レジスタ１０４出力ｓ１０７とセレクタ１０８出力ｓ１１０とを加算し、信号ｓ１０８を出力する。セレクタ１０８は、２入力１出力のセレクタである。ＡＮＤゲート１１４から出力されたセレクト信号であるｓ１０５が１のときはｓ１１３の値が出力され、ｓ１０５が０のときはｓ１１２の値が出力され、出力された信号ｓ１１０は加算器１０６に入力される。
【００７４】
レジスタ１０５は出力側クロック信号ｃｌｋ２の実測周波数を累積加算するためのレジスタである。加算器１０７から出力された信号ｓ１０９が入力され、入力された値を保持する。加算器１０７は加算器１０６と同様の、２つの入力信号の値を加算する加算器である。レジスタ１０５出力ｓ１０６とセレクタ１０９出力ｓ１１１とを加算し、信号ｓ１０９を出力する。セレクタ１０９はセレクタ１０８と同様の２入力１出力のセレクタである。ＡＮＤゲート１１５から出力されたセレクト信号であるｓ１０４が１のときはｓ１１５の値が出力され、ｓ１０４が０のときはｓ１１４の値が出力され、出力された信号ｓ１１１は加算器１０７に入力される。
【００７５】
レジスタ１１０は予測周波数を格納するレジスタである。更新通知信号ｓ１１６が１のときに、予測周波数を示す信号ｓ１１７の値を取り込む。レジスタ１１１は、出力側クロック信号ｃｌｋ２の実測周波数を格納するレジスタである。更新通知信号ｓ１１６が１のときに出力側クロック信号ｃｌｋ２の実測周波数を示す信号ｓ１１８の値を取り込む。
【００７６】
図８は周波数比検出部２の具体的な回路構成の一例を示す図である。図８を参照すると、周波数比検出部２はレジスタ２０１、２０４、２０７、２０９、２１０、２１１、２１４、２１５と加算器２０２、２０５、２０６と乗算回路２０３とカウンタ２０８、２１６とクロック同期回路２１２と比較回路２１３とで構成される。
【００７７】
レジスタ２０１は予測周波数を保持するレジスタである。レジスタ２１０から出力された信号ｓ２０７がアクティブのときに加算器２０２から出力された信号ｓ２０４の値を取り込む。加算器２０２は２つの入力信号の値を加算する加算器である。加算器２０２は乗算回路２０３からの出力ｓ２０５とレジスタ２０７からの出力ｓ２０６を加算する。乗算回路２０３はレジスタ２０４から出力された信号ｓ２１１をｋ倍した信号であるｓ２０５を出力する。ｋの値は０＜ｋ≦１の範囲内で任意に変更可能である。また、設定により入力されるクロック信号の周波数変動度合いに適した値になるように自動で変更するようにすることも可能である。このようなｋを用いることで、例えば、入力されるクロック信号が周波数変動の激しいクロックであった場合、周波数比検出手段２はｋの値を１に近い値に設定することで、予測周波数が収束する速度を早め、激しい周波数変動に対応することが可能になる。
【００７８】
レジスタ２０４は累積誤差の値を保持するレジスタである。レジスタ２１１から出力された信号ｓ２０８がアクティブのときに、加算器２０５から出力された信号ｓ２０９の値を取り込む。加算器２０５は２つの入力信号の値を加算する加算器である。加算器２０５はレジスタ２０４からの出力であるｓ２１１と加算器２０６からの出力であるｓ２１０を加算する。加算器２０６は２つの入力信号の値を加算する加算器である。加算器２０６はレジスタ２０１からの出力ｓ２０１の２の補数をとり、レジスタ２０７からの出力ｓ２０６に加算する。
【００７９】
レジスタ２０７は入力側クロックｃｌｋ１の実測周波数値を保持するレジスタである。クロック同期回路２１２から出力された信号ｓ２１２がアクティブのときに、カウンタ２０８から出力される信号ｓ２１３の値を取り込む。カウンタ２０８は入力側クロック信号ｃｌｋ１であるｓ２１４の立ち上がりエッジに同期して、値を１ずつインクリメントするカウンタである。クロック同期回路２１２からの信号ｓ２１２がアクティブになった時に、値を１に戻す。
【００８０】
レジスタ２０９は更新通知信号ｓ２０２を出力するレジスタである。レジスタ２１０はレジスタ２０１の更新タイミング信号ｓ２０７を作り出すためのレジスタである。レジスタ２１１はレジスタ２０４の更新タイミング信号ｓ２０８を作り出すためのレジスタである。
【００８１】
次に、クロック同期回路２１２について説明する。出力側クロック信号ｃｌｋ２であるｓ２１９に同期した信号ｓ２１６が入力されると、クロック乗せ換え動作を行い、入力側クロックに同期した信号ｓ２１２を出力する。比較回路２１３は入力された２つの信号の値を比較し、同じ値かどうかの判定をする回路である。比較回路２１３による信号比較の結果、入力された２つの信号が同じ値である場合には出力信号ｓ２１６の値をアクティブにする。比較回路２１３の出力信号であるｓ２１６は、例えば、レジスタ２１４に取りこまれたｓ２１８の値が４４１００で、出力側クロック信号ｃｌｋ２の周波数が４４１００Hzである場合には、１秒間に一回アクティブになる。
【００８２】
レジスタ２１４は測定期間設定信号ｓ２１８を取り込むレジスタである。レジスタ２１５は出力側クロック信号ｃｌｋ２の周波数値を保持するレジスタである。レジスタ２１５は比較回路２１３から出力された信号ｓ２１６がアクティブのときに、カウンタ２１６から出力される信号ｓ２１７の値を取り込む。またレジスタ２１５は取り込んだ値を
実測周波数ｓ２０３としてｆｓ変換演算部１に出力する。カウンタ２１６は出力側クロック信号ｃｌｋ２であるｓ２１９の立ち上がりエッジに同期して値を１ずつインクリメントするカウンタである。比較回路２１３から出力される信号ｓ２１６がアクティブになった時に、値を１に戻す。
【００８３】
図９はＦＩＦＯ３の具体的な回路構成の一例を示す図である。図９を参照すると、ＦＩＦＯ３はＲＡＭ３０１とレジスタ３０２と加算器３０３とインバータ３０４とレジスタ３０５と加算器３０６とインバータ３０７とで構成される。
【００８４】
ＲＡＭ３０１はデータ格納用のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。ＲＡＭ３０１には周波数比検出部２から出力された音声データｓ３０１のＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）側にｈｏｌｄフラグｓ３０３を１ｂｉｔ追加した信号であるｓ３０２が入力される。したがってデータビット幅は音声データ信号より１ｂｉｔ分だけ大きくなる。
【００８５】
レジスタ３０２はライトポインタ保持用のレジスタである。加算器３０３の出力ｓ３０７の値を取り込みライトポインタ信号ｓ３０５を出力する。加算器３０３は２つの入力信号の値を加算する加算器である。インバータ３０４の出力信号ｓ３０６とレジスタ３０２の出力ｓ３０５を加算する。
インバータ３０４は信号の値を反転するインバータである。周波数比検出部２から出力されたｄｉｓａｂｌｅフラグｓ３０４が入力され、そのｄｉｓａｂｌｅフラグが反転された信号であるｓ３０４を出力する。
【００８６】
レジスタ３０５はリードポインタ保持用のレジスタである。加算器３０６の出力ｓ３１２の値を取り込みリードポインタ信号ｓ３１０を出力する。
加算器３０６は２つの入力信号の値を加算する加算器である。加算器３０６はＲＡＭ３０１からの出力信号ｓ３０８のＭＳＢ部分の信号、つまり、ＲＡＭを通ってきたｈｏｌｄフラグである信号ｓ３１１が反転された信号ｓ３１３と、レジスタ３０５の出力ｓ３１０を加算し、信号ｓ３１２を出力する。
インバータ３０７は信号の値を反転するインバータである。ＲＡＭを通ってきたｈｏｌｄフラグである信号ｓ３１１を反転した信号ｓ３１３を出力する。
【００８７】
図１０は図７に示す回路の動作を表すタイミングチャートである。図１０（ａ）は、入力側クロック信号ｃｌｋ１であるｓ１０１の変化の様子を示す図である。図１０（ｂ）は、更新通知信号ｓ１１６の変化の様子を示す図である。図１０（ｃ）は、レジスタ１１０から出力される予測周波数ｓ１１２の変化の様子を示す図である。図１０（ｄ）は、レジスタ１１１から出力される信号ｓ１１４の変化の様子を示す図である。図１０（ｅ）は、レジスタ１０４からの出力ｓ１０７の変化の様子を示す図である。図１０（ｆ）は、レジスタ１０５からの出力ｓ１０６の変化の様子を示す図である。図１０（ｇ）は、ＡＮＤゲート１１５から出力されるｈｏｌｄフラグｓ１０４の変化の様子を示す図である。図１０（ｈ）は、ＡＮＤゲート１１４から出力されるｄｉｓａｂｌｅフラグｓ１０５の変化の様子を示す図である。
【００８８】
また、ｔ１００からｔ１１０の各々は入力側クロック信号ｃｌｋ１であるｓ１０１の立ち上りエッジを示し、Ｔ１０１からＴ１１１の各々は一つの立ち上りエッジから次の立ち上りエッジまでの期間を示す。以下、図１０（ａ）から図１０（ｈ）に示すタイミングチャートは入力側クロック信号ｃｌｋ１の周波数が３８０００Ｈｚ付近、出力側クロック信号ｃｌｋ２の周波数が４４１００Ｈｚ、図１０における期間Ｔ１０１のタイミングｔ１００で更新通知信号ｓ１１６がアクティブになった場合を例に述べる。
【００８９】
図１０（ｂ）に示す更新通知信号ｓ１１６が期間Ｔ１０２のクロック信号立ち上がり時（ｔ１０１）にアクティブであるので、レジスタ１１０は予測周波数ｓ１１７の値を取り込む。レジスタ１１０は周波数比検出部２から出力された予測周波数ｓ１１７が“３８０００”であるので、レジスタ１１０には“３８０００”が値として保持される（図１０（ｃ））。同様に、レジスタ１１１は、出力側クロック信号ｃｌｋ２の実測周波数ｓ１１８の値を取り込む。周波数比検出部２から出力された出力側クロック信号ｃｌｋ２の実測周波数ｓ１１８の値が“４４１００”であるので、レジスタ１１１には“４４１００”が値として保持される（図１０（ｄ））。
【００９０】
期間Ｔ１０３において、セレクタ１０８は入力された２つの信号のうちｓ１１２を選択してその値をｓ１１０に出力する。加算器１０６には、セレクタ１０８からの出力である信号ｓ１１０の値が入力され、レジスタ１０４は、加算器１０６からの出力を累積加算値として取り込む。また、レジスタ１０５はレジスタ１０４と同様に、加算器１０７からの出力を累積加算値として取り込む。このタイミングで、
レジスタ１０４出力ｓ１０７＜レジスタ１０５出力ｓ１０６
という関係が成り立つ（図１０（ｅ）、図１０（ｆ））。ここでＡＮＤゲート１１５から出力されるｈｏｌｄフラグｓ１０４がアクティブになる（図１０（ｇ））。
【００９１】
期間Ｔ１０４のｔ１０３のタイミングでｈｏｌｄフラグｓ１０４がアクティブであったため、セレクタ１０９は信号ｓ１１５を選択しており、その結果累積加算レジスタ１０５の出力ｓ１０６はＴ１０３のときと同じ値になる。またレジスタ１０４は加算器１０６出力ｓ１０８の値を取り込む。期間Ｔ１０５から期間Ｔ１０９において、レジスタ１０４、レジスタ１０５はそれぞれ加算器１０６出力ｓ１０８、加算器１０７出力ｓ１０９の値を取り込む。
【００９２】
期間Ｔ１１０において、このタイミングで再び
レジスタ１０４出力ｓ１０７＜レジスタ１０５出力ｓ１０６
という関係が成り立つ（図１０（ｅ）、図１０（ｆ））。したがってこのときにＡＮＤゲート１１５から出力されるｈｏｌｄフラグｓ１０４がアクティブになる（図１０（ｇ））。
【００９３】
期間Ｔ１１０のｔ１０９のタイミングでｈｏｌｄフラグｓ１０４がアクティブであったため、セレクタ１０９は信号ｓ１１５を選択しており、その結果累積加算レジスタ１０５の出力ｓ１０６はＴ１１０のときと同じ値になる。またレジスタ１０４は加算器１０６出力ｓ１０８をの値を取り込む。期間Ｔ１１１以降、ｈｏｌｄフラグｓ１０４またはｄｉｓａｂｌｅフラグｓ１０５がアクティブになるまで、レジスタ１０４、レジスタ１０５はそれぞれ加算器１０６出力ｓ１０８、加算器１０７出力ｓ１０９の値を取り込む。以降、この動作を繰り返す。
【００９４】
このようなｆｓ変換演算部１を構成し、回路を動作させることによって、周波数比検出部２から出力された予測周波数と出力側クロック信号ｃｌｋ２を実測した実測周波数に基づいて、入力側のサンプリングレートから出力側のサンプリングレートに変換するのに適切なタイミングでアクティブになるようなｈｏｌｄフラグ（またはｄｉｓａｂｌｅフラグ）を生成することができる。生成されたｈｏｌｄフラグ（またはｄｉｓａｂｌｅフラグ）はＦＩＦＯ３に出力され、ＦＩＦＯ３はそのｈｏｌｄフラグ（またはｄｉｓａｂｌｅフラグ）に基づいて、入力されるデータの読み出し／書き込みを実行することで高精度のサンプリングレート変換が可能になる。
【００９５】
図１１、及び図１２は図８に示す回路の動作を表すタイミングチャートである。図１１（ａ）は、出力側クロック信号ｃｌｋ２の変化の様子を示す図である。図１１（ｂ）は、カウンタ２１６からの出力ｓ２１７の変化の様子を示す図である。図１１（ｃ）は、レジスタ２１５からの出力ｓ２０３の変化の様子を示す図である。図１１（ｄ）は、比較回路２１３から出力される一致検出信号ｓ２１６の変化の様子を示す図である。
【００９６】
また、ｔ２００からｔ２１０の各々は出力側クロック信号ｃｌｋ２であるｓ２１９の立ち上りエッジを示し、Ｔ２０１からＴ２１１の各々は一つの立ち上りエッジから次の立ち上りエッジまでの期間を示す。以下、図１１（ａ）から図１１（ｄ）に示すタイミングチャートは入力側クロック信号ｃｌｋ１の周波数が３８０００Ｈｚ付近、出力側クロック信号ｃｌｋ２の周波数が４４１００Ｈｚ、測定期間設定信号ｓ２１８の値とレジスタ２１４が保持している値が４４１００である場合を例に述べる。
【００９７】
期間Ｔ２０１から期間Ｔ２０２において、カウンタ２１６の出力であるカウンタ出力ｓ２１７は、クロック信号の立ち上がりエッジｔ２００、ｔ２０１で１ずつインクリメントされる。期間Ｔ２０３において、カウンタ出力ｓ２１７はインクリメントされ、その値は４４１００になる。これによりレジスタ２１４の出力信号ｓ２１５と、カウンタ出力ｓ２１７の値（図１１（ｂ））が一致するので、一致検出信号ｓ２１６がアクティブになる（図１１（ｄ））。
【００９８】
期間Ｔ２０４のｔ２０３のタイミングで一致検出信号ｓ２１６がアクティブであったので、カウンタ出力ｓ２１７の値は１に戻る。また、カウンタ出力ｓ２１７の値（４４１００）が、レジスタ２１５に取り込まれる。期間Ｔ２０５以降、カウンタ出力ｓ２１７は、その値がｓ２１５の値と一致するまでクロック信号の立ち上がりエッジで１ずつインクリメントされる。以降、この動作を繰り返す。
【００９９】
図１２（ａ）は、入力側クロック信号ｃｌｋ１の変化の様子を示す図である。図１２（ｂ）は、カウンタ２０８から出力されるカウンタ出力ｓ２１３の変化の様子を示す図である。図１２（ｃ）は、レジスタ２０７からの出力ｓ２０６の変化の様子を示す図である。図１２（ｄ）は、クロック同期回路２１２から出力される一致検出信号ｓ２１２の変化の様子を示す図である。図１２（ｅ）は、レジスタ２０４からの出力ｓ２１１の変化の様子を示す図である。図１２（ｆ）は、レジスタ２０１からの出力ｓ２０１の変化の様子を示す図である。図１２（ｇ）は、レジスタ２０９からの出力ｓ２０２の変化の様子を示す図である。
【０１００】
また、ｔ２２０からｔ２２７の各々は入力側クロック信号ｃｌｋ１であるｓ２１４の立ち上りエッジを示し、Ｔ２２１からＴ２２８の各々は一つの立ち上りエッジから次の立ち上りエッジまでの期間を示す。以下、図１２（ａ）から図１２（ｇ）に示すタイミングチャートは入力側クロック信号ｃｌｋ１の周波数が３８０００Ｈｚ付近、出力側クロック信号ｃｌｋ２の周波数が４４１００Ｈｚ、測定期間設定信号ｓ２１８の値とレジスタ２１４が保持している値が４４１００である場合を例に述べる。
【０１０１】
期間Ｔ２２１から期間Ｔ２２３において、カウンタ２０８から出力されるカウンタ出力ｓ２１３は、クロック信号の立ち上がりエッジｔ２２０からｔ２２２で１ずつインクリメントされる（図１２（ｂ））。期間Ｔ２２４において、入力側クロック信号ｃｌｋ１に同期した一致検出信号ｓ２１２（図１２（ｄ））がｔ２２３のタイミングでアクティブになる。このときカウンタ出力ｓ２１３はインクリメントされ、その値は３８００４になる（図１２（ｂ））。
【０１０２】
期間Ｔ２２５のｔ２２４のタイミングで入力側クロック信号ｃｌｋ１に同期した一致検出信号ｓ２１２がアクティブであったため、カウンタ出力ｓ２１３の値は１に戻る（図１２（ｂ））。また、カウンタ出力ｓ２１３の値（３８００４）がレジスタ２０７に取り込まれる（図１２（ｃ））。期間Ｔ２２６において、累積誤差の算出値がレジスタ２０４に格納され、レジスタ２０４の出力信号ｓ２１１は新しい累積誤差の値（４）を示す（図１２（ｅ））。このタイミングでも、カウンタ出力ｓ２１３はインクリメントされる。
【０１０３】
期間Ｔ２２７において、期間Ｔ２２６で更新された累積誤差の値から、予測周波数ｓ２０１の値（３８００８）が算出される（図１２（ｆ））。また、同じタイミングで変更通知信号ｓ２０２がアクティブになる（図１２（ｇ））。このタイミングでも、カウンタ出力ｓ２１３はインクリメントされる。期間Ｔ２２８から以降、カウンタ出力ｓ２１３は、クロック信号の立ち上がりエッジで１ずつインクリメントされる。このような周波数比検出部２を構成し、回路を動作させることによって、周波数比検出部２は実測周波数から算出された予測周波数を生成する。予測周波数は、出力側クロック信号の周波数と入力側クロック信号の周波数が温度ドリフトや発振子のジッタ特性に依存してダイナミックに変動する場合における変動後の周波数を、それまでの累積誤差の値も加味して算出したものである。周波数比検出部２はその予測周波数をｆｓ変換演算部１に出力し、ｆｓ変換演算部１はその予測周波数と、出力側クロック信号ｃｌｋ２を実測した実測周波数に基づいてサンプリングレート変換のための演算を実行する。累積誤差が徐々に０に近づいていき、予測周波数が実測周波数に近づくことで、高精度のサンプリングレート変換を実行することが可能になる。
【０１０４】
図１３、及び図１４は、図９に示す回路の動作を表すタイミングチャートである。図１３（ａ）から図１３（ｄ）はＲＡＭ３０１にデータを書込む場合の動作を表す。図１３（ａ）は、入力側クロック信号ｃｌｋ１の変化の様子を表す図である。図１３（ｂ）は、ｄｉｓａｂｌｅフラグｓ３０４の変化の様子を表す図である。図１３（ｃ）は、レジスタ３０２から出力されるライトポインタｓ３０５の変化の様子を表す図である。図１３（ｄ）は、音声データｓ３０１の変化の様子を表す図である。
【０１０５】
また、ｔ３００からｔ３０７の各々は入力側クロック信号ｃｌｋ１であるｓ３１４の立ち上りエッジを示し、Ｔ３０１からＴ３０８の各々は一つの立ち上りエッジから次の立ち上りエッジまでの期間を示す。以下、図１３（ａ）から図１３（ｄ）に示すタイミングチャートは入力側クロック信号ｃｌｋ１の周波数が３８０００Ｈｚ付近、出力側クロック信号ｃｌｋ２の周波数が４４１００Ｈｚである場合を例に述べる。更に、図９に示すＲＡＭ３０１が、ライト時にはライトアドレスとライトデータを同じタイミングで入力され、リード時にはリードアドレスを入力された１クロック後にリードデータを出力するようなタイプのメモリである場合を例に述べる。
【０１０６】
期間Ｔ３０１から期間Ｔ３０３において、ライトポインタｓ３０５が、入力側クロック信号ｃｌｋ１に同期してインクリメントされる。音声データｓ３０１は毎クロック変化し、ライトポインタｓ３０５で示されるアドレスに音声データが書込まれる（図１３（ｃ）、図１３（ｄ））。データ書込みの際には、ｈｏｌｄフラグｓ３０３を音声データｓ３０１のＭＳＢ側に追加した信号ｓ３０２をＲＡＭ３０１に書込む。
【０１０７】
期間Ｔ３０４のｔ３０３のタイミングでｄｉｓａｂｌｅフラグｓ３０４がアクティブになる場合を例に述べる。このタイミングでも、ライトポインタｓ３０５はインクリメントされ、音声データｓ３０１は前の期間Ｔ３０４のときの値から変化する。具体的に述べると、音声データＣがライトポインタｓ３０５に示されるアドレス２に書込まれ、音声データＤがライトポインタｓ３０５に示されるアドレス３に書込まれる。
【０１０８】
期間Ｔ３０５において、立ち上りエッジｔ３０４でｄｉｓａｂｌｅフラグｓ３０４がアクティブであるため、ライトポインタｓ３０５はインクリメントされず、Ｔ３０４のときと同じ値を出力する。ここでＲＡＭ３０１へのライトが実行され、ライトポインタｓ３０５がインクリメントされていないため、Ｔ３０４でライトされた音声データＤと同じアドレスに音声データＥが上書きされる。
【０１０９】
Ｔ３０６からＴ３０８において、ライトポインタｓ３０５が、入力側クロック信号ｃｌｋ１に同期してインクリメントされる。音声データｓ３０１は毎クロック変化し、ライトポインタｓ３０５で示されるアドレスに音声データが書込まれる（図１３（ｃ）、図１３（ｄ））。データ書込みの際には、ｈｏｌｄフラグｓ３０３を音声データｓ３０１のＭＳＢ側に追加したものをＲＡＭ３０１に書込む。以降、同様の動作を繰り返し実行する。
【０１１０】
図１４（ａ）から図１４（ｄ）は、ＲＡＭ３０１からデータを読み出す場合の動作を表す。図１４（ａ）は、出力側クロック信号ｃｌｋ２の変化の様子を表す図である。図１４（ｂ）は、ＲＡＭ３０１から出力されたｈｏｌｄフラグｓ３１１の変化の様子を表す図である。図１４（ｃ）は、レジスタ３０５から出力されるリードポインタｓ３１０の変化の様子を表す図である。図１４（ｄ）は、ＲＡＭ３０１から出力された音声データｓ３０９の変化の様子を表す図である。
【０１１１】
また、ｔ３２０からｔ３２９の各々は出力側クロック信号ｃｌｋ２であるｓ３１５の立ち上りエッジを示し、Ｔ３２１からＴ３３０の各々は一つの立ち上りエッジから次の立ち上りエッジまでの期間を示す。以下、図１４（ａ）から図１４（ｄ）に示すタイミングチャートは入力側クロック信号ｃｌｋ１の周波数が３８０００Ｈｚ付近、出力側クロック信号ｃｌｋ２の周波数が４４１００Ｈｚである場合を例に述べる。更に、図９に示すＲＡＭ３０１は、ライト時にはライトアドレスとライトデータを同じタイミングで入力され、リード時にはリードアドレスを入力された１クロック後にリードデータを出力するようなタイプのメモリである場合を例に述べる。
【０１１２】
期間Ｔ３２１において、リードポインタｓ３１０がインクリメントされる（図１４（ｃ））。ＲＡＭ３０１からは、１クロック前のリードポインタが指し示すアドレスに格納されているデータがｓ３０８として出力される（図１４（ｄ））。Ｔ３２２において、リードポインタｓ３１０はインクリメントされ、データ信号ｓ３０８にも新しいデータが出力される。図１４（ｂ）はこの期間（Ｔ３２２）で、ＲＡＭ３０１から出力されたデータ信号ｓ３０８のＭＳＢ部分の信号ｓ３１１が１である場合を示している。
【０１１３】
期間Ｔ３２３のｔ３２２のタイミングで信号ｓ３１１が１であったため、リードポインタｓ３１０はインクリメントされない（図１４（ｃ））。期間Ｔ３２４において、期間Ｔ３２３でリードポインタｓ３１０がインクリメントされなかったので、音声出力データｓ３０９は期間Ｔ３２３で出力されていた値と同じになる（図１４（ｄ））。
【０１１４】
期間Ｔ３２５から期間Ｔ３２７において、リードポインタｓ３１０がインクリメントされる。ＲＡＭ３０１からは、１クロック前のリードポインタが指し示すアドレスに格納されているデータがｓ３０８として出力される。期間Ｔ３２８において、リードポインタｓ３１０はインクリメントされ、ＲＡＭ３０１からは新しいデータがｓ３０８として出力される。図１４（ｂ）は期間Ｔ３２８で、ＲＡＭ３０１から出力されたデータ信号ｓ３０８のＭＳＢ部分の信号ｓ３１１が再び１であった場合を示している。
【０１１５】
期間Ｔ３２９のｔ３２８のタイミングで信号ｓ３１１が１であるため、リードポインタはインクリメントされない（図１４（ｃ））。Ｔ３３０において、期間Ｔ３２９でリードポインタｓ３１０がインクリメントされなかったので、出力データｓ３０９は期間Ｔ３２９で出力されていた値と同じになる（図１４（ｄ））。以降、同様の動作を繰り返し実行する。ＦＩＦＯ３は上記の動作で、ｆｓ変換演算部１から出力されたｈｏｌｄフラグ（またはｄｉｓａｂｌｅフラグ）に基づいて入力されるデータの読み出し／書き込みを実行する。そのｈｏｌｄフラグ（またはｄｉｓａｂｌｅフラグ）は、周波数比検出部２から出力された予測周波数に基づいて、ｆｓ変換演算部１によって生成されている。予測周波数は、出力側クロック信号の周波数と入力側クロック信号の周波数が温度ドリフトや発振子のジッタ特性に依存してダイナミックに変動する場合における変動後の周波数を、それまでの累積誤差の値も加味して算出したものであるため、出力側クロック信号や、入力側クロック信号がこのように変動する場合でも高精度のサンプリングレート変換を実行することが可能になる。
【０１１６】
図１５は、本発明を実施するための最良の形態におけるサンプリングレート変換装置の他の構成を示すブロック図である。図１５を参照すると、本実施の形態に述べるサンプリングレート変換装置はｆｓ変換演算部１と周波数比検出部２とＦＩＦＯ３とオーバーサンプリング回路４とダウンサンプリング回路５とＤＳＰ６とで構成される。図１５に示すサンプリングレート変換装置は、図２に示す回路を含み、更に音質のよいレート変換を行う為に、オーバーサンプリング回路４（インターポレータ）とダウンサンプリング回路５（デシメータ）を備えている。更にダウンサンプリング回路５の出力はＤＳＰ６（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）に入力される。
【０１１７】
ｆｓ変換演算部１と周波数比検出部２とＦＩＦＯ３は図２に示す構成と同様の構成を備えているため説明を省略する。オーバーサンプリング回路４は、デジタル信号のサンプリングポイントを増やすことでデジタル信号をアナログ信号に近づけ、サンプリングレート変換による音声品質の劣化を軽減するための回路である。入力された音声データのサンプリングレートに対して、予め設定された倍数の周波数でサンプリングを実行する。設定される倍数は任意に変更可能である。ダウンサンプリング回路５は、高い周波数でサンプリングされた音声データを、出力側クロック信号ｃｌｋ４を分周して作られる低い周波数でサンプリングし直すデシメータである。このようなサンプリングレート変換装置を構成することにより、音声品質の劣化がより少ないサンプリングレート変換を実行することが可能になる。
【図面の簡単な説明】
【０１１８】
【図１】図１は、従来のサンプリングレート変換装置を示すブロック図である。
【図２】図２は、本発明のサンプリングレート変換装置を示すブロック図である。
【図３】図３は、本発明のサンプリングレート変換装置及び変換方法の動作を示すフローチャートである。
【図４】図４は、予測周波数ｆ（ｉ）、入力側クロック信号ｃｌｋ１の実測周波数ｇ（ｉ）、累積誤差Δ（ｉ）が時間経過で移り変わる動作を示す図である。
【図５】図５は、予測周波数ｆ（ｉ）、入力側クロック信号ｃｌｋ１の実測周波数ｇ（ｉ）、累積誤差Δ（ｉ）が時間経過で移り変わる動作を示す図である。
【図６】図６は、予測周波数ｆ（ｉ）、入力側クロック信号ｃｌｋ１の実測周波数ｇ（ｉ）が時間経過で移り変わる動作を示すグラフである。
【図７】図７は、ｆｓ変換演算部の具体的な回路構成の一例を示す図である。
【図８】図８は、周波数比検出部の具体的な回路構成の一例を示す図である。
【図９】図９は、ＦＩＦＯの具体的な回路構成の一例を示す図である。
【図１０】図１０は、ｆｓ変換演算部の動作を表すタイミングチャートである。
【図１１】図１１は、周波数比検出部の動作を表すタイミングチャートである。
【図１２】図１２は、周波数比検出部の動作を表すタイミングチャートである。
【図１３】図１３は、ＦＩＦＯの動作を表すタイミングチャートである。
【図１４】図１４は、ＦＩＦＯの動作を表すタイミングチャートである。
【図１５】図１５は、本発明を実施するための最良の形態におけるサンプリングレート変換装置の他の構成を示すブロック図である。
【符号の説明】
【０１１９】
１…ｆｓ変換演算部
２…周波数比検出部
３…ＦＩＦＯ
４…オーバーサンプリング回路
５…ダウンサンプリング回路
６…ＤＳＰ
ｃｌｋ１、ｃｌｋ３…入力側クロック信号
ｃｌｋ２、ｃｌｋ４…出力側クロック信号
１０１…レジスタ
１０２、１０３…コンパレータ
１０４、１０５…レジスタ
１０６、１０７…加算器
１０８、１０９…セレクタ
１１０、１１１…レジスタ
１１２、１１３…コンパレータ
１１４、１１５…ＡＮＤゲート
２０１…レジスタ
２０２…加算器
２０３…乗算実行回路
２０４…レジスタ
２０５、２０６…加算器
２０７、…レジスタ
２０８…カウンタ
２０９〜２１１…レジスタ
２１２…クロック同期回路
２１３…比較器
２１４、２１５…レジスタ
２１６…カウンタ
３０１…ＲＡＭ
３０２…レジスタ
３０３…加算器
３０４…インバータ
３０５…レジスタ
３０６…加算器
３０７…インバータ
【図１】
2005217664.tif 000003
【図２】
2005217664.tif 000004
【図３】
2005217664.tif 000005
【図４】
2005217664.tif 000006
【図５】
2005217664.tif 000007
【図６】
2005217664.tif 000008
【図７】
2005217664.tif 000009
【図８】
2005217664.tif 000010
【図９】
2005217664.tif 000011
【図１０】
2005217664.tif 000012
【図１１】
2005217664.tif 000013
【図１２】
2005217664.tif 000014
【図１３】
2005217664.tif 000015
【図１４】
2005217664.tif 000016
【図１５】
2005217664.tif 000017