Sunteți pe pagina 1din 56

CURSO DE LA UNIDAD DE POSTGRADO Y SEGUNDA

ESPECIALIZACIÓN

EEE-10

SISTEMAS DE COMUNICACIONES
INALÁMBRICAS
Oscar Llerena
oscar.llerena.c@gmail.com
TEMARIO:

1. GNURadio: Área de Trabajo.


2. Construyendo un Flowgraph.
3. Construyendo otro Flowgraph.
4. Sampling.
5. Software Defined Radio.
6. Construyendo un Sistema de Comunicación Digital … GNU Radio.
GNURADIO: ÁREA DE TRABAJO.

Una variable puede


contener cualquier
expresión Python,
Workspace esta puede ser una
variable, un valor
numérico, un string,
etc.

El ID sirve para
referenciar dicha
variable
GNURADIO: ÁREA DE TRABAJO.

Lista de Bloques:

CTRL + F
GNURADIO: ÁREA DE TRABAJO.

Consola de comandos

CTRL + R
GNURADIO: ÁREA DE TRABAJO.

Editor de variables

CTRL + E
GNURADIO: ÁREA DE TRABAJO.
Canvas Options

QT GUI
WX GUI
HIER BLOCK
(BLOQUE JERÁRQUICO)
GNURADIO: ÁREA DE TRABAJO.

Descripción General

IMPORTANTE:

QT GUI
WX GUI
HIER BLOCK
(BLOQUE JERÁRQUICO)
GNURADIO: ÁREA DE TRABAJO.

Descripción General

IMPORTANTE:

QT GUI
WX GUI
HIER BLOCK
(BLOQUE JERÁRQUICO)
Creando un Flowgraph
Source, Throttle, Visualización en el Dominio del Tiempo y en el Dominio Frecuencia.

1. Construir el siguiente gráfico de control de flujo (Flowgraph).

Archivo: CreandoFlowgraph.grx

* Buscar los bloques por el nombre y arrastrarlos al área de trabajo (CTRL+F).


* Conectar los bloques uniendo puerto de salida con puerto de entrada (Clicks).
Creando un Flowgraph
Source, Throttle, Visualización en el Dominio del Tiempo y en el Dominio Frecuencia.

1. Parámetros del Signal Source.


ID: Identificador del bloque.

Output Type: En este caso escoger Float


pues trabajaremos con una señal sinusoidal
en el dominio de los números reales.

Sample Rate: frecuencia de muestreo.

Waveform: Escoger “Cosine” (función coseno)

Frequency: colocar “fm”. Frecuencia de lo que


será la onda moduladora.

Amplitud: Amplitud de la onda, por defecto 1.

Offset: El desfase (la fase) de esta función


coseno es por defecto igual a 1.
Creando un Flowgraph
Source, Throttle, Visualización en el Dominio del Tiempo y en el Dominio Frecuencia.

1. Parámetros del bloque Throttle.

Waveform: Escoger “Cosine” (función coseno)

Sample Rate: Para el caso del bloque


Throttle, este parámetro indica la velocidad (en
términos de muestras/seg) a la cual se
procesan las muestras y se pasan al siguiente
bloque. Si por ejemplo el Sample Rate de un
bloque Throttle es igual a 200k, entonces se
podría decir el bloque Throttle recibe y envía
200 000 muestras por segundo, sirve como
buffer para el procesamiento computacional.
Creando un Flowgraph
Source, Throttle, Visualización en el Dominio del Tiempo y en el Dominio Frecuencia.

1. Multiply Const && Add Const.

Multiply Const:
recibe muestras, las multiplica por una
constante con el propósito de amplificarlas, y
las pasa al sgte bloque.

Add Const:
recibe muestras, les suma una constante y las
pasa al siguiente bloque.
Creando un Flowgraph
Source, Throttle, Visualización en el Dominio del Tiempo y en el Dominio Frecuencia.

1. QT GUI TIME SINK. Visualizador en el dominio del tiempo.

