www.pudn.com > demodula.rar > recuperaPortadora.m, change:2006-02-02,size:4813b


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) 
%------------------------------------------------------------------------ 
%|   Función que extrae una muestra de la portadora de la bandaFI. 
%| 
%|     Está diseñada para operar sobre una muestra y devolver 
%|  las condiciones finales. Se debe llamar dentro de un bucle. 
%|     
%|   
%|    NO REALIZA VALIDACIÓN DE LOS PARÁMETROS DE ENTRADA 
%| 
%|    Entradas: 
%|       1.- BANDA_FI = vector fila con la señal a la frecuencia intermedia. 
%|       2.- MEMORIA = matriz 8x max(Orden) con las condiciones iniciales de 
%|                     todos los dispositivos empleados en la  
%|                     recuperación 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 iteración 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 señal 
%|                       de entrada. 
%|       7.- PARAMETROS = matriz que contiene todos lo parámetros 
%|                        del receptor: 
%|                 PLL                      : [ Kv  ,  Wn , Psi, 0    ] 
%|                 FILTRO-LAZO              : [ TAU1, TAU2,  0 , 0    ] 
%|                 CTES. FILTRO-LAZO DIGITAL: [ b0  ,  b1 ,  1 , b1   ]; 
%| 
%|     La matriz de parámetros está ideada para que el PLL conforme un bloque, 
%|   del que el usuario solo debe conocer los parámetros típicos del lazo del 
%|   PLL (1º fila) 
%|     El resto de parámetros los calcularán funciones particulares, de  
%|   esta forma es muy simple reemplazar el Lead-Lag empleado por otro 
%|  filtro del lazo cualquiera o usar una transformación 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 = parámetros del demodulador BPSK 
%------------------------------------------------------------------------- 
%|   Autor: Cesar Delgado 
%|   Fecha: 19-Abril-2.004 
%------------------------------------------------------------------------- 
 
  
%  1.- Parámetros 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.- Iteración de recuperación 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 señal 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º armónico de la señal cuadrada 
[sonda(pCARRIER), aux] = filter (H,1, sonda(pOUT_DIVISOR), memoria(cFILTRO_FI,1:length(H)-1)); 
memoria(cFILTRO_FI,1:length(aux)) = aux';