Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Générer un code C en virgule fixe

Remarque

Pour créer un code en virgule fixe depuis MATLAB® vous devez disposer à la fois du produit Fixed-Point Designer™ et du produit MATLAB Coder™. Vous devez également disposer d’un compilateur C.

Cet exemple montre comment générer un code pour une fonction simple qui multiplie et cumule deux valeurs d’entrée. Il s’agit du type de code que vous pourriez embarquer dans du hardware externe. La fonction est

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

Ce code définit les entrées d'un test bench, établit les propriétés de génération de code nécessaires, et génère le code. Les entrées du test bench sont spécifiées comme nombres à virgule fixe. L’entrée x est un nombre aléatoire, a est 0,9, et l’accumulateur, acc, est initialisé à 0. L’objet coder.HardwareImplementation précise les propriétés du hardware externe qui ont un impact sur le code créé. Les exemples spécifient un accumulateur 40 bits. L’objet coder.CodeConfig a des propriétés qui influent directement sur la création de code. La commande codegen prend la fonction, l’objet de configuration en tant qu’arguments d’entrée, et crée le code C embarquable.

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}

Le code C créé est :

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

Pour une liste des fonctions supportées pour la génération de code, voir Functions and Objects Supported for C/C++ Code Generation.