Scicos Block
eng - fr


Integer modulob function block

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

Contents

Palette

Description

This block realizes a non linear function modulo where the input and output are treated with integer values. In accord to the parameters 'Nbit', the input are tronqued at this integer value witch are defined by using a unsigned integer value. By definition,the value of the output are comprise between $ \left[0;2^{Nbit}-1\right]$ and this function acts as a Nbit quantitizer. The value of the output are positive or zero.

\begin{figure}\centering
\scalebox{0.4}{%
\input{imodulob_function.pstex_t}}
\end{figure}
Figure : Positive Integer modulo function

Dialog box

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

Default properties

Interfacing function

IMODULOB_f.sci

Computational function (type 2)


/* imodulob Scicos integer modulob function block
 * Type 2 simulation function - scilab-2.6&2.7&3.0
 * IRCOM GROUP - Author : A.Layec
 */

/* REVISION HISTORY :
 * $Log$
 */

#include "machine.h"
#include <stdio.h>

/* Cette fonction de simulation propose de réaliser la fonction
 * modulo rencontrée dans les systèmes numériques traitant les opérations
 * sur entier en code complément à 2.
 * entrées régulières : u[0..nu-1]
 * sorties régulières : y[0..nu-1] = mod[u[0..nu-1]]
 * paramètres entiers : ipar[0..nu-1] : nombre de bits des mots entiers.
 *
 * Rmq : l'entrée de type double est tronquée à sa valeur entière.
 *           la sortie est tjs positive
 */

/*Prototype*/
void imodulob(flag,nevprt,t,xd,x,nx,z,nz,tvec,ntvec,rpar,nrpar,
              ipar,nipar,inptr,insz,nin,outptr,outsz,nout)
integer *flag,*nevprt,*nx,*nz,*ntvec,*nrpar,ipar[],*nipar,insz[],*nin,outsz[],*nout;
double x[],xd[],z[],tvec[],rpar[];
double *inptr[],*outptr[],*t;
{
    /*Déclaration des variables*/
    int i,nu;
    double *y;
    double *u;
    long ent; /*Déclaration d'un entier de type long long int*/

    /*Récupération des adresses des ports réguliers*/
    y=(double *)outptr[0];
    u=(double *)inptr[0];

    /*Récupération de la taille du port d'entrée*/
    nu=insz[0];

    for(i=0;i<nu;i++)
    {
     /*Récupération de la valeur d'entrée*/
     ent = (long) u[i];

     /*Conversion en nombre entier non signé*/
     ent &= (2<<(ipar[i]-1)) - 1;

     /*Place nombre converti dans le registre de sortie*/
     y[i] = ent;
    }
}

See also

Authors

IRCOM Group Alan Layec