Name: Nombre del gráfico

Number of Points: Número de puntos de la


FFT - Fast Fourier Transform.

Sample Rate: frecuencia de muestreo.

Autoscale: Permite escalar el gráfico de modo


que se visualiza toda la onda.

GUI Hint: Esta opción sirve para posicionar el


visualizador (scope) junto con otros scopes
dentro de un Widget.
Creando un Flowgraph
Source, Throttle, Visualización en el Dominio del Tiempo y en el Dominio Frecuencia.

1. QT GUI FREQUENCY SINK. Visualizador en el dominio de la frecuencia.


Name: Nombre del gráfico
-
Number of Points: Número de puntos de la
FFT.

Sample Rate: frecuencia de muestreo.

Autoscale: Permite escalar el gráfico de modo


que se visualiza toda la onda.

GUI Hint: Esta opción sirve para posicionar el


visualizador (scope) junto con otros scopes
dentro de un Widget en el orden explicado en
el slide del bloque QT GUI Tab Widget.

Adicional:
En la pestaña de Config se puede habilitar
para que aparezca el panel de control (Control
Panel) de este Widget (scope).
Creando un Flowgraph
Source, Throttle, Visualización en el Dominio del Tiempo y en el Dominio Frecuencia.

Bloques:
QT GUI RANGE Los bloques como el SOURCE SIGNAL
poseen, por ejemplo, el parámetro
“Frequency” asociado a una variable “fm” (en
alución a la frecuencia de la señal
moduladora). Esta variable puede fijarse a un
sólo valor si usamos el bloque “Variable”. Sin
embargo, si deseamos poder modificar esta
variable sobre un rango determinado,
entonces podemos usar el Bloque QT GUI
Range. Este es un bloque con el que se puede
establecer una variable sobre un rango de
valores.

ID: variable
Default Value: Valor por defecto de la variable.
Start: Inicio del Rango de valores.
Stop: Fin del Rango.
Step: Discretización del rango de valores.
Creando un Flowgraph
Source, Throttle, Visualización en el Dominio del Tiempo y en el Dominio Frecuencia.

Bloques: El bloque QT GUI Tab Widget tiene como


QT GUI Tab Widget funcion presentar un gráfico del tipo vector vs
vector. Por ello podemos visualizar una
función en el dominio del tiempo ó en el
dominio de la frecuencia. Ayuda a ordenar los
gráficos que producen los bloques QT GUI
Time Sink y QT GUI Frequency Sink.

* ID: variable con la cual se referenciará a este


Widget en los bloques QT GUI Time Sink/QT
GUI Frequency Sink. Por ejemplo, en el
Bloque QT GUI Time Sink, en la opción de
GUI Hint colocaremos “tab@0“, o “tab@1“ o “
tab@2“ dependiendo de que pestaña
deseamos que se visualice. Lo mismo para el
QT GUI Frequency Sink.

* Label 0, 1, 2 es el texto con el que se


presentará los gráficos. No son variables para
referenciar a los gráficos.
Creando un Flowgraph
* El hecho de añadir bloques, configurar sus
parámetros, unir bloques con otros bloques y
demás configuraciones es en realidad añadir
objetos (clases), configurar variables de
entorno local de estos objetos (clases),
establecer vínculos entre estos objetos, y
demás funciones que se puedan programar
entre objetos (clases). La interface gnuradio-
companion permite traducir este flujograma de
bloques en un código en lenguaje python
(top_block.py) el cual puede ser visualizado
con el comando cat top_block.py en el
terminal (primero tienen que ubicarse en la
carpeta donde se encuentre este archivo,
“Cómo navegar el directorio de linux desde el
terminal” como búsqueda en google ayudará
en este punto).

* Si desean profundizar/estudiar el código,


