Generazione di codice C in virgola fissa
Nota
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; }
Nota
Per un elenco delle funzioni supportate per la generazione di codice, vedere Functions and Objects Supported for C/C++ Code Generation.