Análisis y simulación de los sistemas de modulación digital
63
0
0
Texto completo
(2) ANALISIS Y SIMULACIÓN DE LOS SISTEMAS DE MODULACIÓN DIGITAL. JUAN GABRIEL FANDIÑO FARFÁN. Proyecto De Grado Para Optar El Título De Ingeniería Electrónica. Asesor RAFAEL CAMERANO FUENTES, PhD. UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERIA DEPARTAMENTO DE INGENIERIA ELECTRÓNICA BOGOTA D.C. Mayo de 2007 2.
(3) A MIS PADRES PORQUE SU EJEMPLO ES LA CONSTANTE INSPIRACIÓN PARA ALCANZAR MIS METAS. 3.
(4) AGRADECIMIENTOS. Quiero expresar mi agradecimiento al Profesor Rafael Camerano Fuentes, quien hizo grandes aportes a este proyecto como asesor del mismo y con quien pude contar durante todo el desarrollo del trabajo.. A los profesores del Departamento de Ingeniería Eléctrica y Electrónica, de quienes recibimos los conocimientos para nuestra formación profesional.. 4.
(5) CONTENIDO. INTRODUCCIÓN 1. MARCO TEORICO 1.1. MODELO DE TRANSMISIÓN 1.2. CONCEPTOS BÁSICOS SOBRE MODULACIONES DIGITALES. 1.2.1. Modulación coherente e incoherente 1.2.2. Probabilidad de error de símbolo 1.2.3. Transmisión con portadora 1.2.4. Tipos de modulaciones 1.2.4.1. phase-shift keying (PSK) 1.2.4.2. Quadrature Amplitude Modulation (QAM) 1.2.5.. TIPOS DE CANALES 1.2.5.1. Canal AWGN 1.2.5.2. Canal Multi-trayectoria (Rayleigh). 2. SIMULACIONES 3. HERRAMIENTA 4. Conclusiones. A. Anexo: Códigos de modulación B. Anexo: Código interface grafica Bibliografía. 5.
(6) Lista de figuras. Fig. 1 – Modelo de sistema de transmisión Fig. 2 Modulación PSK Fig. 3 Constelación de 16PSK Fig. 4 Constelación de 16QAM Fig. 5 Ejemplo de transmisión Multi-Trayectoria Fig. 6 Simulación por medio de BERTOOL modulación PSK Fig. 7 Simulación por medio de BERTOOL modulación QAM Fig. 8 Desvanecimiento del efecto de AWGN a medida que se aumenta el Eb/No para BPSK Fig. 9 simulación B.E.R Vs Eb/No BPSK Fig. 10 Desvanecimiento del efecto de AWGN a medida que se aumenta el Eb/No para 4QAM. Fig. 11simulación B.E.R Vs Eb/No BPSK. Fig. 12 modulaciones PSK sobre un canal Rayleigh por medio de la herramienta BERTOOL Fig. 13 simulación de BPSK sobre canal Rayleigh Fig. 14 Interface Grafica, Simulación BPSK Fig. 15 Interface Grafica, Simulación 16 QAM. 6.
(7) RESUMEN. El área de comunicaciones siempre ha tenido tres principales problemas a la hora de transmisión de datos bien sea de forma alámbrica o inalámbrica y estos son la presencia de atenuación, distorsión y el retardo por ruido.. Para poder solucionar estos problemas se han creado diferentes tipos de modulación, las cuales transforman la señal digital a una analógica lo que ayuda a reducir el número de frecuencias, esto a su vez conlleva a que baje la distorsión y mejore la calidad de servicio. Las principales formas de modulación consisten en modular las señales bien sea en frecuencia, fase o en cuadratura.. Este trabajo se centro en la creación de una herramienta la cual podrá ser usada por estudiantes de la materia de comunicaciones para comprender mejor y confirmar las bases teóricas acerca de la dependencia que existe de la probabilidad de error con respecto a la relación Eb/No, así como la confiabilidad de los mismos dependiendo del canal usado para su transmisión. Esta Herramienta se llevo a cabo por medio del programa MATLab, en el cual se implementaron los diferentes escenarios correspondientes a las multiples formas de modulación digital.. 7.
(8) INTRODUCCIÓN. El objetivo principal de la modulación es poder transmitir datos de una forma tal que se logre optimizar la comunicación, para esto se busca cumplir con algunos requerimientos como son minimizar las perdidas en la transmisión, minimizar el tiempo, minimizar el costo, maximizar el uso de los recursos que se tienen, entre otros. Para lograr estos objetivos se buscan ayudas a la hora de diseñar sistemas como son programas de simulación, donde se puede caracterizar la red, o los sistemas y ver su comportamiento antes de ser implementados.. Con este trabajo se busca analizar diferentes tipos de modulación digital y al mismo tiempo facilitar una herramienta académica, por medio de la cual se pretende complementar las explicaciones de las clases de comunicaciones mostrando de una forma más interactiva el comportamiento de estos tipos de modulación y los cambios y errores que se perciben en el receptor después de hacer una transmisión por medio de un canal y de demodular la señal así como ver la forma en que influye el cambio de algunas variables en la transmisión de los datos, de esta forma se podrá ir comprobando como es el funcionamiento de estos sistemas al mismo tiempo que se realiza la explicación durante la clase.. 8.
(9) 1. MARCO TEORICO. 1.1.. MODELO DE TRANSMISIÓN1. La transmisión de datos en diferentes medios pude ser modelada de la forma que se presenta en la figura 1. Este modelo fue el implementado en MATLab para hacer las simulaciones de los diferentes tipos de modulación, en el se puede apreciar que se tiene una fuente de mensajes que provienen de un alfabeto de M símbolos y son enviados con un periodo de T segundos. El orden en el que pueden salir los diferentes símbolos existentes en el alfabeto está determinado por la probabilidad que tiene cada uno de ellos la cual esta directamente relacionada con el número de símbolos.. Fig. 1 – Modelo de sistema de transmisión2. Este mensaje entra a la etapa denominada transmisor en donde en caso que la señal este en un lenguaje que no sea binario lo primero que se hace es asignarle a cada símbolo del alfabeto un equivalente binario, en caso que la señal sea binaria se pasa al modulador en donde se adiciona una onda portadora senoidal la cual es la encargada de cambiar, según sea el caso, la frecuencia, la fase o la amplitud de la señal del mensaje original consiguiendo así una señal distinta si(t). En este trabajo se tuvieron en cuenta las modulaciones de fase y las de cuadratura.. 1 2. Esta información se baso en la fuente [1] Figura tomada de la referencia [1]. 9.
(10) Una vez modulada la onda pasa al canal de transmisión el cual debe tener un ancho de banda lo suficientemente amplio para soportar la transmisión. Para efectos de las simulaciones los canales usados fueron, un canal afectado por el ruido blanco Gaussiano aditivo (AWGN) y un canal Rayleigh el cual simula el efecto de la multitrayectoria.. Al llegar a su destino la señal se debe encontrar con un receptor el cual debe realizar el proceso contrario efectuado en el transmisor y debe contar con un decodificador que cumpla con las características para poder re-hacer el mensaje original.. 1.2.. CONCEPTOS BÁSICOS SOBRE MODULACIONES DIGITALES3. Para poder implementar una herramienta académica, donde se pueda observar el comportamiento y manipular las diferentes formas de modulación digital, primero se deben tener claros algunos conceptos teóricos.. 1.2.1. Modulación coherente e incoherente. Para poder definir estos dos tipos de modulaciones se debe tener en consideración que la señal que se obtiene a la salida del canal está influenciada por ruido blanco gaussiano (AWGN) que se conocerá como el cual tiene una densidad espectral de potencia de No/2. Esta consideración lleva a que se creen las dos familias de modulación. En el primer caso se asume que el receptor conoce todos los posibles conjuntos de señales a transmitir por el emisor y a este tipo se le conoce como receptor coherente y la señal recibida por el se puede expresar de la forma. En el segundo tipo de modulación no se debe asumir que el receptor conoce completamente las señales usadas por el modulador, porque en este caso la fase exacta usada por el modulador en la senoidal portadora es desconocida, en este caso la señal recibida es de la forma. 3. Información de este inciso fue tomada de las fuentes bibliográficas [1] y [2].. 10.
(11) En donde. es una variable aleatoria que modela la incertidumbre del ángulo de fase de la señal. transmitida. Estos demoduladores que trabajan sin tener conocimiento exacto de la fase se conocen como incoherentes.. 1.2.2. Probabilidad de error de símbolo. Uno de los objetivos principales en el diseño de receptores de modulación es que estos tengan la menor probabilidad de error de símbolo cuando se transmite la señal por un canal con presencia de ruido blanco gaussiano. Para poder encontrar esta probabilidad lo primero que se toma es la constelación del tipo de modulación que se esté usando, de esta forma a partir de esta se construyen regiones de decisión de acuerdo con la detección de la señal de máxima verosimilitud sobre el anal AWGN.. La idea de los demoduladores consiste en procesar la señal recibida de la secuencia original. y en consecuencia un estimado. con lo que se logra un estimado de cada uno de los símbolos. El. desempeño de la pareja modulador/demodulador se evalúa por medio de la probabilidad de error de símbolo. Obviamente el interés se centra en aquel demodulador que logra el mínimo valor de. el cual es. conocido como el demodulador optimo.. 11.
(12) 1.2.3. Transmisión con portadora. Un sistema de transmisión por portadora es aquel en donde se traslada una señal pasa banda a una frecuencia diferente, de tal forma que un tren de pulsos muy rápido es llevado a una frecuencia mayor antes de ser procesada y modulada debido a que estos pulsos pueden ser transmitidos de una forma correcta en una línea telefónica pero a la hora de transmitirlas de una forma inalámbrica sería necesario tener una antena muy grande que podría llegar a ser de unos cuantos kilómetros de radio lo que lo vuelve muy costoso y poco efectivo. La selección de la nueva frecuencia que se va a usar para transmitir el tren de pulsos depende de diferentes factores como puede ser la regulación de ciertas bandas, del precio de las mismas y de cómo trabajan las frecuencias de acuerdo a las condiciones ambientales entre muchas otras condiciones que restringen el uso del espectro.. Por lo general para poder describir una señal pasabanda son necesarias al menos dos señales pasabajas y en el caso de modulación digital las más usadas son una señal de amplitud y una señal de fase además de incluir la frecuencia de la nueva señal portadora la cual va a determinar un nuevo ancho de banda que por lo general llega a ser de proporciones de casi el doble del ancho de banda de las señales de amplitud y de fase.. Una forma de describir estas señales pasabanda seria la siguiente:. Donde A(t) será la señal de amplitud,. será la señal de fase y. será la frecuencia de la portadora.. 12.
(13) 1.2.4. Tipos de modulaciones. 1.2.4.1.. phase-shift keying (PSK)4. En el phase-shift keying o PSK, la principal diferencia con la modulación de fase regular es que en este caso la señal moduladora es digital. La transmisión de los símbolos se hace por medio de la modulación de la fase de la portadora, para esto si el alfabeto tiene M símbolos la portadora le asigna una de las M fases a cada símbolo.. Las formas de modulación por fase son nombradas de acuerdo a el numero de símbolos que haya en el alfabeto transmitido, de acuerdo a esto si se tienen dos símbolos en el alfabeto la modulación se llama Binary PSK o BPSK y si es de cuatro símbolos se conoce como Quaternary PSK o QPSK la cual es la forma de portadora más común en la transmisión de información.. Fig. 2 Modulacion PSK5. Además de estas se conocen otras modulaciones que no son menos importantes conocidas como 8PSK, 16PSK y así sucesivamente aumentando de una forma de 2n donde el numero antes del PSK representa el numero de fases que se tienen para transmitir.. Para tener una mejor idea de cómo modula este sistema es bueno entender cómo funciona el BPSK.. 4 5. Información basada en la fuente [2] http://www.textoscientificos.com/redes/modulacion/psk. 13.
(14) En esta modulación se tienen dos señales para representar los 2 símbolos que forman su alfabeto. (-. 1,1) y se definen de la siguiente forma. (1) (2). En este caso. y Eb va a ser la energía de la señal transmitida. Para asegurarse que cada bit. transmitido tenga un número de ciclos de la portadora razonables se elige una frecuencia de la portadora igual a n/T con n siendo un entero.. Fig. 3 Constelación de 16PSK. En este caso se tienen solo dos puntos de mensaje que serán. y. los cuales están ubicados en. fase, en cuadratura sus componentes son cero tal y como se puede apreciar en la figura 2.. 14.
(15) 1.2.4.2 Quadrature Amplitude Modulation (QAM)6. La modulación QAM es una es una clase especial de PAM (modulación por amplitud de pulso), la característica que diferencia estos dos tipos de modulación consiste en que la primera es bidimensional y no adimensional como la segunda, esto quiere decir que la modulación se lleva a cabo sobre 2 portadoras moduladas en amplitud y que al mismo tiempo están desfasadas 90° o son ortogonales entre ellas. Esto significa que las portadoras son de la forma. (3). (4). En este caso se tienen mínimo 4 puntos de mensaje ya que la forma general de la QAM es de la forma. (5). Por lo que se tendrán siempre componentes en cuadratura y en fase, en ambos casos se tienen el valor de para el caso más básico que sería el de 4QAM.. En este tipo de modulación a diferencia de la modulación PSK no existe una relación entre las componentes de fase y de cuadratura de la señal modulada, por lo que estas componentes son completamente independientes la una de la otra y por esto su constelación no se reduce a la forma circular que tiene la modulación PSK (figura 3).. 6. Información basada en la fuente [1] y [2]. 15.
(16) Fig. 4 Constelación de 16QAM. 16.
(17) 1.2.5. TIPOS DE CANALES. 1.2.5.1 Canal AWGN. En comunicaciones, el canal de ruido blanco Gaussiano aditivo (AWGN), es aquel en el que la señal se ve afectada por la adición lineal de ruido blanco uniforme con una densidad espectral constante (expresado como watts por hertz) y una distribución Gaussiana de la amplitud.. El ruido Gaussiano se hace presente gracias a diferentes fuentes naturales como puede ser por la vibración térmica de los átomos en las antenas, la radiación de cuerpo negro de la tierra u otros objetos que irradien calor como puede ser el sol.. 1.2.5.2. Canal Multi-trayectoria (Rayleigh)7. Para el caso de multi-trayectoria se tiene que la señal recibida proviene de diferentes caminos, este es el caso de la transmisión inalámbrica en donde las señales viajan por el aire y debido a diferentes objetos que se encuentran en medio del transmisor y receptor generan que la onda se refleje de diferentes formas lo que hace que se creen diferentes ondas, las cuales llegan con un retardo al receptor por tomar caminos más largos que el camino directo. Estas nuevas señales generadas van a depender de diferentes variables como van a ser la amplitud (Ai), la fase ( ), y el ángulo de incidencia ( ) de la misma en el camino i, además de estos parámetros se tiene uno adicional que es el efecto doppler que se genera por el movimiento relativo del receptor con respecto a la fuente.. En este caso la señal recibida se puede expresar de la siguiente manera. Cuando el número de caminos que aportan a la generación de la señal en el receptor es muy grande se puede asumir de cierta forma que la atenuación Ai y las fases. son independientes la una de la. otra.. 7. Información basada en la fuente [3].. 17.
(18) Ahora si se toma una situación más realista que consiste en que los medios de propagación siempre van a tener un camino fijo el cual va a tener una mayor potencia a el cual se le deben sumar la contribución de los N caminos más débiles, se tiene que la señal recibida va a ser de la forma. Donde u(t) va a tener una distribución Rayleigh y v(t) va a ser una señal deterministica.. Fig. 5 Ejemplo de transmisión Multi-Trayectoria8. 8. Imagen tomada de http://www.ert.rwth-aachen.de/Projekte/Theo/OFDM/node3.html].. 18.
(19) 2. SIMULACIONES. Para poder comprobar el funcionamiento de los diferentes sistemas de modulación se uso la herramienta de comunicaciones del programa MATLAB con él se hicieron dos tipos de simulaciones con los cuales se logro verificar los datos teóricos que se tenían y ver un comportamiento más real de los diferentes tipos de modulación.. La primera forma de simulación fue usando la herramienta Bertool con la cual se pueden obtener graficas de Bit Error Rate contra Eb/No de diferentes tipos de modulación, y usando los canales AWGN y Rayleigh. Para el primer tipo de canal se hicieron simulaciones con los diferentes tipos de PSK así como de QAM. Para el segundo tipo de canal solo se uso modulación PSK.. Fig. 6 Simulación por medio de BERTOOL modulación PSK. En la figura 6 se puede apreciar como a medida que se aumenta el valor de la relación Eb/No se obtiene un valor menor de Bit Error Rate además de cómo al usar un orden mayor de modulación el B.E.R decrece de una forma más lenta y se necesita un valor mayor de Eb/No para lograr un error de bit aceptable para la transmisión de datos de alta calidad.. Esto mismo sucede en el caso de la modulación QAM en donde se tiene un mayor número de tipos de modulación ya que no van solo de 2 a 32 sino que existe de 4 a 1024 QAM, sin embargo los más usados son las modulaciones de orden menor en la cuales se una probabilidad de error menor con un Eb/No no. 19.
(20) muy grande. Esto se puede apreciar en la figura 7 donde se ve claramente el mismo comportamiento que las PSK.. El segundo tipo de simulación se llevo a cabo por medio de programación de estos tipos de modulación diseñados sobre MATLAB. Se hizo un programa diferente para cada tipo de modulación y para cada canal usado, es decir se tiene un programa para simular la modulación QAM y uno para PSK en el canal AWGN, además de uno para PSK en el canal rayleigh.. Fig. 7 Simulación por medio de BERTOOL modulación QAM. En estos programas se genero una señal binaria aleatoria para simular el mensaje que se quiere transmitir, esta señal se creó con un numero de 500Kbits para obtener una respuesta buena, ya que si el numero de bits transmitido es muy pequeño no se puede ver reflejado el efecto de los canales de una forma adecuada. Esta señal es modulada de acuerdo al sistema deseado, una vez modulada se le añade ruido blanco gaussiano o en el caso del canal rayleigh primero se le añade el efecto de este así como de los retardos que este genera sobre la señal y después se le añade ruido blanco gaussiano. Una vez obtenida la señal con las interferencias de los canales se procede a demodular y se ve el resultado.. Los resultados que entregan estas simulaciones se pueden ver en forma de datos o gráficamente. En forma de datos entrega el valor que toma el B.E.R para diferentes valores de Eb/No así como el numero de datos que llegaron erróneamente en cada uno de los caso y gráficamente imprime una grafica donde se ve el B.E.R Vs el Eb/No tanto teórico como el obtenido después de la transmisión, así mismo imprime. 20.
(21) una grafica donde se puede apreciar el efecto que tiene cada uno de los acanales usados sobre la señal sobre la constelación de cada modulación.. Como se puede ver en las figuras 8, donde se muestra la constelación de una BPSK y sobre ella se muestra la señal que se recibe en el demodulador, el efecto que crea el canal AWGN de distorsión de la señal va disminuyendo a medida que se aumenta el valor de la relación Eb/No y por ende los errores que se pueden cometer en la regeneración de onda disminuyen de la misma forma. Con lo que se puede concluir que si se llegara a aumentar de una forma considerable el valor de esta relación se podrían llegar a despreciar los efectos de este tipo de ruido.. Fig. 8 Desvanecimiento del efecto de AWGN a medida que se aumenta el Eb/No para BPSK.. Los datos obtenidos de B.E.R y de número de errores para esta simulación arrojaron los siguientes resultados:. 21.
(22) BERsimulado =. 0.0785. 0.0372 0.0124 0.0023 0.0002 0.0000. Nerrores =. 39230. 18610. 6201. 1151. 104. 1. Donde también se comprueba que a medida que se aumenta la relación Eb/No disminuye el número de errores, ya que los primeros datos corresponden a un Eb/No igual a 0 y va aumentando de dos en dos hasta llegar a 10 donde se ve que solo llego 1 dato mal de los 500K enviados que corresponde a un error de 2e-6 que es demasiado pequeño con lo que se asegura una transmisión casi perfecta.. Fig. 9 simulación B.E.R Vs Eb/No BPSK.. Y la última forma de comprobación es por medio de la grafica B.E.R Vs Eb/No donde se ve que la línea punteada es la grafica teórica esperada y la continua es la simulada. Se ve claramente que la curva simulada sigue el comportamiento de la esperada, disminuyendo más o menos de la misma forma el valor de error de bit que la teórica. 22.
(23) Igual que en el caso de la simulación de la BPSK se ve que la modulación de QAM cumple con los mismos parámetros expuestos anteriormente, en este caso los datos arrojados fueron los siguientes:. BERsimulado =. 0.0783. 0.0373 0.0124 0.0024 0.0002 0.0000. Nerrores =. 78314. 37313. 12428. 2399. 195. 6. Fig. 10 Desvanecimiento del efecto de AWGN a medida que se aumenta el Eb/No para 4QAM. 23.
(24) Fig. 11simulacion B.E.R Vs Eb/No BPSK.. Se puede ver claramente que también sufre una disminución sustancial a medida que se aumenta el Eb/No comenzando con 78314 errores cuando se tiene la relación igual a 0 y terminando con 6 errores cuando esta es 10.. En el caso del canal rayleigh debido a que la distorsión que sufre la señal es mucho mayor ya que no solo sufre el efecto de este cala sino que además se simulo con efectos de ruido blanco gaussiano, su tasa de error no desciende de una forma tan rápida como en el caso de solo AWGN, es mas en este caso cae de una forma casi lineal, tal como se evidencia en las graficas 12 y 13, la primera simulada por la herramienta Bertool en la que aparecen las simulaciones teóricas de diferentes PSK sobre este canal y la segunda simulada por medio de los programas creados, donde la línea punteada es la esperada para una modulación BPSK y la continua es la obtenida después de demodular la señal transmitida.. 24.
(25) Fig. 12 modulaciones PSK sobre un canal Rayleigh por medio de la herramienta BERTOOL. Fig. 13 simulación de BPSK sobre canal Rayleigh. De esta forma se pueden sacar algunas conclusiones sobre estas simulaciones, al mismo tiempo que estos programas se pueden usar para mostrar a estudiantes la influencia e importancia de la relación Eb/No a la hora de buscar una transmisión eficiente de datos pues con este se pueden llegar a reducir a un valor insignificante o por el contrario se podría llegar a tener una transmisión bastante mala en el caso que no se tuviera en cuenta.. 25.
(26) 3. HERRAMIENTA. La herramienta es una interface grafica creada en MATLab, en esta se introduce el EbNo para el cual se quiere hacer la simulación, cuenta con diferentes botones para seleccionar tanto el tipo de canal como el tipo de modulación, una vez seleccionadas estas 2 opciones, la interface grafica devuelve como resultados una grafica B.E.R Vs EbNo, una grafica de dispercion de los puntos de llegada sobre la constelación de la modulación seleccionada y también devuelve el numero de datos erróneos y el B.E.R correspondiente al EbNo introducido por el usuario.. Las siguientes figuras muestran la interface grafica, en estas se muestran las simulaciones de una modulación PSK y una QAM.. Fig. 14 Interface Grafica, Simulación BPSK. 26.
(27) Fig. 15 Interface Grafica, Simulación 16 QAM. 27.
(28) 4. Conclusiones. -. A medida que se va aumentando el orden de las modulaciones se puede observar el B.E.R disminuye de una forma más lenta, esto es debido a que a medida que se va aumentando este orden se aumenta el número de bits transmitidos por portadora lo que hace que un error en orden como 32 o 64 sea mucho más grave que en un orden 2 o 4.. -. En el caso del canal AWGN se podría llegar a despreciar el efecto que este ejerce sobre la señal si se llegara a tener un Eb/No apropiado, sin necesidad de ser muy grande, para el tipo de modulación que se está usando.. -. En el caso del canal Rayleigh al tener multi-trayectoria y además ruido blanco gaussiano se hace más difícil llegar a despreciar su efecto, sin embargo se puede llegar a unos valores aceptables de error para una transmisión.. -. La diferencia en la grafica de B.E.R contra Eb/No entre los ordenes más bajos entre PSK y QAM no presentan mucha diferencia, sin embargo a medida que se va aumentando el orden de las modulaciones es mucho más eficiente la transmisión por QAM esto es debido a la diferencia en sus constelaciones pues la PSK al tener constelación en forma circular a medida que aumentan los puntos sobre ella hay mas posibilidad de error a la llegada de los símbolos.. -. La elección entre cual modulación usar entre PSK y QAM para ordenes bajos se puede basar en la mejor utilización del ancho de banda por parte de la modulación QAM.. 28.
(29) ANEXO A.. BPSK %*********************************************************************************** % SIMULADOR MODULACION PSK % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa simula la modulación de BPSK. %***********************************************************************************. M = 2; %Tamaño de la constelación de la señal k = log2 (M); %Número de bits por símbolo n = 3e3; %Número de bits a procesar EbNo = EbNo; Nsamp = 1;% Oversampling rate tx = randint(5000,1,M); %Generación de mensaje aleatorio y = pskmod(tx,M); % Modulación M‐PSK % Transmisión de la señal a través del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) ynoisy = awgn(y,snr,'measured'); BERteorico = berawgn(EbNo,'psk',M,'nondiff') rx = pskdemod(ynoisy,M); % Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx) %chequeo de BER EbNo1=0:2:10; %Rango EbNo teórico para graficar bertheory = berawgn(EbNo1,'psk',M,'nondiff'); % BER teórico for n = 1:length(EbNo1) SNR1 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR1(n),'measured'); 29.
(30) rx1= pskdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber11(n)=BER1; ne(n)=nErrors; end % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b:',EbNo1,Ber11,'r'); legend('BER teorico','BER empirico','BER teorico para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No BPSK over AWGN'); grid on h=scatterplot(Ynoisy1,1,0,'g.'); hold on; scatterplot(y,1,0,'k+',h); title('PSK por canal AWGN'); legend('Señal recibidad','constelación PSK'); hold off;. 30.
(31) %*********************************************************************************** % SIMULADOR MODULACION PSK % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa simula la modulación de 4 PSK. %*********************************************************************************** M=4;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=EbNo; nsamp=1;% Oversampling rate tx = randint(5000,1,M); % Generación de mensaje aleatorio. y = pskmod(tx,M); %Modulación M‐PSK % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) ynoisy = awgn(y,snr,'measured'); BERteorico = berawgn(EbNo,'psk',M,'nondiff') rx = pskdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)% Chequeo de BER EbNo1=0:2:10;%Rango EbNo teórico para graficar bertheory = berawgn(EbNo1,'psk',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR1 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR1(n),'measured'); rx1= pskdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber6(n)=BER1 ne(n)=nErrors. 31.
(32) end % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐',EbNo1,Ber6,'r'); legend('BER teorico','BER empirico','BER teorico para el Eb/No'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QPSK over AWGN'); grid on; h=scatterplot(ynoisy,1,0,'g.'); hold on; scatterplot(y,1,0,'k+',h); title('PSK por canal AWGN'); legend('señal recibida','constelación PSK'); hold off;. 32.
(33) %*********************************************************************************** % SIMULADOR MODULACION PSK % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa simula la modulación de 8 PSK. %*********************************************************************************** M=8;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=EbNo; nsamp=1;% Oversampling rat tx = randint(5000,1,M); % Generación del mensaje aleatorio y = pskmod(tx,M);%Modulación PSK %Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) ynoisy = awgn(y,snr,'measured'); BERteorico = berawgn(EbNo,'psk',M,'nondiff') rx = pskdemod(ynoisy,M);%Demodulación para recuperar el mensaje [errores,BER]= biterr(tx,rx)%chequeo de BER EbNo1=0:2:15;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'psk',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR1 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR1(n),'measured'); rx1= pskdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber8(n)=BER1; ne(n)=nErrors;. 33.
(34) end % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐',EbNo1,Ber8,'r‐'); legend('BER teorico','BER empirico','BER teorico para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No PSK over AWGN'); grid on; h=scatterplot(ynoisy,1,0,'g.'); hold on; scatterplot(y,1,0,'k+',h); title('PSK por canal AWGN'); legend('señal recibida','constelación PSK'); hold off;. 34.
(35) %*********************************************************************************** % SIMULADOR MODULACION PSK % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa simula la modulación de 16 PSK. %***********************************************************************************. M=16;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=EbNo; nsamp=1;% Oversampling rate tx = randint(5000,1,M); % Generación del mensaje aleatorio y = pskmod(tx,M);%Modulación PSK % Transmisión de la señal a traves del canal AWGN snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) ynoisy = awgn(y,snr,'measured'); BERteorico = berawgn(EbNo,'psk',M,'nondiff') rx = pskdemod(ynoisy,M);%Demodulación para recuperar el mensaje [errores,BER]= biterr(tx,rx)Chequeo de BER EbNo1=0:2:18;%Rango de EbNo teorico paea graficar bertheory = berawgn(EbNo1,'psk',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR1 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR1(n),'measured'); rx1= pskdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber10(n)=BER1; ne(n)=nErrors; 35.
(36) end % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐',EbNo1,Ber10,'r‐'); legend('BER teorico','BER empirico','BER teorico para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No PSK over AWGN'); h=scatterplot(ynoisy,1,0,'g.'); hold on; scatterplot(y,1,0,'k+',h); title('PSK por canal AWGN'); legend('señal recibida','constelación PSK'); hold off;. 36.
(37) %*********************************************************************************** % SIMULADOR MODULACION QAM % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa simula la modulación de 4 QAM. %*********************************************************************************** M=4;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=EbNo; nsamp=1;% Oversampling rate tx=randint(500000,1,M); % Generación del mensaje aleatorio y = qammod(tx,M); % moduñación QAM % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) BERteorico = berawgn(EbNo,'qam',M) ynoisy = awgn(y,snr,'measured'); rx=qamdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)%Chequeo de BER EbNo1 = 0:2:10;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'qam',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR2 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR2(n),'measured'); rx1= qamdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber11(n)=BER1; ne(n)=nErrors;. 37.
(38) end % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐‐',EbNo1,Ber11,'r‐'); legend('BER teorico','BER empirico','ber teorica para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QAM over AWGN'); h=scatterplot(ynoisy,1,0,'g.'); hold on; scatterplot(y,1,0,'k+',h); title('QAM por canal AWGN'); legend('señal recibida','constelación QAM'); hold off;. 38.
(39) %*********************************************************************************** % SIMULADOR MODULACION QAM % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa simula la modulación de 8 QAM. %***********************************************************************************. M=8;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=EbNo; nsamp=1;% Oversampling rate tx=randint(500000,1,M); % Generación del mensaje aleatorio y = qammod(tx,M); % modulación QAM % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) BERteorico = berawgn(EbNo,'qam',M) ynoisy = awgn(y,snr,'measured'); rx=qamdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)%Chequeo de BER EbNo1 = 0:2:12;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'qam',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR2 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR2(n),'measured'); rx1= qamdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber1(n)=BER1; ne(n)=nErrors; 39.
(40) end % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐‐',EbNo1,Ber1,'r‐'); legend('BER teorico','BER empirico','ber teorica para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QAM over AWGN'); h=scatterplot(ynoisy,1,0,'g.'); hold on; scatterplot(y,1,0,'k+',h); title('QAM por canal AWGN'); legend('señal recibida','constelación QAM'); hold off;. 40.
(41) %*********************************************************************************** % SIMULADOR MODULACION QAM % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa simula la modulación de 16 QAM. %***********************************************************************************. M=16;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=EbNo; nsamp=1;% Oversampling rate tx=randint(500000,1,M); % Generación del mensaje aleatorio y = qammod(tx,M); % modulación QAM % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) BERteorico = berawgn(EbNo,'qam',M) ynoisy = awgn(y,snr,'measured'); rx=qamdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)%Chequeo de BER EbNo1 = 0:2:14;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'qam',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR2 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR2(n),'measured'); rx1= qamdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); 41.
(42) Ber12(n)=BER1; ne(n)=nErrors; end % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐‐',EbNo1,Ber12,'r‐'); legend('BER teorico','BER empirico','ber teorica para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QAM over AWGN'); h=scatterplot(ynoisy,1,0,'g.'); hold on; scatterplot(y,1,0,'k+',h); title('QAM por canal AWGN'); legend('señal recibida','constelación QAM'); hold off;. 42.
(43) %*********************************************************************************** % SIMULADOR MODULACION QAM % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa simula la modulación de 32 QAM. %*********************************************************************************** M=32;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=EbNo; nsamp=1;% Oversampling rate tx=randint(500000,1,M); % Generación del mensaje aleatorio y = qammod(tx,M); % modulación QAM % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) BERteorico = berawgn(EbNo,'qam',M) ynoisy = awgn(y,snr,'measured'); rx=qamdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)%Chequeo de BER EbNo1 = 0:2:16;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'qam',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR2 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR2(n),'measured'); rx1= qamdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber16(n)=BER1; ne(n)=nErrors;. 43.
(44) end % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐‐',EbNo1,Ber16,'r‐'); legend('BER teorico','BER empirico','ber teorica para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QAM over AWGN'); h=scatterplot(ynoisy,1,0,'g.'); hold on; scatterplot(y,1,0,'k+',h); title('QAM por canal AWGN'); legend('señal recibida','constelación QAM'); hold off;. 44.
(45) Anexo B.. %*********************************************************************************** % CODIGO DE INTERFACE GRAFICA % Proyecto de Grado %Estudiante: Juan Gabriel Fandiño % Asesor: Rafael Camerano Fuentes % Universidad de los Andes, 2008 % DESCRIPCION: % Este programa ejecuta la interface grafica de la herramienta. %***********************************************************************************. function varargout = tesis(varargin) % TESIS M‐file for tesis.fig %. TESIS, by itself, creates a new TESIS or raises the existing. %. singleton*.. %. H = TESIS returns the handle to a new TESIS or the handle to. %. the existing singleton*.. %. TESIS('CALLBACK',hObject,eventData,handles,...) calls the local. %. function named CALLBACK in TESIS.M with the given input arguments.. %. TESIS('Property','Value',...) creates a new TESIS or raises the. %. existing singleton*. Starting from the left, property value pairs are. %. applied to the GUI before tesis_OpeningFunction gets called. An. %. unrecognized property name or invalid value makes property application. %. stop. All inputs are passed to tesis_OpeningFcn via varargin.. %. *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one. %. instance to run (singleton)".. % See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002‐2003 The MathWorks, Inc. % Begin initialization code ‐ DO NOT EDIT 45.
(46) gui_Singleton = 1; gui_State = struct('gui_Name',. mfilename, .... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @tesis_OpeningFcn, ... 'gui_OutputFcn', @tesis_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end. if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code ‐ DO NOT EDIT % ‐‐‐ Executes just before tesis is made visible. function tesis_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to tesis (see VARARGIN). % Choose default command line output for tesis handles.output = hObject; % Update handles structure guidata(hObject, handles);. % UIWAIT makes tesis wait for user response (see UIRESUME) % uiwait(handles.figure1); 46.
(47) % ‐‐‐ Outputs from this function are returned to the command line. function varargout = tesis_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; function Ebno_Callback(hObject, eventdata, handles) % hObject handle to Ebno (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of Ebno as text %. str2double(get(hObject,'String')) returns contents of Ebno as a double. % ‐‐‐ Executes during object creation, after setting all properties. function Ebno_CreateFcn(hObject, eventdata, handles) % hObject handle to Ebno (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles empty ‐ handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %. See ISPC and COMPUTER.. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function errores_Callback(hObject, eventdata, handles) % hObject handle to errores (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of errores as text %. str2double(get(hObject,'String')) returns contents of errores as a double 47.
(48) % ‐‐‐ Executes during object creation, after setting all properties. function errores_CreateFcn(hObject, eventdata, handles) % hObject handle to errores (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles empty ‐ handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %. See ISPC and COMPUTER.. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function ber_Callback(hObject, eventdata, handles) % hObject handle to ber (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of ber as text %. str2double(get(hObject,'String')) returns contents of ber as a double. % ‐‐‐ Executes during object creation, after setting all properties. function ber_CreateFcn(hObject, eventdata, handles) % hObject handle to ber (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles empty ‐ handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %. See ISPC and COMPUTER.. if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end. % ‐‐‐ Executes on button press in oqam. 48.
(49) function oqam_Callback(hObject, eventdata, handles) % hObject handle to oqam (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a=get(handles.Ebno,'string'); a=str2double(a);%lo pasa a valor de presicion oqam(a,handles) function oqam(yy,handles) M=8;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=yy; nsamp=1;% Oversampling rate tx=randint(500000,1,M); % Generación del mensaje aleatorio y = qammod(tx,M); % modulación QAM % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) BERteorico = berawgn(EbNo,'qam',M) ynoisy = awgn(y,snr,'measured'); rx=qamdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)%Chequeo de BER EbNo1 = 0:2:12;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'qam',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR2 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR2(n),'measured'); rx1= qamdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber1(n)=BER1; ne(n)=nErrors; end axes(handles.axes1) 49.
(50) semilogy(EbNo1,bertheory,'b‐‐',EbNo1,Ber1,'r‐'); legend('BER teorico','BER empirico','ber teorica para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QAM over AWGN'); h=scatterplot(ynoisy,1,0,'g.'); hold on; saveas(scatterplot(y,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',BER) % ‐‐‐ Executes on button press in diqam. function diqam_Callback(hObject, eventdata, handles) % hObject handle to diqam (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a=get(handles.Ebno,'string'); a=str2double(a);%lo pasa a valor de presicion diqam(a,handles) function diqam(yy,handles) M=16;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=yy; nsamp=1;% Oversampling rate tx=randint(500000,1,M); % Generación del mensaje aleatorio y = qammod(tx,M); % modulación QAM % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) BERteorico = berawgn(EbNo,'qam',M) ynoisy = awgn(y,snr,'measured'); rx=qamdemod(ynoisy,M);%Demodulación para recuperar el mensaje. 50.
(51) [errores,BER]= biterr(tx,rx)%Chequeo de BER EbNo1 = 0:2:14;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'qam',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR2 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR2(n),'measured'); rx1= qamdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber12(n)=BER1; ne(n)=nErrors; end axes(handles.axes1) % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐‐',EbNo1,Ber12,'r‐'); legend('BER teorico','BER empirico','ber teorica para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QAM over AWGN'); h=scatterplot(ynoisy,1,0,'g.'); hold on; saveas(scatterplot(y,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',BER). % ‐‐‐ Executes on button press in treqam. function treqam_Callback(hObject, eventdata, handles) % hObject handle to treqam (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %necesito M, EbNo, nsamp a=get(handles.Ebno,'string'); 51.
(52) a=str2double(a);%lo pasa a valor de presicion tqam(a,handles) function tqam(yy,handles) M=32;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=yy; nsamp=1;% Oversampling rate tx=randint(500000,1,M); % Generación del mensaje aleatorio y = qammod(tx,M); % modulación QAM % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) BERteorico = berawgn(EbNo,'qam',M) ynoisy = awgn(y,snr,'measured'); rx=qamdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)%Chequeo de BER EbNo1 = 0:2:16;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'qam',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR2 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR2(n),'measured'); rx1= qamdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber16(n)=BER1; ne(n)=nErrors; end axes(handles.axes1) % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐‐',EbNo1,Ber16,'r‐'); legend('BER teorico','BER empirico','ber teorica para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QAM over AWGN'); 52.
(53) h=scatterplot(ynoisy,1,0,'g.'); hold on; saveas(scatterplot(y,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',BER). % ‐‐‐ Executes on button press in ray. function ray_Callback(hObject, eventdata, handles) % hObject handle to ray (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a=get(handles.Ebno,'string'); a=str2double(a);%lo pasa a valor de presicion ray(a,handles) function ray(yy,handles) %M = 2; % DQPSK modulation order EbNo=yy; M=4;% Size of signal constellation nsamp=1;% Oversampling rat chan = rayleighchan(1/10000,100); k = log2(M); % Number of bits per symbol n = 3e4; % Number of bits to process nloop=1000;%numero de ciclos por Eb/No % Generate data and apply fading channel. %M = 2; % DBPSK modulation order tx = randint(5000,1,M); % Random bit stream pskSig = dpskmod(tx,M); % DPSK signal fadedSig = filter(chan,pskSig); % Effect of channel % Transmit signal through an AWGN channel. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp); 53.
(54) ynoisy = awgn(fadedSig,snr); ber1 = berfading(EbNo,'dpsk',M,1); % Demodulate to recover the message. rx = dpskdemod(ynoisy,M); [errores,ber2] = biterr(tx,rx); % Bit error rate % Compute error rate for different values of SNR. EBNO = 0:2:20; % Range of SNR values, in dB. for n = 1:length(EBNO) SNR = EBNO + 10*log10(k) ‐ 10*log10(nsamp); rxSig = awgn(fadedSig,SNR(n)); % Add Gaussian noise. rx = dpskdemod(rxSig,M); % Demodulate. % Compute error rate. % Ignore first sample because of DPSK initial condition. [nErrors, BER20(n)] = biterr(tx(2:end),rx(2:end)); ne(n)=nErrors; end % Compute theoretical performance results, for comparison. BERtheory = berfading(EBNO,'dpsk',M,1); axes(handles.axes1) semilogy(EBNO,BERtheory,'b‐‐',EBNO,BER20,'r‐');%,EbNo,ber1,'go',EbNo,ber2, 'k+' legend('Theoretical BER','Empirical BER','ber teorico','ber empirico'); xlabel('EbNo (dB)'); ylabel('BER'); title('Binary PSK over Rayleigh Fading Channel'); grid on h=scatterplot(ynoisy,1,0,'g.'); hold on; saveas(scatterplot(pskSig,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',ber2). 54.
(55) % ‐‐‐ Executes on button press in bpsk. function bpsk_Callback(hObject, eventdata, handles) % hObject handle to bpsk (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a=get(handles.Ebno,'string'); a=str2double(a);%lo pasa a valor de presicion bpsk(a,handles) function bpsk(yy,handles) M = 2; %Tamaño de la constelación de la señal k = log2(M); %Número de bits por símbolo n = 3e3; %Número de bits a procesar EbNo = yy; Nsamp = 1;% Oversampling rate tx = randint(5000,1,M); %Generación de mensaje aleatorio y = pskmod(tx,M); % Modulación M‐PSK % Transmisión de la señal a través del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) ynoisy = awgn(y,snr,'measured'); BERteorico = berawgn(EbNo,'psk',M,'nondiff') rx = pskdemod(ynoisy,M); % Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx) %chequeo de BER EbNo1=0:2:10; %Rango EbNo teórico para graficar bertheory = berawgn(EbNo1,'psk',M,'nondiff'); % BER teórico for n = 1:length(EbNo1) SNR1 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR1(n),'measured'); rx1= pskdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber11(n)=BER1; ne(n)=nErrors; end 55.
(56) axes(handles.axes1) % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b:',EbNo1,Ber11,'r'); legend('BER teorico','BER empirico','BER teorico para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No BPSK over AWGN'); grid on h=scatterplot(Ynoisy1,1,0,'g.'); hold on; saveas(scatterplot(y,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',BER) % ‐‐‐ Executes on button press in cupsk. function cupsk_Callback(hObject, eventdata, handles) % hObject handle to cupsk (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a=get(handles.Ebno,'string'); a=str2double(a);%lo pasa a valor de presicion cupsk(a,handles) function cupsk(yy,handles) M=4;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=yy; nsamp=1;% Oversampling rate tx = randint(5000,1,M); % Generación de mensaje aleatorio. y = pskmod(tx,M); %Modulación M‐PSK % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) 56.
(57) ynoisy = awgn(y,snr,'measured'); BERteorico = berawgn(EbNo,'psk',M,'nondiff') rx = pskdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)% Chequeo de BER EbNo1=0:2:10;%Rango EbNo teórico para graficar bertheory = berawgn(EbNo1,'psk',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR1 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR1(n),'measured'); rx1= pskdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber6(n)=BER1 ne(n)=nErrors end axes(handles.axes1) % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐',EbNo1,Ber6,'r'); legend('BER teorico','BER empirico','BER teorico para el Eb/No'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QPSK over AWGN'); grid on; h=scatterplot(ynoisy,1,0,'g.'); hold on; saveas(scatterplot(y,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',BER). % ‐‐‐ Executes on button press in opsk. function opsk_Callback(hObject, eventdata, handles) % hObject handle to opsk (see GCBO) 57.
(58) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a=get(handles.Ebno,'string'); a=str2double(a);%lo pasa a valor de presicion opsk(a,handles) function opsk(yy,handles) M=8;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=yy; nsamp=1;% Oversampling rat tx = randint(5000,1,M); % Generación del mensaje aleatorio y = pskmod(tx,M);%Modulación PSK %Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) ynoisy = awgn(y,snr,'measured'); BERteorico = berawgn(EbNo,'psk',M,'nondiff') rx = pskdemod(ynoisy,M);%Demodulación para recuperar el mensaje [errores,BER]= biterr(tx,rx)%chequeo de BER EbNo1=0:2:15;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'psk',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR1 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR1(n),'measured'); rx1= pskdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber8(n)=BER1; ne(n)=nErrors; end axes(handles.axes1) % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐',EbNo1,Ber8,'r‐'); 58.
(59) legend('BER teorico','BER empirico','BER teorico para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No PSK over AWGN'); grid on; h=scatterplot(ynoisy,1,0,'g.'); hold on; saveas(scatterplot(y,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',BER). % ‐‐‐ Executes on button press in dipsk. function dipsk_Callback(hObject, eventdata, handles) % hObject handle to dipsk (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a=get(handles.Ebno,'string'); a=str2double(a);%lo pasa a valor de presicion dpsk(a,handles) function dpsk(yy,handles) M=16;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=yy; nsamp=1;% Oversampling rate tx = randint(5000,1,M); % Generación del mensaje aleatorio y = pskmod(tx,M);%Modulación PSK % Transmisión de la señal a traves del canal AWGN snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) ynoisy = awgn(y,snr,'measured'); BERteorico = berawgn(EbNo,'psk',M,'nondiff') 59.
(60) rx = pskdemod(ynoisy,M);%Demodulación para recuperar el mensaje [errores,BER]= biterr(tx,rx)Chequeo de BER EbNo1=0:2:18;%Rango de EbNo teorico paea graficar bertheory = berawgn(EbNo1,'psk',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR1 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR1(n),'measured'); rx1= pskdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber10(n)=BER1; ne(n)=nErrors; end axes(handles.axes1) % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐',EbNo1,Ber10,'r‐'); legend('BER teorico','BER empirico','BER teorico para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No PSK over AWGN'); h=scatterplot(ynoisy,1,0,'g.'); hold on; saveas(scatterplot(y,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',BER). % ‐‐‐ Executes on button press in cuqam. function cuqam_Callback(hObject, eventdata, handles) % hObject handle to cuqam (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a=get(handles.Ebno,'string'); 60.
(61) a=str2double(a);%lo pasa a valor de presicion qqam(a,handles) function qqam(yy,handles) M=4;% Tamaño de la constelación de la señal k = log2(M); % Número de bits por simbolo n = 3e3; % Número de bits a procesar EbNo=yy; nsamp=1;% Oversampling rate tx=randint(500000,1,M); % Generación del mensaje aleatorio y = qammod(tx,M); % moduñación QAM % Transmisión de la señal a traves del canal AWGN. snr = EbNo + 10*log10(k) ‐ 10*log10(nsamp) BERteorico = berawgn(EbNo,'qam',M) ynoisy = awgn(y,snr,'measured'); rx=qamdemod(ynoisy,M);%Demodulación para recuperar el mensaje. [errores,BER]= biterr(tx,rx)%Chequeo de BER EbNo1 = 0:2:10;%Rango de EbNo teorico para graficar bertheory = berawgn(EbNo1,'qam',M,'nondiff');%BER teorico for n = 1:length(EbNo1) SNR2 = EbNo1 + 10*log10(k) ‐ 10*log10(nsamp); Ynoisy1 = awgn(y,SNR2(n),'measured'); rx1= qamdemod(Ynoisy1,M); [nErrors, BER1] = biterr(tx,rx1); Ber11(n)=BER1; ne(n)=nErrors; end axes(handles.axes1) % Grafica de los resultados del BER. semilogy(EbNo1,bertheory,'b‐‐',EbNo1,Ber11,'r‐'); legend('BER teorico','BER empirico','ber teorica para el EbNo'); xlabel('EbNo (dB)'); ylabel('BER'); title('BER Vs Eb/No QAM over AWGN'); 61.
(62) h=scatterplot(ynoisy,1,0,'g.'); hold on; saveas(scatterplot(y,1,0,'k+',h),'juan.bmp'); axes(handles.axes4) imshow('juan.bmp'); set (handles.errores,'string',errores) set (handles.ber,'string',BER). % ‐‐‐ Executes on button press in delay. function delay_Callback(hObject, eventdata, handles) % hObject handle to delay (see GCBO) % eventdata reserved ‐ to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA). 62.
(63) Bibliografia. [1] John B. anderson. “Digital transmission engineering”. IEEE PRESS. PRENTICE HALL. 1999. [2] Sergio Benedetto y Ezio Biglieri. “Principles of Digital Transmission with wireless applications”. Kluwer Academis/ Plenum Publishers. 1999. [3] Simon Haykin. "sistemas de comunicación”. Limusa wiley. 2002. [4] Simon Haykin y Michael moher. “Introduction to analog and digital communications”. John wiley sons, Inc. 2007. [5] Communications Toolbox, MATLab 7.1. 63.
(64)
Documento similar