puede instalarse un editor para programación:
Sigan los pasos apt en
https://www.sublimetext.com/docs/3/linux_reposi
tories.html#apt
sigan el channel Stable. Luego de instalado,
pueden ejecutar con subl top_block.py
Creando un Flowgraph
* El hecho de añadir bloques, configurar sus
parámetros, unir bloques con otros bloques y
demás configuraciones es en realidad añadir
objetos (clases), configurar variables de
entorno local de estos objetos (clases),
establecer vinculos entre estos objetos, y
demás funciones que se puedan programar
entre objetos (clases). La interface gnuradio-
companion permite traducir este flujograma de
bloques en un código en lenguaje python
(top_block.py) el cual puede ser visualizado
con el comando cat top_block.py en el
terminal (primero tienen que ubicarse en la
carpeta donde se encuentre este archivo,
“Cómo navegar el directorio de linux desde el
terminal” como búsqueda en google ayudará
en este punto).

* Si desean profundizar/estudiar el código,


puede instalarse un editor para programación:
Sigan los pasos apt en
https://www.sublimetext.com/docs/3/linux_reposi
tories.html#apt
sigan el channel Stable. Luego de instalado,
pueden ejecutar con subl top_block.py
Creando un Flowgraph
1. Generar el código python 2. Ejecutar el flowgraph.

Control Panel activado:

En el QT GUI Frequency
Sink, en la pestaña de
“Config” activar Control
Panel.

Experimentar con las


diferentes opciones de
visualización.

Experimentar variando los


parámetros.
Creando un Flowgraph
Luego de entender los pasos básicos para construir un flowgraph, es tiempo de
entender algunos conceptos propios del procesamiento de datos.

Los flowgraphs son bloques a través el cual fluye data. Los bloques son los nodos
donde se procesa la señal. Idealmente, cada bloque realiza una tarea – de esta
manera GNU Radio se mantiene modular y flexible. Los bloques son usualmente
escritos en C++ (ó Python).

Los bloques se conectan a través de sus puertos. El primer bloque no tiene un puerto
de entrada, produce muestras. El último bloque no tiene puerto de salida.

En este flowgraph, el Audio Source toma muestras


de la tarjeta de sonido, está conectado al driver de
la tarjeta de sonido y toma muestras de audio y las
pasa a través de su puerto de salida hacia el filtro
pasabajas y finalmente pasan al bloque Wav File
Sink que pasa estas muestras a un archivo .wav.

* Variar la frecuencia de muestreo y la frecuencia


de muestreo del bloque Wav File Sink, escuchar las
muestras especialmente en los casos en que la
frecuencia de muestreo sea mayor a 8KHz.

Archivo: audio_recorder.grc
Creando un Flowgraph
En genera, se denomina item a todo lo que sale de un bloque. En ejemplo anterior, un
item vendría a ser un valor real que representa a una muestra producida por el driver
de audio. Sin embargo, un item puede ser cualquier cosa que pueda representarse
digitalmente. Los tipos más comunes de muestras son las muestras reales, las
muestras complejas (software defined radio), y los del tipo entero, y vectores del tipo
escalar.

Para entender este último concepto, considerar un análisis FFT. Digamos que
queremos realizar una FFT a una señal antes de que se grabe en un archivo. Por
supuesto, necesitamos un cierto número de muestras al momento de calcular un FFT;
diferente al caso de los filtros, no funciona en base a la frecuencia de muestreo.

Archivo: items.grc

Entran 1024 muestras Sale 1 vector de 1024 muestras


complejas <> 1024 items. complejas <> 1 item.
Creando un Flowgraph
Hay un nuevo bloque “Stream to Vector”. Este bloque toma 1024 muestras (items) y
crea un vector de 1024 muestras (1 item). Los items resultantes de la FFT compleja
son luego llevados a su magnitud al cuadrado; el cual es un tipo de data real (note
cómo se usa diferentes colores en los puertos para indicar diferente tipo de datos).

Recordar que un item puede ser cualquier cosa, una muestra, un conjunto de bits, un
conjunto de coeficientes de un filtro, etc.

