No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail

BPSK Simulator for Low Rate Transmisions

by

 

01 Jun 2004 (Updated )

BPSK Simulator for didactical purposes. Systemic coding style.

recuperaPortadora.m
function [sonda, memoria, parametros] = recuperaPortadora(bandaFI, memoria, ...                            
                                          fs, primera, H, H_dc, parametros)
                                             
%------------------------------------------------------------------------
%|  [sonda, memoria, parametros,] = recuperaPortadora(bandaFI, memoria, ...                         
%|                                   fs, primera, H_fi, H_dc, parametros)
%------------------------------------------------------------------------
%|   Funcin que extrae una muestra de la portadora de la bandaFI.
%|
%|     Est diseada para operar sobre una muestra y devolver
%|  las condiciones finales. Se debe llamar dentro de un bucle.
%|    
%|  
%|    NO REALIZA VALIDACIN DE LOS PARMETROS DE ENTRADA
%|
%|    Entradas:
%|       1.- BANDA_FI = vector fila con la seal a la frecuencia intermedia.
%|       2.- MEMORIA = matriz 8x max(Orden) con las condiciones iniciales de
%|                     todos los dispositivos empleados en la 
%|                     recuperacin de portadora: 
%|                  Fila 1: [ C.I. Comparador de Fases        ]
%|                  Fila 2: [ C.I. Filtro Lead Lag Activo     ]
%|                  Fila 3: [ C.I. VCO                        ]
%|                  Fila 4: [ Salida VCO Rectificada          ]
%|                  Fila 5: [ C.I. Divisor                    ]
%|                  Fila 6: [ C.I. Filtro DC                  ]
%|                  Fila 7: [ C.I. Filtro FI (rec. Portadora) ]
%|
%|       3.- FS      = frecuencia de muestreo
%|       4.- PRIMERA = indica si es la primera iteracin del bucle.
%|       5.- H       = vector fila con todos los coeficientes del filtro
%|                     a la salida del divisor de frecuencia.
%|       6.- H_DC     = vector fila con los coeficientes del filtro DC
%|                      Se emplea para eliminar el valor medio de la seal
%|                       de entrada.
%|       7.- PARAMETROS = matriz que contiene todos lo parmetros
%|                        del receptor:
%|                 PLL                      : [ Kv  ,  Wn , Psi, 0    ]
%|                 FILTRO-LAZO              : [ TAU1, TAU2,  0 , 0    ]
%|                 CTES. FILTRO-LAZO DIGITAL: [ b0  ,  b1 ,  1 , b1   ];
%|
%|     La matriz de parmetros est ideada para que el PLL conforme un bloque,
%|   del que el usuario solo debe conocer los parmetros tpicos del lazo del
%|   PLL (1 fila)
%|     El resto de parmetros los calcularn funciones particulares, de 
%|   esta forma es muy simple reemplazar el Lead-Lag empleado por otro
%|  filtro del lazo cualquiera o usar una transformacin Invariante al Impulso
%|  en lugar de una Bilineal.
%|
%|     Salidas:
%|       1.- CARRIER    = muestra de salida de la portadora.
%|       2.- MEMORIA    = matriz 8x34 con las cond. finales.
%|       3.- PARAMETROS = parmetros del demodulador BPSK
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

 
%  1.- Parmetros del lazo e inicializaciones
%--------------------------------------------
% >>>> 1.1.- Ubicaciones en memoria
cDIV       = 5; % Cond. iniciales del divisor
cFILTRO_DC = 6; % Cond. iniciales del filtro DC
cFILTRO_FI = 7; % Cond. iniciales del filtro FI

% >>>> 1.2.- Ptos. de Observacion en sonda
pCARRIER       = 1; pLINEA     = 2; pDECISOR     = 3;
pOUT_PLL       = 4; pERROR_PLL = 5; pDESFASE_PLL = 6;
pFASE_ESTIMADA = 7; pREF_PLL  = 8; pIN_DIVISOR  = 9;
pOUT_DIVISOR   = 10;

if (primera), 
   sonda(pCARRIER)=5;   
end;

%  2.- Iteracin de recuperacin de portadora
%--------------------------------------------
%%%%%%%% 2.1.- Elevamos al cuadrado la entrada
sigCuad = (bandaFI^2);  

%%%%%%%% 2.2.- Filtramos la componente continua
[sonda(pREF_PLL), aux] = filter(H_dc,1,sigCuad,memoria(cFILTRO_DC,1:length(H_dc)-1));  
memoria(cFILTRO_DC,1:length(aux)) = aux';

%%%%%%%% 2.3.- Nos enganchamos a seal 2*fi
[sonda(pOUT_PLL:pFASE_ESTIMADA), memoria(1:cDIV-1,1:3), parametros] = ...
             pll (sonda(pREF_PLL), memoria(1:cDIV-1,1:3), fs, primera, parametros);

%%%%%%%%% 2.4.- Rectificamos Salida del PLL a niveles TTL
sonda(pIN_DIVISOR)   = (sonda(pOUT_PLL)>0)*5;

%%%%%%%%% 2.5.- Dividimos por 2 la salida, para recuperar portadora
[sonda(pOUT_DIVISOR), memoria(cDIV,1:2)] = divisor(sonda(pIN_DIVISOR), memoria(cDIV,1:2), primera);

%%%%%%%%%% 2.6.- Filtramos 1 armnico de la seal cuadrada
[sonda(pCARRIER), aux] = filter (H,1, sonda(pOUT_DIVISOR), memoria(cFILTRO_FI,1:length(H)-1));
memoria(cFILTRO_FI,1:length(aux)) = aux';



Contact us