Low level routine
eng - fr


mash3_c - third order delta-sigma modulator computational routine

Library

Parameters

File content


/* mash3_c subroutine
 * Third order MASH Sigma-Delta Modulator
 * IRCOM GROUP - Author : A.Layec
 */
 
/* REVISION HISTORY :
 * $Log$
 */
 
#include "mod_num_lib.h"

/* mash3_c routine de calcul d'un modulateur sigma-delta du 3eme ordre type MASH
 *
 * entrées :
 * n   : longueur du vecteur d'entrée (scalaire)
 * m   : gain du modulateur (scalaire)
 * u   : adresse de départ du vecteur à convertir
 * entrées/sorties 
 * e   : intégral du signal d'erreur du dernier élément (vecteur)
 *      e[0]     : modulateur 1
 *      e[1]     : modulateur 2
 *      e[2]     : modulateur 3
 * z   : etat de sortie du dernier élément +m;-m (scalaire)
 *      z[0]     : modulateur 1
 *      z[1]     : modulateur 2
 *      z[2]     : etat mémoire du mash2
 *      z[3]     : modulateur 3
 *      z[4],z[5]: etats mémoire du mash2
 * y   : adresse de départ du vecteur de sortie (+1;-1)
 * q   : adresse de départ du vecteur de sortie de l'erreur de quantification
 * w   : adresse de départ du vecteur de travail
 *
 * dépendances :
 * mash1_c
 * mash2_c
 */
 
void mash3_c(int *n,double *m,double *u,double *e,double *z,double *y,double *q,double *w)
{
 /*déclaration*/
 int i;
 
 /*Appel mash2*/
 mash2_c(n,m,&u[0],&e[0],&z[0],&y[0],&q[0],&w[0]);
 
 /*Appel mash1*/
 mash1_c(n,m,&q[0],&e[2],&z[3],&w[0],&q[0]);
 
 /*réalise opération sur bruit*/
 for(i=0;i<(*n);i++)
 {
  y[i]=(y[i]+(w[i]-2*z[4]+z[5]));
  /*mise en mémoire des états mémoires du mash3*/
  z[5]=z[4];
  z[4]=w[i];
 }
 return;
}

See Also

Authors

IRCOM Group Alan Layec