Low level routine
eng -
fr
mllsrs_c - Pseudo Noise random sequences generator computational routine
- N : length of registers
- ny : desired length of output vector
- y : address of resulting output vector
- reg : address of register input vector
- coef : address of coefficient input vector
/* mllsrs_c subroutine
* Maximal Linear Length Shift Register Sequence Generator
* IRCOM GROUP - Author : A.Layec
*/
/* REVISION HISTORY :
* $Log$
*/
#include "mod_num_lib.h"
/* mllsrs_c routine de calcul dynamique de séquence à longueur max.
* N : longueur du registre
* ny : longueur du vecteur de sortie désirée
* y : adresse de départ du vecteur résultat y[0..ny-1]
* reg : registre
* coef : coef du registre
*/
void mllsrs_c(int *N, int *ny,double *y,int *reg, int *coef)
{
/*Déclaration des variables*/
int i,j,l;
for(l=0;l<(*ny);l++)
{
/*Delivre la valeur du dernier bit sur le registre y[]*/
if((*reg)&1==1) y[l]=1;
else y[l]=-1; /*attention ici -1 et pas 0*/
/*Calcul de la nouvelle valeur du bit de poid fort*/
for(i=0;i<(*N);i++)
{
/*Test sur la valeur du coefficient i*/
if(((*coef)&(1<<i))!=0)
{
/*Cas c_i=1*/
if(i!=0)
{
/*Réalise opération XOR*/
if((((*reg)>>i)&1)==j) j=0;
else j=1;
}
else j=(*reg)&1;
}
}
/*Décale le registre de 1 bit vers la droite*/
(*reg) = (*reg)>>1;
/*Ajoute le bit de poid fort*/
(*reg) += (j<<((*N)-1));
}
return;
}
IRCOM Group
Alan Layec