(57)【特許請求の範囲】
【請求項１】
第１のサンプルレートの入力データストリームを、第２のサンプルレートの出力データストリームに変換するサンプルレート変換の方法であって、
ａ）  前記第１のサンプルレートの複数の入力サンプルを含む入力データストリームを受信するステップと、
ｂ）  前記入力サンプルの補間により、前記第２のサンプルレートの複数の出力サンプルを含む出力データストリームを生成するステップと、
を有し、前記出力データストリームを生成するステップにおいては、
ｉ）保持手段に保持された整数値ａｃｃを０に設定し、
ii）出力サンプルの計算の前に、前記ａｃｃを予め定められた整数値Ａだけ増加させ、
iii）出力サンプルの計算の後に、前記ａｃｃを予め定められた整数値Ｂだけ減少させ、
iv）前記ａｃｃの増加後と前記ａｃｃの減少後とにおいて、出力サンプルを計算するか次の入力サンプルを選択するかを、前記ａｃｃが０未満の場合は次の入力サンプルを選択し、前記ａｃｃが０以上の場合は出力サンプルを計算すると決定し、
ｖ）前記ａｃｃ，前記Ａ，前記１以上の入力サンプルの値に基づいて、前記出力サンプルを計算し、
前記整数値Ａ、Ｂは、前記第１のサンプルレートの逆数Ｔx、前記第２のサンプルレートの逆数Ｔyについて、比率Ａ／ＢがＴx／Ｔyに等しい関係にある
ことを特徴とする方法。
【請求項２】
前記入力サンプルの補間は線形補間であることを特徴とする請求項１に記載の方法。
【請求項３】
前記出力データストリームを生成するステップのｖ）においては、ｍ番目の出力サンプル値Ｙmを、式
Ｙm＝（ａｃｃ*Ｘn＋(Ａ−ａｃｃ)*Ｘn+1）／Ａ
により計算し、ここで、Ｘnは現在の入力サンプルの値であり、Ｘn+1はＸnの後に続く次の入力サンプルの値である
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記Ａは２の累乗であることを特徴とする請求項１から３のいずれか１項に記載の方法。
【請求項５】
第１のサンプルレートの入力データストリームを、第２のサンプルレートの出力データストリームに変換するサンプルレート変換の装置であって、
ａ）  前記第１のサンプルレートの複数の入力サンプルを含む入力データストリームを受信する手段と、
ｂ）  前記入力サンプルの補間により、前記第２のサンプルレートの複数の出力サンプルを含む出力データストリームを生成する手段と、
を備え、前記出力データストリームを生成する手段は、
ｉ）保持手段に保持された整数値ａｃｃを０に設定し、
ii）出力サンプルの計算の前に、前記ａｃｃを予め定められた整数値Ａだけ増加させ、
iii）出力サンプルの計算の後に、前記ａｃｃを予め定められた整数値Ｂだけ減少させ、
iv）前記ａｃｃの増加後と前記ａｃｃの減少後とにおいて、出力サンプルを計算するか次の入力サンプルを選択するかを、前記ａｃｃが０未満の場合は次の入力サンプルを選択し、前記ａｃｃが０以上の場合は出力サンプルを計算すると決定し、
ｖ）前記ａｃｃ，前記Ａ，前記１以上の入力サンプルの値に基づいて、前記出力サンプルを計算し、
前記整数値Ａ、Ｂは、前記第１のサンプルレートの逆数Ｔx、前記第２のサンプルレートの逆数Ｔyについて、比率Ａ／ＢがＴx／Ｔyに等しい関係にある
ことを特徴とする装置。
【請求項６】
前記入力サンプルの補間は線形補間であることを特徴とする請求項５に記載の装置。
【請求項７】
前記出力データストリームを生成する手段がｖ）において前記出力サンプルを計算する際は、ｍ番目の出力サンプル値Ｙmを、式
Ｙm＝（ａｃｃ*Ｘn＋(Ａ−ａｃｃ)*Ｘn+1）／Ａ
により計算し、ここで、Ｘnは現在の入力サンプルの値であり、Ｘn+1はＸnの後に続く次の入力サンプルの値である
ことを特徴とする請求項６に記載の装置。
【請求項８】
前記Ａは２の累乗であり、当該Ａによる除算を行うためのビットシフタを更に備えることを特徴とする請求項５〜７のいずれか１項に記載の装置。
【請求項９】
第１のサンプルレートの入力データストリームを、当該第１のサンプルレートよりも小さな第２のサンプルレートの出力データストリームに変換するサンプルレート変換の方法であり、
ａ）  前記第１のサンプルレートの複数の入力サンプルを含む入力データストリームを受信するステップと、
ｂ）  前記入力サンプルの補間により、前記第２のサンプルレートの複数の出力サンプルを含む出力データストリームを生成するステップと、
を有し、前記出力データストリームを生成するステップにおいては、
ｉ）保持手段に保持された整数値ａｃｃを０に設定し、
ii）出力サンプルの計算の前に、前記ａｃｃを予め定められた整数値Ａだけ増加させ、
iii）出力サンプルの計算の後に、前記ａｃｃを予め定められた整数値Ｂだけ減少させ、
iv）前記ａｃｃの増加後に、出力サンプルを計算するか次の入力サンプルを選択するかを、前記ａｃｃが０未満の場合は次の入力サンプルを選択し、前記ａｃｃが０以上の場合は出力サンプルを計算すると決定し、
ｖ）前記ａｃｃ，前記Ａ，前記１以上の入力サンプルの値に基づいて、前記出力サンプルを計算し、
前記整数値Ａ、Ｂは、前記第１のサンプルレートの逆数Ｔx、前記第２のサンプルレートの逆数Ｔyについて、比率Ａ／ＢがＴx／Ｔyに等しい関係にある
ことを特徴とする方法。
【請求項１０】
第１のサンプルレートの入力データストリームを、当該第１のサンプルレートよりも大きな第２のサンプルレートの出力データストリームに変換するサンプルレート変換の方法であって、
ａ）  前記第１のサンプルレートの複数の入力サンプルを含む入力データストリームを受信するステップと、
ｂ）  前記入力サンプルの補間により、前記第２のサンプルレートの複数の出力サンプルを含む出力データストリームを生成するステップと、
を有し、前記出力データストリームを生成するステップにおいては、
ｉ）保持手段に保持された整数値ａｃｃを０に設定し、
ii）出力サンプルの計算の前に、前記ａｃｃを予め定められた整数値Ａだけ増加させ、
iii）出力サンプルの計算の後に、前記ａｃｃを予め定められた整数値Ｂだけ減少させ、
iv）前記ａｃｃの減少後に、出力サンプルを計算するか次の入力サンプルを選択するかを、前記ａｃｃが０未満の場合は次の入力サンプルを選択し、前記ａｃｃが０以上の場合は出力サンプルを計算すると決定し、
ｖ）前記ａｃｃ，前記Ａ，前記１以上の入力サンプルの値に基づいて、前記出力サンプルを計算し、
前記整数値Ａ、Ｂは、前記第１のサンプルレートの逆数Ｔx、前記第２のサンプルレートの逆数Ｔyについて、比率Ａ／ＢがＴx／Ｔyに等しい関係にある
ことを特徴とする方法。
【発明の詳細な説明】
発明の分野
この発明はデジタル信号のフィールドサンプルレート変換に関する。より詳しくは、この発明は、入力サンプルと出力サンプルのタイミング関係を計算するために整数アキュムレータを用いるサンプルレート変換方法に関する。
発明の背景
多くの電子的アプリケーションにおいて、信号はディジタル的に表現され処理される。ディジタル語、すなわちサンプルは、規則的な時間間隔で、データの値を表現する。この規則的な間隔は、しばしばサンプルレートと呼ばれ、サンプル間隔期間の逆数を表すキロヘルツ（ｋＨｚ）で典型的に表現される。
データの利用可能なサンプルレートが、希望するサンプルレートと相違するときの、種々な状況がある。サンプルデータの特性と、利用可能データと希望データの相違の大きさに応じて、あるアンプルレートから他のサンプルレートへ、信号の意味を故意に変更せずに変換するために、いくつかの方法を使用できる。
サンプルレート削減の第1の一般的な技法は、デシメーションと呼ばれる。それは、利用可能なサンプルレートが、希望のサンプルレートの整数倍であるときの選択法である。デシメータが、整数ｄにより入力サンプルを削減して、出力サンプルレートを生成する。入力信号に高周波成分が含まれていれば、ローパスフィルタで最初にこれを除去して、エイリアシング効果を防止しなければならない。このレート削減は、ｄ番目の出力サンプル毎に、ｄ−1の入力を廃棄するだけで遂行される。
デシメーションの主な欠点は、レート削減が整数に限られることである。その上、アンチエイリアシングフィルタが必要なときは、これが非常に計算集中的なものになるかも知れない。
サンプルレート変換の第2の一般的な方法は、補間として知られている。補間は、整数倍によりサンプルレートを増大するために、しばしば使用される方法である。サンプルレートをＩまで増大するために、基本補間器が、ゼロの値を有するＩ−１のサンプルを、全ての入力サンプルの間に挿入する。この結果のサンプルは、それから、より高いレートにおいて、アンチエイリアシングローパスフィルタを通じて、フィルタされる。
補間法は、デシメーションと同じ基本的な欠点のいくつかを有する。レート増大は整数に限定され、また、補間に必要なローパスフィルタリングは高価である。
補間とデシメーションは、それ自体では、整数のサンプルレートでの変更ができるだけである。多くの場合、これが必要なフレキシビリティを与えない。恐らくはいくつかの段階で補間とデシメーションを組み合わせることにより、サンプルレート変換を微調整することが可能になる。例えば、入力サンプルレートが１９４.4ｋＨｚで、希望のサンプルレートが１５３．６ｋＨｚであれば、整数因数による相違ではない。その代わりに、比率６４／８１により、希望のレートを利用可能なレートに関係付けることができる。希望のサンプルレートを達成するために、最初にデータを６４の因数で補間して、それから８１の因数でデシメートする。しかしながら、大きな補間とデシメーションの因数は、必要なローパスフィルタに非常に厳しい制約を課す。フィルタの要件を小さくするために、補間とデシメーションを、いくつかの段階で遂行する。すなわち、８で補間し、続いて９でデシメーション、続いて８で補間、続いて９でデシメーションすると、合計で６４／８１変換になる。補間とデシメーションの組み合わせを使用すれば、整数に限定されない一層広い範囲のレート変換が可能になる。しかしながら、そうしたアプローチの大きな欠点は、フィルタリングのコストである。
入力レートと出力レートが近接しているときに有用なもう一つの技法は、線形補間として知られている。この方法は１次線形補間のアプローチを用いて、２つの入力サンプルおよび入力サンプルと出力サンプルの時間的相対位置の関数としての各出力サンプルを推定する。図１を参照すると、ｍ番目の出力は次式により計算される。
0004376973.tif 000002
これらの式において、ｘnはｎ番目の入力サンプルであり、ｙmはｍ番目の出力サンプル、Ｔxは入力サンプル期間、Ｔyは出力サンプル期間である。Ｔxを入力サンプル期間とすると、ｎ番目の入力サンプルの時間は、
0004376973.tif 000003
である。同様にｍ番目の出力サンプルの時間は、
0004376973.tif 000004
である。出力サンプル番号ｍを計算するには、
0004376973.tif 000005
になるように、ｎを選択する。
１次補間法の1つの欠点は、ある出力サンプルの計算に使用するためにどの特定入力サンプルを使用すべきかを知らせるのが難しいことである。ＴｘとＴｙは整数であることが稀であり、丸め誤差が間違ったサンプルを選択する原因になり得る。ｍとｎが大きくなると非常に大きくなる２つの数の引き算を含むｋの計算もまた、数の正確さの限界による誤差の影響を受けやすくなる。
これらの欠点は、ｋの値を有するテーブルを使用することにより、緩和できる。入力レートが１９４．４ｋＨｚで出力レートが１５３．６ｋＨｚの例により続けると、サンプルの時間上の相対位置は、８１個の入力サンプルに渡って反復する。こうして、テーブルの中のｋの値を事前に計算して記憶できる。テーブルを使用することにより、事前に計算された値を記憶するための費用によって、全てのサンプルについてｋを計算する必要をなくすことができる。事前に計算されたテーブルを使用することの欠点は、テーブルの値を事前に計算して記憶しなければならず、これが追加のハードウェア資源を必要とすることである。同一のコンバータを、種々の入力サンプルレートと出力サンプルレートの組み合わせで使用するときに、このことは特に問題になる。
発明の要約
この発明は、先行技術の欠点のいくつかを克服するサンプルレート変換の方法と装置である。この発明の方法は、テーブルの事前の計算と記憶を必要とせずに、テーブルに基づくアプローチの堅牢性を提供する補間法である。この方法はまた、包含する計算を単純化し、また丸め誤差への感度を低くする。この方法は整数アキュムレータを使用して、他のサンプルレートでの複数の入力サンプルを含む入力データに基づく１つのサンプルデータでの複数の出力データを含む１つの出力データストリームを生成する。一層詳しくは、この方法は整数アキュムレータを使用して、入力サンプルと出力サンプルの間のタイミング関係を追跡する。アキュムレータの値に基づいて、この方法は、現在の出力サンプルを計算するために正しい入力サンプルが使用されているかどうかを判定する。もしそうならば、入力サンプルとアキュムレータ値の関数として、出力サンプルが計算される。アキュムレータ値を維持するために単純な整数演算を使用することにより、さもなければ必要とされる、非テーブルに基づくアプローチの柔軟性とコンパクトさを維持しながら正しい入力が使用されていることの確認のための、不必要な大量の計算を、この発明は避けることができる。
この発明の装置は、入力サンプルレジスタ、整数アキュムレータ、好ましくはビットシフトレジスタを含み、これら全ては、この発明のサンプルレート変換方法を実行するように構成される。
【図面の簡単な説明】
図１は、線形補間を描写する図面である。
図２は、この発明のサンプルレート変換法の論理的フローチャートである。
図３は、入力サンプル(...xn-3,xn-2,xn-1,xn,xn+1,...)と出力サンプル(...ym-2,ym-1,ym,ym+1,...)の間のタイミング関係を描写する図面である。
図４は、ＡがＢよりも小さいことが知られているときに適用できる単純化されたサンプルレート変換法の論理的フローチャートである。
図５は、ＡがＢよりも大きいことが知られているときに適用できる単純化されたサンプルレート変換法の論理的フローチャートである。
図６は、サンプルレートコンバータのための装置の好ましい実施例のブロック図である。
図７は、図４の方法を使用する図６の装置のためのコントローラの好ましい実施例の論理的フローチャートである。
発明の詳細な説明
好ましい実施例を描写する図面を参照しながら、以下にこの発明を一層詳細に説明する。しかしながら、この発明は多くの異なった実施例を採用することができるものであり、本書に説明される実施例にこの発明を限定することを意図しない。
この発明の方法は補間の変形であり、入力サンプルと出力サンプルの時間的位置関係の計算を容易にするために整数アキュムレータ２２０を使用するものである。線形補間のために、この方法は２つの正の整数の定数ＡおよびＢを使用して、２つの入力サンプルと１つの出力サンプルのタイミング関係を計算する。入力信号のサンプル期間がＴxであって出力信号のサンプル期間がＴyであれば、そのときはＡとＢが下記の方程式を満足するように、ＡとＢが選択される。
A/B=Tx/Ty
ＡとＢの実際の値またはサイズは、望ましい正確さのレベルとその他の考慮点により異なる。実際、入力サンプル期間Ｔxは、Ａ個のステップに量子化される。これらのステップを小さく保つ（Ａを大きく保つ）ことにより、付加される量子化雑音を小さく保つことができる。しかしながら、Ａを表現するために多数のビットを使用することは、ハードウェア資源を浪費するかもしれない。例えば、入力信号を１９４．４ｋＨｚのサンプルレートで利用でき、希望する出力レートが１５３．６ｋＨｚであるとすると、
A/B=Tx/Ty=((1/194,400)/(1/153,600))=153,600/194,400=64/81
こうして、入力サンプル期間を６４個のステップ（Ａ＝６４）へ量子化したり、または６４の倍数のステップにしても、ＡとＢが整数でありながらこの固有の比率を維持できる。こうして、Ｂが１２９６であれば、Ａは１０２４であり得る。しかしながら、Ａが６４の場合は、この値を表現するのに６ビットだけで済む（２6＝６４）が、Ａが１０２４の場合は１０ビットが必要である（２10＝１０２４）。いずれの場合も、１つの付加ビットが必要でありえることに注意されたい。
１組の入力サンプルと所与の出力サンプルについて、時間的相対関係を追跡する変数「ａｃｃ」の値を反復的に計算するために、ＡおよびＢの値が使用される。単純な項において、ａｃｃは２つの関数の働きをする。第１に、カレントの出力サンプルを計算するために入力サンプルの正しいペアが使用されているかどうかを決定するために、ａｃｃが使用される。第２に、出力サンプル値が正しく推定されるように、入力サンプルペアの各メンバへ適当な重みを割り当てるために、ａｃｃが使用される。これらの機能をａｃｃがどのように遂行するかの詳細は、以下の説明により明らかになるであろう。
図２は、この発明の論理的なフローチャートである。処理の開始において、整数アキュムレータ２２０がゼロにセットされ、変数ｍと変数ｎもゼロにセットされる（ボックス１０）。変数ｍはカレント出力サンプルのシーケンス番号を表現する整数カウンタである。変数ｎはカレント入力サンプルのシーケンス番号を表現する整数カウンタである。下記の説明から明らかになるが、フローチャート内のｍとｎの唯一の目的は、入力サンプルと出力サンプルがどのように関連するかを明らかにすることにより、読者がアルゴリズムを理解するのに役立つことである。この発明を実行するのに、ｍもｎも、記憶や計算する必要がない。
アキュムレータ２２０は、変数「ａｃｃ」を表現する整数値を含んでいる。主要処理ループは、アキュムレータ２２０内の整数値にＡを加えることにより開始する（ボックス２０参照）。それからａｃｃがゼロよりも小さいかどうかをチェックする（ボックス３０）。もしそうならば、ｎを１つだけ増して（ボックス４０）、次の入力サンプルを選択することにより、カレントの入力サンプルの役割を仮定して、それはボックス２０へ帰る。ａｃｃがゼロよりも小さくなければ、出力サンプルを計算する（ボックス５０）。単純な項において、ボックス３０のａｃｃ値チェックは、計算される特定の出力サンプル値が、現在のサンプル期間、すなわち２つの現在選択されている入力値（ｎとｎ＋１）の間、またはちょうど入力サンプルＸn+1にあるかどうかの決定を表現する。
この発明のために、現在の入力サンプル期間は、現在の入力サンプルから次に続く入力サンプルまでの期間と定義される。こうして、もし入力サンプルレートが１Ｈｚであり、現在の入力サンプルが（数列０，１，２，３，４，．．．ｎの）４番目であれば、現在の入力サンプル期間は４秒から５秒までである。
出力サンプルの計算（ボックス５０）は、下記の式により遂行される。
0004376973.tif 000006
この式は修正された線形補間式である。この式において、Ｘnは出力サンプルの前に起きる最後の入力サンプルであり、ｘn+1は出力サンプルの後の最初の入力サンプルの値である。入力サンプルの上に直接に出力サンプルがあたる場合は、ａｃｃが整数ゼロに等しく、式は短くまとめられて、
0004376973.tif 000007
になる。こうして、入力サンプルに正しく対応する値ｘn+1が出力サンプル（ｙm）のために使用される。しかしながら、直接オーバーラップの一番最初の場合の特例として、最初の入力サンプル（ｘ0）と最初の出力サンプル（ｙ0）において、ａｃｃはＡに等しく、従ってこの式はこの場合短くまとめられて、
0004376973.tif 000008
になる。
出力サンプルが計算された（ボックス５０）後で、ａｃｃの値がＢ（ボックス６０）でデクリメントされる。ボックス７０で、ａｃｃのこの新しい値がチェックされて、それがゼロよりも大きいかまたは等しいかがチェックされる。もしそうならば、ｍを１つだけインクリメントして、処理がボックス５０へ戻る。もしそうでないならば、そのときはｍとｎを１つインクリメントする（ボックス９０）。簡単な項では、ボックス７０のａｃｃ値チェックは、次の出力サンプルが入力サンプルの同一ペア内に起こるかどうかの決定を表現する。
主処理ループ（ボックス２０―ボックス１００）を通じて、サンプルがなくなるまで（ボックス１００）処理が継続され、なくなった時点で停止する（ボックス１１０）。この仕方で期間Ｔxの入力サンプルレートが期間Ｔyの出力サンプルレートに変換される。
作動中のこの方法の一例として、図３を参照されたい。入力サンプルレートが出力サンプルレートよりも速いと仮定すると、ＡがＢよりも小さいことを意味する。議論の便宜のために、入力サンプルレート１．４ｋＨｚと出力サンプルレート１．０ｋＨｚに対応して、Ａが１０でＢが１４であると仮定する。更に、この変換処理はこの発明により進行中であり、今やサンプルｘn-3とサンプルｙm-2を処理中であると仮定する。この時点で、ボックス２０に入り、ａｃｃは−４に等しい。ボックス２０で、ａｃｃが今や６（−４＋１０）になるように、ａｃｃをＡでインクリメントする。６は０よりも大きいので（ボックス３０）、ｘn-3とｘn-2に基づいて、出力サンプルｙm-2が計算される。さて、ａｃｃが−８（＋６−１４）に等しくなるように、１４だけデクリメントされる（ボックス６０）。主処理ループのこの第２パスの間に、ｘn-2とｘn-1を使用してｙm-1の値が計算されて、ａｃｃが−１２（−８＋１０−１４）になるように調節される。主処理ループの第３パスにおいて、ａｃｃが−２（−１２＋１０）になるように、Ａによりインクリメントされる。今や、ａｃｃが０よりも小さく、現在の入力サンプル（この時点でｘn-1）が除去されるので、次の入力サンプルｘnが現在の入力サンプルの位置を取り、ａｃｃは８（−２＋１０）へ増加される。それからｘnとｘn+1を使用して出力サンプルｙmが計算される。主処理ループの第３パスの結末（ボックス１００）において、ａｃｃは−６（８−１４）に等しい。図３に示すように、出力サンプルｙmを計算するのに、入力サンプルｘn-1とｘnでなく入力サンプルｘnとｘn+1がｙm使用される理由は、ｙmがｘnとｘn+1の間にあるためである。
この説明から理解できるように、変数ａｃｃは、入力サンプルと出力サンプルの間のタイミング関係をダイナミックに追跡するために使用される。ＢよりもＡが小さいこの例において、ボックス３０においてａｃｃがゼロよりも小さいとき、この入力サンプルは、「特別な」１つまたはそれ以上の位置を進められる。他の状況において、ＡよりもＢが小さいときは、ボックス７０において、ａｃｃがゼロに等しいかまたはより大きいとき、同一の入力サンプルペアを使用して、２つまたはそれ以上の出力サンプルを計算し得る。こうして、正しい入力サンプルペアを使用して各所与の出力サンプルを計算されていることを検査する処理によって、変数ａｃｃが使用されることが理解できる。
もし定数Ａが定数Ｂよりも大きい、またはその反対であることが知られていれば、図２のアルゴリズムを少し簡単にできる。図４は、ＡがＢよりも小さいことが知られているときのための簡単化されたフローチャートを示し、同一の参照番号を使用している。図５は、ＡがＢより大きいことが知られているときのための簡単化された論理的なフローチャートである。図４と図５のフローチャートは、ＡとＢの間の関係が知られているときは、比較とループバックのステップを省略でき、これにより処理を単純化できることを示す。
上記の処理のために、出力サンプル（ｙm）は定数Ａによる除算を必要とする。除算をハードウェアにインプリメンテーションするのはやや高価であるので、代わりに１／Ａを予め計算しておいて、乗算を使用することができる。より好ましくは、代わりに、容易に割り算できる値をＡのために選択しても良い。例えば、Ａが２の累乗であれば、簡単なバイナリビットシフトとして除算をインプリメントできる。
例示の目的のために、入力サンプルが１９４．４ｋＨｚで利用でき、希望するサンプルレートが１５３．６ｋＨｚであるとする。これは下記を意味する。
A/B=Tx/Ty=153,600/194,400=64/81
こうして、Ａは６４に等しくなり得るし、Ｂは８１に等しくなり得る。そうならば、それから入力サンプル期間Ｔxを６４ステップに分割できる。例えばＡを１５３６に増加し、これに応じてＢを１９４４に増加すれば、より大きな正確さが得られる。しかしながら、好ましくはＡを１０２４（２10）のような２の累乗にして、従ってＢを１２９６のようにする。Ａが１０２４であれば、除算は、１０回のバイナリ右シフトとしてインプリメントできる。
上記の議論は線形補間のアプローチの利用を仮定している。しかしながら、この発明の方法は、２次または３次またはこの分野で知られた他の方法のような、他の補間アプローチをも利用できる。これら他の線形補間アプローチのいくつかは、所与の出力サンプルを計算するために、２つよりも多い入力サンプルを使用する必要がある。２つの入力サンプルだけが必要ならば、そのときは1つの整数アキュムレータ２２０を使用するだけでよい。２つよりも多い入力サンプルが必要ならば、複数の整数アキュムレータ２２０を使用して、入力サンプルと出力サンプルの間の種々のタイミング関係を追跡できる。代わりに、１つのアキュムレータを使用して、必要な全ての入力サンプルと計算すべき出力サンプルの間の関係を追跡することができる。これは、１つの入力サンプルへのタイミング関係が知られれば、他の入力サンプルへのタイミング関係は、Ａの更に遠くへの整数インクリメントであるだけだからである。もし（線形補間以外の）異なった補間アプローチを使用すれば、各所与の出力サンプルを計算するために、異なった公式も使用されるであろうことは明らかである。しかしながら、出力サンプル値はそれでも、少なくとも複数の入力サンプルと１つまたはそれ以上のアキュムレータ値の関数であろう。
サンプルレートコンバータ２００の可能なハードウェアインプリメンテーションのブロック図を、図６に示す。このサンプルレートコンバータ２００は、コントローラ２１０、整数アキュムレータ２２０、マルチプレクサ２３０、加算器２４０、同２５０、減算器２６０、乗算器２７０、同２８０、入力サンプルレジスタ２９０、ビットシフタ３００を含む。コントローラ２１０は、コンバータ２００の全般的な機能を制御する。アキュムレータ２２０は、整数演算を使用して、入力サンプルと出力サンプルの時間的位置関係を追跡する。マルチプレクサ２３０は、ＡとＢの値について、ソース１８０、同１９０に接続されている。入力サンプルはレジスタ２９０へ逐次的に供給される。ビットシフタ３００は、適当なビットシフトを遂行して、Ａによる除算を反映し、また各出力サンプルについて出力サンプル値を出力する。
二者択一的に、コントローラ２１０の諸機能は、図６に示すように単一のデバイス内に集めるよりも、むしろコンバータ２００の中で分散させることができる。また、加算器２４０、同２５０、減算器２６０、乗算器２７０、同２８０、入力サンプルレジスタ２９０のようなコンバータ２００の２つ以上の構成部品もまた、集積論理演算装置に結合できるが、これは一層高価になり得る。
図７は、図４に記述された方法のために、図６のコントローラ２１０の好ましいオペレーションの単純化されたフローチャートを示す。初期化すると、コントローラ２１０はアキュムレータ２２０にクリアするように命令し、また入力サンプルレジスタ２９０に第１入力サンプルをロードするように命令する（ボックス３１０）。この動作が図４のボックス１０に対応することに注意されたい。それからコントローラは、次の入力サンプルが利用可能であることを検査する（ボックス３２０）。もしそうでなければ、コントローラ２１０は次の入力サンプルが利用可能でなるまでループする。もしそうならば、そのときはコントローラ２１０はマルチプレクサ２３０に、Ａをロードするように命令し、またアキュムレータ２２０にＡによりインクリメントさせる（ボックス３３０）。この動作が図４のボックス２０に対応することに注意されたい。それからコントローラ２１０はアキュムレータ２２０（ボックス３４０）の信号ビットをチェックする（ボックス３４０）。この動作が図４のボックス３０に対応することに注意されたい。符号ビットが肯定でなければ、コントローラ２１０は、出力サンプル（ｙm）を計算させ、マルチプレクサに-Ｂへスイッチさせ、アキュムレータ２２０に、既存のアキュムレータ値に-Ｂを加算させる（ボックス３５０）。これらの動作は、図４のボックス５０、同６０、同９０に対応する。ボックス３５０の後か、またはもしボックス３４０の符号ビットが否定であれば、コントローラ２１０は入力サンプルレジスタ２９０に、次の入力サンプルをロードさせる（ボックス３６０）。
図６のコンバータ２００は、Ａが２の累乗であるときの上記の線形補間ランプルレート変換の簡単なハードウェアインプリメンテーションである。コンバータ２００は、ｘ1，ｘ2，．．．ｘnの入力サンプルストリームのサンプルレートを、整数演算を使用して、異なった出力サンプルレートを有するｙ1，ｙ2，．．．ｙmの出力ストリームへ変換することができる。ＡとＢをプログラム可能な定数にすることにより、同一のサンプルレートコンバータ２００を、いくつかの異なった入力対出力比率で動作するように、プログラムできる。
【図１】
0004376973.tif 000009
【図２】
0004376973.tif 000010
【図３】
0004376973.tif 000011
【図４】
0004376973.tif 000012
【図５】
0004376973.tif 000013
【図６】
0004376973.tif 000014
【図７】
0004376973.tif 000015