El bloque FFT toma 1 vector Entra 1 vector de 1024 Sale 1 valor real, el
de 1024 muestras complejas a muestras complejas y valor de la magnitud
la vez, las procesa y las envía se calcula su magnitud cuadrada del vector
al siguiente bloque ... … que ingresó

Entran 1024 muestras Sale 1 vector de 1024 muestras


complejas <> 1024 items. complejas <> 1 item.
Creando otro Flowgraph …
Bloques:

* Opciones
* Variable
* Signal Source
* QT GUI Time Sink
* QT Gui Frequency Sing
* Throttle

El Sample Rate de un bloque


Throttle es usado para
controlar el flujo de muestras
que van de un bloque a otro.

El Sample Rate de un bloque


que no sea el Throttle es un
parámetro usado en el
cálculo de procesamiento
digital de la señal.
Creando otro Flowgraph …
Bloques:

* Opciones
* Variable
* Signal Source
* QT GUI Time Sink
* QT Gui Frequency Sing
* Throttle

El Sample Rate de un bloque


Throttle es usado para
controlar el flujo de muestras
que van de un bloque a otro.
Simplemente un ejemplo
El Sample Rate de un bloque
que no sea el Throttle es un
parámetro usado en el
cálculo de procesamiento
digital de la señal.
Creando otro Flowgraph …
Creando otro Flowgraph …
Bloques:
64 puntos de input
64 puntos de salida

Cuando vemos la FFT en Gnuradio,


vemos la representación de la
Potencia de la FFT.

Vemos el contenido frecuencial de la


señal en el tiempo.

Veamos que sucede cuando la


frecuencia de la señal conseno
aumenta hasta llegar a la frecuencia
de muestreo.
SAMPLING
Teorema de Nyquist:
“Cualquier señal puede ser representada por muestras discretas si la frecuencia con
que se obtuvieron (muestreo) es por lo menos el doble del ancho de banda de la
señal”.

- Para visualizar mejor el concepto de muestreo, imaginar que tenemos este esquema.
- Eje horizontal = frecuencia // Eje vertical: energía de la señal.
- Zonas de Nyquist
SAMPLING
La línea roja representa el plot del espectro de frecuencias de la señal a ser
muestreada.
En este caso el ancho de banda de la señal es mucho mayor que la frecuencia de
muestreo fs.

“Aliasing”

Se puede ver que las componentes frecuenciales de otras zonas de


Nyquist se vuelven “alias” o se superponen a las frecuencias que
corresponden a la primera zona de Nyquist.
SAMPLING
La línea roja representa el plot del espectro de frecuencias de la señal a ser
muestreada.
En este caso el ancho de banda de la señal es mucho mayor que la frecuencia de
muestreo fs.

“Aliasing”

Una vez que ocurre esto durante el muestreo, las muestras resultantes están
corruptas y la señal original no podrá ser recuperada. El término “aliasing” es
apropiado porque luego del muestreo, una componente frecuencial
correspondiente a las zonas de frecuencias superiores ahora aparece en una zona
de frecuencias inferiores, un alias.
SAMPLING
fs / 2 > B

fs > 2*B

Un señal en bandabase tiene componentes frecuenciales que van desde 0 hasta alguna
frecuencia máxima.

Para prevenir el aliasing al momento de hacer el muestreo de una señal en banda base,
hay que asegurarse de que todo el espectro de frecuencias de la señal comprenda una
zona de Nyquist.

Incrementar las frecuencia de muestreo de modo que todas las componentes


frecuenciales de la señal bandabase estén por debajo de fs/2.
SAMPLING

Consideremos una señal pasabanda. Por ejemplo:

Un dispositivo recepciona señales con frecuencia IF de 70 MHz y ancho de


banda de 10 MHz. En este caso la señal contiene componentes
frecuenciales desde 65 a 75 MHz.

Si siguieramos la “regla” aplicada para el muestreo en bandabase, diriamos


que debemos muestrear nuestra señal IF a una frecuencia igual al doble de
la componente frecuencial más alta, es decir a una tasa de muestreo de por
lo menos 150 MHz.
SAMPLING

