1. UNIVERSIDAD AUTÓNOMA
METROPOLITANA
Laboratorio de Comunicaciones Digitales.
Práctica 1
“Códigos de Línea”
Objetivos
Construir las funciones de codificación de línea para U-NRZ, U-RZ, P-RZ y
Manchester.
Comprender las ventajas y desventajas de los distintos tipos de códigos de línea.
Material
Computadora
Matlab 2015 o superior Introducción.
Introducción
Para adaptar la información al medo de transmisión elegido, se desea ahorrar ancho de
banda y garantizar una recepción adecuada y segura, para conseguir estos objetivos se
tiene que realizar una codificación.
Las señales que se pueden procesar son analógicas o digitales.
En las señales digitales se utiliza el intervalo de bit (en lugar del período) y tasa de bit (en
lugar de frecuencia). El intervalo de bit es el tiempo necesario para enviar un único bit, y la
tasa de bit es el número de intervalos de bits en un segundo, es decir, es el número de bits
enviados en un segundo (bps).
2. Codificación de línea
Un código de línea es un tipo de codificación usado en sistemas de comunicación para la
transmisión digital en banda base y está conformado por pulsos rectangulares que siguen
un determinado patrón de codificación, el cual asigna niveles de tensión a los bits que
entrega la fuente.
Características deseables en un código de línea
Autosincronización: contenido suficiente de señal de temporización (reloj) que
permita identificar el tiempo correspondiente a un bit.
Capacidad de detección de errores: la definición del código incluye el poder detectar
un error.
Inmunidad al ruido: capacidad de detectar adecuadamente un valor de la señal ante
la presencia de ruido (baja probabilidad de error). Recordar que el ruido se entiende
como toda señal no deseada que se mezcla con la señal útil que se quiere transmitir.
Densidad espectral de potencia: igualación entre el espectro de frecuencia de la
señal y la respuesta en frecuencia del canal de transmisión.
Ancho de banda: contenido suficiente de señal de temporización que permite
identificar el tiempo correspondiente a un bit.
Transparencia: independencia de las características del código en relación a la
secuencia de unos y ceros que transmita.
Desarrollo
Programar una función que realice el proceso de codificación para cada uno de los
siguientes códigos de línea:
Bipolar NRZ
Unipolar NRZ
Bipolar RZ
Unipolar RZ
Manchester
Cada una de las funciones debe de tener como argumentos de entrada:
Cadena de bits a codificar.
Densidad espectral de potencia
de los códigos de línea
Ejemplo de algunos códigos de
línea
3. Velocidad de transmisión en baudios.
Frecuencias de muestreo.
Cada una de las funciones debe de tener como salida:
Vector de tiempo para cada una de las muestras del tren de pulsos.
Vector con los valores del tren de pulsos.
Descripción Bipolar NRZ: El código Polar sin retorno a cero (B-NRZ) representa un 1
lógico (1L) con un nivel de +V durante todo el periodo de bit y un cero lógico (0L) con un
nivel de -V durante todo el periodo de bit.
Descripción Unipolar NRZ: El código Polar sin retorno a cero (U-NRZ) representa un 1
lógico (1L) con un nivel de +V durante todo el periodo de bit y un cero lógico (0L) con un
nivel de 0 V durante todo el periodo de bit.
Descripción Unipolar RZ: El código Unipolar con retorno a cero (U-RZ) representa un 1
lógico (1L) con un nivel de +V durante la mitad del periodo de bit y 0 V durante el resto del
tiempo de bit; y un cero lógico (0L) con un nivel de 0 V durante todo el periodo de bit.
Descripción Bipolar RZ: El código Unipolar con retorno a cero (B-RZ) representa un 1
lógico (1L) con un nivel de +V durante la mitad del periodo de bit y 0 V durante el resto del
tiempo de bit; y un cero lógico (0L) con un nivel de -V durante la mitad del periodo de bit y
0 V durante el resto del tiempo de bit.
Descripción Manchester: El código Manchester representa un 1 lógico (1L) con un nivel
de +V durante la mitad del periodo de bit y un nivel de -V durante la otra mitad. Un cero
lógico (0L) se representa con un nivel de - V durante la primera mitad del periodo de bit y
con +V durante la segunda mitad.
Ejercicio 1
Para cada una de las funciones, graficar las siguientes secuencias de bits codificadas:
0 0 0 0 0 0 0 0 a 9600 Baudios
1 1 1 1 1 1 1 1 a 9600 Baudios
0 1 0 1 0 1 0 1 a 64000 Baudios
0 1 1 0 0 1 0 1 a 64000 Baudios
1 1 1 0 0 0 0 1 a 18900 Baudios
Elija una frecuencia de muestreo adecuada de tal manera que se pueda apreciar con
claridad cada tren de pulsos.
Bipolar NRZ (No retorno a cero)
4. Código
function [t,x] = bpnrz(bits, bitrate, samplerate)
T = length(bits)/bitrate;
n = samplerate/bitrate;
N = n*length(bits);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t));
for i = 0:length(bits)-1
if bits(i+1) == 1
x(i*n+1:(i+1)*n) = 1;
else
x(i*n+1:(i+1)*n) = -1;
end
end
Gráficas de las secuencias de bits
Unipolar NRZ (No retorno a cero)
5. Código
function [t,x] = upnrz(bits, bitrate, samplerate)
T = length(bits)/bitrate;
n = samplerate/bitrate;
N = n*length(bits);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t));
for i = 0:length(bits)-1
if bits(i+1) == 1
x(i*n+1:(i+1)*n) = 1;
else
x(i*n+1:(i+1)*n) = 0;
end
end
Gráficas de las secuencias de bits
Unipolar RZ (Retorno a cero)
6. Código
function [t,x] = uprz(bits, bitrate, samplerate)
T = length(bits)/bitrate;
n = samplerate/bitrate;
N = n*length(bits);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t));
for i = 0:length(bits)-1
if bits(i+1) == 1
x(i*n+1:(i+0.5)*n) = 1;
x((i+0.5)*n+1:(i+1)*n) = 0;
else
x(i*n+1:(i+1)*n) = 0;
end
end
Gráficas de las secuencias de bits
Bipolar RZ (Retorno a cero)
7. Código
function [t,x] = bprz(bits, bitrate, samplerate)
T = length(bits)/bitrate;
n = samplerate/bitrate;
N = n*length(bits);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t));
for i = 0:length(bits)-1
if bits(i+1) == 1
x(i*n+1:(i+0.5)*n) = 1;
x((i+0.5)*n+1:(i+1)*n) = 0;
else
x(i*n+1:(i+0.5)*n) = -1;
x((i+0.5)*n+1:(i+1)*n) = 0;
end
end
Gráficas de las secuencias de bits
Manchester
8. Código
function [t,x] = manchester(bits, bitrate, samplerate)
T = length(bits)/bitrate;
n = samplerate/bitrate;
N = n*length(bits);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t));
for i = 0:length(bits)-1
if bits(i+1) == 1
x(i*n+1:(i+0.5)*n) = 1;
x((i+0.5)*n+1:(i+1)*n) = -1;
else
x(i*n+1:(i+0.5)*n) = -1;
x((i+0.5)*n+1:(i+1)*n) = 1;
end
end
Gráficas de las secuencias de bits
1. ¿Cuál de las técnicas de codificación graficadas permitiría la detección de errores?
9. La técnica manchester puede detectar un error si hay una ausencia de transición.
2. ¿Cuál de las técnicas de codificación graficadas permite auto sincronización? ¿Por
qué?
Las técnicas de codificación Manchester y bipolar RZ, presentan una transición en
el centro de cada bit, esta señalización permite recuperar la sincronización.
Los NRZ con una secuencia de ceros o de unos no se podrá determinar el principio
y final de cada bit, el unipolar RZ también presentará problemas se sincronización
cuando haya una secuencia de ceros consecutivos.
3. ¿Cuál de las técnicas presentadas permite una mayor inmunidad al ruido? ¿Por qué?
NRZ
Las manchester, ya que, a menor BER (bit error rate: tasa de error de bit) es mayor
la inmunidad al ruido. Como se vio en las gráficas, la detección de errores es fácil
para manchester, ya que se detectará cuando exista una ausencia de transición.
Ejercicio 2
Para cada una de las secuencias presentadas en el ejercicio anterior grafique la densidad
espectral de potencia utilizando el DSP Toolbox de Matlab y cuantifique la potencia
necesaria para transmitir cada una de las secuencias.
Nota: para que se aprecie correctamente en el osciloscopio y analizador de espectro, utilizar
una velocidad de 1 bps con 100 muestras por bit.
Código
bits = [1 0 1 0 1 0 1 0];
Rx = 1;
Fs = 100;
[t, y] = bpnrz(bits,Rx,Fs);
NFFT = 256;
Y = fft(y,NFFT)/NFFT;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure(1)
plot(t,y)
title(['Bipolar NRZ','Señal en el Tiempo y(t)'])
xlabel('Tiempo [s]')
ylabel('Amplitud [V]')
figure(2)
plot(f,2*abs(Y(1:NFFT/2+1)))
title(['Bipolar NRZ','Espectro de Amplitud
unilateral de y(t)'])
xlabel('Frequencia [Hz]')
ylabel('|Y(f)|')
bits = [1 0 1 0 1 0 1 0];
Rx = 1;
Fs = 100;
[t, y] = upnrz(bits,Rx,Fs);
NFFT = 256;
Y = fft(y,NFFT)/NFFT;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure(1)
plot(t,y)
title('Unipolar NRZ','Señal en el Tiempo y(t)')
xlabel('Tiempo [s]')
ylabel('Amplitud [V]')
figure(2)
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Unipolar NRZ','Espectro de Amplitud
unilateral de y(t)')
xlabel('Frequencia [Hz]')
ylabel('|Y(f)|')
10. bits = [1 0 1 0 1 0 1 0];
Rx = 1;
Fs = 100;
[t, y] = bprz(bits,Rx,Fs);
NFFT = 256;
Y = fft(y,NFFT)/NFFT;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure(1)
plot(t,y)
title('Bipolar RZ','Señal en el Tiempo y(t)')
xlabel('Tiempo [s]')
ylabel('Amplitud [V]')
figure(2)
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Bipolar RZ','Espectro de Amplitud unilateral
de y(t)')
xlabel('Frequencia [Hz]')
ylabel('|Y(f)|')
bits = [1 0 1 0 1 0 1 0];
Rx = 1;
Fs = 100;
[t, y] = uprz(bits,Rx,Fs);
NFFT = 256;
Y = fft(y,NFFT)/NFFT;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure(1)
plot(t,y)
title('Unipolar RZ','Señal en el Tiempo y(t)')
xlabel('Tiempo [s]')
ylabel('Amplitud [V]')
figure(2)
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Unipolar RZ','Espectro de Amplitud
unilateral de y(t)')
xlabel('Frequencia [Hz]')
ylabel('|Y(f)|')
bits = [1 0 1 0 1 0 1 0];
Rx = 1;
Fs = 100;
[t, y] = uprz(bits,Rx,Fs);
NFFT = 256;
Y = fft(y,NFFT)/NFFT;
f = Fs/2*linspace(0,1,NFFT/2+1);
figure(1)
plot(t,y)
title('Unipolar RZ','Señal en el Tiempo y(t)')
xlabel('Tiempo [s]')
ylabel('Amplitud [V]')
figure(2)
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Unipolar RZ','Espectro de Amplitud unilateral de y(t)')
xlabel('Frequencia [Hz]')
ylabel('|Y(f)|')
12. 1. ¿Qué técnica de codificación requiere de menor potencia?
La codificación manchester y la bipolar RZ.
2. ¿Qué técnica de codificación requiere de más potencia?
La unipolar NRZ, seguido de la unipolar RZ.
3. ¿Qué ventaja se obtiene al eliminar la componente de DC con las codificaciones
Bipolares?
Al eliminar la componente DC, requerirá menos potencia. También, no se
necesitarán acoplamientos directos para su transmisión.
4. ¿Por qué se ensancha el espectro con las codificaciones RZ?
El ancho de banda es inversamente proporcional al ancho del pulso, y dado que las
codificaciones con retorno a cero presentan más transiciones que las que no tienen
retorno a cero, se presentará un ensanchamiento en el espectro.
5. ¿Qué ventaja tiene el ensanchamiento del espectro en las codificaciones RZ?
Reducción de ruido y resistencia a interferencias e intercepciones.
Conclusiones
La elección de la técnica a utilizar dependerá del uso que se necesite.
La técnica de codificación NRZ son fáciles de implementar, sin embargo, no suelen
usarse para transmisión de señales. No tiene un ancho de banda eficiente y es
susceptible a interferencias, por lo tanto, suele usarse en grabaciones magnéticas.
Por otro lado, en las bipolares la velocidad de modulación máxima es el doble que en
NRZ y el ancho de banda necesario es mayor, sin embargo, sus ventajas son que
cuentan con auto sincronizado, no tiene componente continua y podrá detectar errores
cuando exista una ausencia de transición.
Bibliografía
https://www.studocu.com/es-mx/document/universidad-simon-bolivar/constitucion-y-legislacion-en-
salud/codigos-de-linea/7193733
https://silo.tips/download/codigos-de-linea-compresion-de-codigos-de-linea-codificadores-y-
decodificadores
https://nanopdf.com/download/clase-num-5-codigos-de-linea_pdf
http://eprints.uanl.mx/7828/1/1020122965.PDF
https://zdocs.mx/doc/linea-de-codigo-q1825024nm1v
https://tuse-sm.webcindario.com/Notas_Clase/05-Tecnicas-de-codificacion-de-la-
se%C3%B1al2019.pdf
https://www2.ulpgc.es/hege/almacen/download/27/27362/2_2_comunic_b_base.pdf
https://www.youtube.com/watch?v=30rNnzogmn0&ab_channel=AliMuqaibel
https://www.itmerida.mx/panel/posgrado/archivos/mi/Fundamentos%20de%20Telecomunicaciones
%20Unidad%201%20(1).pdf
https://ocw.bib.upct.es/pluginfile.php/6615/mod_resource/content/1/Intro_a_Tx_de_InformacionI.pd
f
https://dialnet.unirioja.es/descarga/articulo/6523323.pdf