Main Content

固定小数点 C コードの生成

メモ

固定小数点コードを MATLAB® から生成するには、Fixed-Point Designer™ 製品と MATLAB Coder™ 製品の両方が必要です。また、C コンパイラも必要です。

この例では、2 つの入力値を乗算して累積するシンプルな関数のコードを生成する方法を説明します。このタイプのコードは、外部ハードウェアに組み込むことができます。関数は次のようになります。

function acc = mult_acc(x,a,acc)
acc = accumpos(acc,x*a); 

このコードはテスト ベンチ入力の定義、必要なコード生成プロパティの設定およびコード生成を行います。テスト ベンチ入力は固定小数点数値として指定します。入力 x は 1 つの乱数、a は 0.9 で、アキュムレータ acc は 0 に初期化されます。coder.HardwareImplementation オブジェクトでは、生成コードに影響を与える外部ハードウェアのプロパティを指定します。この例では、40 ビットのアキュムレータを指定します。coder.CodeConfig オブジェクトには、コード生成に直接影響を与えるプロパティがあります。codegen コマンドは、関数および構成オブジェクトを入力引数として取り、組み込み可能な C コードを生成します。

x = fi(rand,true,16,15);
a = fi(0.9,true,16,15);
acc = fi(0,true,40,30);


%% 
hi = coder.HardwareImplementation;
hi. ProdHWDeviceType = 'Generic->Custom'
hi. TargetHWDeviceType = 'Generic->Custom'
hi.TargetBitPerLong = 40;
hi.ProdBitPerLong   = 40;

hc = coder.config('lib');
hc.HardwareImplementation = hi;
hc.GenerateReport         = true;

codegen mult_acc -config hc -args {x,a,acc}

生成される C コードは次のようになります。

/* Include Files */
#include "mult_acc.h"

/* Function Definitions */

/*
 * Arguments    : short x
 *                short a
 *                long *acc
 * Return Type  : void
 */
void mult_acc(short x, short a, long *acc)
{
  *acc += x * a;
}

メモ

サポートされているコード生成用の関数のリストについては、C/C++ コードの生成でサポートされている関数およびオブジェクトを参照してください。