%------------------------------------------------------------------------
%| nivFisicoTX
%------------------------------------------------------------------------
%| Script que contiene las funciones del nivel fsico del Transmisor:
%| 1.- Codificacin de Canal
%| 2.- Modulacin
%|
%| Memoria:
%| Fila 1: [ Cond. Iniciales Coseno Alzado]
%| Fila 2: [ Instante inicial de los generadores sinusoidales]
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SIMULACIN DE LA TRANSMISIN
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fileIn = 'tramas.tx';
if ~exist([ruta fileIn]);
uiwait(errordlg('ERROR TX: no se han aplicado las funciones del nivel de enlace - NivFisicoTX()'));
end;
% 1.- Declaracin de las variables del bucle
%-------------------------------------------
posicion = 1;
L = parametros(pGENERAL, pFS)/parametros(pGENERAL, pRB);
nBits = round(2^12/L);% N bits a procesar / bloque
lonSignal = 0;
primera = 1;
memoria = zeros(2,6*L + 1);
No = Ptx-S_N;
No = (10.^(No/10))*1e-3;
Ptx = (10.^(Ptx/10))*1e-3;
Ac = sqrt(Ptx*100); % Amplitud del tono sobre 50 Oh
% para dar la potencia deseada
An = sqrt(No*100); % Amplitud del Ruido
avance = waitbar(0,'TRANSMISOR: emitiendo seal (nivel Fsico)');
while posicion>0,
% 2. Sacamos la informacin de tramo en tramo
%--------------------------------------------
[info,posicion] = cargar(ruta,fileIn,posicion,nBits,fINFO);
% 3. Codificacin de canal + Modulacin IQ
%------------------------------------------
[canalFI, retardo, Linea, Out, memoria] = moduladorIQ (info, ...
parametros(pIQ, pFI), ...
parametros(pGENERAL, pFS), ...
parametros(pGENERAL, pRB), ...
Roll_Off, 0, ...
parametros(pIQ, pFASE), ...
delta, memoria, primera);
% 4. Buscamos la amplitud del tono para dar la potencia deseada
%--------------------------------------------------------------
canalFI = canalFI./max(abs(canalFI)); % Amplitud Normalizada
guardar(ruta,'cons.tx',canalFI,fSIGNAL,primera);
% 5. Le agregamos ruido del nivel indicado
%-----------------------------------------
canalFI = Ac.*canalFI+An.*randn(1,length(canalFI));
% 6.- Guardamos lo que llevamos: Trama + Salida + Ptos. Observacin
%------------------------------------------------------------------
guardar(ruta,'out.tx',canalFI,fSIGNAL,primera);
guardar(ruta,'LineaI.tx',Linea(I,:),fSIGNAL,primera);
guardar(ruta,'LineaQ.tx',Linea(Q,:),fSIGNAL,primera);
guardar(ruta,'OutI.tx',Out(I,:),fSIGNAL,primera);
guardar(ruta,'OutQ.tx',Out(Q,:),fSIGNAL,primera);
% 7.- Reseteamos las variables del bucle
%---------------------------------------
primera = 0;
lonSignal = lonSignal+length(canalFI);
info = [];
canalFI = [];
waitbar(posicion/lonInfo);
end;
% 8.- Guardamos los parmetros del TX
%-------------------------------------
save([ruta 'paramTX'], 'parametros', 'lonSignal', ...
'delta','ruta', 'Roll_Off', 'metodo');
close(avance);