私は dsps と固定小数点を扱うのが初めてで、本当に知る必要があります: 1.浮動小数点数を Q 形式に変換するのは固定小数点 dsp ですか、それとも Dsp に供給する前にデバイスがそれを行いますか? 2. 使用する Q 形式を指定するのは誰か。各 DSP には指定された Q_format が付属していますか、それともプログラマーがコードでそれを行っていますか。3. C++ で単純な 4 × 4 固定小数点行列乗算を実行する方法を教えてください。
期待して感謝
私は dsps と固定小数点を扱うのが初めてで、本当に知る必要があります: 1.浮動小数点数を Q 形式に変換するのは固定小数点 dsp ですか、それとも Dsp に供給する前にデバイスがそれを行いますか? 2. 使用する Q 形式を指定するのは誰か。各 DSP には指定された Q_format が付属していますか、それともプログラマーがコードでそれを行っていますか。3. C++ で単純な 4 × 4 固定小数点行列乗算を実行する方法を教えてください。
期待して感謝
フォーマットは通常、特定の DSP に対して固定されています。たとえば、Motorola DSP 56k ファミリでは24 bit signed fractional format (Q23)
.
固定小数点は通常の整数とまったく同じですが、暗黙のスケール係数があります。ほとんどの操作では、これは違いはありません。たとえば、データが整数か固定小数点かに関係なく、ロード/ストア/加算/減算はすべて同じように機能します。
ただし、乗算または除算に関しては、暗黙のスケーリング係数を考慮する必要があります。通常、これを修正するために演算後にシフトが発生します。DSP 命令はこれを自動的に処理しますが、通常の CPU はこれを明示的に行う必要があります。
たとえば、4x4 行列の乗算を行う場合、DSP のネイティブ固定小数点演算命令を使用するだけで、スケーリングはすべて自動的に処理されます。