Low level routine
eng -
fr
chargepump_c - charge pump computational routine
- n : size of vectors
- up : address of up vectors.
- down : address of down vectors.
- Io : address of Io vectors.
- typ_leak : type of leakage current
- 0 : no leak
- 1 : constant leak
- 2 : noisy leak
- Ileak_m : address of the mean of the current vector or constant current vector
- Ileak_d : address of the variance of the current vector
- Icp : address of the output vector
/* chargepump_c subroutine
* ideal and noisy charge pump computation
* IRCOM GROUP - Author : A.Layec
*/
/* REVISION HISTORY :
* $Log$
*/
#include "mod_num_lib.h"
/* chargepump_c routine de calcul d'une pompe de charge
*
* Entrées :
* n : taille des vecteurs
* up : adresse de départ des vecteurs up
* down : adresse de départ des vecteurs down
* Io : adresse de départ des vecteurs Io
* typ_leak : type de courant fuite
* 0: pas de fuite
* 1: fuite constante
* 2: fuite bruit normal
* Ileak_m : adresse de départ des vecteurs du courants de fuite moyen
* Ileak_d : adresse de départ des vecteurs de la déviation du courant de fuite
*
* Sorties :
* Icp : adresse de départ du vecteur de sortie
*/
void chargepump_c(int *n,double *up,double *down,double *Io, int *typ_leak,double *Ileak_m,double *Ileak_d,double *Icp)
{
/*déclaration*/
int i;
/*test sur type de courant de fuite*/
switch (*typ_leak)
{
case 0 : /*cas pas de fuite*/
{
for(i=0;i<(*n);i++) Icp[i]=Io[i]*(up[i]-down[i]);
break;
}
case 1 : /*cas fuite constante*/
{
for(i=0;i<(*n);i++) Icp[i]=Io[i]*(up[i]-down[i])+Ileak_m[i];
break;
}
case 2 :
{
/*Appel noiseblk_c*/
noiseblk_c(n,(i=1,&i),&Ileak_d[0],&Ileak_m[0],&Icp[0]);
for(i=0;i<(*n);i++) Icp[i]=Io[i]*(up[i]-down[i])+Icp[i];
break;
}
/*cas other*/
for(i=0;i<(*n);i++) Icp[i]=Io[i]*(up[i]-down[i]);
break;
}
return;
}
IRCOM Group
Alan Layec