Bloc Scicos
eng - fr


Bloc générateur de séquence PN

\epsfig{file=GENMLLSRS_f.eps,width=90.00pt}

Contenu

Palette

Description

Add here a paragraph of the function description.

Boîte de dialogue

\begin{figure}\begin{center}
\epsfig{file=GENMLLSRS_f_gui.eps,width=300pt}
\end{center}\end{figure}

Propriétés par défaut

Fonction d'interface

GENMLLSRS_f.sci

Fonction de calcul (type 4)


/* 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],&reg,&coef);

    /*Sauvegarde la valeur du registre dans z[0]*/
    block->z[k] = reg;
   }
  }
}

Auteurs

IRCOM Group Alan Layec