FUNDAMENTOS DE TRANSMISIN DE DATOS
PRCTICA 2
Anlisis de sistemas de comunicaciones con MATLAB: Communications Toolbox
1
INDICE Introduccin Ejemplo de un sistema de comunicaciones Seales aleatorias Anlisis de errores Codificacin fuente Modulacin
COMMUNICATIONS TOOLBOX
Funciones MATLAB para el diseo y anlisis de sistemas de comunicaciones
Generacin de seales aleatorias Anlisis de error, diagramas de ojos, grficos de dispersin (scatter plots) Codificacin de fuentes Cdigos de control de errores Modulacin/demodulacin analgico/digital Filtrado de datos usando filtros especiales Clculos en cuerpos de Galois (GF)
3
PRODUCTOS RELACIONADOS CON COMMUNICATIONS TOOLBOX
CDMA Reference Blockset
Bloques Simulink para el diseo y simulacin del estndar de comunicaciones inalmbricas IS-95A
Communications Blockset
Bloques Simulink para modelar la capa fsica de los sistemas de comunicaciones
DSP Blockset
Bloques Simulink para el diseo y simulacin de sistemas de procesamiento de seales digitales
Signal Processing Toolbox
Herramientas para el desarrollo de algoritmos de anlisis de seales y sistemas lineales
Simulink
Entorno grfico interactivo para el modelado, simulacin y prototipado de sistemas dinmicos
4
DISEO DE UN SISTEMA DE COMUNICACIN
signal FUENTE M-ARIA
modsignal
MODULADOR M-QASK
noisy
newsignal
DEMOD M-QASK
CANAL RUIDOSO
RECEPTOR
Tx
Rx
CLCULO ERRORES
CARACTERSTICAS DEL SISTEMA DE COMUNICACIN
Crear un mensaje digital aleatorio que consta de nmeros enteros entre 0 y 7 Modular smbolos usando dos variedades de QASK con constelaciones de los mismos puntos
Puntos de la constelacin con cdigo Gray Puntos de la constelacin etiquetados de forma arbitraria
Aadir ruido a las seales moduladas Demodular las seales con ruido Calcular el BER (bit error rate) en los dos casos Representar la constelacin de seales en ambos casos
6
DESCRIPCIN DEL SISTEMA Configuracin de parmetros
M = 8; % Numero de smbolos en el alfabeto len = 10000; % Numero de smbolos en el mensaje original Fd = 1; % Mensaje original muestreado a 1 muestra por segundo Fs = 3; % Seal modulada muestreada a 3 muestras por segundo
Creacin de la seal
% Crear una seal aleatoria signal = randint(len,1,M); % Mensaje digital aleatorio de % enteros entre 0 y M-1
DESCRIPCIN DEL SISTEMA Modulacin de la seal
% Usa modulacin QASK M-aria con dos constelaciones % cuadradas etiquetadas de forma diferente modsignal(:,1) = dmodce(signal,Fd,Fs,'qask',M); % Cdigo Gray inphase = [-3:2:3 -3:2:3]; quad = [ones(1,4), -1*ones(1,4)]; modsignal(:,2) = dmodce(signal,Fd,Fs,'qask/arb',inphase,quad);
Aadir ruido a las seales moduladas
% Aade ruido a las partes real e imaginaria de las seales moduladas noisy = modsignal+.5*randn(len*Fs/Fd,2)... +j*.5*randn(len*Fs/Fd,2);
8
DESCRIPCIN DEL SISTEMA
Demodular la seal con ruido
% Demodula para recuperar el mensaje original newsignal(:,1) = ddemodce(noisy(:,1),Fd,Fs,'qask',M); newsignal(:,2) = ddemodce(noisy(:,2),Fd,Fs,... 'qask/arb',inphase,quad);
Calcular y visualizar BER
% Comprobar cmo el cdigo Gray produce menos errores % Compara signal con cada columna de newsignal [num,rate] = biterr(newsignal,signal); disp(BER para las dos constelaciones usadas') disp('-------------------------------------------------') disp([Constelacion codigo Gray: ', num2str(rate(1))]) disp([Constelacion sin codigo Gray: ', num2str(rate(2))])
Representar constelacin
% Representa la constelacin etiquetada con Gray modmap('qask',M);
9
SEALES ALEATORIAS
Utilizadas para generar ruido, errores o como fuentes de seal en un sistema de comunicaciones Tipos de seales aleatorias:
MATLAB
rand randn
Communications toolbox:
wgn, para generar ruido blanco gaussiano randsrc, para generar smbolos aleatorios randint, para generar enteros aleatorios uniformemente distribuidos randerr, para generar patrones de error de bits aleatorios
10
ANLISIS DE ERRORES
Comparar mensajes antes y despus de la transmisin Evaluar la calidad del sistema de comunicaciones Funciones MATLAB
biterr : Compara 2 mensajes y calcula el nmero de bits errneos, as como la BER symerr: Compara 2 mensajes y calcula el nmero de smbolos errneos, as como la SER
Ejemplo
a = [1 2 3]'; b = [1 4 4]'; format rat % Visualiza fracciones en lugar de decimales [snum,srate] = symerr(a,b) [bnum,brate] = biterr(a,b)
11
ANLISIS DE ERRORES Diagramas de ojos
Herramienta para estudiar el efecto de la interferencia entre smbolos y otras irregularidades del canal de transmisin Funcin: eyediagram
Diagramas de dispersin
Muestran los valores de la seal en un punto de decisin determinado Funcin: scatterplot
12
CODIFICACIN DE FUENTES
Procesar datos para reducir redundancia y para un procesado posterior Conversin analgico-digital y compresin de datos Codificacin: Convierte la seal de la fuente en seal digital usando cuantificacin Decodificacin: Recupera la informacin original Posibilidades de la codificacin-decodificacin de fuentes
Cuantificacin de acuerdo a una particin y cdigos especificados Optimizacin de parmetros para un conjunto de datos conocido Codificacin-decodificacin de seales usando DPCM Operaciones con compresores-expansores con -law A-law
13
CUANTIFICACIN DE SEALES
Ejemplo 1:
partition = [0,1,3]; codebook = [-1, 0.5, 2, 3]; samp = [-2.4, -1, -.2, 0, .2, 1, 1.2, 1.9, 2, 2.9, 3, 3.5, 5]; [index,quantized] = quantiz(samp,partition,codebook); quantized quantized = Columns 1 through 6 -1.0000 -1.0000 -1.0000 -1.0000 0.5000 0.5000 Columns 7 through 12 2.0000 2.0000 2.0000 2.0000 2.0000 3.0000 Column 13 3.0000
14
CUANTIFICACIN DE SEALES Ejemplo 2
% Tiempos de muestreo de la funcion seno 1 0.8 t = [0:.1:2*pi]; 0.6 % Seal original, una onda senoidal 0.4 sig = sin(t); 0.2 partition = [-1:.2:1]; 0 % Longitud 11, para representar 12 intervalos -0.2 codebook = [-1.2:.2:1]; -0.4 % Longitud 12, un valor para cada intervalo -0.6 % Cuantificacion y codificacion -0.8 [index,quants] = quantiz(sig,partition,codebook); -1 plot(t,sig,'x',t,quants,'.') axis([-.2 7 -1.2 1.2]) 0
15
OPTIMIZACIN DE PARMETROS DE CUANTIFICACIN ESCALAR Ejemplo
t = [0:.1:2*pi]; sig = sin(t); partition = [-1:.2:1]; codebook = [-1.2:.2:1]; % Ahora optimiza, usando codebook como gua inicial [partition2,codebook2] = lloyds(sig,codebook); [index,quants,distor] = quantiz(sig,partition,codebook); [index2,quant2,distor2] = quantiz(sig,partition2,codebook2); % Compara distorsiones entre los valores iniciales y los optimizados [distor, distor2] % parametros ans = 0.0148 0.0024
16
DIFFERENTIAL PULSE CODE MODULATION (DPCM) Cuantificacin predictiva: Suposiciones sobre la seal basadas en valores anteriores Ejemplo: Modulacin delta
predictor = [0 1]; % y(k)=x(k-1) partition = [-1:.1:.9]; codebook = [-1:.1:1]; t = [0:pi/50:2*pi]; x = sawtooth(3*t); % Seal original % Cuantifica x usando DPCM. encodedx = dpcmenco(x,codebook,partition,predictor); % Intenta recuperar x a partir de la seal modulada decodedx = dpcmdeco(encodedx,codebook,predictor); plot(t,x,t,decodedx,'--') distor = sum((x-decodedx).^2)/length(x) % Error cuadrtico medio distor = 0.0327
17
MODULACIN
Posibilidades del toolbox
Modular seal Demodular seal Mapearseal digital a analgica Demapear una seal analgica Mapear,demapear y representar constelaciones para QASK Mtodos de modulacin seales analgicas
Funciones de modulacin
Modulacin analgica amod ademod Modulacin digital dmod ddemod
Mtodos de modulacin seales digitales
18
MODULACION DEMODULACION
MODULACION: mapping de la seal digital a una seal analgica y modulacin de la seal analgica
DEMODULACIN: demodulacin de la seal analgica y demapping de la seal demodulada
19
DISEO DE UN SISTEMA DE COMUNICACIN DIGITAL
SENSOR signal CODIFIC. FUENTE analog MEDIDA DISTORSIN modsignal
MODULADOR 256-QASK
newanalog
RECEPTOR
noisy
newsignal
DEMOD 256-QASK
CANAL RUIDOSO
DECODIFIC FUENTE
Tx
Rx
CLCULO BER SER
20
DISEO DE UN SISTEMA DE COMUNICACIN DIGITAL
SENSOR signal CODIFIC. FUENTE analog MEDIDA DISTORSIN modsignal
MODULADOR 256-QASK
newanalog
RECEPTOR
noisy
newsignal
DEMOD 256-QASK
CANAL RUIDOSO
DECODIFIC FUENTE
Caractersticas sensor Seal:
Tx
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Rx
-2
-4
-6
5*sin(2*pi*t)+2*cos(2*pi*2*t)
-8
Muestreo: 200 Hz
CLCULO BER SER
Particin uniforme 256 intervalos Cdigo: 0 ... 255
21