私はCでマイクロコントローラーDDSプロジェクトに取り組んでおり、出力値を平滑化するために線形補間を計算する方法を理解するのに問題があります。現在のプログラムで
は、24ビットアキュムレータの上位8ビットを、8ビット出力値の配列へのインデックスとして使用しています。アキュムレータの中間バイトと下位バイトを取得し、配列の「前」と「次」の値の間に値を生成する関数を考え出す必要があります。これは高速ハードウェアでは十分に簡単ですが、マイクロコントローラーを使用しているので、浮動小数点演算や除算を行わないようにする必要があります。
これらの制限があるため、2つの8ビット入力番号と2つの入力値の間の「距離」を表すアキュムレータの下位2バイから8ビット補間値を取得する方法がわかりません。アドバイスをよろしくお願いします!
明確化
DDS=ダイレクトデジタルシンセシス
DDSでは、位相アキュムレータを使用してルックアップテーブルから波形が生成されます。位相アキュムレータには通常、整数成分と小数成分が含まれています。整数コンポーネントは、ルックアップテーブルへのインデックスとして使用されます。単純なDDS実装では、小数部分は無視されますが、高品質の出力では、小数コンポーネントを使用して、隣接するルックアップテーブル値間の補間(通常は線形補間)が行われます。上記の質問では、特定の分数fの2つのルックアップテーブル値間でこの線形補間を効率的に実行する方法を検討しています。ここで、は0 <= f < 1
です。