4

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

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

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

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

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

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

3) MATLAB Fixed Point Toolbox を使用する必要がありますか?

私の質問に答えるために必要な情報が他にある場合はお知らせください。

4

2 に答える 2

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

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

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

このトピックに関する記録されたウェビナーへの次のリンクは、Fixed-Point Toolbox を使用するこのプロセスの優れた紹介を提供するはずです: http://www.mathworks.com/wbnr38838

HTH。

于 2011-06-17T21:00:33.223 に答える
3

私はあなたの最初の質問にしか答えることができません:

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

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

于 2011-06-13T17:03:51.423 に答える