El submuestreo nos permite usar el “aliasing” para nuestra ventaja.

Si Fs = 40 MHz. Podríamos ver la zona 4, que va desde 60 MHz a 80 MHz,


conteniendo nuestra señal IF (65 a 75 MHz)

En resumen:
El muestreo en bandabase requiere que la frecuencia de muestreo sea por lo menos
el doble del ancho de banda de la señal. Es decir, que todas las componentes
frecuenciales de la señal comprendan la primera zona de Nyquist.
SOFTWARE DEFINED RADIO
GNURadio es un entorno en el cual se pueden construir sistemas de
comunicaciones mediante bloques. Cada uno de estos bloques recibe una señal,
la procesa y entrega la señal procesada al siguiente bloque.

Concepto Clave:
Radio definido por Software <> Software Defined Radio <> SDR

¿Qué es SDR?
Es un paradigma, un concepto, “una forma” de diseñar/implementar sistemas de
comunicaciones que usan el radio-espectro (radiofrecuencia). Creador: Joe
Mitola.

Definición:
Radio: Cualquier dispositivo que transmita y/o reciba señales en el espectro de la
radio frecuencia (espectro electromagnético) para facilitar la transferencia de
información. Celulares, computadoras, televisiones, dispositivos de control, etc.

Joe Mitola: una clase de radio que puede ser reprogramado (secuencia de
pasos) y reconfigurado (frecuencia / ancho de banda) a través de software.
SOFTWARE DEFINED RADIO
Mitola visualizaba que el dispositivo SDR ideal sería el que consistiese de:

Transmisor: Receptor:
Coversor DA – Antena. <------------> Antena - Conversor AD.

RECEPTOR TRADICIONAL:

- Amplificación para compensar las pérdidas producto de la transmisión.


- Ajuste de frecuencia para “escuchar”/seleccionar la señal deseada.
- Filtrado para separar la señal deseada de otras señales.
- Demodulación.
[Esquema Heterodino Convencional]
SOFTWARE DEFINED RADIO

Luego que la señal entra a través de la antena, pasa por una etapa de amplificación a
nivel de RF en una región alrededor de la frecuencia de interés.

La señal pasa a un mezclador el cual recibe la contribución del oscilador local.


El mixer es el que se encarga de trasladar la señal a la frecuencia intermedia (IF).

Típicamente, la frecuencia del oscilador se configura a un valor que asegure que la


diferencia de este con respecto a la frecuencia de la señal deseada, sea la frecuencia
IF. Por ejemplo: Si nos interesa una estación FM que transmite en la frecuencia de
100.7 MHz y el IF es 10.7 MHz, la frecuencia del oscilador local debería ser 90 MHz.
Esto es lo que se conoce como DOWNCONVERSION.
SOFTWARE DEFINED RADIO

Un mixer traslada la modulación de una portadora a otra.

En un receptor, usualmente se da el traslado desde una frecuencia RF “alta” hacia


una frecuencia IF “baja”. En el transmisor es la inversa.
SOFTWARE DEFINED RADIO
SOFTWARE DEFINED RADIO

La siguiente etapa es el filtro pasabanda que causa atenuación en la señal en cada


componente frecuencial excepto una porción específica del espectro.

El ancho de banda de esta etapa pone los límites al ancho de banda de la señal que es
recibida.

Frecuencias centrales comunes para la etapa IF son 455 kHz y 10.7 MHz para bandas
comerciales de AM y FM respectivamente. De la misma forma, para la banda comercial
de FM, el ancho de banda es aproximanadamente 100 kHz y para el caso de AM es 5
kHz.
SOFTWARE DEFINED RADIO

Al final, el demodulador recupera la señal moduladora original proveniente de la salida


del amplificador IF (filtro) empleando una de muchas alternativas.

Por ejemplo, para AM se usa un detector de envolvente, y para FM un discriminador de


