This block realizes the function of an ideal discret charge pump.
The two regular inputs are boolean (0 or 1) vectors of the command of the two current sources.
The regular output computes :
/* pompecharge Scicos Charge Pump block * Type 4 simulation function ver 1.0 - scilab-3.0 * 9 octobre 2003 - IRCOM GROUP - Author : A.Layec * 10 janvier 2005 : passage type 4 * rajout du bruit sur le courant de fuite */ /* REVISION HISTORY : * $Log$ */ #include "machine.h" #include "scicos_block.h" #include <math.h> #include <stdio.h> #include <stdlib.h> /*pour RAND_MAX*/ /* Cette fonction de simulation réalise l'opération d'une pompe de charge * * entrées régulières : u[0..nu-1] : Vecteur des Signaux discrets Up(t) * u[nu..2nu-1] : Vecteur des signaux discrets Down(t) * sortie régulière : y[0..nu] : Vecteur des signaux discrets Icp(t) * * entrées d'événements : nev=0 à la rigueur (Ref(t) union Div(t)) * sinon néant (héritage) * * sorties d'évènement : néant * paramètres entiers : outsz[0] : taille des vecteurs (nu) * ipar[0] : 0=pas de bruit sur le courant de fuite * 1=fuite constante * 2=bruit normal sur le courant de fuite * paramètres réels : rpar[0..nu-1] : courant max de la pompe de charge * rpar[nu..2nu-1] : courant de fuite moyen de la pompe de charge * rpar[2*nu..3*nu-1] : deviation du courant de fuite (si ipar[0]=1) */ /*prototype*/ void pompecharge(scicos_block *block,int flag) { /*déclaration*/ double *y; double *up,*down; int nu; int typ_leak; double *Io,*Ileak_d,*Ileak_m; /*fprintf(stderr,"flag=%d\n",flag);*/ /*Récupération de l'adresse des ports d'entrée et de sortie*/ y=(double *)block->outptr[0]; up=(double *)block->inptr[0]; down=(double *)block->inptr[1]; /*Stock taille de la sortie dans nu*/ nu=block->outsz[0]; /*Récupération des paramètres*/ typ_leak=block->ipar[0]; Io=&block->rpar[0]; Ileak_m=&block->rpar[nu]; Ileak_d=&block->rpar[2*nu]; /*Appel chargepump_c*/ chargepump_c(&nu,&up[0],&down[0],&Io[0],&typ_leak,&Ileak_m[0],&Ileak_d[0],&y[0]); }