Add here a paragraph of the function description.
/* Genmllsrs Scicos Maximal Length Linear feddback Shift Regiter Sequences Generator block * Type 4 simulation function ver 1.1 - scilab-3.0 * 15 décembre 2004 - IRCOM GROUP - Author : A.Layec */ /* REVISION HISTORY : * $Log$ */ #include "machine.h" #include <stdio.h> #include "scicos_block.h" /* Cette fonction de simulation est un générateur de sequences pseudoaléatoires * à longueur maximale. * Les valeurs de sortie sont soit -1 soit 1 et dependent d'une combinaison linéaire * des valeurs des registres internes Z. Les opérations sont réalisées grâce à des * opérateurs de manipulations de bit, et les mots binaires sont stockés par leurs valeurs entières. * La fonction est capable de délivrer des vecteurs de nb_gen générateurs. * * Entrée régulière : néant * Sorties régulières : y[0..ny[0]-1] : sortie du générateur 1 * y[ny[0]..ny[0]+ny[1]-1] : sortie du générateur 2 * ... * y[ny[nb_gen-2]..ny[nb_gen-2]+ny[nb_gen-1]] : sortie du générateur nb_gen * * Entrée évenementielle : période de déclenchement * Sortie évènementielle : néant. * * Etats discrets : z[0..nb_gen-1] : valeur des registres à décalage * * paramètres entiers : ipar[0] : nb_gen nombre de générateurs * ipar[1..nb_gen] : ny[0..nb_gen-1] longeur des vecteurs de sortie des géné * ipar[nb_gen+1..2*nb_gen] : longueur des registres (nbre de bascules) * ipar[2*nb_gen+1..3*nb_gen] : valeurs des coefficients des registres */ void genmllsrs(scicos_block *block,int flag) { /*déclaration des variables*/ int ny; int nb_gen; int coef; int reg,N; int i,j,k,l; int y_ptr; double *y; /*Récupération des adresses des ports réguliers*/ y=(double *)block->outptr[0]; /*Récupération du nombre de générateurs*/ nb_gen=block->ipar[0]; /*Seulement sur flag 1*/ if(flag==1) { for(k=0;k<nb_gen;k++) { /*Définition de l'adresse de départ de la sortie du géné k*/ if(k!=0) y_ptr=y_ptr+block->ipar[k]; else y_ptr=0; /*Récupération de la longueur du vecteur de sortie*/ ny=block->ipar[1+k]; /*Récupération de la longueur du registre*/ N=block->ipar[nb_gen+1+k]; /*Récupération de la valeur du registre*/ reg=(int) block->z[k]; /*Récupération de la valeur des coef*/ coef=block->ipar[2*nb_gen+1+k]; /*Appel routine mllsrs_c*/ mllsrs_c(&N,&ny,&y[y_ptr],®,&coef); /*Sauvegarde la valeur du registre dans z[0]*/ block->z[k] = reg; } } }