(57)【要約】【課題】  シンプルな構成によりノイズの発生を抑制可能な電子機器、物理量検出装置、プログラム及びサンプリングレート変換方法等の提供。【解決手段】  電子機器は、第１のクロックでデータが取り込まれ、少なくとも第１のクロックの複数クロックサイクル分の各データを、複数のアドレスの各アドレスに対応づけて保持する記憶部１２０と、第２のクロックの１クロックサイクル分の、第１のクロックのクロック数をカウントするカウント部１３０と、カウント部１３０のカウント値に基づいて、記憶部１２０の複数のアドレスのうちのいずれかのアドレスを選択する判定部１４０と、判定部１４０により選択されたアドレスのデータを、第２のクロックで出力する出力部１５０と、を含む。【選択図】      図４
2018092392.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロックでデータが取り込まれ、少なくとも前記第１のクロックの複数クロックサイクル分の各データを、複数のアドレスの各アドレスに対応づけて保持する記憶部と、
第２のクロックの１クロックサイクル分の、前記第１のクロックのクロック数をカウントするカウント部と、
前記カウント部のカウント値に基づいて、前記記憶部の前記複数のアドレスのうちのいずれかのアドレスを選択する判定部と、
前記判定部により選択された前記アドレスのデータを、前記第２のクロックで出力する出力部と、
を含むことを特徴とする電子機器。
【請求項２】
請求項１において、
前記記憶部は、ＦＩＦＯメモリーであり、
前記記憶部の前記複数のアドレスの第１のアドレスに格納されるデータは、前記複数のアドレスの第２のアドレスに格納されるデータに比べて時系列的に前のデータであることを特徴とする電子機器。
【請求項３】
請求項２において、
前記第１のクロックと前記第２のクロックの周波数の比により決定される所定値をＪ（Ｊは２以上の整数）とした場合に、
前記判定部は、
前記カウント値がＪ−１である場合は、選択する前記アドレスを、前記複数のアドレスの前記第１のアドレスから前記第２のアドレスへ変更することを特徴とする電子機器。
【請求項４】
請求項３において、
前記判定部は、
前記カウント値がＪ＋１である場合は、選択する前記アドレスを、前記複数のアドレスの前記第２のアドレスから前記第１のアドレスへ変更することを特徴とする電子機器。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記データを前記第１のクロックでサンプリングする入力部と、
前記入力部でサンプリングされた前記データをアップサンプリングするアップサンプリング部と、
を含み、
前記記憶部は、
前記アップサンプリング部によりアップサンプリングされたデータを記憶することを特徴とする電子機器。
【請求項６】
請求項５において、
前記アップサンプリング部は、
所与のタイミングの前記第１のクロックで前記入力部がサンプリングした前記データｄｊに基づいて、前記所与のタイミングよりも後のタイミングに対応するデータｄｊ２〜ｄｊｋ（ｋは２以上の整数）を生成するｋ倍のアップサンプリングを行い、
ｄｊｉ（ｉは２≦ｉ≦ｋ−１を満たす整数）に比べてｄｊｉ＋１が時系列的に後のタイミングに対応するデータである場合に、
前記記憶部は、
アップサンプリングされたデータｄｊ２〜ｄｊｋのうちのｄｊｋを記憶することを特徴とする電子機器。
【請求項７】
請求項５又は６において、
前記アップサンプリング部は、
所与の値のデータの挿入処理、及びフィルター処理により、前記入力部でサンプリングされた前記データのアップサンプリングを行うことを特徴とする電子機器。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記判定部は、
前記第１のクロックと前記第２のクロックの周波数の比を検出する周波数比検出部を含み、
前記判定部は、
前記カウント値と、検出された前記周波数の比に基づいて、前記記憶部の前記アドレスの選択を行うことを特徴とする電子機器。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記第１のクロックと前記第２のクロックは非同期であることを特徴とする電子機器。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記第１のクロックと前記第２のクロックの周波数の比は２以上の有理数であることを特徴とする電子機器。
【請求項１１】
物理量を検出するセンサーと、
請求項１乃至１０のいずれかに記載の電子機器と、
を含むことを特徴とする物理量検出装置。
【請求項１２】
請求項１１において、
前記センサーからの検出信号をＡ／Ｄ変換するＡ／Ｄ変換部を含み、
前記第１のクロックは、
前記Ａ／Ｄ変換のクロックであることを特徴とする物理量検出装置。
【請求項１３】
請求項１１又は１２において、
前記第２のクロックは、
物理量検出装置の外部装置から入力されるクロック、又は、物理量検出装置が有する周波数源からのクロックであることを特徴とする物理量検出装置。
【請求項１４】
第１のクロックでデータが取り込まれ、少なくとも前記第１のクロックの複数クロックサイクル分の各データを、複数のアドレスの各アドレスに対応づけて記憶部に記憶するステップと、
第２のクロックの１クロックサイクル分の、前記第１のクロックのクロック数をカウントするステップと、
カウントされたカウント値に基づいて、前記記憶部の前記複数のアドレスのうちのいずれかのアドレスを選択するステップと、
選択された前記アドレスのデータを、前記第２のクロックで出力するステップと、
をコンピューターに実行させることを特徴とするプログラム。
【請求項１５】
第１のクロックでデータが取り込まれ、少なくとも前記第１のクロックの複数クロックサイクル分の各データを、複数のアドレスの各アドレスに対応づけて記憶部に記憶し、
第２のクロックの１クロックサイクル分の、前記第１のクロックのクロック数をカウントし、
カウントされたカウント値に基づいて、前記記憶部の前記複数のアドレスのうちのいずれかのアドレスを選択し、
選択された前記アドレスのデータを、前記第２のクロックで出力する、
ことを特徴とするサンプリングレート変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器、物理量検出装置、プログラム及びサンプリングレート変換方法等に関する。
【背景技術】
【０００２】
従来、所与のサンプリングレート（サンプリング周波数）でサンプリングされたデータを、異なるサンプリングレートに変換する手法が知られている。サンプリングレート変換（リサンプリング）は多様な場面で利用される。例えば、加速度センサーやジャイロセンサー等を含む物理量検出装置では、センサーから入力される検出信号のレート（入力サンプリングレート）と、当該検出信号に基づく物理量の出力レート（出力サンプリングレート）が異なる場合が多い。そのため、物理量検出装置では入力データに対して、サンプリングレート変換を行って出力データを出力する。その他、音響信号処理や、通信用の信号処理等、サンプリングレート変換を行う信号処理は種々の場面で使用されている。
【０００３】
例えば特許文献１には、２つのサンプリングレートの最小公倍数でインターポーレーション（補間）した後、デジタルフィルターで平滑化し、デシメーションすることで、サンプリングレート変換を行う手法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−９１２８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１等の従来手法では、２つのサンプリングレート（周波数）が同期せず、クロックジッタ（クロック周期の不確実性）が含まれる場合に、ノイズが発生する事を述べていない。より詳しくは、入力サンプリングレートと出力サンプリングレートが非同期クロックでデータをリサンプリングする場合、クロックジッタによりリサンプリング後のデータ周期に変動が生じ、ノイズが増大することを考慮していない。
【０００６】
また特許文献１では、サンプリングレート変換に、最小公倍数でのインターポーレーション、フィルター処理、デシメーションといった処理が必要となる。これらの処理は負荷が大きく、特にソフトウェアにより実現しようとした場合、処理性能の高いプロセッサーが必要となる。物理量検出装置等の小型の装置に含まれるプロセッサー（ＣＰＵ，ＤＳＰ等）を用いる場合、特許文献１等の従来手法をソフトウェアで実行することは、処理負荷等の観点から適当と言えない。
【０００７】
本発明の幾つかの態様によれば、シンプルな構成によりノイズの発生を抑制可能な電子機器、物理量検出装置、プログラム及びサンプリングレート変換方法等を提供できる。
【課題を解決するための手段】
【０００８】
本発明の一態様は、第１のクロックでデータが取り込まれ、少なくとも前記第１のクロックの複数クロックサイクル分の各データを、複数のアドレスの各アドレスに対応づけて保持する記憶部と、第２のクロックの１クロックサイクル分の、前記第１のクロックのクロック数をカウントするカウント部と、前記カウント部のカウント値に基づいて、前記記憶部の前記複数のアドレスのうちのいずれかのアドレスを選択する判定部と、前記判定部により選択された前記アドレスのデータを、前記第２のクロックで出力する出力部と、を含む電子機器に関係する。
【０００９】
本発明の一態様では、複数のアドレスを有する記憶部により、複数クロックサイクル分のデータを保持し、カウント値に基づいていずれのアドレスのデータを出力するかを選択する。このようにすれば、第１のクロックと第２のクロックの時間的な関係を考慮した上で、出力するデータを決定できるため、サンプリングレート変換におけるノイズを低減すること等が可能になる。
【００１０】
また本発明の一態様では、前記記憶部は、ＦＩＦＯメモリーであり、前記記憶部の前記複数のアドレスの第１のアドレスに格納されるデータは、前記複数のアドレスの第２のアドレスに格納されるデータに比べて時系列的に前のデータであってもよい。
【００１１】
このようにすれば、ＦＩＦＯメモリーを用いて、タイミングの異なる複数のデータを保持することが可能になる。
【００１２】
また本発明の一態様では、前記第１のクロックと前記第２のクロックの周波数の比により決定される所定値をＪ（Ｊは２以上の整数）とした場合に、前記判定部は、前記カウント値がＪ−１である場合は、選択する前記アドレスを、前記複数のアドレスの前記第１のアドレスから前記第２のアドレスへ変更してもよい。
【００１３】
このようにすれば、カウント値に基づいて選択するアドレスを変更することで、適切にノイズを低減することが可能になる。
【００１４】
また本発明の一態様では、前記判定部は、前記カウント値がＪ＋１である場合は、選択する前記アドレスを、前記複数のアドレスの前記第２のアドレスから前記第１のアドレスへ変更してもよい。
【００１５】
このようにすれば、カウント値に基づいて選択するアドレスを変更することで、適切にノイズを低減することが可能になる。
【００１６】
また本発明の一態様では、前記データを前記第１のクロックでサンプリングする入力部と、前記入力部でサンプリングされた前記データをアップサンプリングするアップサンプリング部と、を含み、前記記憶部は、前記アップサンプリング部によりアップサンプリングされたデータを記憶してもよい。
【００１７】
このようにすれば、アップサンプリングデータの保持、及び出力が可能になり、出力クロックとデータとの時系列的な関係を柔軟に設定することが可能になる。
【００１８】
また本発明の一態様では、前記アップサンプリング部は、所与のタイミングの前記第１のクロックで前記入力部がサンプリングした前記データｄｊに基づいて、前記所与のタイミングよりも後のタイミングに対応するデータｄｊ２〜ｄｊｋ（ｋは２以上の整数）を生成するｋ倍のアップサンプリングを行い、ｄｊｉ（ｉは２≦ｉ≦ｋ−１を満たす整数）に比べてｄｊｉ＋１が時系列的に後のタイミングに対応するデータである場合に、前記記憶部は、アップサンプリングされたデータｄｊ２〜ｄｊｋのうちのｄｊｋを記憶してもよい。
【００１９】
このようにすれば、アップサンプリングデータのうち、少なくとも時系列的に最も後のタイミングに対応するデータを、保持及び出力の対象とすることが可能になる。
【００２０】
また本発明の一態様では、前記アップサンプリング部は、所与の値のデータの挿入処理、及びフィルター処理により、前記入力部でサンプリングされたデータのアップサンプリングを行ってもよい。
【００２１】
このようにすれば、データの挿入及びフィルター処理により、アップサンプリングを実現すること（インターポーレーションを行うこと）が可能になる。
【００２２】
また本発明の一態様では、前記判定部は、前記第１のクロックと前記第２のクロックの周波数の比を検出する周波数比検出部を含み、前記判定部は、前記カウント値と、検出された周波数の比に基づいて、前記記憶部の前記アドレスの選択を行ってもよい。
【００２３】
このようにすれば、実際に入力されるクロックに基づいて、周波数の比を求めることが可能になる。
【００２４】
また本発明の一態様では、前記第１のクロックと前記第２のクロックは非同期であってもよい。
【００２５】
このようにすれば、非同期のクロックを用いてサンプリングレート変換を行う場合に、適切にノイズを低減することが可能になる。
【００２６】
また本発明の一態様では、前記第１のクロックと前記第２のクロックの周波数の比は２以上の有理数であってもよい。
【００２７】
このようにすれば、記憶部の複数のアドレスに対応付けて複数のデータを記憶することができ、ノイズ低減効果を高くすること等が可能になる。
【００２８】
本発明の他の態様は、物理量を検出するセンサーと、上記のいずれかに記載の電子機器と、を含む物理量検出装置に適用できる。
【００２９】
本発明の他の態様では、物理量検出装置でサンプリングレート変換を行う場合に、適切にノイズを低減することが可能になる。物理量検出装置では、センサーからの信号の入力レートと、当該信号を用いた処理レートが異なる場合等、サンプリングレート変換が必要な場面が多いが、そのようなサンプリングレート変換を低ノイズで実現することが可能になる。
【００３０】
また本発明の他の態様では、前記センサーからの検出信号をＡ／Ｄ変換するＡ／Ｄ変換部を含み、前記第１のクロックは、前記Ａ／Ｄ変換のクロックであってもよい。
【００３１】
このようにすれば、Ａ／Ｄ変換のクロックを第１のクロックとして利用することが可能になる。
【００３２】
また本発明の他の態様では、前記第２のクロックは、物理量検出装置の外部装置から入力されるクロック、又は、物理量検出装置が有する周波数源からのクロックであってもよい。
【００３３】
このようにすれば、外部クロックを第２のクロックとして利用してもよいし、内部クロックを第２のクロックとして利用してもよく、状況に応じた構成の物理量検出装置を実現することが可能になる。
【００３４】
また本発明の他の態様は、第１のクロックでデータが取り込まれ、少なくとも前記第１のクロックの複数クロックサイクル分の各データを、複数のアドレスの各アドレスに対応づけて記憶部に記憶するステップと、第２のクロックの１クロックサイクル分の、前記第１のクロックのクロック数をカウントするステップと、カウントされたカウント値に基づいて、前記記憶部の前記複数のアドレスのうちのいずれかのアドレスを選択するステップと、選択された前記アドレスのデータを、前記第２のクロックで出力するステップと、をコンピューターに実行させるプログラムに関係する。
【００３５】
また本発明の他の態様は、第１のクロックでデータが取り込まれ、少なくとも前記第１のクロックの複数クロックサイクル分の各データを、複数のアドレスの各アドレスに対応づけて記憶部に記憶し、第２のクロックの１クロックサイクル分の、前記第１のクロックのクロック数をカウントし、カウントされたカウント値に基づいて、前記記憶部の前記複数のアドレスのうちのいずれかのアドレスを選択し、選択された前記アドレスのデータを、前記第２のクロックで出力するサンプリングレート変換方法に関係する。
【図面の簡単な説明】
【００３６】
【図１】入力クロックと出力クロックのタイミングチャート。
【図２】入力クロックと出力クロックのタイミングチャート。
【図３】出力データに含まれるノイズの変動例。
【図４】サンプリングレート変換装置（電子機器）の構成例。
【図５】物理量検出装置の構成例。
【図６】間引き間隔の変動例。
【図７】間引き間隔の変動による波形誤差の例。
【図８】本実施形態の手法の説明図。
【図９】本実施形態の処理を説明する状態遷移図。
【図１０】本実施形態の処理を説明する他の状態遷移図。
【図１１】本実施形態の処理を説明するフローチャート。
【図１２】３アドレスのＦＩＦＯメモリーを用いる場合の状態遷移図。
【図１３】周波数比が非整数である場合の入力クロックと出力クロックのタイミングチャート。
【図１４】周波数比が整数である場合の入力クロック数の誤差の変化を説明する図。
【図１５】周波数比が非整数である場合の入力クロック数の誤差の変化を説明する図。
【図１６】入力クロックと出力クロックのタイミングチャート。
【図１７】入力クロックと出力クロックのタイミングチャート。
【図１８】入力クロックと出力クロックのタイミングチャート。
【図１９】本実施形態での出力データに含まれるノイズの変動例。
【図２０】本実施形態の処理を説明する他の状態遷移図。
【図２１】アップサンプリングにより時間差（位相差）を低減できることの説明図。
【図２２】アップサンプリングを行う手法の説明図。
【図２３】ｋ＝２の場合の入力クロックと出力クロックのタイミングチャート。
【図２４】ｋ＝１０の場合の入力クロックと出力クロックのタイミングチャート。
【図２５】ｋ＝２の場合の入力クロックと出力クロックのタイミングチャート。
【発明を実施するための形態】
【００３７】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３８】
１．本実施形態の手法
まず本実施形態の手法について説明する。サンプリングレート変換処理とは、入力されるデータ周波数を異なる周波数に変換して出力する処理である。入力クロックの周波数（入力サンプルレートｎ）と、出力クロックの周波数（出力サンプルレートｍ）の比Ｍ＝ｎ／ｍは、周波数の変換率を示す。
【００３９】
例えば、ｎ＝１０００からｍ＝５００に変換する場合、Ｍ＝１０００／５００＝２となり、間引きを２で行う。言い換えれば、２つの入力データに対して、１つのデータを等間隔に選択することで、出力データを生成できる。しかし、ｎ＝１０００からｍ＝９００に変換する場合、Ｍ＝１０００／９００＝１．１１…となる。この場合、Ｍが非整数であるため、このままでは等間隔での間引きができない。
【００４０】
これに対して、例えば特許文献１の手法のように、入力データに対してインターポーレーションを行うことが考えられる。上記例の場合、ｎとｍの最小公倍数が９０００であるため、ａｎ＝９０００＝ａ×１０００として、ａｎ＝９０００にインターポーレーションした後、ｍ＝９００に変換する。このようにすれば、Ｍ＝ａｎ／ｍ＝９０００／９００＝１０となるため、間引きを１０で行えば出力データを生成できる。
【００４１】
なお、上記のインターポーレーションは、ａ＝９であるため、入力データ列に０を８個挿入するアップサンプリングを行った後、不要な周波数帯を除くフィルター処理を行えばよい。このフィルター処理と、間引きにおける折り返しを防止するためのフィルター処理を共通化する（例えば１つのローパスフィルターで実現する）ことも可能である。
【００４２】
上記のような間引きによるサンプリングレート変換を行う場合、間引き間隔の変動がノイズ要因となる。例えばＭ＝２であれば、間引き間隔は２で一定となる必要があり、間引き間隔が２以外の値に変動してしまうと、ノイズが発生する。図６を用いて後述する例では、間引き間隔は４となるべきところ、３や５に変動してしまっている。これにより、図７を用いて後述するように、入力データは正弦波状であったのに対して、出力データでは、当該正弦波から外れるデータが生じてしまう。
【００４３】
リアルタイムの処理が必要なシステムでは、入力クロックと出力クロックが同期しない場合がある。また、外部からタイミングを同期させるクロックが入力される場合もある。この場合、間引き間隔変動に起因するノイズが発生しうる。
【００４４】
例えば、ＩＭＵ（inertial measurement unit）や加速度センサー、或いはその他のセンサーにおけるデジタル信号処理では、センサー信号をＡ／Ｄ変換したのち、種々の信号処理（補正処理や変換処理など）を経て、ホスト演算処理器に出力する。この入力クロックのタイミングと、出力クロックのタイミングが重なる場合、時間的な前後関係によって間引き数が変動する。
【００４５】
図１は、入力クロックと出力クロックの関係を説明する図である。なお、図１では間引き間隔Ｄ＝４を想定しているため、４つの入力データを単位として表記している。具体的には、入力データを時系列順にｄ１，ｄ２，ｄ３，ｄ４とし、ｄ４の次の入力データをｄ１と表記している。この表記は、あくまで間引き間隔との対応関係を明示するためのものであり、所与のタイミングでの入力データｄ１と、別のタイミングでの入力データｄ１は、同一のデータを表すわけではない。ｄ２〜ｄ４についても同様である。また、入力データをｄ１〜ｄ４を用いて表す点は、図２等の他の図においても同様とする。
【００４６】
入力クロック及び出力クロックは、理想的には所与の周波数で安定したクロックであるが、現実には位相誤差（ジッタ、クロックジッタ、ワンダ）を含む。図１におけるｔ１及びｔ２は、それぞれ入力クロックと出力クロックのジッタ時間幅を表す。図１の例では、ｔ１に示した時間幅のうちのいずれかのタイミングで入力データが入力され、ｔ２に示した時間幅のうちのいずれかのタイミングで出力データが出力される。
【００４７】
入力クロックと出力クロックが同期しない場合、図１のように入力クロックと出力クロックのタイミングが重なることがあり得る。そのため、入力及び出力のタイミングによって、ｄ４の入力データの入力完了後、出力データが出力される場合もあれば、ｄ４の入力データの入力前に、出力データが出力される場合もある。
【００４８】
一般的な間引き処理としては、出力クロックのタイミングにおいて、最新の入力データを出力する処理を行えばよい。しかし図１の例では、入力クロックと出力クロックの関係によって、ｄ３が最新データの場合もあれば、ｄ４が最新データの場合もあり得る。所与の出力タイミングでｄ４が出力され、次の出力タイミングでｄ３が出力された場合、間引き間隔Ｄは３に変動する。また、所与の出力タイミングでｄ３が出力され、次の出力タイミングでｄ４が出力された場合、間引き間隔Ｄは５に変動する。このように、間引き間隔Ｄは、所定値Ｊ（ここではＪ＝Ｍ＝４）に対して±１の範囲で変動する。この場合、出力データは出力クロックに同期しているが、データ自体は１／ｍの一定周期ではなく、１入力サイクルクロック分（±１／ｎだけの時間）変動したデータとなってしまう。
【００４９】
図２は、入力クロックと出力クロックの関係を説明する他の図である。例えば、入力クロックと出力クロックが同期している場合は、図２に示すように、出力クロックのタイミングが、入力クロックが示す入力データの更新タイミングに重ならないように設定できる。図２の例では、必ず入力更新タイミング間に出力クロックが発生する位相関係となっている。出力クロックは、入力データの更新タイミングと干渉しないので、ｄ４を安定して出力でき、間引き間隔Ｄの変動によるノイズは発生しない。
【００５０】
以上で説明したように、入力クロックと出力クロックが非同期であり、特にクロックジッタ等の位相誤差の影響を考慮した場合には、間引き間隔Ｄの変動によるノイズが発生してしまう。入力クロックと出力クロックの周波数比Ｍが整数の場合、図１のようにノイズが常時発生する場合もあれば、図２のようにノイズが発生しない場合もある。非同期クロックの場合でも、システムの起動時に無作為に入力クロックと出力クロックの位相が決まるため、状況によっては図２のケースとなることもあり得るためである。しかし、非同期である以上、図１と図２のいずれになるかを制御できず、ノイズの低減を行うことが望ましい。
【００５１】
また周波数比Ｍが非整数の有理数である場合、図１３を用いて後述するように入力クロックと出力クロックの時間差が周期的に変化する。そのため、入力クロックと出力クロックが重なる期間と、入力クロックと出力クロックが重ならない期間とが周期的に現れる。
【００５２】
図３は、Ｍが非整数の有理数である場合のノイズの大きさの時系列変化を示す図である。図３に示したように、Ｍが非整数である場合、入力クロックと出力クロックが重なる期間（Ａ２）ではノイズが大きく、入力クロックと出力クロックが重ならない期間（Ａ３）ではノイズが小さくなる。そして、Ａ２＋Ａ３＝Ａ１を１周期として、同様の傾向のノイズが周期的に発生することになる。つまりＭが非整数である場合、間引き間隔Ｄの変動によるノイズの発生を回避することは困難であり、ノイズの低減を行うことが望ましい。
【００５３】
特許文献１の手法は、最小公倍数の周波数へのインターポーレーションを行うことで、クロックの周波数比Ｍを整数とし、間引き間隔Ｄ（＝Ｍ）による間引きでサンプリングレートを変換する手法を開示している。しかし特許文献１等の従来手法では、クロックが非同期である場合に、図１に示したようにジッタ等に起因して間引き間隔Ｄが変動することを想定していない。そのため、間引き間隔Ｄが変動することによるノイズの発生、及び当該ノイズの低減についても想定していない。また、特許文献１の手法はインターポーレーション等を行うため、処理負荷が大きい。そのため、ハードウェアにより実現する場合には構成が複雑となるし、ソフトウェアにより実現する場合には処理性能の高いプロセッサーを用いる必要が生じてしまう。
【００５４】
これに対して、本実施形態の電子機器（サンプリングレート変換装置１００）は、図４に示すように、第１のクロックでデータが取り込まれ、少なくとも第１のクロックの複数クロックサイクル分の各データを、複数のアドレスの各アドレスに対応づけて保持する記憶部１２０と、第２のクロックの１クロックサイクル分の、第１のクロックのクロック数をカウントするカウント部１３０と、カウント部１３０のカウント値ＣＮＴに基づいて、記憶部１２０の複数のアドレスのうちのいずれかのアドレスを選択する判定部１４０と、判定部１４０により選択されたアドレスのデータを、第２のクロックで出力する出力部１５０と、を含む。
【００５５】
なお、ここでの第１のクロックは、具体的には入力クロック（入力更新クロック）であり、第２のクロックは出力クロックである。カウント部１３０によるカウントは、例えば所与の出力クロックから、次の出力クロックまでの間の期間に入力された、入力クロック数をカウントすることにより行われる。カウント部１３０は、例えば入力クロックによりインクリメントされ、出力クロックにより初期値（例えば０）にリセットされるカウンターにより実現できる。カウント部１３０は、ハードウェアのカウンターでもよいし、ソフトウェアのカウンターでもよい。
【００５６】
また、記憶部１２０は、第１のクロックで取り込まれるデータを、複数保持する。以下の説明では、第１のクロックが入力クロックである場合を想定して、第１のクロックで取り込まれるデータを入力データと表記する。同様に、第２のクロックで出力されるデータを出力データと表記する。ここで、出力クロックの１クロックサイクル分の入力データの数と、記憶部１２０で保持するデータ数（アドレス数）は、一致してもよいし、一致しなくてもよい。即ち、記憶部１２０は、出力クロックの１クロックサイクル分の入力データを全て保持してもよいし、そのうちの一部を保持してもよいし、出力クロックの１クロックサイクル分を超える数の入力データを保持してもよい。以下で説明するように、記憶部１２０は２つの入力データを保持することで、十分なノイズ低減効果を実現することが可能であるが、３つ以上の入力データを保持することは妨げられない。
【００５７】
本実施形態では、記憶部１２０において、最新の入力データだけでなく、過去の入力データも保持しておく。そして、出力クロック間での入力クロック数をカウントし、カウント値ＣＮＴに基づいて、複数の入力データのうちのいずれを出力するかを判定する。仮に最新の入力データを出力する場合、ここでのカウント値ＣＮＴは、間引き間隔Ｄに相当する情報となる。図１の例であれば、カウント値ＣＮＴは４で安定して欲しいところ、３や５に変動する可能性がある。
【００５８】
本実施形態では、カウント値ＣＮＴをカウントすることで、間引き間隔Ｄが変動してしまうか否かを判定できる。その上で、間引き間隔Ｄが変動してしまう場合には、記憶部１２０から読み出す入力データを適切に選択することで、間引き間隔Ｄを調整する。詳細については図８等を用いて後述するが、記憶部１２０がＡＤ０，ＡＤ１の２アドレスを有する場合、読み出すアドレスをＡＤ０からＡＤ１（ＡＤ１からＡＤ０）に変更することで、間引き間隔を＋１（−１）することが可能である。つまりカウント値ＣＮＴが３となってしまった場合、読み出すアドレスをＡＤ０からＡＤ１に変更すれば、間引き間隔Ｄを４に補正できる。同様に、カウント値ＣＮＴが５となってしまったら、読み出すアドレスをＡＤ１からＡＤ０に変更すれば、間引き間隔Ｄを４に補正できる。
【００５９】
言い換えれば、本実施形態の手法は間引き間隔Ｄが変動するか否かの結果を得てから（カウント値ＣＮＴをカウントしてから）、出力データを決定することで、間引き間隔Ｄの変動を抑制している。これは、記憶部１２０に複数の入力データを保持しておき、過去の入力データの出力を許容する、即ち、入力データに対する出力データの遅延を許容することで実現される。
【００６０】
本実施形態の手法は、カウント部１３０（カウンター）と、記憶部１２０（バッファメモリー）というシンプルな構成により実現できる。そのため、例えば本実施形態の電子機器（サンプリングレート変換装置１００）をプロセッサーとメモリーを用いてソフトウェアにより実現することも容易である。
【００６１】
上述したように、本実施形態における第１のクロックと第２のクロックは非同期であることを想定している。非同期である場合、図１に示したように間引き間隔Ｄの変動が生じるおそれがあり、本実施形態の手法によるノイズ低減効果が大きい。
【００６２】
また、第１のクロックと第２のクロックの周波数の比Ｍは２以上の有理数であってもよい。本実施形態の手法では、複数の入力データ、より具体的には図８を用いて後述するように、１出力クロックサイクル分の入力データのうちの複数の入力データを記憶部１２０に保持しておく。そのため、１出力クロックサイクル分の入力データが１つの場合には、選択するデータ（アドレス）を変更できず、ノイズ低減効果が低くなってしまう。例えば、上述したＭ＝１．１１…の場合、１出力クロックサイクル分の入力データが１つである場合が大半であり、複数の入力データのうちのいずれかを選択するという処理は困難である。つまり本実施形態によるノイズ低減の効果は、クロックの周波数比Ｍが２以上の有理数である場合に顕著である。
【００６３】
以下、本実施形態の電子機器（サンプリングレート変換装置１００）や、物理量検出装置２００の構成例について説明し、その後、具体的なサンプリングレート変換手法を説明する。なお、説明をわかりやすくするために、まず周波数比Ｍが整数の場合の例について説明し、その後、Ｍが非整数（小数且つ有理数）の場合について説明する。
【００６４】
２．システム構成例
図４は、本実施形態のサンプリングレート変換装置１００のシステム構成例を示す図である。図４に示したように、サンプリングレート変換装置１００は、入力部１１０と、記憶部１２０（バッファメモリー）と、カウント部１３０（カウンター）と、判定部１４０と、出力部１５０と、周波数比検出部１６０を含む。ただし、サンプリングレート変換装置１００は、図４の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。例えば、周波数比検出部１６０を省略してもよいし、入力部１１０と記憶部１２０との間に不図示のアップサンプリング部を追加してもよい。
【００６５】
入力部１１０（入力回路）は、第１のクロック（入力クロック）により、データ（入力データ）を取得する。入力部１１０は、サンプリングレート変換装置１００の外部からのデータを取得するインターフェースとして実現されてもよい。ここでのインターフェースは種々の形式により実現可能であり、ＳＰＩ（Serial Peripheral Interface）であってもよいし、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）であってもよいし、他の形式であってもよい。
【００６６】
記憶部１２０は、複数の入力データを記憶するもので、その機能はＲＡＭ（Random Access Memory）等のメモリーやＨＤＤ（Hard Disk Drive）などにより実現できる。また、記憶部１２０は、サンプリングレート変換装置１００の各部（判定部１４０等）のワーク領域として用いられてもよい。
【００６７】
カウント部１３０は、出力クロックの１クロックサイクル分の、入力クロック数をカウントする。カウント部１３０は、ハードウェアのカウンターにより実現されてもよいし、ソフトウェアカウンターにより実現されてもよい。
【００６８】
判定部１４０（判定回路）は、カウント部１３０のカウント値ＣＮＴに基づいて、記憶部１２０のアドレスを選択する。具体的には、複数の入力データがそれぞれ複数のアドレスのいずれかのアドレスに対応付けて保持されているため、判定部１４０は、複数のアドレスのいずれかのアドレスを選択することで、複数の入力データのうちのいずれかの入力データを選択する。
【００６９】
出力部１５０（出力回路）は、判定部１４０により選択されたデータ（出力データ）を、第２のクロック（出力クロック）で出力する。出力部１５０は、サンプリングレート変換装置１００の外部装置とのインターフェースとして実現されてもよく、ＳＰＩ，ＵＡＲＴ等、種々の形式を利用可能である。
【００７０】
周波数比検出部１６０は、第１のクロックと第２のクロックの周波数の比Ｍを検出する。判定部１４０は、カウント値ＣＮＴと、周波数比検出部１６０で検出された周波数比Ｍに基づいて、記憶部１２０のアドレスの選択を行う。図５を用いて後述するように、第１のクロック及び第２のクロックの一方或いは両方が、外部からのクロック（或いは外部からのクロックに基づいて生成されるクロック）である場合があり得る。この場合、外部クロックの特性（周波数の値）は設計上既知であることが想定されるが、実際のクロック周波数が設計通りの信頼できる値であるとは限らない。
【００７１】
よって周波数比検出部１６０（周波数非検出回路）により、入力クロックと出力クロックの周波数比Ｍを求め、求めたＭを判定部１４０に対して出力してもよい。ただし、外部クロックが信頼できる場合等には、周波数比検出部１６０を省略してもよい。
【００７２】
また本実施形態の手法は、上記のサンプリングレート変換装置１００と、物理量を検出するセンサー２１０と、を含む物理量検出装置２００に適用できる。センサー２１０の出力レートと、センサー２１０の出力に基づく物理量の利用レートが異なる場合も多く、物理量検出装置２００では、サンプリングレートの変換が重要となる。
【００７３】
例えばセンサー２１０が加速度センサーであり、検出された加速度を慣性航法に利用する場合を考える。加速度センサーの出力レート（第１のクロックの周波数）は比較的大きく、例えば４ｋＳＰＳ（４ｋＨｚ）程度となる。一方、慣性航法による処理は、カルマンフィルターの演算等、処理負荷が大きい。そのため、慣性航法の演算をセンサーの出力レートと同等のレートで行うことは難しく、加速度の利用レート（第２のクロックの周波数）は、例えば１ｋＳＰＳ（１ｋＨｚ）程度となる。その他、センサー２１０の出力をどの程度の頻度で利用するかは、ホスト装置（外部装置３００）側での処理形態等に依存して異なるため、種々の周波数比Ｍでのサンプリングレート変換が必要となる。
【００７４】
図５は、本実施形態の物理量検出装置２００のシステム構成例である。物理量検出装置２００は、サンプリングレート変換装置１００と、センサー２１０と、Ａ／Ｄ変換回路２２０と、フィルター部２３０（フィルター回路）と、物理量変換部２４０と、フォーマット変換部２５０と、発振器２６０（ＴＣＸＯ，temperature compensated crystal oscillator）とを含む。ただし、物理量検出装置２００は、図５の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００７５】
センサー２１０は、物理量に応じたセンサー信号を出力する。ここでのセンサー２１０は、加速度を検出する加速度センサーであってもよいし、角速度を検出する角速度センサー（ジャイロセンサー）であってもよい。或いは、センサー２１０は、方位センサー、気圧センサー、温度センサー、圧力センサー、照度センサー等、他の物理量を検出するセンサーであってもよい。また、センサー２１０が撮像センサー（撮像部、カメラ）等を含むことも妨げられない。ここでのセンサー２１０は、物理量トランスデューサーと検出回路を含む構成であってもよいが、これには限定されない。
【００７６】
Ａ／Ｄ変換回路２２０は、センサー２１０からのセンサー信号（アナログ信号）に対してＡ／Ｄ変換を行い、デジタルデータを出力する。Ａ／Ｄ変換には逐次比較方式、ΔΣ方式、周波数カウンター等の種々の方式が知られており、本実施形態のＡ／Ｄ変換回路２２０は、それらを広く適用可能である。
【００７７】
フィルター部２３０は、Ａ／Ｄ変換回路２２０の出力に対するフィルター処理を行う。フィルター部２３０は、狭義にはアンチエイリアシングフィルターであるが、他のノイズ低減用フィルター等を含むことは妨げられない。
【００７８】
サンプリングレート変換装置１００（狭義にはそのうちの入力部１１０）は、フィルター部２３０によるフィルター処理後のデータを、第１のクロックにより入力データとして取得する。サンプリングレート変換装置１００（狭義にはそのうちの出力部１５０）は、入力データのうちの選択されたデータを、第２のクロックにより出力データとして出力する。
【００７９】
物理量変換部２４０（物理量変換回路）は、サンプリングレート変換装置１００によりサンプリングレートが変換されたデータ（出力データ）を、物理量に変換する処理を行う。センサー２１０からの出力は、例えば物理量に対応したアナログ電圧信号であり、入力データ及び出力データは、当該アナログ電圧信号に基づくデジタルデータである。物理量変換部２４０は、当該デジタルデータを、加速度や角速度といった物理量を表すデータに変換する。具体的には、物理量変換部２４０は、出力データに対して所与の係数（感度）を乗じる処理や、オフセット補正、ゼロ点補正等の補正処理を行い、処理結果を出力する。
【００８０】
フォーマット変換部２５０（フォーマット変換回路）は、物理量変換部２４０の出力（物理量データ）に対して、フォーマット変換を行う。例えば、物理量データを利用する外部装置３００に合わせて、ビット長変換等の処理を行う。
【００８１】
なお、図５ではサンプリングレート変換装置１００と、物理量変換部２４０及びフォーマット変換部２５０とを異なる構成として図示した。しかし、サンプリングレート変換装置１００が、物理量変換部２４０やフォーマット変換部２５０を含んでもよい。例えば、サンプリングレート変換装置１００がプロセッサーとメモリーにより構成される場合、メモリーに記憶されるプログラムにより、プロセッサーが物理量変換部２４０やフォーマット変換部２５０として動作してもよい。この場合、例えば物理量変換部２４０やフォーマット変換部２５０を含むサンプリングレート変換装置１００が、ワンチップとして実装される。
【００８２】
発振器２６０は、物理量検出装置２００で用いられるクロック（内部クロック、システムクロック）を生成する。発振器２６０は、ＴＣＸＯにより実現される。ただし、ＴＣＸＯとは異なる発振器を用いることも妨げられない。
【００８３】
以上のサンプリングレート変換装置１００、或いは物理量検出装置２００において、第１のクロック及び第２のクロックは、クロック信号そのものには限定されず、外部からの割り込みを含んでもよい。
【００８４】
また、第１のクロックは、図５に示したように、Ａ／Ｄ変換回路２２０でのＡ／Ｄ変換のクロックであってもよい。Ａ／Ｄ変換のクロックは、発振器２６０に基づくクロック（内部クロック）であってもよいし、外部装置３００からのクロック（外部クロック）に基づくクロックであってもよいし、その両方に基づくクロックであってもよい。また、センサー２１０が振動子を有する場合、当該振動子によるクロックを内部クロックとして、Ａ／Ｄ変換のクロックに利用してもよい。例えば、センサー２１０がジャイロセンサーである場合、角速度トランスデューサー（振動子、振動片）の振動に基づくクロックを内部クロックとしてもよい。
【００８５】
また、第２のクロックは、物理量検出装置２００の外部装置３００から入力されるクロック、又は、物理量検出装置２００が有する周波数源（発振器２６０）からのクロックであってもよい。ここでの外部装置３００は、例えば物理量データを用いた処理を行うホスト装置である。
【００８６】
以上のように、第１のクロック及び第２のクロックは、種々の変形実施が可能である。なお、実施形態によっては同一のクロック源に基づいて第１のクロックと第２のクロックが生成されることが考えられる。この場合も、クロックにノイズが重畳し第１のクロックと第２のクロックの少なくとも一方が、相関しないで揺らぐことがある。よって同一のクロック源を用いる場合であっても、第１のクロックと第２のクロックは非同期となり得るため、図１を用いて上述した間引き間隔の変動によりノイズは発生しうる。
【００８７】
また、本実施形態のサンプリングレート変換装置１００、物理量検出装置２００等は、その処理の一部又は大部分をプログラムにより実現してもよい。この場合には、ＣＰＵ等のプロセッサーがプログラムを実行することで、本実施形態のサンプリングレート変換装置１００、物理量検出装置２００等が実現される。具体的には、非一時的な情報記憶装置に記憶されたプログラムが読み出され、読み出されたプログラムをＣＰＵ等のプロセッサーが実行する。ここで、情報記憶装置（コンピューターにより読み取り可能な装置、媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＤＶＤ、ＣＤ等）、ＨＤＤ（ハードディスクドライブ）、或いはメモリー（カード型メモリー、ＲＯＭ等）などにより実現できる。そして、ＣＰＵ等のプロセッサーは、情報記憶装置に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち、情報記憶装置には、本実施形態の各部としてコンピューター（操作部、処理部、記憶部、出力部を備える装置）を機能させるためのプログラム（各部の処理をコンピューターに実行させるためのプログラム）が記憶される。
【００８８】
また、本実施形態のサンプリングレート変換装置１００、物理量検出装置２００は、プロセッサーとメモリーを含んでもよい。ここでのプロセッサーは、例えば各部の機能が個別のハードウェアで実現されてもよいし、或いは各部の機能が一体のハードウェアで実現されてもよい。例えば、プロセッサーはハードウェアを含み、そのハードウェアは、デジタル信号を処理する回路及びアナログ信号を処理する回路の少なくとも一方を含むことができる。例えば、プロセッサーは、回路基板に実装された１又は複数の回路装置（例えばＩＣ等）や、１又は複数の回路素子（例えば抵抗、キャパシター等）で構成することができる。プロセッサーは、例えばＣＰＵ（Central Processing Unit）であってもよい。ただし、プロセッサーはＣＰＵに限定されるものではなく、ＧＰＵ（Graphics Processing Unit）、或いはＤＳＰ（Digital Signal Processor）等、各種のプロセッサーを用いることが可能である。またプロセッサーはＡＳＩＣによるハードウェア回路でもよい。またプロセッサーは、アナログ信号を処理するアンプ回路やフィルター回路等を含んでもよい。メモリーは、ＳＲＡＭ、ＤＲＡＭなどの半導体メモリーであってもよいし、レジスターであってもよいし、ハードディスク装置等の磁気記憶装置であってもよいし、光学ディスク装置等の光学式記憶装置であってもよい。例えば、メモリーはコンピューターにより読み取り可能な命令を格納しており、当該命令がプロセッサーにより実行されることで、サンプリングレート変換装置１００、物理量検出装置２００の各部の機能が実現されることになる。ここでの命令は、プログラムを構成する命令セットの命令でもよいし、プロセッサーのハードウェア回路に対して動作を指示する命令であってもよい。
【００８９】
３．周波数比Ｍが整数の場合の例
まず入力クロックと出力クロックの周波数比Ｍが整数である場合について説明する。なお、図１、図２に示したように、入力クロックと出力クロックの少なくとも一方に位相誤差がある（理想周波数を基準としてジッタ分だけ実際の周波数が揺れる）。そのため、各クロック周期で考えた場合、厳密には周波数比Ｍは整数にならない。ここでの「周波数比Ｍが整数」とは、入力クロックと出力クロックの理想的な周波数を考えた場合に、当該理想的な周波数の比Ｍが整数となることを示している。
【００９０】
図６は、図１のようにＭ＝４であって、入力クロックと出力クロックが重なる場合の間引き間隔Ｄの変動例を示す図である。図６に示したように、間引き間隔Ｄは４を中心として、±１だけ変動する（３或いは５となる）。
【００９１】
図７は、図６に示した変動が生じた場合の、入力データと出力データの波形例である。図７では、入力データは正弦波状のデータとなっている。常時ｄ４が出力され、間引き間隔Ｄが４で安定すると仮定すれば、出力データの波形も、入力データと同じ正弦波状のデータとなることが期待される。特にここでは、図１のように入力クロックと出力クロックが重なっており、ｄ４のタイミングと出力タイミングの時間差が充分小さいことを想定しているため、出力データの波形はほぼ入力データの正弦波に重なる正弦波となることが期待される。
【００９２】
しかし、図６に示すような間引き間隔Ｄの変動が生じることで、出力データには正弦波から外れるデータが出てきてしまう。例えば、図７のＢ１では、間引き間隔Ｄが３となってしまうことで、出力タイミングに比べて１入力クロックサイクル分だけ前の入力データ（ｄ３）が出力対象となってしまう。結果として、出力データの波形は、入力データ（正弦波）に対して誤差が生じてしまうことになる。
【００９３】
図８は、上記課題を解決するための本実施形態の手法を説明する図である。図８の横軸は時間を表し、Ｃ１は入力を表し、Ｃ２はバッファメモリー（記憶部１２０）の動作を表し、Ｃ３は出力を表す。より具体的には、Ｃ１１が入力クロックのタイミング（入力データの更新が行われるタイミング）を表し、Ｃ１２が更新された入力データを表す。Ｃ２１はバッファメモリーの２つのアドレス（ＡＤ０、ＡＤ１）に記憶されるデータを表し、Ｃ２２は入力データの更新に伴って、バッファメモリーから削除（デキュー）されたデータを表す。Ｃ３１は、出力クロックのタイミングを表し、Ｃ３２は当該タイミングで出力される出力データを表す。
【００９４】
図８に示すように、記憶部１２０は、ＦＩＦＯ（First In, First Out）メモリーであり、記憶部１２０の複数のアドレスの第１のアドレスＡＤ０に格納されるデータは、複数のアドレスの第２のアドレスＡＤ１に格納されるデータに比べて時系列的に前のデータである。
【００９５】
即ち、記憶部１２０はＦＩＦＯメモリー（キュー）により実現でき、少なくとも２つのアドレスＡＤ０，ＡＤ１を有する。ＦＩＦＯメモリーは、ソフトウェアとして実現してもよいし、ハードウェアとして実現してもよい。ハードウェアを用いる場合、入力データのビット数分のフリップフロップを、アドレス数に対応する段数だけ並べればよい。
【００９６】
記憶部１２０は、入力データが更新された場合、最新の入力データをＦＩＦＯメモリーの第２のアドレスＡＤ１に記憶（格納、エンキュー）する。これに伴い、それまで第２のアドレスＡＤ１に格納されていた入力データ（狭義には１タイミング前の入力データ）は、第１のアドレスＡＤ０に記憶される。さらに、それまで第１のアドレスＡＤ０に格納されていた入力データ（狭義には２タイミング前の入力データ）は、記憶部１２０から削除（デキュー）される。
【００９７】
このような動作により、入力データとしてｄ４が入力された場合、記憶部１２０の各アドレスのデータは（ＡＤ０，ＡＤ１）＝（ｄ３，ｄ４）となる。以下、（ＡＤ０，ＡＤ１）＝（ｄ３，ｄ４）との表現は、第１のアドレスＡＤ０にデータｄ３が記憶され、第２のアドレスＡＤ１にデータｄ４が記憶されていることを表す。同様に、入力データとしてｄ３が入力された場合、（ＡＤ０，ＡＤ１）＝（ｄ２，ｄ３）となる。入力データとしてｄ２が入力された場合、（ＡＤ０，ＡＤ１）＝（ｄ１，ｄ２）となる。入力データとしてｄ１が入力された場合、（ＡＤ０，ＡＤ１）＝（ｄ４，ｄ１）となる。
【００９８】
図８も、図１と同様の状況を想定しており、出力クロックのタイミングでｄ４の更新が完了している場合と、完了していない場合がある。例えば図８のＣ４に示した出力タイミングでは、ｄ４の更新が完了しており、記憶部１２０のデータは、（ＡＤ０，ＡＤ１）＝（ｄ３，ｄ４）となっている。一方、Ｃ５に示した出力タイミングでは、ｄ４の更新が完了しておらず、記憶部１２０のデータは、（ＡＤ０，ＡＤ１）＝（ｄ２，ｄ３）となっている。上述してきたように、単純に最新の入力データ、即ち第２のアドレスＡＤ１のデータを出力したのでは、Ｃ５の出力での間引き間隔Ｄは３となってしまう。
【００９９】
そこで、本実施形態では、カウント部１３０でのカウント値ＣＮＴに基づいて、判定部１４０によるアドレスの選択を行う。カウント値ＣＮＴは、出力クロック間（１出力クロックサイクル分）の入力クロック数である。図８のＣ５のタイミングであれば、Ｃ６に示したｄ１〜ｄ３に相当する入力クロックをカウントするため、ＣＮＴ＝３である。つまり判定部１４０では、ＣＮＴ＝３と周波数比Ｍ＝４を比較することで、間引き間隔Ｄが少ない側に変動するおそれがあると判定できる。
【０１００】
よって本実施形態では、第１のクロックと第２のクロックの周波数比Ｍにより決定される所定値をＪ（Ｊは２以上の整数）とした場合に、判定部１４０は、カウント値がＪ−１である場合は、選択するアドレスを、複数のアドレスの第１のアドレスＡＤ０から第２のアドレスＡＤ１へ変更する。
【０１０１】
ここで、所定値Ｊは、間引き間隔Ｄの基準となる値であり、図１や図８等の例であればＪ＝４である。Ｍが整数である場合、Ｊ＝Ｍとすればよい。また、後述するようにＭが非整数である場合、ＪはＭに最も近い整数を用いればよい。例えば、Ｍ＝３．１であればＪ＝３であるし、Ｍ＝３．９であればＪ＝４である。
【０１０２】
図８の例であれば、Ｃ４のタイミングではｄ４の更新まで完了しているものの、判定部１４０は、あえて第１のアドレスＡＤ０に記憶されている１タイミング前のデータｄ３を出力データとして選択する。そして、Ｃ５のタイミングでカウント値ＣＮＴが所定値Ｊに比べて小さいと判定できたため、判定部１４０は、第２のアドレスＡＤ１に記憶されている最新のデータを出力データとして選択する。
【０１０３】
上述したように、第１のアドレスＡＤ０のデータは、第２のアドレスＡＤ１のデータに比べて時系列的に前のデータであり、図８の例であれば１入力クロックサイクル分前のデータである。つまり、第１のアドレスＡＤ０を出力している状態から、第２のアドレスＡＤ１を出力する状態へ移行することで、２つの出力データ間の間隔を１入力クロックサイクル分だけ長くすること、即ち、間引き間隔Ｄを＋１することが可能になる。ただし、本実施形態では後述する周波数比Ｍが非整数の場合のように、間引き間隔Ｄの変動を許容してもよい状況があり得る。そのため判定部１４０は、ＣＮＴ＝Ｊ−１となった場合に、常に選択するアドレスを第１のアドレスＡＤ０から第２のアドレスＡＤ１へ変更する必要はない。ＣＮＴ＝Ｊ−１でも選択アドレスを変更しない例については、図２０を用いて後述する。
【０１０４】
図８のＣ５の例であれば、カウント値ＣＮＴ＝３である場合とは、ｄ４の入力が完了しておらず、（ＡＤ０，ＡＤ１）＝（ｄ２，ｄ３）の状態である。ここで第２のアドレスＡＤ１のデータを選択することで、出力データはｄ３となる。つまり、Ｃ４とＣ５のタイミングの両方でｄ３が出力対象となり、間引き間隔Ｄを４に維持することが可能になる。
【０１０５】
以上が本実施形態の基本的な手法である。本実施形態では記憶部１２０の複数のアドレスのうち、選択対象となるアドレスをカウント値ＣＮＴに基づいて切り替えることで、間引き間隔Ｄが所定値Ｊとなるように調整を行う。図８はカウント値がＪ−１となる例について説明したが、以下、より詳細に説明する。
【０１０６】
図９は、記憶部１２０（バッファメモリー）の状態に着目した場合の状態遷移図である。入力クロックと出力クロックが図１のように重なっている場合、最新の入力データはｄ３かｄ４かのいずれかとなる。つまり、バッファメモリーの状態は、（ＡＤ０，ＡＤ１）＝（ｄ３，ｄ４）又は（ＡＤ０，ＡＤ１）＝（ｄ２，ｄ３）のいずれかと考えられる。以下、前者を状態Ｓ０、後者を状態Ｓ１とする。なお、システム起動時等には、クロックやサンプリングレート変換装置１００の各部の動作が安定しないため、上記以外の状態が現れる可能性もあるが、ここでは上記２状態のみを考慮して説明する。
【０１０７】
上述したように、カウント値ＣＮＴ＝３（広義にはＣＮＴ＝Ｊ−１）の場合には、選択するアドレスを第１のアドレスＡＤ０から第２のアドレスＡＤ１に切り替えればよい。一方、カウント値ＣＮＴ＝５（広義にはＣＮＴ＝Ｊ＋１）の場合には、逆の動作をすることで間引き間隔を−１できる。
【０１０８】
即ち、判定部１４０は、カウント値がＪ＋１である場合は、選択するアドレスを、複数のアドレスの第２のアドレスＡＤ１から第１のアドレスＡＤ０へ変更する。このようにすれば、カウント値ＣＮＴが所定値Ｊに比べて大きい場合にも、選択するアドレスの変更により、間引き間隔Ｄを調整することが可能になる。なお、図２０を用いて後述するように、ＣＮＴ＝Ｊ＋１でも選択アドレスを変更しない場合があることは妨げられない。
【０１０９】
またカウント値ＣＮＴ（本実施形態の手法による調整を行わない場合の間引き間隔Ｄ）は、図６に示したように変動する。図６に示したように、実際のカウント値ＣＮＴの変動を考えた場合、ＣＮＴ＝３となった次のタイミングでＣＮＴ＝５となる。つまり、ＣＮＴ＝３とＣＮＴ＝５は、隣り合うタイミングで対となって発生すると考えてよい。この場合、図９に示したように、ＣＮＴ＝４は、Ｓ０においてのみ発生し、判定部１４０は、ＣＮＴ＝４の場合には第１のアドレスＡＤ０を選択すればよい。
【０１１０】
図９の例では、状態Ｓ０はカウント値の総和が期待値（Ｊ×出力クロック数の総和）に等しい平常状態であり、状態Ｓ１はカウント値の総和が期待値よりも減少している状態と考えることができる。言い換えれば、図９は、平常状態（Ｓ０）においてまずＣＮＴ＝３となり、その次のタイミングでＣＮＴ＝５となることで平常状態に戻る例である。
【０１１１】
しかし、平常状態においてまずＣＮＴ＝５となり、その次のタイミングでＣＮＴ＝３となることで平常状態に戻る場合も考えられる。この場合、状態Ｓ１を平常状態と考えればよい。
【０１１２】
図１０は、状態Ｓ１を平常状態とした場合の状態遷移図である。なお、図９では記憶部１２０の状態を特定したが、入力データをｄ１〜ｄ４により表現するのは、間引き間隔Ｄと周波数比Ｍ（所定値Ｊ）との対応関係を説明する便宜上のものである。判定部１４０では、入力データや選択する出力データがｄ１〜ｄ４のいずれであるかを識別する必要はない。よって、図１０、及び後述する図１２、図２０等では、記憶部１２０に記憶されるデータを任意とし、選択するアドレスに応じて状態（Ｓ０、Ｓ１等）を決定するものとする。
【０１１３】
図１０に示したように、ＣＮＴ＝４が維持されている場合は、判定部１４０は第２のアドレスＡＤ１を選択する。そして、ＣＮＴ＝５となった場合に、Ｓ０に遷移し、選択するアドレスを第２のアドレスＡＤ１から第１のアドレスＡＤ０に変更する。またＳ０でＣＮＴ＝３となった場合に、選択するアドレスを第１のアドレスＡＤ０から第２のアドレスＡＤ１に戻す。
【０１１４】
図９、図１０に示したように、カウント値ＣＮＴの変動が、３→５の順序であっても、５→３の順序であっても、選択するアドレスを適切に変更することで、間引き間隔Ｄを４に安定させることが可能になる。
【０１１５】
図１１は、図９の処理を説明するフローチャートである。この処理が開始されると、まず初期設定が行われる（ステップＳ１０１）。初期設定とは、具体的には、間引き間隔Ｄの基準となる所定値Ｊの設定、カウント部１３０のカウント値ＣＮＴの初期化、記憶部１２０（バッファメモリー）の初期化を行う。例えば、周波数比Ｍに基づいて所定値Ｊを設定し、ＣＮＴ＝０，（ＡＤ０，ＡＤ１）＝（０，０）とする。ステップＳ１０１の処理は、例えば判定部１４０により実行される。また、変形例として後述するようにフラグ情報を処理に用いる場合、ステップＳ１０１の処理でフラグ情報の初期化も行うとよい。
【０１１６】
次に、入力更新要求が行われたか否かを判定する（ステップＳ１０２）。ステップＳ１０２の処理は、クロック信号が入力されたか否か、或いは入力更新の割り込みが行われたか否かを判定すればよい。図１の例であれば、入力クロックのジッタ幅（ｔ１）のいずれかのタイミングに対応して、ステップＳ１０２がＹｅｓと判定される。
【０１１７】
ステップＳ１０２でＹｅｓの場合には、入力データが更新される（ステップＳ１０３）。具体的には、入力部１１０は最新の入力データ（更新データ）を取得する。そして、記憶部１２０の第２のアドレスＡＤ１に記憶されていたデータを、第１のアドレスＡＤ０に記憶し、更新データを第２のアドレスＡＤ１に記憶する。さらに、カウント部１３０は、カウンター（カウント値ＣＮＴ）をインクリメントする。
【０１１８】
ステップＳ１０３の処理後、又は、ステップＳ１０２でＮｏの場合には、出力要求が行われたか否かを判定する（ステップＳ１０４）。図１の例であれば、出力クロックのジッタ幅（ｔ２）のいずれかのタイミングに対応して、ステップＳ１０４がＹｅｓと判定される。
【０１１９】
ステップＳ１０４でＮｏの場合、即ち出力要求がない（出力タイミングでない）場合は、ステップＳ１０２に戻り処理を継続する。
【０１２０】
ステップＳ１０４でＹｅｓの場合には、出力データを出力する。具体的には、判定部１４０は、カウント部１３０のカウント値ＣＮＴの値を判定する（ステップＳ１０５）。判定部１４０は、ＣＮＴ＝３の場合には第２のアドレスＡＤ１のデータを出力にセットし（ステップＳ１０６）、ＣＮＴ＝５の場合には第１のアドレスＡＤ０を出力にセットする（ステップＳ１０７）。
【０１２１】
また、ここでは図９のように状態Ｓ０を平常状態と考えているため、判定部１４０は、ＣＮＴ＝４の場合には、第１のアドレスＡＤ０を出力にセットする（ステップＳ１０８）。
【０１２２】
ステップＳ１０６〜Ｓ１０８の処理後は、出力部１５０は、セットされたアドレスのデータを出力し、カウント部１３０は、カウント値ＣＮＴを０にリセットする（ステップＳ１０９）。ステップＳ１０９の処理後は、ステップＳ１０２に戻り処理を継続する。
【０１２３】
図１０の処理を行う場合は、状態Ｓ１が平常状態なるため、図１１のステップＳ１０８において、第２のアドレスＡＤ１を出力にセットすればよい。
【０１２４】
ただし、図９〜図１１を用いて上述した例では、平常状態がＳ０かＳ１かで異なるため、平常状態の設定に応じてＣＮＴ＝４の際の処理（図１１のステップＳ１０８）を変更しなければならない。
【０１２５】
これに対して、本実施形態では記憶部１２０（バッファメモリー）として、３つ以上のアドレスを有するＦＩＦＯメモリーを用いてもよい。具体的には、記憶部１２０は、第１〜第３のアドレスＡＤ０〜ＡＤ２を有し、格納されるデータは、ＡＤ０が最も過去のデータであり、ＡＤ２が最も新しいデータとなる。
【０１２６】
図１２は、３アドレスのＦＩＦＯメモリーを用いる場合の状態遷移図である。図１２に示したように、ＡＤ０が選択される状態をＳ０、ＡＤ１が選択される状態をＳ１、ＡＤ２が選択される状態をＳ２とし、Ｓ１を平常状態とする。即ち、ＣＮＴ＝４はＳ１で発生し、判定部１４０はＣＮＴ＝４の場合には第２のアドレスＡＤ１を選択する。
【０１２７】
判定部１４０は、Ｓ１においてＣＮＴ＝３となった場合には第３のアドレスＡＤ２を選択して状態Ｓ２に遷移する。状態Ｓ２においてＣＮＴ＝５となった場合には、第２のアドレスＡＤ１を選択して状態Ｓ１に戻る。これは図９に対応する遷移である。
【０１２８】
また判定部１４０は、Ｓ１においてＣＮＴ＝５となった場合には第１のアドレスＡＤ０を選択して状態Ｓ０に遷移する。状態Ｓ０においてＣＮＴ＝３となった場合には、第２のアドレスＡＤ１を選択して状態Ｓ１に戻る。これは図１０に対応する遷移である。
【０１２９】
図１２に示したように、３アドレス以上の記憶部１２０を用いることで、平常状態からまずＣＮＴ＝３となる場合と、まずＣＮＴ＝５となる場合のいずれの場合についても、平常状態を共通化することが可能になる。
【０１３０】
４．周波数比が非整数の場合の例
次に周波数比Ｍが非整数（小数）の有理数である場合について説明する。
【０１３１】
図１３は、周波数比Ｍが非整数である場合の入力クロックと出力クロックのタイミング例を表す図である。図１３の横軸は時間を表す。図１３では、ｍ＝１２０、ｎ＝４２であり、Ｍ＝１２０／４２＝２．８５７…である。この場合、所定値Ｊ＝３であるため、入力データをｄ１，ｄ２，ｄ３，ｄ１，ｄ２…と表記している。また図１３では説明を簡略化するため、ジッタ幅については考慮していない。
【０１３２】
図１３の例では、出力クロックのタイミングと、ｄ１の入力更新タイミングが一致している状態から開始されている。Ｍが整数（Ｍ＝３）であれば、出力クロックとｄ１に対応する入力クロックが重なる状態が維持される。しかし図１３ではＭは３に充分近いが、Ｍ＜３であるため、出力クロックのタイミングはｄ１に対応する入力クロックのタイミングに対して、時間的に早い方向にずれていく。
【０１３３】
そして、出力クロックサイクルが継続することで、出力クロックは徐々にｄ３に対応する入力クロックに近くなり、出力クロックとｄ３に対応する入力クロックが重なる状態となる。図１３には不図示であるが、さらに時間が経過することで、出力クロックのタイミングは、ｄ２とｄ３の間の状態→ｄ２の入力クロックと重なる状態→ｄ２とｄ１の間の状態→ｄ１の入力クロックと重なる状態→…と遷移していく。
【０１３４】
図１を用いて上述したように、入力クロックと出力クロックの前後関係が変化してしまったとき、即ち一方が他方を追い越してしまったときに、間引き間隔Ｄが変動して誤差が発生する。その点、図１３のように周波数比Ｍが非整数である場合、ジッタによる影響がなかったとしても一方のクロックによる他方のクロックの追い越しが発生してしまう。
【０１３５】
図１４、図１５は、実際の入力クロック数（カウント値ＣＮＴの総和）と、入力クロック数の期待値（所定値Ｊ×出力クロック数）の差の変動を示す図である。図１４、図１５の横軸は時間であり、Ａ１〜Ａ３は図３に示した区間を表す。
【０１３６】
図１４は周波数比Ｍが整数の場合の例である。入力クロックと出力クロックが重なる期間Ａ２では、ジッタの影響により、入力クロック数が期待値よりも減少し（ＣＮＴ＝Ｊ−１）、その後、入力クロック数が期待値に戻る（ＣＮＴ＝Ｊ＋１）という変化を繰り返す。周波数比Ｍが整数であれば、Ａ２の期間においてＣＮＴ＝Ｊ−１とＣＮＴ＝Ｊ＋１は必ず対になって現れる（出現回数が同じ）ため、Ａ２の期間終了時に、入力クロックの実数と期待値との差は０に戻る。
【０１３７】
一方、周波数比Ｍが非整数の場合、図１３を用いて上述した例のように、周期的な追い越しが発生する。そのため図１５に示したように、期間Ａ２は、ＣＮＴ＝Ｊ−１で終了し（Ｅ１）、入力クロックの実数は期待値よりも１減少した状態が確定する。さらに次の期間Ａ２が開始されると（Ｅ２）、ここでもまずＣＮＴ＝Ｊ−１となる。さらにこの期間Ａ２も、ＣＮＴ＝Ｊ−１で終了し（Ｅ３）、入力クロックの実数は期待値よりもさらに１減少した状態が確定する。この入力クロック数の減少（クロック遅れ）が、上記の追い越しを表している。
【０１３８】
本実施形態では、このようなＭが非整数の場合の追い越し（間引き間隔Ｄの変動）については許容する。即ち、Ｍが非整数であることで必然的に発生してしまう間引き間隔Ｄの変動については無理に補正を行わない。ただし、ジッタ等の影響を考慮した場合、本来１回ですむはずの追い越しが、複数回発生してしまうおそれがある。
【０１３９】
図１５の例であれば、Ａ２に示した期間では、カウント値ＣＮＴの変動により、間引き間隔Ｄが頻繁に変動してしまう。よって本実施形態では、周波数比Ｍが整数の場合を用いて上述した例と同様に、出力クロックが入力クロックと重なる状態（期間Ａ２）において、図８を用いて上述した手法により、間引き間隔ＤがＪとなるように補正する。このようにすれば、間引き間隔Ｄの変動を、所定周期（Ａ１）に１回、必然的に発生してしまうものに限定でき、ノイズの発生を抑止できる。以下、図１等と同様にＪ＝４の場合を例にとって詳細に説明する。
【０１４０】
図１６〜図１８は、図１と同様に出力クロックと入力クロックのタイミングを表す図であり、各図の横軸は時間を表す。ここでは、Ｍ＜４であり、出力クロックのタイミングは、徐々に１入力クロックサイクル分前の入力クロックに近づいていく例を示している。
【０１４１】
図１６は、出力クロックのタイミングがｄ４に対応する入力クロックとｄ１に対応する入力クロックの間にある状態を表す図である。この場合、出力クロックのタイミングはｄ４の入力更新後となるため、記憶部１２０の状態は（ＡＤ０，ＡＤ１）＝（ｄ３，ｄ４）で安定する。よって判定部１４０は、図９の平常状態Ｓ０と同様に、第１のアドレスＡＤ０を選択し、ｄ３を出力データとして出力する。
【０１４２】
図１６の状態からさらに時間が経過すると、図１７に示したように、出力クロックとｄ４に対応する入力クロックが重なる（図１５の期間Ａ２）。この場合、記憶部１２０の状態は（ＡＤ０，ＡＤ１）＝（ｄ３，ｄ４）と、（ＡＤ０，ＡＤ１）＝（ｄ２，ｄ３）のいずれも起こりうるため、間引き間隔Ｄを安定させる必要がある。具体的には、図９と同様であり、判定部１４０は、ＣＮＴ＝３の場合に状態Ｓ１に遷移して第２のアドレスＡＤを選択し、ＣＮＴ＝５の場合にＳ０に戻り第１のアドレスＡＤ０を選択する。このようにすれば、図１７に示す状態でも、安定してｄ３を出力できる。
【０１４３】
ただしここでは周波数比Ｍが非整数であるため、ＣＮＴ＝３で期間Ａ２が終了する（図１５のＥ１）。そして、期間Ａ３ではカウント値ＣＮＴは４で安定する。つまり期間Ａ２から期間Ａ３へと切り替わる際に、カウント値ＣＮＴは３から４へ変化することになる。
【０１４４】
図１１のフローチャートに従えば、ＣＮＴ＝４の場合、判定部１４０は第１のアドレスＡＤ０を選択する。また期間Ａ３では、記憶部１２０の状態は、（ＡＤ０，ＡＤ１）＝（ｄ２，ｄ３）で安定している。つまり、期間Ａ２から期間Ａ３に切り替わる際に、選択するアドレスは第２のアドレスＡＤ１から第１のアドレスＡＤ０に変更され、出力されるデータはｄ２に変化する。出力データがｄ３→ｄ２と変化するため、間引き間隔Ｄが３に変動するタイミングが存在してしまっているが、これは、図１５のＥ１に示した追い越しによるものであるため、本実施形態では問題としない。
【０１４５】
図１８では、（ＡＤ０，ＡＤ１）＝（ｄ２，ｄ３）で安定するため、第１のアドレスＡＤ０を選択する状態を維持すればよい。これ以降も同様であり、図１１のフローチャートと同様の処理により、周波数比Ｍが非整数の場合にも間引き間隔Ｄの調整が可能である。
【０１４６】
図１９は、本実施形態の手法を用いた場合のノイズの時系列的な変化を説明する図である。従来手法を用いた場合、図３に示したように、出力クロックと入力クロックが重なる期間（Ａ２）においてノイズが大きくなる。その点、本実施形態では、周波数比Ｍが非整数であることに起因する間引き間隔Ｄの変動は発生するものの、それ以外の間引き間隔Ｄの変動を抑制可能である。結果として、図１９に示したように、ノイズの増大を１周期（図３のＡ１＝Ａ２＋Ａ３）当たり１回にすることができ、図３に比べてノイズを低減することが可能になる。
【０１４７】
また、以上では図１１のフローチャートに従った処理を順次実行することで、図１５のＥ１での追い越しに対応可能な例について説明した。ただし、本実施形態では、フラグ情報を用いて追い越しを管理することも可能である。
【０１４８】
具体的には、判定部１４０はＣＮＴ＝３（Ｊ−１）の場合にフラグ情報をＦ＝１（第１の状態、例えば第１の論理レベル“１”）とし、ＣＮＴ＝５の場合にフラグ情報をＦ＝０（第２の状態、例えば第２の論理レベル“０”）とする。またＣＮＴ＝４の場合には、フラグ情報は、１タイミング前の状態を維持する。
【０１４９】
図１４のように、追い越しが発生しなければ、ＣＮＴ＝３とＣＮＴ＝５は必ず対になって同数発生する、言い換えれば、ＣＮＴ＝４を無視した場合、ＣＮＴ＝３とＣＮＴ＝５が交互に発生する。これに対して、図１５のように追い越しが発生する場合、所与の期間Ａ２の終了時（Ｅ１）でＣＮＴ＝３となった後、次の期間Ａ２の開始時（Ｅ２）でＣＮＴ＝３となり、その間の期間Ａ３ではＣＮＴ＝４となる。つまり追い越し発生時には、ＣＮＴ＝３となった後、ＣＮＴ＝５が出現しないまま、再度ＣＮＴ＝３となる（ＣＮＴ＝４を無視した場合、ＣＮＴ＝３が連続する）。
【０１５０】
よって判定部１４０は、フラグ情報が第１の状態（Ｆ＝１）において、ＣＮＴ＝３が検出された場合に、クロックの追い越しが発生したと判定できる。即ち、フラグ情報により追い越しの発生タイミング、或いは発生周期等を検出できる。なお、次回以降の追い越し検出を考慮すれば、Ｆ＝１でＣＮＴ＝１となった場合、判定部１４０は、フラグ情報Ｆを第２の状態（Ｆ＝０）にリセットするとよい。
【０１５１】
フラグ情報を用いることで、例えば、追い越しを考慮せずに間引き間隔Ｄを常に一定にさせる第１のモジュールと、追い越し時の間引き間隔調整を行う第２のモジュール（或いは単なるリセットモジュール）の組み合わせにより本実施形態の処理を実現することも可能である。この場合、通常時は第１のモジュールを実行し、追い越し検出時に第２のモジュールを実行すればよい。この例では、追い越しの非発生時と発生時で処理を分けることができ、モジュールの実装や変更が容易となる。
【０１５２】
また、図１６〜図１８では、Ｊ＝４であり、且つＭ＜４の場合の例を示した。そのため、出力クロックと入力クロック（入力クロックに対応する入力データ）との対応関係は、時間の経過とともにｄ４→ｄ３→ｄ２→ｄ１→ｄ４…の順に変化していった。これに対して、同じＪ＝４の場合であっても、Ｍ＞４（例えばＭ＝４．１等）であれば、変化傾向は逆転する。即ち、出力クロックと入力クロック（入力クロックに対応する入力データ）との対応関係は、時間の経過とともにｄ１→ｄ２→ｄ３→ｄ４→ｄ１…の順に変化していく。
【０１５３】
この場合、平常状態からまずＣＮＴ＝５（Ｊ＋１）となり、その後ＣＮＴ＝３（Ｊ−１）で平常状態に戻る。また、クロックの追い越しが発生することで、ＣＮＴ＝５となった後、ＣＮＴ＝３が出現しないまま、再度ＣＮＴ＝５となる（ＣＮＴ＝４を無視した場合、ＣＮＴ＝５が連続する）となる。図９を周波数比Ｍが非整数の場合に拡張できたように、Ｍが非整数且つＭ＞Ｊの場合についても、図１０や図１２を拡張して考えることが可能である点は、当業者であれば容易に理解できるであろう。
【０１５４】
５．変形例
以下、幾つかの変形例について説明する。
【０１５５】
５．１  ＣＮＴ＝Ｊの場合の処理の変形例
上述した例では、対となるＣＮＴ＝３とＣＮＴ＝５は、連続するタイミングで発生するものとした。そのため、ＣＮＴ＝４は平常状態（図９であればＳ０）で発生し、異なる状態（図９であればＳ１）での発生は、クロックの追い越しに対応する期間Ａ２から期間Ａ３への切り替えタイミングのみを考慮していた。
【０１５６】
しかし、対となるＣＮＴ＝３とＣＮＴ＝５の間で、ＣＮＴ＝４が発生する可能性を考慮した場合、図９等の処理では間引き間隔Ｄの調整が不十分となる。なぜなら、本来カウント値ＣＮＴ＝４の場合とは、入力クロック数が適切であり、選択アドレスの変更による間引き間隔Ｄの調整は不要なためである。例えば、対となるＣＮＴ＝３とＣＮＴ＝５の間でＣＮＴ＝４が発生し、カウント値ＣＮＴが３→４→５と変化したとする。この場合、３→４への変化の際に選択するアドレスをＡＤ１→ＡＤ０に変更してしまうことで、間引き間隔Ｄは＋１されてしまう。さらに、４→５の変化の際に選択するアドレスがＡＤ１で維持されることで、間引き間隔Ｄはさらに＋１されてしまう。
【０１５７】
この点を考慮すれば、カウント値ＣＮＴ＝４の場合には、固定のアドレスを選択するのではなく、前のタイミングで選択していたアドレスを再度選択するとよい。
【０１５８】
例えば判定部１４０は、カウント値ＣＮＴがＪ−１である場合に、フラグ情報Ｆ’を第１の状態（Ｆ’＝１）とし、カウント値がＪ＋１である場合に、フラグ情報Ｆ’を第２の状態（Ｆ’＝０）とする。ここでのフラグ情報Ｆ’は、上述したクロックの追い越しを検出するフラグ情報Ｆとは異なる情報であってもよいが、アルゴリズムによっては共通化することも可能である。そして判定部１４０は、カウント値がＪである場合は、フラグ情報Ｆ’に基づいて、記憶部１２０の複数のアドレス（ＡＤ０，ＡＤ１）のうちのいずれかのアドレスを選択する。
【０１５９】
より具体的には、判定部１４０は、カウント値がＪであり、且つ、フラグ情報がＦ’＝１である場合は、記憶部１２０の第２のアドレスＡＤ１を選択する。また判定部１４０は、カウント値がＪであり、且つ、フラグ情報がＦ’＝１である場合は、記憶部１２０の第１のアドレスＡＤ０を選択する。
【０１６０】
このようにすれば、フラグ情報Ｆ’に基づいて状態Ｓ０と状態Ｓ１を識別できるため、カウント値ＣＮＴ＝４（広義にはＪ）の場合にも、適切なアドレスを選択することが可能になる。
【０１６１】
ただしこの場合、ＣＮＴ＝４の場合に選択するアドレスが変更されないため、クロックの追い越しによる間引き間隔Ｄの変動は、異なるタイミングで実行されることになる。
【０１６２】
図２０は本変形例の状態遷移図である。上述したように、図９の例とは異なり、Ｓ１でＣＮＴ＝４の場合、Ｓ０に遷移するのではなくＳ１に戻る。これにより、カウント値ＣＮＴが３→４→５と変化するような場合にも間引き間隔Ｄを維持できる。
【０１６３】
また図２０に示したように、Ｓ１においてＣＮＴ＝３となる場合を想定する。これは、ＣＮＴ＝３となった後、ＣＮＴ＝５が出現しないまま、再度ＣＮＴ＝３となった場合（図１５の期間Ａ２開始時）に発生する。この際には、間引き間隔Ｄが３に減少してもよいため、選択するアドレスを維持すればよい。具体的には、Ｓ１でＣＮＴ＝３となった場合に、再度Ｓ１に戻り、第２のアドレスＡＤ１の選択を継続する。このような遷移を行った場合、結果として間引き間隔Ｄは１回だけ３（Ｊ−１）となる。つまり図２０に従って処理を行うことで、クロックの追い越しによる間引き間隔Ｄの変動を許容しつつ、他の場面での間引き間隔Ｄを一定に維持することが可能になる。
【０１６４】
また、図２０に示したように、Ｓ０においてＣＮＴ＝５となる場面を想定し、その場合にＳ０に戻って、第１のアドレスＡＤ０の選択を維持するようにしてもよい。図２０の状態遷移図に従うことで、Ｍ＜ＪとＭ＞Ｊのいずれの場合も対応可能である。
【０１６５】
５．２  アップサンプリング
本実施形態では、記憶部１２０のデータのうち、第１のアドレスＡＤ０に対応するデータが出力される可能性がある。図８の例であれば、出力クロックのタイミングは、ほぼｄ４に対応する入力クロックに等しいが、出力対象となるデータは、１入力クロックサイクル分だけ前のデータｄ３である。つまり出力データは、入力データに対して約１入力クロックサイクル分だけの時間差（位相差、遅延）が発生するおそれがある。
【０１６６】
システムによっては、上記時間差が問題とならない場合も考えられる。例えば、リアルタイムでの処理が不要なシステムであれば、上記時間差として遅延が発生することが許容できる場合も多い。出力データを利用するホスト装置（外部装置３００）において、遅延が発生しても処理精度の低下等が生じない、或いは遅延を補正する処理で対応可能な場合が考えられる。しかし、システムによっては時間差をできるだけ小さくすることが望ましい場合もある。
【０１６７】
そこで本変形例では、入力データに対してアップサンプリング（インターポーレーション）を行ってもよい。具体的には、サンプリングレート変換装置１００は、データ（入力データ）を第１のクロックでサンプリングする入力部１１０と、入力部１１０でサンプリングされたデータをアップサンプリングするアップサンプリング部（アップサンプリング回路、図４には不図示）を含む。そして記憶部１２０は、アップサンプリング部によりアップサンプリングされたデータが取り込まれる。
【０１６８】
図２１は、本変形例の手法を説明する図である。入力データに対してアップサンプリングを行うことで、入力データに比べてサンプリングレートの高いアップサンプリングデータが取得される。図２１の例であれば、４倍のアップサンプリングが行われており、所与の入力データ（例えばｄ３）と次の入力データ（ｄ４）との間のタイミングに対応する３つのデータ（ｄ３２，ｄ３３，ｄ３４）が追加されている。
【０１６９】
上述した手法では、出力対象はｄ３であるため、出力クロックのタイミングとの時間差Ｔ１（遅延）は、１入力クロックサイクル分の時間となる。それに対して、アップサンプリングデータを用いた場合、出力対象をｄ３２〜ｄ３４からも選択可能となる。例えば、記憶部１２０がｄ３４を記憶し、判定部１４０がｄ３４に対応するアドレスを選択した場合、出力クロックのタイミングとの時間差Ｔ２（遅延）は、１入力クロックサイクルの１／４の時間となる。図２１では４倍のアップサンプリングの例を示したため、Ｔ２＝Ｔ１／４となったが、ｋ倍のアップサンプリングをすることで、Ｔ２＝Ｔ１／ｋとすることが可能である。
【０１７０】
なお、アップサンプリングデータは出力データとして選択される可能性がある以上、単純に所与の値（例えば０）を挿入するだけでは不十分である。ここでのアップサンプリング部は、所与の値のデータの挿入処理、及びフィルター処理により、入力部１１０でサンプリングされたデータのアップサンプリングを行うとよい。このようにすれば、アップサンプリングデータ（例えばｄ３２〜ｄ３４）として、実際の入力データ（例えばｄ３までに取得された入力データ）に基づく意義のある値を設定することが可能になる。
【０１７１】
図２２は、本変形例の手法を説明する図である。図８と比較した場合、ｋ倍のアップサンプリング及びフィルター処理（ＬＰＦ処理）が追加される。これにより、アップサンプリング部は、所与のタイミングまでの入力データｄｊ（図２２の例であれば、ｊは１〜４のいずれかの整数）に基づいて、所与のタイミングよりも後のタイミングに相当するデータｄｊ２〜ｄｊｋを生成するｋ倍のアップサンプリングを行う。例えば入力データｄ３が取得された場合には、ｄ３とｄ４の間のタイミングに対応するアップサンプリングデータｄ３２〜ｄ３ｋが取得される。
【０１７２】
記憶部１２０では、ｄ３及びｄ３２〜ｄ３ｋのうちの複数を記憶してもよいが、記憶領域を大きくする必要があるし、アドレスの選択処理も複雑化するおそれがある。よって図２２に示すように、アップサンプリングを行う場合にも、バッファメモリーのアドレスはＡＤ０とＡＤ１の２つとしてもよい。
【０１７３】
そして、ｄｊｉ（ｉは２≦ｉ≦ｋ−１を満たす整数）に比べてｄｊｉ＋１が時系列的に後のタイミングに対応するデータである場合に、記憶部１２０は、アップサンプリングされたデータｄｊ２〜ｄｊｋのうちのｄｊｋが取り込まれる。例えば、入力データｄ３の更新に基づいてアップサンプリングデータｄ３２〜ｄ３ｋが取得された場合、そのうちのｄ３ｋを記憶部１２０に記憶する。ｄ３以外の入力データに対しても同様であり、記憶部１２０にはｄ１ｋ〜ｄ４ｋが記憶されることになる。このようにすれば、アップサンプリングによりデータ数がｋ倍に増えたとしても、記憶部１２０（バッファメモリー）の容量を大きくする必要がない。
【０１７４】
図２３は、ｋ＝２の場合の入力クロックと出力クロックのタイミング例を示す図である。図２４は、ｋ＝１０の場合の入力クロックと出力クロックのタイミング例を示す図である。このように、入力クロックと出力クロックが重なる状態では、ｄｊｋを記憶し、出力データとすることで、出力クロックのタイミングとデータ（ｄｊｋ）との時間差（遅延）を、１入力クロックサイクルの１／ｋにすることが可能になる。
【０１７５】
図２３、図２４の状況であれば、ｋが大きいほど時間差を小さくすることが可能である。しかし本実施形態での選択アドレスには種々の変形実施が可能であるため、出力クロックと入力クロックが重ならない状況（例えば図１６や図１８）で、最新の入力データ（第２のアドレスＡＤ１）が選択対象となる実施形態も考えられる。
【０１７６】
図２５は、図１８と同様に出力クロックがｄ３とｄ４の間にある場合であり、且つ、ｋ＝２によるアップサンプリングが行われた場合の入力クロックと出力クロックのタイミング例を示す図である。本変形例のようにｋ倍のアップサンプリングを行った場合、ｄ３に対応するｄ３ｋが第２のアドレスＡＤ１に記憶されており、出力データとして選択される。アップサンプリングデータは入力クロックで生成されているため、出力クロックよりも（概念上）後のタイミングであっても、アップサンプリングデータは既に存在する。そのため、図２５に示したように、出力クロックよりも後のタイミングに対応するアップサンプリングデータｄ３ｋを、出力データとして選択することもある。
【０１７７】
また、時間差のさらなる低減を考慮する場合、出力クロックよりも細かいカウンターであるサブカウンターを用いた処理を行ってもよい。サブカウンターは、出力クロックの周期内のさらに細かいカウンターであり、理想的には１出力クロック周期において、ｋ個の分解能を持つ（ｋ通りのカウント値をカウント可能である）。サブカウンターを用いることで、仮想的な時間軸上のｋ個のデータ列のどのタイミングで、出力クロックが入力されたか（リサンプリングタイミングが来たのか）を計測できる。判定部１４０は、サブカウンターに基づいて、リサンプリングタイミングの直前のデータを特定し、特定されたデータを選択、出力する。
【０１７８】
また、サブカウンターの分解能ｐは、ｋに限定されず、ｋより大きい値であってもよい。その場合、リサンプリングタイミングでのカウント値ｑは、所与のアップサンプリングデータと次のアップサンプリングデータの間のタイミングに対応する場合もある。一例として、ｋ＝６、ｐ＝１２、ｑ＝３であり、ｑが０からカウントを開始する場合を考える。この場合、１データ当たりのカウント値はｐ／ｋ＝２となる。ｑ／（ｐ／ｋ）＝３／２＝１．５となるため、リサンプリングタイミングは、元データ（例えばｄ３）を起点として１つ次のデータ（例えばｄ３２）とさらに次のデータ（例えばｄ３３）の間のタイミングである。よってこの場合、出力データとしてｄ３２又はｄ３３を選択すればよい。
【０１７９】
また、ｐ／ｋ＞２の場合、少数部分の値が０．５を超えるか否かに応じて、リサンプリングタイミングが前のアップサンプリングデータに近いか、後のアップサンプリングデータに近いかを判定することも可能である。その他、アップサンプリングデータの選択については種々の変形実施が可能である。
【０１８０】
以上、本発明を適用した実施形態およびその変形例について説明したが、本発明は、各実施形態やその変形例そのままに限定されるものではなく、実施段階では、発明の要旨を逸脱しない範囲内で構成要素を変形して具体化することができる。また、上記した各実施形態や変形例に開示されている複数の構成要素を適宜組み合わせることによって、種々の発明を形成することができる。例えば、各実施形態や変形例に記載した全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態や変形例で説明した構成要素を適宜組み合わせてもよい。また、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。このように、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能である。
【符号の説明】
【０１８１】
１００…サンプリングレート変換装置、１１０…入力部、１２０…記憶部、
１３０…カウント部、１４０…判定部、１５０…出力部、１６０…周波数比検出部、
２００…物理量検出装置、２１０…センサー、２２０…Ａ／Ｄ変換回路、
２３０…フィルター部、２４０…物理量変換部、２５０…フォーマット変換部、
２６０…発振器、３００…外部装置、ＡＤ０…第１のアドレス、
ＡＤ１…第２のアドレス、ＣＮＴ…カウント値、ｄ１〜ｄ４…入力データ、
ｄ３２〜ｄ３ｋ…アップサンプリングデータ
【図１】
2018092392.tif 000003
【図２】
2018092392.tif 000004
【図３】
2018092392.tif 000005
【図４】
2018092392.tif 000006
【図５】
2018092392.tif 000007
【図６】
2018092392.tif 000008
【図７】
2018092392.tif 000009
【図８】
2018092392.tif 000010
【図９】
2018092392.tif 000011
【図１０】
2018092392.tif 000012
【図１１】
2018092392.tif 000013
【図１２】
2018092392.tif 000014
【図１３】
2018092392.tif 000015
【図１４】
2018092392.tif 000016
【図１５】
2018092392.tif 000017
【図１６】
2018092392.tif 000018
【図１７】
2018092392.tif 000019
【図１８】
2018092392.tif 000020
【図１９】
2018092392.tif 000021
【図２０】
2018092392.tif 000022
【図２１】
2018092392.tif 000023
【図２２】
2018092392.tif 000024
【図２３】
2018092392.tif 000025
【図２４】
2018092392.tif 000026
【図２５】
2018092392.tif 000027