質問

MATLAB での Texas Instruments TMS320C64xx DSP のアルゴリズムのコーディングについて質問があります。

MATLAB でフィルターをうまく実装できませんでした。私の目標は、MATLAB Embedded Coder を使用してこのアルゴリズムを C に変換し、Code Composer Studio にインポートして DSP にロードできるようにすることです。

これを行うには、MATLAB コードに対していくつかのことを行う必要があることはわかっています。たとえば、行列を作成するサイズを認識できるように、行列にスペースを事前に割り当てる必要があります (可変サイズのデータ​​を扱いたくない場合を除く)。MATLAB コーダーがそれを変換できるように、MATLAB コードを C 風のコードに変換することは、多かれ少なかれ理解できます。しかし、MATLAB Embedded Coder がコードを固定小数点データ型のみを含む C に変換できるように、データ型 (フィルターの係数など) が浮動小数点ではなく固定小数点であることを確認する方法がわかりません。

したがって、私の全体的な質問は次のとおりだと思います。

1) C64xx が 32 ビット固定小数点 DSP として指定されている場合、float データ型を使用しようとすると、そのコンパイラがエラーをスローすることになりますか?

2) MATLAB Embedded Coder が float データ型を作成しないようにする方法はありますか?

3) MATLAB 固定小数点ツールボックスを使用する必要がありますか?

皆さん、ありがとうございます。私の質問に答えるために他に情報が必要な場合はお知らせください。

役に立ちましたか?

解決

  1. 浮動小数点データ型を使用できますが、前の回答で指摘されているように、DSP は浮動小数点をエミュレートするため、実行が大幅に遅くなります。このタイプの実行は、a)フロートの精度を必要とする特定の数値操作では問題ありませんb)および/または固定点への変換は通常痛みです(例:正方形の根)または常に実行可能ではない、c)および/またはこれらの操作は、プログラムでほとんどのCPUサイクルを抱きしめるために頻繁に発生しません。

  2. はい。MATLAB Coder の構成設定ダイアログの [インターフェイス] ペインの下に、「純粋な整数のみをサポートする」というチェックボックスがあります。これをチェックすると、生成されたコードに浮動小数点データ型が含まれないようになります。ただし、最初に、コード内で整数/固定小数点データ型のみを使用していることを確認する必要があります。このオプションは、浮動小数点が生成されないことを保証するだけであり、浮動小数点 MATLAB コードからコードの固定小数点または整数のみのバージョンを自動的に生成するわけではありません。

  3. 固定小数点 C コードを実際に作成するには、まず浮動小数点 MATLAB コードを固定小数点コードに変換する必要があります。変数を FI オブジェクトとして指定し、FIMATH 設定を使用して固定小数点演算ルールを定義できる固定小数点ツールボックスが必要になります。すべての変数と演算に対して 16/32 ビットの固定小数点データ型を定義したら、それをシミュレートし、結果を分析し、それを反復処理して設定を調整し、オーバーフローと丸め誤差を最小限に抑えることができます。その後、固定小数点 MATLAB の動作とまったく同じ (または非常に近い) 動作をする、真の整数のみの C コードを生成できます。固定小数点 MATLAB コードと固定小数点 C コードの間に見られる違いは、主にターゲット コンパイラによって導入された違いによるものです。

このトピックに関する録画されたウェビナーへの次のリンクは、固定小数点ツールボックスを使用するこのプロセスの優れた入門書となります。http://www.mathworks.com/wbnr38838

HTH。

他のヒント

私がお答えできるのは最初の質問のみです。

C64xx は 32 ビット固定小数点 DSP ですが、浮動小数点を使用してもコンパイラは文句を言いません。結果のコードは正常に実行されますが、浮動小数点演算がエミュレートされるため、(大幅に) 遅くなります。

C64xx DSP は、16 ビット固定小数点および混合 32x16 ビット固定小数点も実行できます。使用するデータ型が小さいほど、結果として得られるコードの実行が速くなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top