Main Content

Generazione di codice C in virgola fissa

Remarque

Per generare un codice in virgola fissa da MATLAB® è necessario avere sia il prodotto Fixed-Point Designer™ sia il prodotto MATLAB Coder™. È necessario inoltre avere un compiler C.

Questo esempio illustra come generare codice per una semplice funzione che moltiplica e accumula due valori di input. Questo è il tipo di codice che può essere integrato nell'hardware esterno. La funzione è

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

Questo codice definisce gli input del banco di prova, imposta le proprietà di generazione di codice richieste e genera il codice. Gli input del banco di prova sono specificati come numeri in virgola fissa. L’input x è un numero casuale, a è 0,9 e l’accumulatore acc è inizializzato a 0. L’oggetto coder.HardwareImplementation specifica le proprietà dell’hardware esterno che influiscono sul codice generato. Gli esempi specificano un accumulatore a 40 bit. L’oggetto coder.CodeConfig possiede le proprietà che influiscono direttamente sulla generazione di codice. Il comando codegen prende la funzione e l’oggetto di configurazione come argomenti di input e genera un codice C integrabile.

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}

Il codice C generato è:

/* 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;
}

Remarque

Per un elenco delle funzioni supportate per la generazione di codice, vedere Functions and Objects Supported for C/C++ Code Generation.