Scicos Block
eng - fr


I/Q modulator Block

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

Contents

Palette

Description

This block realizes a complex local oscillator. This block computes :

$\displaystyle y_{1}(t) = u_{1}(t)\cos\left(\omega_{o}t\right)-u_{2}(t)\sin\left(\omega_{o}t\right)
$

$\displaystyle y_{2}(t) = u_{1}(t)\sin\left(\omega_{o}t\right)+u_{2}(t)\cos\left(\omega_{o}t\right)
$

where u1,u2 are the two regular inputs and y1,y2 the regular outputs. w0 is set with the dialogue parameter 'Vector of carrier frequency'. Typically, it is used to transpose base band symbol components at a given carrier frequency as shown in the following figure :
\scalebox{1.1}{\includegraphics{f12.eps}}

The activation dates of this block gives the sampling step of the outputs.

Super block equivalent model

\epsfig{file=MODIQ_f_sblock_equiv.eps,height=9cm}

Dialog box

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

Default properties

Interfacing function

MODIQ_f.sci

Computational function (type 2)


/* modiq Scicos modulator I/Q block
 * Type 2 simulation function ver 1.0 - scilab-2.6&2.7
 * 8 novembre 2003 - IRCOM GROUP - Author : A.Layec
 */
 
/* REVISION HISTORY :
 * $Log$
 */
 
#include "machine.h"
#include <math.h>

/* Cette fonction calcule la partie réelle et imaginaire de l'enveloppe
 * complexe modulée autour d'une fréquence wo à partir de la partie réelle et imaginaire
 * de l'enveloppe complexe en bande de base :
 * y1=u1*cos(wot)+u2*sin(wot)
 * y2=u1*sin(wot)-u2*cos(wot)
 * où y1, y2 sont les sorties, u1 et u2 sont la partie réelle et imaginaire
 * du signal en bande de base et wo un paramètre réel en rad/s. Les porteuses
 * sont en fait sur-échantillonnées par la variable *t. Le rythme des
 * déclenchements défini donc la période de sur-échantillonnage.
 *
 * entrées régulières: u1[0..insz[0]-1] vecteur des parties réelles du signal en bande de base
 *                     u2[0..insz[0]-1] vecteur des parties imaginaires du signal en bande de base
 * sorties régulières : y1[0..insz[0]-1] vecteur des parties réelles du signal modulé
 *                      y2[0..insz[0]-1] vecteur des parties imaginaires du signal modulé
 * entrée évènementielles : instants de suréchantillonnage
 * sorties évènementielles : néant
 * paramatres réels : rpar[0..insz[0]-1] : vecteur des pulsations porteuses
 */
 
/*prototype*/
void modiq(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*/
 double *y1,*y2;
 double *u1,*u2;
 int nu,i;

 /*récupération des adresses des ports réguliers*/
 y1=(double *)outptr[0];
 y2=(double *)outptr[1];
 u1=(double *)inptr[0];
 u2=(double *)inptr[1];

 /*récupération de la taille des ports d'entrées*/
 nu=insz[0];

 /* Le flag1 calcule la partie réelle et imaginaire
  * du signal modulé
  */
 if(*flag==1)
 {
  for(i=0;i<nu;i++)
  {
   /*Calcul du registre y*/
   y1[i]=cos(*t*rpar[i])*u1[i]+sin(*t*rpar[i])*u2[i];
   y2[i]=sin(*t*rpar[i])*u1[i]-cos(*t*rpar[i])*u2[i];
  }
 }
}

See also

Authors

IRCOM Group Alan Layec