(57)【要約】【課題】周波数の変更にともなう処理負荷や消費電力を低減できるバッファフロー制御装置を提供する。【解決手段】サンプリング部６は第２の周波数で入力されるデータを予め設定された標準値の第１の周波数にサンプリングして書き込み部２に出力する。書き込み部２は、入力されたデータをバッファメモリ１に書き込む。読み取り部３はバッファメモリ１からデータを読み出す。制御部５は、バッファメモリ１のデータ量が所定の範囲内にないときに、サンプリング部の第１の周波数を予め定められた最大値または最小値に変更する。そして、第１の周波数が最大値または最小値であるときに、周波数の切替期間が長くなるよう標準値を更新する。従って、周波数の変更に伴う処理負荷や消費電力を低減することができる。【選択図】図１
2008022450.tif 000002
【特許請求の範囲】
【請求項１】
バッファメモリと、
第１の周波数で前記バッファメモリへデータを書き込む書込部と、
前記バッファメモリからデータを読み出す読出部と、
前記第１の周波数の設定値として、第１の値、前記第１の値よりも大きい第２の値、前記第１の値よりも小さい第３の値の少なくとも３つの設定値が予め記録されるレジスタと、
前記バッファメモリのデータ量が既定の上限値を超えることを以て、前記第１の周波数を前記第３の値に変更し、前記バッファメモリのデータ量が既定の下限値を下回ることを以て、前記第１の周波数を前記第２の値に変更する制御部と
を備え、
前記第１の周波数が前記第３の値であるときに、前記制御部は前記第１の値を以前より低い値に更新して前記レジスタに記録し、前記第１の周波数が前記第２の値であるときに、前記制御部は前記第１の値を以前より高い値に更新して前記レジスタに記録する、バッファフロー制御装置。
【請求項２】
第２の周波数で入力されるデータを前記第１の周波数のデータにサンプリングして前記書き込み部へ出力するサンプリング部
をさらに備え、
前記サンプリング部は、
カウンタ値に前記第１の周波数に相当する値を加算し、前記カウンタ値が前記第２の周波数に相当する値以上であれば、前記カウンタ値から前記第２の周波数に相当する値を減算するカウンタ部と、
前記加算後且つ前記減算前の前記カウンタ値が前記第２の周波数に相当する値以上であることを以て、入力される前記データを前記書き込み部に出力する出力制御部と
を備える、請求項１に記載のバッファフロー制御装置。
【請求項３】
第２の周波数で入力されるデータを前記第１の周波数のデータにサンプリングして前記書き込み部へ出力するサンプリング部
をさらに備え、
前記サンプリング部は、
カウンタ値に前記第１の周波数に相当する値を加算し、前記カウンタ値が前記第２の周波数に相当する値以上であれば、前記カウンタ値から前記第２の周波数に相当する値を減算するカウンタ部と、
前記加算後且つ前記減算前の前記カウンタ値が前記第２の周波数に相当する値以上であることを以て、入力される前記データを補完して前記書き込み部に出力する出力制御部と
を備える、請求項１に記載のバッファフロー制御装置。
【請求項４】
前記補完とは、前記カウンタ値に基づいて、前記第２の周波数で入力される前記データに対して直線補完することである、請求項３に記載のバッファフロー制御装置。
【請求項５】
前記カウンタ部は、前記第１の周波数に相当する値を所望の数値で除算した値を前記カウンタ値に加算し、
前記補完とは、前記第２の周波数で入力される前記データの隣接する２つの値の差分値を前記数値で除算した値を累加することである、請求項３に記載のバッファフロー制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファフロー制御装置に関し、特に異なる周波数でバッファメモリへ書き込み／読み出しする技術に関する。
【背景技術】
【０００２】
独立したクロックで動作する機器相互間でデータをリアルタイムで再生する際に、機器相互間のクロックの差により生じるジッターを補正する技術が特許文献１に開示されている。特許文献１に記載の技術では、受信側機器のデータバッファに格納されるデータ量が上限のしきい値Ａと下限のしきい値Ｂとの間にあるように、データバッファからの読み出し周波数を調整したり、データバッファからの読み出しデータをサンプリング処理している。
【０００３】
【特許文献１】特開２００４−２２１９５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の技術では、機器相互間のクロックの誤差が大きい場合に、周波数の切替期間が短くなり、周波数の変更による処理負荷や消費電力が大きくなるという問題があった。また、特許文献１に記載の技術では、機器相互間のクロックの誤差が±０．４ＫＨｚ程度である場合しか考慮されておらず、機器相互間のクロックが全く異なる場合に適応が困難であるという問題があった。また、通常、周波数を調整する方法として、電圧制御水晶発信器を用いるため、コストの上昇や消費電力の増大を招くという問題があった。
【０００５】
そこで、本発明は処理負荷や消費電力が小さく、書き込み周波数を変更するバッファフロー制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るバッファフロー制御装置の第１の態様は、バッファメモリと、第１の周波数で前記バッファメモリへデータを書き込む書込部と、前記バッファメモリからデータを読み出す読出部と、前記第１の周波数の設定値として、第１の値、前記第１の値よりも大きい第２の値、前記第１の値よりも小さい第３の値の少なくとも３つの設定値が予め記録されるレジスタと、前記バッファメモリのデータ量が既定の上限値を超えることを以て、前記第１の周波数を前記第３の値に変更し、前記バッファメモリのデータ量が既定の下限値を下回ることを以て、前記第１の周波数を前記第２の値に変更する制御部とを備え、前記第１の周波数が前記第３の値であるときに、前記制御部は前記第１の値を以前より低い値に更新して前記レジスタに記録し、前記第１の周波数が前記第２の値であるときに、前記制御部は前記第１の値を以前より高い値に更新して前記レジスタに記録する。
【０００７】
本発明に係るバッファフロー制御装置の第２の態様は、第１の態様に係るバッファフロー制御装置であって、第２の周波数で入力されるデータを前記第１の周波数のデータにサンプリングして前記書き込み部へ出力するサンプリング部をさらに備え、前記サンプリング部は、カウンタ値に前記第１の周波数に相当する値を加算し、前記カウンタ値が前記第２の周波数に相当する値以上であれば、前記カウンタ値から前記第２の周波数に相当する値を減算するカウンタ部と、前記加算後且つ前記減算前の前記カウンタ値が前記第２の周波数に相当する値以上であることを以て、入力される前記データを前記書き込み部に出力する出力制御部とを備える。
【０００８】
本発明に係るバッファフロー制御装置の第３の態様は、第１の態様に係るバッファフロー制御装置であって、第２の周波数で入力されるデータを前記第１の周波数のデータにサンプリングして前記書き込み部へ出力するサンプリング部をさらに備え、前記サンプリング部は、カウンタ値に前記第１の周波数に相当する値を加算し、前記カウンタ値が前記第２の周波数に相当する値以上であれば、前記カウンタ値から前記第２の周波数に相当する値を減算するカウンタ部と、前記加算後且つ前記減算前の前記カウンタ値が前記第２の周波数に相当する値以上であることを以て、入力される前記データを補完して前記書き込み部に出力する出力制御部とを備える。
【０００９】
本発明に係るバッファフロー制御装置の第４の態様は、第３の態様に係るバッファフロー制御装置であって、前記補完とは、前記カウンタ値に基づいて、前記第２の周波数で入力される前記データに対して直線補完することである。
【００１０】
本発明に係るバッファフロー制御装置の第５の態様は、第３の態様に係るバッファフロー制御装置であって、前記カウンタ部は、前記第１の周波数に相当する値を所望の数値で除算した値を前記カウンタ値に加算し、前記補完とは、前記第２の周波数で入力される前記データの隣接する２つの値の差分値を前記数値で除算した値を累加することである。
【発明の効果】
【００１１】
本発明に係るバッファフロー制御装置の第１の態様によると、第１の周波数が第３の値であるときに、第１の値をより低い値に更新し、第１の周波数が第２の値であるときに、第１の値をより高い値に更新する。従って、第１の周波数が第１の値であるときに、バッファメモリのデータ量が規定の上限値および下限値の範囲内にある期間を長くすることができる。よって第１の周波数を第２または第３の値に変更することに伴うバッファフロー制御装置の処理負荷や消費電力を低減することができる。
【００１２】
本発明に係るバッファフロー制御装置の第２の態様によると、バッファフロー制御装置に入力されるデータの周波数と、読み出し部の周波数が大幅に異なっていても、サンプリング部は第２の周波数で入力されるデータを第１の周波数にサンプリングするので、書き込み部と読み出し部の周波数を略等しくすることができる。また周波数の変更に電圧制御水晶発振器を用いる場合に比べて、コストの上昇や消費電力の増大を低減することができる。
【００１３】
本発明に係るバッファフロー制御装置の第３の態様によると、出力制御部は入力されたデータを補完する。従って、出力データの不連続性を解消することができる。
【００１４】
本発明に係るバッファフロー制御装置の第４の態様によると、出力制御部はカウンタ値に基づいて直線補完を行う。従って、出力データの不連続性を解消することができる。
【００１５】
本発明に係るバッファフロー制御装置の第５の態様によると、第２の周波数で入力されるデータを、第２の周波数を所望の数値倍した周波数でオーバーサンプリングすることができる。よって、出力データの不連続性を解消することができる。
【発明を実施するための最良の形態】
【００１６】
（第１の実施の形態）
本発明に係る第１の実施の形態のバッファフロー制御装置を備えるデータ受信部と、再生部を備えるデジタル放送受信機の模式図を図１に示す。なお、図１においては、簡単のためにオーディオデータのバッファフローに関する部分のみを模式的に示している。実際には、受信機には、データを所望の形式に変換する処理部等を備えている。
【００１７】
具体的に、データ受信部１００が備えるバッファフロー制御装置１０１は、バッファメモリ１と書き込み部２と読み出し部３と、切替部４と、制御部５と、サンプリング部６とを備えている。
【００１８】
バッファメモリ１は、例えば１６００ワード×２バンク×２ｃｈの構成であり、メモリバンク１０とメモリバンク１１とで構成されている。そして、後述するように、一方のメモリバンクにデータが書き込まれている間は、他方のメモリバンクからデータが読み出される。
【００１９】
サンプリング部６は、不図示の送信機から例えば周波数４８．０００ＫＨｚでデータが入力される。サンプリング部６は、当該周波数４８．０００ＫＨｚで入力されたデータを例えば周波数４７．６０５ＫＨｚにサンプリングして書き込み部２に出力する。
【００２０】
書き込み部２は、入力されたデータを、サンプリング部６でサンプリングされた周波数（４７．６０５ＫＨｚ）でバッファメモリ１に書き込む。
【００２１】
読み出し部３は、少なくともサンプリング部６のサンプリング周波数の最大値（最大値については後述する）よりも高い動作周波数で動作し、バッファメモリ１からデータを読み出して、受信機２００に送信する。そして、受信機２００から送信要求（送信要求については後述する）を受け取ると、制御部５にフラグＦを出力する。
【００２２】
切替部４は、書き込み部２とメモリバンク１０および１１の何れか一方とを接続し、読み出し部３とメモリバンク１０および１１の何れか一方とを接続する。
【００２３】
制御部５は、切替部４を制御して、書き込み部２とメモリバンク１０または１１とを接続し、書き込み部２と接続されたメモリバンクとは別のメモリバンクと読み出し部３とを接続する。そして、読み出し部３からフラグＦを受け取ると、制御部５は書き込み部２の接続していたメモリバンクを切り替えるとともに、読み出し部３の接続していたメモリバンクを切り替える。
【００２４】
例えば、制御部５は、メモリバンク１０と書き込み部２、メモリバンク１１と読み出し部３とをそれぞれ接続し、読み出し部３からフラグＦを受け取ると、切替部４を制御してメモリバンク１１と書き込み部２、メモリバンク１０と読み出し部３とをそれぞれ接続する。このように、制御部５が切替部４を制御することで、データを書き込むメモリバンクとデータを読み出すメモリバンクを排他的に交互に切り替える。
【００２５】
また、制御部５はレジスタ５１を備えている。レジスタ５１には、サンプリング部６によるサンプリング周波数（＝書き込み部２の周波数）として、標準値（第１の値）、最大値（第２の値）、最小値（第３の値）が予め記録されている。
【００２６】
そして、制御部５が読み出し部３からフラグＦを受け取ると、制御部５は書き込み部２からバッファメモリ１へ書き込んだデータ量を取得し、受け取ったデータ量が所定の範囲内にないときに、制御部５は、サンプリング周波数（＝書き込み部２の周波数）をレジスタ５１に設定されている最大値、標準値、最小値のいずれかに変更するようサンプリング部６に通知する。この点については後述する。
【００２７】
また、制御部５は、レジスタ５１に設定されている標準値を新たな値に更新して記録することができる。この点については後述する。
【００２８】
一方、受信機２００は、バッファメモリ２０と、読み出し部２３と、制御部２５とを備えている。バッファメモリ２０は、メモリバンク１０及び１１の容量以上の容量を有しており、送信機１００から送信されるデータが格納される。読み出し部２３は、バッファメモリ２０から例えば周波数４７．６０５ＫＨｚでデータを読み出して、不図示の処理部に出力する。制御部２５は、読み出し部２３の読み出し動作によって、バッファメモリ２０に例えば１６００ワードの空き容量が生じると、送信機１００に対して送信要求を送信する。
【００２９】
ここで、書き込み部２の周波数４７．６０５ＫＨｚは、送信機のクロックに基づいた周波数４８．０００ＫＨｚのデータをサンプリングしたものであり、読み出し部２３の周波数４７．６０５ＫＨｚは受信機のクロックに基づいたものであるので、互いの周波数には差が生じている。
【００３０】
続いて、本システムの動作について説明する。図２は、送信機に設けられたバッファフロー制御装置の動作を示すフローチャートであり、図３は受信機の動作を示すフローチャートである。
【００３１】
まず、図２において、ステップＳ１にて、サンプリング部６は、周波数４８．０００ＫＨｚで入力されたデータを、周波数４７．６０５ＫＨｚでサンプリングして、書き込み部２に出力する。書き込み部２は、入力されたデータを、接続されているメモリバンクに書き込む。なお、書き込み部２はメモリバンクのアドレス値０から順番に書き込むものとする。
【００３２】
一方、読み出し部３は、切替部４および制御部５によって、書き込み部２と接続されたメモリバンクとは別のメモリバンクに接続されており、例えば動作周波数６ＭＨｚで動作し、当該メモリバンクからデータを読み出して受信機２００に送信する。
【００３３】
次に、ステップＳ２にて、読み出し部３が受信機２００から送信要求を受け取ると、読み出し部３は制御部５にフラグＦを出力する。
【００３４】
次に、ステップＳ３にて、フラグＦを受け取った制御部５は、その時点での書き込み部２がメモリバンクに書き込んだデータ量を取得する。ここでは例えば、データ量として、書き込み部２がメモリバンクに書き込んだ最後のアドレス値を取得する。
【００３５】
次にステップＳ４にて、制御部５は、書き込み部２の周波数が最大値、標準値、最小値のいずれであるかを判断する。なお、書き込み部２の周波数の最大値及び最小値はそれぞれ、受信機のクロックが保証する周波数範囲の最大値及び最小値とする。
【００３６】
書き込み部２の周波数が標準値である場合は、ステップＳ５にて、制御部５は取得したアドレス値が第１の上限しきい値を超えていないかどうかを判断する。ここでは例えば、第１の上限しきい値としてアドレス値１５００とする。取得したアドレス値が１５００を超えている場合は、ステップＳ６にて、制御部５は書き込み部２の周波数をレジスタ５１に設定されている最小値（例えば、４７．０００ＫＨｚ）に変更する。具体的には、制御部５はサンプリング部６に対して、当該最小値の周波数でサンプリングするよう通知する。通知を受け取ったサンプリング部６は、入力されるデータを当該最小値の周波数でサンプリングして書き込み部２に出力する。
【００３７】
次に、ステップＳ９にて、制御部５は、切替部４を制御して、書き込み部２および読み出し部３が接続されているメモリバンクを切り替える。
【００３８】
ステップＳ５で取得したアドレス値が第１の上限しきい値を超えていない場合は、ステップＳ７にて、制御部５は、取得したアドレス値が第１の下限しきい値を下回っていないかどうかを判断する。ここでは例えば、第１の下限しきい値としてアドレス値１００とする。取得したアドレス値が１００を下回っている場合は、ステップＳ８にて、制御部５は書き込み部２の周波数をレジスタ５１に設定されている最大値（例えば、４７．６０９ＫＨｚ）に変更する。具体的には、制御部５はサンプリング部６に対して、当該最大値の周波数でサンプリングするよう通知する。通知を受け取ったサンプリング部６は、入力されるデータを当該最大値の周波数にサンプリングして書き込み部２に出力する。そして、ステップＳ９を経て、ステップＳ１を再び実行する。
【００３９】
ステップＳ４で書き込み部２の周波数が最大値であるときは、ステップＳ１０にて、制御部５は取得したアドレス値が、第２の上限しきい値を超えているかどうかを判断する。なお、第２の上限しきい値は第１の上限しきい値よりも小さい値であり、ここでは例えば、アドレス値１２００とする。取得したアドレス値が１２００を超えている場合は、ステップＳ１１にて、制御部５はレジスタ５１に設定されている標準値をより高い周波数に更新する。例えば、標準値を４７．６０５ＫＨｚから４７．６０６ＫＨｚに更新する。ここで、標準値の更新として、標準値の下位数桁（レジスタの下位数ビット）のみを変更可能とし、上位数桁（レジスタの上位数ビット）は固定してもよい。この場合、レジスタ５１の容量を削減することができる。
【００４０】
次に、ステップＳ１２にて、制御部５は書き込み部２の周波数を更新後の標準値に変更する。具体的には、制御部５はサンプリング部６に対して、当該標準値の周波数でサンプリングするよう通知する。通知を受け取ったサンプリング部６は、入力されるデータを当該標準値の周波数でサンプリングして書き込み部２に出力する。そして、次にステップＳ９を経て、ステップＳ１を再び実行する。
【００４１】
ステップＳ１０で取得したアドレス値が第２の上限しきい値を超えていない場合は、ステップＳ９を経て、ステップＳ１を再び実行する。
【００４２】
ステップＳ４で書き込み部２の周波数が最小値であるときは、ステップＳ１３にて、制御部５は取得したアドレス値が第２の下限しきい値を下回っているかどうかを判断する。なお、第２の下限しきい値は第１の下限しきい値よりも大きい値であり、ここでは例えば、アドレス値４００とする。取得したアドレス値が４００を下回っている場合は、ステップＳ１４にて、制御部５はレジスタ５１に設定されている標準値をより低い周波数に更新する。例えば、標準値を４７．６０５ＫＨｚから４７．６０４ＫＨｚに更新する。
【００４３】
次に、ステップＳ１５にて、制御部５は書き込み部２の周波数を更新後の標準値に変更する。具体的には、制御部５はサンプリング部６に対して、当該標準値の周波数でサンプリングするよう通知する。通知を受け取ったサンプリング部６は、入力されるデータを当該標準値の周波数でサンプリングして書き込み部２に出力する。そして、ステップＳ９を経て、ステップＳ１を再び実行する。
【００４４】
ステップＳ１３で取得したアドレス値が第２の下限しきい値を下回っていない場合は、ステップＳ９を経て、ステップＳ１を再び実行する。
【００４５】
次に、図３に示す受信機２００の動作について説明する。ステップＳ２１にて、送信機１００から送信されたデータが、例えば１６００ワードの容量を有するバッファメモリ２０に格納される。次に、ステップＳ２２にて、読み出し部２３は、バッファメモリ２０から周波数４７．６０５ＫＨｚでデータを読み出す。次に、ステップＳ２３にて、制御部２５は、バッファメモリ２０に例えば１６００ワード以上の空き容量があるかどうかを判断する。バッファメモリに１６００ワード以上の空き容量があれば、ステップＳ２４にて、制御部２５は送信機１００に対して送信要求を出力する。バッファメモリに１６００ワード以上の空き容量がなければ、再びステップＳ２３を実行する。
【００４６】
続いて、上記動作によりバッファメモリ１に書き込まれるデータ量について説明する。例えば、周波数６ＭＨｚで動作する読み出し部３が、メモリバンク１１に書き込まれた８００ワードのデータを読み出して、受信機２００に送信する（ステップＳ１）と、送信された８００ワードのデータがバッファメモリ２０格納され（ステップＳ２１）、読み出し部２３は周波数４７．６０５ＫＨｚでバッファメモリ２０からデータを読み出す（ステップＳ２２）。このとき、書き込み部２はメモリバンク１０に周波数４７．６０５ＫＨｚでデータを書き込んでいる（ステップＳ１）。
【００４７】
そして、受信機２００では、バッファメモリ２０から当該８００ワードのデータを読み出して、バッファメモリ２０に１６００ワード以上の空き容量が生じると、送信要求が送信機１００に対して送信される（ステップＳ２３，Ｓ２４）。送信要求を受け取った送信機１００では、その時点で書き込み部２がメモリバンク１０に書き込んだ最後のアドレス値を確認する（ステップＳ２，Ｓ３）。即ち、実施質的には、読み出し部２３がメモリバンク１１に書き込まれた８００ワードのデータを読み出す間に、書き込み部２がメモリバンク１０に書き込んだデータ量を確認している（ステップＳ３）。
【００４８】
例えば書き込み部２の周波数が読み出し部２３の周波数よりも高い場合は、書き込み部２は８００ワードより多いデータ量をメモリバンク１０に書き込むので、アドレス値は８００より大きい値となる。逆に、書き込み部２の周波数が読み出し部２３の周波数よりも低い場合は、書き込み部２は８００ワードより少ないデータ量をメモリバンク１０に書き込むので、アドレス値は８００より小さい値となる。
【００４９】
ここで、読み出し部３が送信要求を受け取った時点（フラグＦが制御部５に与えられた時点）で、書き込み部２が最後に書き込んだアドレス値の推移を図４〜６に例示する。図４は、書き込み部２の周波数と読み出し部２３の周波数の差が小さい場合、図５は書き込み部２の周波数が読み出し部２３の周波数よりも高い場合、図６は書き込み部２の周波数が読み出し部２３の周波数よりも低い場合を示している。
【００５０】
図４に例示されているように、書き込み部２の周波数と読み出し部２３の周波数の差が小さい場合、バッファフロー制御装置の動作としては、図２において、ステップＳ１〜Ｓ５，Ｓ７，Ｓ９をこの順で実行する。この場合、バッファメモリ１のオーバーフローやアンダーフローは生じず、バッファメモリ１を介したデータの受け渡しはスムーズに実行される。
【００５１】
図５に例示されているように、書き込み部２の周波数が読み出し部２３の周波数よりも高い場合、上述したようにアドレス値は上昇する。アドレス値が第１の上限しきい値を超えたとき（時刻ｔＡ）に、書き込み部２の周波数が最小値（例えば４７．０００ＫＨｚ）に変更される（ステップＳ６）。その後は、書き込み部２の周波数の方が読み出し部２３の周波数よりも低くなるので、フラグＦが制御部５に与えられたときのアドレス値は低下する。そして、当該アドレス値が第２の下限しきい値を下回ったとき（時刻ｔＢ）に、書き込み部２の周波数の標準値がより低い値に更新され（ステップＳ１４）、書き込み部２の周波数が更新後の標準値（ステップＳ１５）に変更される。
【００５２】
そして、更新後の書き込み部２の周波数が未だ読み出し部２３の周波数よりも高い場合は、再び当該アドレス値は上昇する。しかし、更新前に比べて書き込み部２と読み出し部２３の周波数の差は小さくなるので、再び第１の上限しきい値を超えるまでの期間が長くなり、周波数の切替期間を長くすることができる。
【００５３】
次に、図６に例示されているように、書き込み部２の周波数が読み出し部２３の周波数よりも低い場合、上述したようにアドレス値は低下する。アドレス値が第１の下限しきい値を下回ったとき（時刻ｔＣ）に、書き込み部２の周波数が最大値（例えば４７．６０９ＫＨｚ）に変更される（ステップＳ８）。その後は、書き込み部２の周波数の方が読み出し部２３の周波数よりも高くなるので、フラグＦが制御部５に与えられたときのアドレス値は上昇する。そして、当該アドレス値が第２の上限しきい値を上回ったとき（時刻ｔＤ）に、書き込み部２の周波数の標準値がより高い値に更新され（ステップＳ１１）、書き込み部２の周波数が更新後の標準値（ステップＳ１２）に変更される。
【００５４】
そして、更新後の書き込み部２の周波数が未だ読み出し部２３の周波数よりも低い場合は、再び当該アドレス値は低下する。しかし、標準値の更新前に比べて書き込み部２と読み出し部２３の周波数の差は小さくなるので、再び第１の下限しきい値を超えるまでの期間が長くなり、周波数の切替期間を長くすることができる。
【００５５】
なお、図５に例示されている場合において、更新後の標準値における書き込み部２の周波数が読み出し部２３の周波数よりも低くなると、時刻ｔＢ以降はアドレス値が低下し、当該アドレス値が第１の下限しきい値を下回ったときに、書き込み部２の周波数が最大値に変更される（ステップＳ８）。
【００５６】
なお、図６に例示されている場合において、更新後の標準値における書き込み部２の周波数が読み出し部２３の周波数よりも高くなると、時刻ｔＤ以降はアドレス値が上昇し、当該アドレス値が第１の上限しきい値を超えたときに、書き込み部２の周波数が最小値に変更される（ステップＳ６）。
【００５７】
以上のように、本第１の実施の形態に係るバッファフロー制御装置によると、書き込み部２と読み出し部２３の周波数の差に起因する、バッファメモリ１のオーバーフローやアンダーフローを防止できる。さらに、書き込み部２の周波数の標準値が読み出し部２３の周波数よりも高いときに、当該標準値をより低く更新し、書き込み部２の周波数の標準値が読み出し部２３の周波数よりも低いときに、当該標準値をより高く更新しているので、周波数の切替期間を長くすることができ、周波数の変更に伴う処理負荷や消費電力を低減することができる。また、サンプリング部６によって、任意の周波数にサンプリングできるので、送信機１００の周波数と、受信機２００の周波数が大きく異なっていても適用可能である。
【００５８】
また、標準値の更新によってどの程度標準値を変動させるかを、更新前の標準値で動作しているときのアドレス値の傾きの絶対値に基づいて決定しても良い。例えば、アドレス値の傾きの絶対値が大きい場合に標準値を大きく変動させ、アドレス値の傾きの絶対値が小さい場合に標準値を小さく変動させる。この場合、効率よく周波数の切替期間を長くすることができる。
【００５９】
また、受信機２００から基準クロックの供給を受けなくとも送信機１００と受信機２００のクロック差を吸収できるので、基準クロックの供給機能を有さない通信システムであっても、本発明を適用することができる。
【００６０】
なお、本第１の実施の形態においては、標準値の更新は、第２の上限しきい値を超えたとき、または第２の下限しきい値を下回ったときに実行されているが、これに限らず、周波数が最大値である間または最小値である間に実行されても良い。
【００６１】
なお、本第１の実施の形態においては、書き込み部２の周波数の設定値である最大値および最小値については更新していないが、これに限らず更新しても構わない。例えば、標準値で動作しているときのアドレス値の傾きの絶対値が小さいときに、最大値をより低い値に更新してよい。この場合、周波数が標準値から最大値に変更されてから再び標準値に変更されるまでの期間を長くすることができる。なお、最小値についても同様である。
【００６２】
（第２の実施の形態）
本発明に係る第２の実施の形態のバッファフロー制御装置について説明する。第２の実施の形態では、第１の実施の形態に係るバッファフロー制御装置のうちサンプリング部６の具体的な構成について説明している。図７は、第２の実施の形態に係るバッファフロー制御装置を備える送信機と、受信機とから成るシステムの模式図を示す。なお、同一符号は同一又は相当部分を示しており、重畳する説明は省略する。
【００６３】
サンプリング部６は、カウンタ回路６１と、出力制御部６２とを備えており、周波数４８．０００ＫＨｚで入力されるデータを周波数４７．６０５ＫＨｚのデータにサンプリングする。
【００６４】
以下、カウンタ回路６１および出力制御部６２の機能、動作を説明する。図８は、カウンタ回路６１のカウント動作によるカウンタ値Ｋの一例を示す図である。時刻ｔ０，ｔ１，・・・の各時間間隔は、４８．０００ＫＨｚに相当する時間である。即ち、時刻ｔ０，ｔ１，ｔ２・・・のタイミングでサンプリング部６にデータが入力される。
【００６５】
カウンタ回路６１は、時刻ｔ０，ｔ１，・・・毎にカウンタ値Ｋに「４７６０５」（書き込み部２の周波数に相当）だけ加算する。そして、カウンタ値Ｋが「４８０００」（サンプリング部６に入力されるデータの周波数に相当）以上である場合に、出力制御部６２はデータを書き込み部２に出力し、カウンタ値Ｋから「４８０００」を減算する。カウンタ値Ｋが「４８０００」未満である場合は、出力制御部６２はデータを出力せずに、入力されたデータを削除し（間引く）、カウンタ値Ｋをそのままとする。なお、ここでは、カウンタ値Ｋの初期値を０として説明する。
【００６６】
具体的に、図８に示すように、時刻ｔ０でカウンタ値Ｋは「４７６０５」となり、この時、カウンタ値Ｋは「４８０００」未満なので、出力制御部６２は入力されたデータを出力せず削除する（間引く）。時刻ｔ１でカウンタ値Ｋは「９５２１０」（＝４７６０５＋４７６０５）となり、この時、カウンタ値Ｋは「４８０００」以上であるので、出力制御部６２は入力されたデータを書き込み部２に出力する。そして、カウンタ値Ｋは「４７２１０」（＝４７６０５＋４７６０５−４８０００）となる。その後、カウンタ値Ｋは、「３９５」（＝４８０００−４７６０５）ずつ減算されていく。そして、時刻ｔ１２０でカウンタ値Ｋは「２０５」となり、時刻ｔ１２１でカウンタ値Ｋ「２０５」に「４７６０５」が加算されて「４７８１０」となる。この時、カウンタ値Ｋは「４８０００」未満なので、出力制御部６２は、入力されたデータを出力せずに削除する（間引く）。
【００６７】
即ち、１秒間に４８０００個（周波数４８．０００ＫＨｚ）のデータのうち、１２１または１２２（４８０００／３９５の前後の整数）個毎にデータが間引かれて、１秒間に４７６０５個（周波数４７．６０５ＫＨｚ）のデータが出力される。
【００６８】
そして、図２のステップＳ６，Ｓ８，Ｓ１２，Ｓ１５のいずれかにおいて、書き込み部２の周波数を変更するときは、変更後の周波数の値に相当する値をカウンタ値Ｋに加算してやればよい。例えば書き込み部２の周波数を最大値（４７．６０９ＫＨｚ）とする場合は、時刻ｔ０，ｔ１，・・・毎にカウンタ値Ｋに「４７６０９」だけ加算すればよい。同様に、書き込み部２の周波数を最小値（４７．０００ＫＨｚ）とした場合は、時刻ｔ０，ｔ１，・・・毎にカウンタ値Ｋに「４７０００」だけ加算すればよい。
【００６９】
従って、サンプリング部６は、電圧制御水晶発振器を用いることなくサンプリング周波数を調整できるので、電圧制御水晶発振器を用いた場合と比べて、コストの上昇や消費電力の増大を回避する事ができる。
【００７０】
（第１の変形例）
第２の実施の形態におけるサンプリング部６では、単純に１秒間に４８０００個のデータから略等間隔で３９５個のデータを間引いて、１秒間に４７６０５個のデータにサンプリングしているので、間引いたデータの前後で不連続性が生じる。
【００７１】
そこで、出力制御部６２は、データを出力するときに、カウンタ値Ｋに基づいて、データを直線補完して出力する。図９には、サンプリング部６に入力される５サンプルポイントのデータＡ２０〜Ａ２４が、４サンプルポイントのデータＢ２０〜Ｂ２３に削減補正される例が示されている。なお、実際は４８０００サンプルポイントのデータを４７６０５サンプルポイントのデータに削減補正することになるが、簡単のため図９を用いて直線補補正について説明する。例えばデータＢ２１の値は、データＡ２１，Ａ２２の各値と、距離ｘ３，ｘ４とを用いて、以下の式（１）として与えられる。
【００７２】
【数１】
2008022450.tif 000003
【００７３】
なお、距離ｘ３，ｘ４の比は、カウンタ値Ｋに基づいて求めることができる。以下、具体的に説明する。図１０に、隣り合うデータＡとデータＢの距離と、カウンタ値Ｋを示す。データＡ２０〜Ａ２３のデータ間距離とデータＢ２０〜Ｂ２４のデータ間距離をそれぞれ４ｋ，５ｋ（ｋ：比）とする。即ちデータＢｉとデータＡｉ＋１（ｉ＝２０〜２３）の隣り合う距離は、ｉが１増加すると、１ｋ（＝５ｋ−４ｋ）ずつ減少する（図１０において、太文字で示す）。
【００７４】
一方、カウンタ値Ｋは、まず「４」（データＢの周波数に相当）を加算して、カウンタ値が「５」（データＡの周波数に相当）以上であれば、カウンタ値Ｋから「５」（データＡの周波数に相当）を減算する。即ち、カウンタ値Ｋは「１」（＝５−４）ずつ減少する（図１０において、太文字で示す）。つまり、データＢｉとデータＡｉ＋１（ｉ＝２０〜２３）の隣り合う距離の比をカウンタ値Ｋに基づいて求めることができる。なお、この場合、ｘ３＝５ｋ−４ｋ＝ｋ，ｘ４＝３ｋである。
【００７５】
従って、出力制御部６２は、カウンタ値Ｋに基づいて、出力データを直線補完することができ、単純に１秒間に４８０００個のデータから３９５個のデータを間引いて１秒間に４７６０５個のデータにサンプリングする場合に比べて、間引いたデータの前後で生じる不連続性を解消することができる。
【００７６】
（第２の変形例）
第２の実施の形態におけるサンプリング部６では、単純に１秒間に４８０００個のデータから略等間隔で３９５個のデータを間引いて、１秒間に４７６０５個のデータにサンプリングしているので、間引いたデータの前後で不連続性が生じる。
【００７７】
そこで、サンプリング部６は、周波数４８．０００ＫＨｚで入力されたデータを例えば５０倍の周波数でオーバーサンプリングして、周波数４７．６０５ＫＨｚのデータにサンプリングする。
【００７８】
具体的に、カウンタ回路６１は、時刻ｔ０，ｔ１，・・・毎にカウンタ値Ｋを「４７６０５／５０」（書き込み部２の周波数の５０分の１に相当）だけ加算する。なお、時刻ｔ０，ｔ１，・・・の各時間間隔は、４８．０００×５０ＫＨｚ（送信機の周波数の５０倍に相当）に相当する時間である。即ち、入力されるデータのタイミングは、時刻ｔ０，ｔ５０，ｔ１００，・・・である。
【００７９】
そして、カウンタ値Ｋが「４８０００」（サンプリング部６に入力されるデータの周波数に相当）を超える場合に、出力制御部６２は後述する累加値を書き込み部２に出力し、カウンタ値Ｋから「４８０００」を減算する。カウンタ値Ｋが「４８０００」以上である場合は、出力制御部６２はデータを出力せずに、カウンタ値Ｋをそのままとする。
【００８０】
次に、出力制御部６２の動作について説明する。入力されるデータの隣り合うサンプルポイントの２点間差分をΔとすると、出力制御部６２は、Δに５０分の１を乗じた値を、時刻ｔ０，ｔ１，・・・毎に累加する。そして、カウンタ値Ｋが「４８０００」以上である場合に、当該累加値を書き込み部２に出力する。
【００８１】
具体的に、図１１にサンプリング部６の入力データと出力データの一部を示す。図１１において太線で示すように、例えば時刻ｔ１４００でデータＡ２８が出力制御部６２に入力されると、出力制御部６２はデータＡ２７とＡ２８の２点間差分Δ（＝Ａ２８−Ａ２７）に５０分の１を乗じた値を算出して、以降、時刻ｔ１４００，ｔ１４０１、ｔ１４０２・・・毎にΔ／５０を累加する。なお、図１１において、当該累加値が一点鎖線で示されている。一点鎖線で示される累加値は、時間とともに比例しているように描かれているが、拡大図で示されるように、実際は時刻ｔｊ（ｊ＝０，１，２，・・・）毎にΔ／５０だけ累加されているので直線ではなく階段状となる。
【００８２】
そして、時刻ｔ１４００，ｔ１４０１・・・毎にカウンタ回路６１はカウンタ値Ｋに「４７６０５／５０」を加算し、時刻ｔ１４１１でカウンタ値Ｋが「４８０００」以上になると、出力制御部６２は時刻ｔ１４１１での累加値を書き込み部２に出力する。そして、カウンタ値Ｋから「４８０００」が減算され、再び時刻ｔ１４１２，ｔ１４１３，・・・毎に「４７６０５／５０」が加算される。
【００８３】
そして、時刻ｔ１４５０でデータＡ２９が出力制御部６２に入力されると、出力制御部６２はデータＡ２８とＡ２９の２点間差分Δ（＝Ａ２９−Ａ２８）に５０分の１を乗じた値を算出して累加値にΔ／５０を加算し、以降ｔ１４５１，ｔ１４５２，・・・毎にΔ／５０を累加する。そして、時刻ｔ１４６２でカウンタ値Ｋが「４８０００」以上になると、出力制御部６２は時刻ｔ１４６２で当該累加値を書き込み部２に出力する。
【００８４】
以上のように、出力制御部６２は、オーバーサンプリングにより出力データを補正することができ、単純に１秒間に４８０００個のデータから３９５個のデータを間引いて１秒間に４７６０５個のデータにサンプリングする場合に比べて、間引いたデータの前後で生じる不連続性を解消することができる。
【００８５】
なお、図２のステップＳ６，Ｓ８，Ｓ１２，Ｓ１５のいずれかにおいて、書き込み部２の周波数を変更するときは、変更後の周波数に相当する値に５０分の１を乗じた値をカウンタ値Ｋに加算すればよい。例えば書き込み部２の周波数を最大値（４７．６０９ＫＨｚ）とする場合は、時刻ｔ０，ｔ１，・・・毎にカウンタ値Ｋに「４７６０９／５０」だけ加算すればよい。同様に、書き込み部２の周波数を最小値（４７．０００ＫＨｚ）とする場合は、時刻ｔ０，ｔ１，・・・毎にカウンタ値Ｋに「４７０００／５０」を加算すればよい。
【００８６】
また、カウンタ値Ｋに加算すべき値（例えば「４７０００／５０」、「４７６０５／５０」、「４７６０９／５０」）を予めレジスタ５１に記録しておくことで、サンプリング部６には除算回路が不要となるため、回路規模を小さくすることができるとともに、サンプリング部６での処理負荷を低減できる。
【００８７】
なお、第１の変形例と比較して、出力データが加算のみで算出されているので、出力データを算出するための処理負荷が低く、回路規模が小さくて済む。一方、第１の変形例においては、入力データを直線補完して出力データを算出しているため、第２の変形例と比較して、出力データの精度が高い。
【００８８】
なお、本発明では、バッファフロー制御装置が送信機に設けられているとして説明したが、これに限らず、受信機に設けられていても良い。その場合、送信機から例えば４８．０００ＫＨｚで送信されたデータを、サンプリング部６が例えば周波数４７．６０５ＫＨｚにサンプリングし、書き込み部２がバッファメモリ１にデータを書き込み、読み出し部３が受信機のクロックに基づいた周波数４７．６０５ＫＨｚでバッファメモリ１からデータを読み出す。そして、読み出し部３がバッファメモリ１からデータを読み出した時点で、書き込み部２がバッファメモリ１に書き込んだデータ量が所定の範囲にないときに、書き込み部２の周波数（サンプリング部６のサンプリング周波数）を変更すればよい。また、送信機と受信機を結ぶ中継機に設けられていてもよい。
【図面の簡単な説明】
【００８９】
【図１】第１の実施の形態に係るバッファフロー制御装置を備える送信機と、受信機とから成るシステムの模式図である。
【図２】第１の実施の形態に係るバッファフロー制御装置の動作を示すフローチャートである。
【図３】受信機の動作を示すフローチャートである。
【図４】書き込み部が最後に書き込んだアドレス値の推移を示す図である。
【図５】書き込み部が最後に書き込んだアドレス値の推移を示す図である。
【図６】書き込み部が最後に書き込んだアドレス値の推移を示す図である。
【図７】第２の実施の形態に係るバッファフロー制御装置を備える送信機と、受信機とから成るシステムの模式図である。
【図８】カウンタ値Ｋの推移を示す図である。
【図９】直線補完の概要を示す図である。
【図１０】直線補完の概要を示す図である。
【図１１】オーバーサンプリングの概要を示す図である。
【符号の説明】
【００９０】
１  バッファメモリ
２  書き込み部
３  読み出し部
５  制御部
５１  レジスタ
６  サンプリング部
６１  カウンタ回路
６２  出力制御部
【図１】
2008022450.tif 000004
【図２】
2008022450.tif 000005
【図３】
2008022450.tif 000006
【図４】
2008022450.tif 000007
【図５】
2008022450.tif 000008
【図６】
2008022450.tif 000009
【図７】
2008022450.tif 000010
【図８】
2008022450.tif 000011
【図９】
2008022450.tif 000012
【図１０】
2008022450.tif 000013
【図１１】
2008022450.tif 000014