Ajoutez ici un paragraphe pour la description de la fonction
/* dac_c subroutine
* simple digital to analog converter
*
* Copyright (C) 2007-2011 Alan Layec
*
* This file is part of modnumlib.
*
* modnumlib is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* modnumlib is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with modnumlib; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
/* REVISION HISTORY :
* $Log$
*/
#include "modnum_lib.h"
/*
* dac_c routine de calcul d'un convertisseur numérique analogique
*
* Entrées :
* n : taille des vecteurs
* nbit : longueur en bit de la valeur décimale de sortie (scalaire)
* cc2 : flag code complément à 2 (scalaire)
* 0 : nombre entier non signé
* 1 : nombre entier signé
* q : pas de quantification (scalaire)
* vmin : valeur minimale du début de la quantification (scalaire)
* u : vecteur d'entrée (vecteur)
*
* Sorties :
* y : vecteur de sortie du convertisseur (vecteur)
*
*/
void dac_c(int *n,int *nbit, int *cc2,double *q,double *vmin, \
double *u,double *y)
{
/*Déclaration des variables compteurs*/
int i;
/*pour chaque elements*/
for(i=0;i<(*n);i++)
{
/*Realise test sur code complément à 2*/
if((*cc2)==1)
/*Calcul sortie analogique pour un code complément à 2*/
y[i]=(*q)*(u[i]+((double)((1<<((*nbit)-1))-1)))+(*vmin);
else
/*Calcul sortie analogique pour un entier non signé*/
y[i]=(*q)*u[i]+(*vmin);
}
return;
}
/*
* dacv_c routine de calcul d'un convertisseur numérique analogique
*
* Entrées :
* n : taille des vecteurs
* nbit : longueur en bit de la valeur décimale de sortie (vecteur)
* cc2 : flag code complément à 2 (vecteur)
* 0 : nombre entier non signé
* 1 : nombre entier signé
* q : pas de quantification (vecteur)
* vmin : valeur minimale du début de la quantification (vecteur)
* u : vecteur d'entrée (vecteur)
*
* Sorties :
* y : vecteur de sortie du convertisseur (vecteur)
*
*/
void dacv_c(int *n,int *nbit, int *cc2,double *q,double *vmin,\
double *u,double *y)
{
/*Déclaration des variables compteurs*/
int i;
/*pour chaque elements*/
for(i=0;i<(*n);i++)
{
/*Realise test sur code complément à 2*/
if(cc2[i]==1)
/*Calcul sortie analogique pour un code complément à 2*/
y[i]=q[i]*(u[i]+((double)((1<<(nbit[i]-1))-1)))+vmin[i];
else
/*Calcul sortie analogique pour un entier non signé*/
y[i]=q[i]*u[i]+vmin[i];
}
return;
}