frecuencias. Procesamiento adicional de la señal depende del propósito para el cual el
receptor es diseñado. En una radio de casa común, la salida demodulada se pasa a un
amplificador de audio que es conectado a un parlante.
SOFTWARE DEFINED RADIO

El RF Tuner convierte la señal RF analógica en frecuencias IF analógicas.

El conversor ADC digitaliza la señal IF, por consiguiente, convierte la señal IF en


muestras digitales. Estas muestras pasan al DDC (Digital downconverter).

1. Mixer digital.
2. Oscilador local digital.
3. Filtro pasabajas del tipo FIR (Finite Impulse Response).
SOFTWARE DEFINED RADIO

El mixer digital y el oscilador local trasladan las muestras digitales IF a la bandabase,


aquí el filtro pasabajas FIR limita el ancho de banda de la señal final. Para la
implementación de cada una de sus partes, el DDC contiene un gran número de
multiplicadores, sumadores, y registros de desplazamiento en memoria.
SOFTWARE DEFINED RADIO

Las muestras digitales en bandabase son luego pasadas al bloque DSP


(demodulación, decodificación, etc.).

A la salida del mixer, las señales de banda ancha en alta frecuencia en la entrada del
ADC se trasladaron a DC como componentes I & Q con un desplazamiento en
frecuencia igual a la frecuencia del oscilador local.
SOFTWARE DEFINED RADIO

Esto es similar al mixer analógico de la recepción del sistema heterodino, excepto que
en el caso anterior el mixing fue hecho hacia una frecuencia IF.

Aquí, la representación compleja de la señal permite ir directo a DC.

Ajustando el oscilador local sobre su rango, cualquier porciín de la señal de entrada RF


puede ser mezclada con DC.
CONSTRUYENDO UN SISTEMA DE
COMUNICACIÓN DIGITAL … EN GNURADIO
CONSTRUYENDO UN SISTEMA DE
COMUNICACIÓN DIGITAL … EN GNURADIO

1. Sistemas Lineales

2. Modulación de Amplitud

3. Modulación de Fase

4. Teoría de Probabilidades, Procesos Estocásticos

5. Caracterización del Ruido del Canal

6. Transición Analógico a Digital

7. Comunicaciones Digitales en Banda Base

8. Comunicaciones Digitales en Banda Pasante (Constelaciones de Señal


PSK, FSK, QAM, QAM dif)
CONSTRUYENDO UN SISTEMA DE
COMUNICACIÓN DIGITAL … EN GNURADIO

Modulación de Amplitud
CONSTRUYENDO UN SISTEMA DE
COMUNICACIÓN DIGITAL … EN GNURADIO

Modulación de Frecuencia
HOY

1. Conversión de Paralelo a Serial.


Texto en código ASCII ----> Símbolos M-arios

2. Conversión de Símbolos a Ondas.


Símbolos M-arios a Señal PAM (Pulse Amplitude
Modulation)

3. Señal PAM ---> Transmisión a un canal con


ruido.

4. Diseño de Filtro en el Receptor de modo que


se maximiza el SNR de la señal recibida.
CONVERSIÓN PARALELO A SERIAL DE UN
TEXTO EN CÓDIGO ASCII.

Archivo: pulse_amplitude_modulation.grc
CONVERSIÓN DE CÓDIGO ASCII A SÍMBOLOS
Bloque Jerárquico.
Archivo: asc2sym_bf.grc
GENERACIÓN DE SÍMBOLOS M-arios EN
ESQUEMA POLAR Y UNIPOLAR.
CONVERSIÓN DE SÍMBOLOS A CÓDIGO ASCII
Bloque Jerárquico.
Sistema de Transmisión Serial Discreto en el
Tiempo en Banda Base
CONVERSIÓN DE SÍMBOLO DISCRETO EN EL
TIEMPO A ONDA CONTÍNUA EN EL TIEMPO
MEDIANTE PULSE AMPLITUDE MODULATION
(PAM).
FIN

S-ar putea să vă placă și