escuela de electronica y telecomunicaciones `sistema de

Anuncio
1
ESCUELA DE ELECTRONICA Y TELECOMUNICACIONES
‘SISTEMA DE ADQUISICIÓN Y MONITOREO DE SEÑALES
ELÉCTRICAS, BASADO EN LA UTILIZACIÓN DE UNA
FPGA, PARA ANÁLISIS Y CARACTERIZACIÓN DE
SEÑALES EN EL RANGO DE FRECUENCIAS BAJAS’
AUTOR:
Axel Alejandro Ontaneda Febres
Tesis previa a la obtención del
Título de Ingeniero en
Electrónica
y
Telecomunicaciones
DIRECTOR:
Ing. Carlos Carrión
LOJA – ECUADOR
2
2009
DECLARACIÓN DE AUTORÍA DEL TEMA DE TESIS
Todos las conceptos, opiniones, versiones, resultados y
conclusiones que constan en el presente trabajo
investigativo, son de responsabilidad exclusiva de las
autoras.
…………………….
El Autor
3
INTRODUCCIÓN
Las señales eléctricas presentes en nuestro medio nos pueden brindar y transmitir
diferentes tipos de información, pero dependiendo del análisis que se haga a éstas
señales se podrá adquirir o entender tal información. Es así, que en el dominio
temporal se puede obtener información de la señal tal como su amplitud, periodo y
fase, mientras que en el dominio de la frecuencia se obtiene la densidad espectral
dependiendo de la frecuencia a la que oscile esta señal, y además permite conocer
la relación entre esas componentes. Los osciloscopios y los analizadores de
espectro, son sistemas que permiten hacer un análisis de la señal tanto en el
dominio temporal como en el frecuencial, y además son herramientas muy
utilizadas en electrónica y en telecomunicaciones, ya que les permite visualizar y
entender las distintas señales eléctricas presentes en nuestro medio.
Se trabajará los diseños de los sistemas de adquisición, monitoreo y procesamiento
de señales a través de FPGAs (Field Programmable Gate Arrays) como su nombre
lo indica, son reconfigurables y reprogramables, lo que permite integrar en un solo
dispositivo varios programas o permitir actualizar el código presente en él, sin tener
que utilizar otro hardware lo cual optimiza los recursos y herramientas.
Debido a la gran utilización de éstas herramientas, se decidió involucrar en un
sistema de adquisición y monitoreo de señales eléctricas, a través de un sistema
electrónico basado en la utilización de una FPGA, para análisis y caracterización
de señales, para esto se desarrollo algoritmos utilizando herramientas de diseño de
sistemas digitales como lo son Xilinx 8.1i, MATLAB 7.1 y System Generator 8.1 de
Xilinx, estos algoritmos pueden ser fácilmente descargados en las FPGAs. Para la
implementación de dichos sistemas contamos con dos tarjetas como lo son la
FPGA xc3s200 Spartan 3 y la tarjeta xc2vp30 XUP Virtex II Pro el uso de cada una
de ellas depende de las características del diseño que pretendemos alcanzar.
4
OBJETIVO GENERAL Y OBJETIVOS ESPECÍFICOS
Objetivo General
El objetivo general de este trabajo es el diseño de un sistema de monitorización y
análisis de señales eléctricas en el dominio del tiempo para el rango de frecuencia
de 0 – 3 KHz, y el diseño de un sistema de análisis en el dominio de frecuencia en
el rango de 0 – 12 KHz. A través de diseño de algoritmos hardware, capaces de
adquirir señales, procesarlas y visualizarla en un sistema VGA con la utilización de
una FPGA, se podrá observar importantes características de la señal como la de
Amplitud, Periodo y el Espectro de la señal.
Objetivos Específicos
 Diseñar la interfaz de acondicionamiento de la señal, para ingreso de la señal a
diferentes escalas por medio de un circuito de adecuación, permitiendo la
digitalización apropiada de la señal analógica, a través de un circuito de
protección y una adecuada conversión analógica a digital.
 Diseñar los algoritmos para adquisición de señales, procesamiento de la señal y
visualización a través de un monitor VGA. En el procesamiento de la señal se
dará formato a los datos para la implementación de memorias de
almacenamiento, con lo cual se permitirá tomar estos datos y hacer una
representación eficiente en el monitor VGA.
 Diseñar los algoritmos necesarios, para la implementación de un sistema que
permita extraer las características espectrales de una señal variante en el
tiempo por medio del algoritmo FFT, este tendrá la capacidad de trabajar en un
ambiente de Co-Simulación, para comprobar su funcionalidad en un entorno
hardware.
5
 Comprobar las funcionalidades de los diseños hardware con sistemas
Osciloscopios y Analizador de Espectros, con el objetivo de validar los
resultados. Además de validar este tipo de tecnología para la fabricación de
estos sistemas de monitoreo.
CONTENIDO
DECLARACIÓN DE AUTORÍA DEL TEMA DE TESIS .................................................................I
INTRODUCCIÓN ...........................................................................................................................II
OBJETIVO GENERAL Y OBJETIVOS ESPECÍFICOS ...............................................................III
CONTENIDO ................................................................................................................................ IV
LISTA DE FIGURAS .................................................................................................................... VI
LISTA DE TABLAS .................................................................................................................... VII
CAPÍTULO I:
ANÁLISIS EN EL DOMINIO TEMPORAL Y EN EL DOMINIO DE LA FRECUENCIA ..................1
1.1 INTRODUCCIÓN ......................................................................................................... 1
1.2 DOMINIO TEMPORAL .................................................................................................. 2
1.2.1 AMPLITUD DE SEÑALES ........................................................................................... 3
1.2.2 FASE DE SEÑALES ................................................................................................. 4
1.3 DOMINIO DE LA FRECUENCIA ...................................................................................... 5
1.4 TRANSFORMADA DE FOURIER ................................................................................... 5
1.4.1 ALGORITMOS DE LA FFT ......................................................................................... 7
1.4.1.1 RADIX-4 .................................................................................................... 7
1.4.1.2 RADIX-2 .................................................................................................... 8
1.5 INSTRUMENTOS DE MEDICIÓN .................................................................................... 9
1.6 ARQUITECTURA DE UN FPGA................................................................................... 10
1.6.1 CARACTERÍSTICAS TÉCNICAS DE LOS FPGA SPARTAN-3 Y VIRTEX II PRO ............... 12
CAPÍTULO II: IMPLEMENTACIÓN DE
ALGORITMOS EN LA FPGA .................................................... 14
2.1 INTRODUCCIÓN ....................................................................................................... 14
2.2 DISEÑO DEL SISTEMA DE MONITORIZACIÓN DE SEÑALES EN EL TIEMPO ...................... 14
2.2.1 ETAPA DE PROCESAMIENTO EN LA FPGA .............................................................. 17
2.2.1.1 MÓDULO DE ADQUISICIÓN ........................................................................ 18
2.2.1.2 MÓDULO DE DE CONTROL ........................................................................ 19
6
2.2.1.3 MÓDULO DE VISUALIZACIÓN DE VGA ........................................................ 22
2.3 DISEÑO DEL SISTEMA DE MONITORIZACIÓN DE SEÑALES EN FRECUENCIA ................... 24
2.3.1 MÓDULO DE FILTRADO Y DIEZMADO ...................................................................... 26
2.3.2 MÓDULO DE ENVENTANADO .................................................................................. 28
2.3.3 MÓDULO DE LA FFT ............................................................................................. 28
2.3.4 MÓDULO DE VISUALIZACIÓN .................................................................................. 30
CAPÍTULO III: RESULTADOS........................................................................................................ 32
3.1 RESULTADOS EN EL SMST ...................................................................................... 32
3.1.1 CIRCUITO DE ATENUACIÓN Y ACONDICIONAMIENTO ................................................ 32
3.1.2 DIAGRAMA DE TIEMPOS EN EL MÓDULO DE ADQUISICIÓN ........................................ 33
3.1.3 VISUALIZACIÓN EN EL VGA E IMPLEMENTACIÓN ...................................................... 34
3.2 RESULTADOS EN EL SMSF ...................................................................................... 38
3.2.1 BLOQUE DE FILTRADO .......................................................................................... 38
3.2.2 BLOQUE DE ENVENTANADO................................................................................... 40
3.2.3 BLOQUE DE VISUALIZACIÓN E IMPLEMENTACIÓN EN EL FPGA ................................. 42
CAPÍTULO IV: CONCLUSIONES Y RECOMENDACIONES..................................................................
45
4.1 CONCLUSIONES ...................................................................................................... 45
4.2 RECOMENDACIONES ................................................................................................ 47
BIBLIOGRAFÍA .......................................................................................................................... 49
ANEXOS ..................................................................................................................................... 50
7
LISTA DE FIGURAS
FIGURA 1.1 DOMINIO DEL TIEMPO Y DE FRECUENCIA DE SEÑALES ......................................................2
FIGURA 1.2 AMPLITUD DE UNA SEÑAL ELÉCTRICA ..............................................................................4
FIGURA 1.3 FASE DE UNA SEÑAL ELÉCTRICA CON IGUAL FRECUENCIA ................................................4
FIGURA 1.4 RADIX – 4, BURST E/S ....................................................................................................8
FIGURA 1.5 RADIX – 4, RECURSOS MÍNIMOS......................................................................................9
FIGURA 1.6 ARQUITECTURA DE LOS FPGA ..................................................................................... 12
FIGURA 2.1 DIAGRAMA DE BLOQUES GENERAL DEL SMST .............................................................. 16
FIGURA 2.2 DIAGRAMA DE BLOQUES DEL SMST EN EL FPGA ......................................................... 17
FIGURA 2.3 DIAGRAMA DEL MÓDULO DE ADQUISICIÓN..................................................................... 18
FIGURA 2.4 DIAGRAMA DEL MÓDULO DE CONTROL.......................................................................... 20
FIGURA 2.5 DIAGRAMA DEL MÓDULO DE VISUALIZACIÓN VGA ......................................................... 22
FIGURA 2.6 DIAGRAMA DE BLOQUES GENERAL DEL SMSF .............................................................. 25
FIGURA 2.7 DISEÑO DEL SMSF EN SYSTEM GENERATOR ................................................................ 25
FIGURA 2.8 DISEÑO DEL BLOQUE DE FILTRADO Y DIEZMADO EN SYSTEM GENERATOR ..................... 26
FIGURA 2.9 DISEÑO DEL BLOQUE DE ENVENTANADO Y SU CONFIGURACIÓN ..................................... 28
FIGURA 2.10 DISEÑO DEL BLOQUE DE FFT Y SU CONFIGURACIÓN ................................................... 29
FIGURA 2.11 CÁLCULO DE LA MAGNITUD DE LA FFT. ....................................................................... 30
FIGURA 2.12 VISUALIZACIÓN DE UNA SEÑAL CON MATLAB................................................................ 31
FIGURA 3.1 SEÑALES DEL CIRCUITO DE ATENUACIÓN Y ACONDICIONAMIENTO .................................. 33
FIGURA 3.2 DIAGRAMA DE TIEMPO PARA EL S2PCTRL EN EL MÓDULO DE ADQUISICIÓN ....................... 34
FIGURA 3.3 VISUALIZACIÓN DE LA SEÑAL EN EL VGA ....................................................................... 35
FIGURA 3.4 VISUALIZACIÓN DE LA SEÑAL EN EL VGA Y OSCILOSCOPIO............................................. 35
FIGURA 3.5 SMST-DISPOSITIVO TERMINADO.................................................................................. 37
FIGURA 3.6 FLUJO DE TRABAJO DE LOS FILTROS PARA UNA SEÑAL DE 2.5 KHZ ................................ 38
FIGURA 3.7 FLUJO DE TRABAJO DE LOS FILTROS PARA UNA SEÑAL DE 4 KHZ. .................................. 39
FIGURA 3.8 GENERACIÓN DE LA VENTANA DE BLACKMAN EN SYSGEN ............................................. 40
FIGURA 3.9 TIPOS DE ENVENTANADOS EN DOMINIO DE TIEMPO Y FRECUENCIA .................................. 41
FIGURA 3.10 VISUALIZACIÓN DE UNA SEÑAL: CON SYSGEN Y CON MATLAB . ..................................... 42
FIGURA 3.11 GENERACIÓN DE LA CO-SIMULACIÓN .......................................................................... 43
FIGURA 3.12 DISEÑO IMPLEMENTADO EN EL FPGA CS2VP30 BAJO CO-SIMULACIÓN ......................... 44
8
LISTA DE TABLAS
TABLA 1.1
TABLA 2.1
TABLA 2.2
TABLA 2.3
TABLA 3.1
TABLA 3.2
TABLA 3.2
CARACTERÍSTICAS DE LOS DISPOSITIVOS....................................................................... 13
SEÑALES DE MAYOR IMPORTANCIA................................................................................ 18
MODOS DE OPERACIÓN DEL SMST ............................................................................... 21
CARACTERÍSTICAS DE LOS FILTROS ............................................................................... 27
MEDICIONES CON EL OSCILOSCOPIO COMERCIAL Y CON EL SMST BASADO EN EL FPGA . 37
CARACTERÍSTICAS DE LAS VENTANAS ESPECTRALES ..................................................... 41
RECURSOS ESTIMADOS DE HARDWARE PARA EL DISEÑO DEL SMSF .............................. 41
CAPITULO I
Análisis en el Dominio Temporal y en el Dominio de la Frecuencia.
En este capítulo se presentan las características principales de interés en
ingeniería, tanto para señales en el tiempo como en frecuencia. Los principales
factores que se pueden encontrar en una señal eléctrica (Amplitud, Frecuencia,
Periodo) son descritos a continuación.
1.1 Introducción.
Para visualizar fenómenos transitorios, así como formas de ondas en circuitos
eléctricos y electrónicos se utiliza un osciloscopio. Un osciloscopio puede medir un
gran número de fenómenos, provisto del transductor adecuado será capaz de
darnos el valor de una presión, ritmo cardiaco, potencia de sonido, nivel de
vibraciones en un vehículo, etc [1].
9
No obstante, a pesar de las posibles diferencias existentes, todos los
osciloscopios presentan unos principios de funcionamiento comunes. Los de uso
más generalizado son los que podríamos definir como osciloscopios básicos que
son aquellos que presenta información de la amplitud y frecuencia de la señal.
El análisis de una señal en el modo temporal o en el dominio del tiempo con
ayuda de un osciloscopio permite conocer parte de la información contenida en una
señal compleja, como es el caso de una señal modulada. En el modo temporal no
se puede conocer las componentes de frecuencia que conforman a la señal
compleja, pero si se puede visualizar características importantes de ella tales como
la amplitud de la señal y su periodicidad.
El Analizador de Espectros es un instrumento que se basa en el análisis en el
dominio de la frecuencia y que permite ver en una pantalla en forma simple y rápida
las frecuencias de las armónicas que componen una señal compleja, y además
permite conocer la relación entre esas componentes, mediante bastones
presentados en la pantalla, cuya amplitud es proporcional a la amplitud de los
armónicos. Con éste instrumento se puede llegar a frecuencias muy altas con gran
precisión, pudiéndose ver hasta señales de Gigahertz. La representación en el
dominio de la frecuencia de una señal sinusoidal pura será un bastón único, tal
como se muestra en al grafica de la figura 1.1.
10
Figura 1.1 Dominio del Tiempo y de Frecuencia de Señales.
Fuente: U.T.N.-F.R.M., Mediciones con Analizador de Espectro de RF-TP6, 2002.
1.2 Dominio Temporal.
Existe un término general para describir un patrón que se repite en un
determinado tiempo: señal periódica. Existen señales de sonido, señales oceánicas,
señales cerebrales y por supuesto, señales de tensión conocida también como
señales eléctricas. Un osciloscopio mide estas últimas [2]. El osciloscopio no es
más que un instrumento para la visualización y medición de señales eléctricas en el
dominio del tiempo. En otras palabras, se pueden ver formas de una señal en él.
Una señal eléctrica siempre se presentará con el tiempo en el eje horizontal (X) y la
amplitud en el eje vertical (Y).
La forma de onda nos proporciona una valiosa información sobre la señal. En
cualquier momento podemos visualizar la amplitud que alcanza y, por lo tanto,
saber si el voltaje ha cambiado en el tiempo (si se observa, por ejemplo, una línea
horizontal podremos concluir que en ese intervalo de tiempo la señal es constante).
Con la pendiente de las líneas diagonales, tanto en flanco de subida como en flanco
de bajada, se puede conocer la velocidad en el paso de un nivel a otro, pueden
observarse también cambios repentinos de la señal (ángulos muy agudos)
generalmente debidos a procesos transitorios [2]. Es así que en el dominio temporal
los elementos más característicos de una señal eléctrica son: la amplitud, la fase y
la frecuencia.
1.2.1 Amplitud de Señales [2].
Voltaje es la diferencia de potencial eléctrico entre dos puntos de un circuito.
Normalmente uno de esos puntos suele ser tierra (GND, 0v), pero no siempre, por
ejemplo se puede medir el voltaje pico a pico de una señal eléctrica (Vpp) como la
diferencia entre el valor máximo y mínimo de esta. La palabra amplitud significa
generalmente la diferencia entre el valor máximo de una señal y tierra. En la serie
11
de valores que experimenta una corriente alterna o una fuerza electromotriz
senoidal, en el transcurso de un ciclo, el más alto posible valor es por ejemplo
cuando el inductor corta el mayor número posible de líneas de fuerza. Este valor se
denomina "Valor máximo" y es positivo a 90 º y negativo a 270 º eléctricos. Se llama
valor instantáneo al valor de la corriente o del voltaje en un momento cualquiera. El
valor máximo es un valor instantáneo, lo mismo que el valor de cero y cualquier otro
comprendido entre estos dos.
Desde el punto de vista práctico, es de gran importancia el "valor efectivo' o
RMS, que es el valor que registran los instrumentos de medición para corriente
alterna y se lo puede calcular multiplicando 0.707 (también 1/√2) por el voltaje pico
de la señal. El valor RMS es el que produce el mismo efecto térmico (de calor) que
el de una corriente directa. El valor medio de una señal alterna senoidal pura es
cero, dado que el semi-ciclo positivo es igual y de signo contrario al semi-ciclo
negativo. De ahí que cuando se habla de valor medio siempre se refiera al valor
medio de una semi-onda. El valor medio de una senoide simétrica se define como
la media algebraica de los valores instantáneos durante un semiperiodo. También
podemos decir que el valor medio es una ordenada tal que el área del rectángulo a
que da lugar es igual al área del semiperiodo [3].
Figura 1.2 Amplitud de una señal eléctrica.
Fuente: http://www.unicrom.com/Tut_la_corriente_alterna__.asp
1.2.2 Fase de una Señal [2].
12
La fase se puede explicar mucho mejor si consideramos la forma de la señal
como senoidal. La señal senoidal se puede extraer de la circulación de un punto
sobre un círculo de 360 º. Un ciclo de la señal senoidal abarca los 360 º.
Cuando se comparan dos señales senoidales de la misma frecuencia puede
ocurrir que ambas no estén en fase, o sea, que no coincidan en el tiempo los pasos
por puntos equivalentes de ambas señales. En este caso se dice que ambas
señales están desfasadas, pudiéndose medir el desfase con una simple regla de
tres.
Figura 1.3 Fases de una señal eléctrica con igual frecuencia.
Fuente: http://www.elo.utfsm.cl/lsb/elo102/labs/sinusoides.htm
1.3 Dominio en la Frecuencia [5].
El dominio de la frecuencia es un término usado para describir la señal en
función de la variable independiente ω, en este caso en función de un valor
frecuencial.
Un gráfico del dominio temporal muestra la evolución de una señal en el tiempo,
mientras que un gráfico frecuencial muestra las componentes de la señal según la
frecuencia en la que oscilan dentro de un rango determinado y su gráfico se
denomina espectro. Una representación frecuencial incluye también la información
sobre el desplazamiento de fase que debe ser aplicado a cada frecuencia para
poder recombinar las componentes frecuenciales y poder recuperar de nuevo la
señal original.
El dominio de la frecuencia está relacionado con la transformada de Fourier, las
cuales permiten descomponer una señal en un número finito o infinito de
frecuencias
13
1.4 Transformada de Fourier.
La transformada de Fourier [5] se utiliza para pasar al dominio frecuencial una
señal, para así obtener información que no es evidente en el dominio temporal. Se
demuestra matemáticamente que una señal periódica se puede descomponer en
una suma de senos y cosenos formando una base ortogonal, de esta forma,
señales como la voz se pueden descomponer en un sumatoria de señales
trigonométricas. El conjunto de constantes que multiplican a cada frecuencia forman
el espectro de frecuencias
Por otro lado, hay que mencionar que existen Analizadores de Espectro cuya
característica principal es contar con dispositivos digitales tales como DSPs o
FPGAs [6]. En los casos de estos dispositivos uno de los aspectos básicos de un
Analizador es la utilización de un bloque que calcule los armónicos característicos
de una señal mediante la Transformada de Fourier. En esta sección se presenta
varios métodos para computar la Transformada Discreta de Fourier (DFT)
eficazmente. En vista de la importancia de la DFT en varias aplicaciones de
procesamiento digital de señales, tales como filtración lineal, análisis de correlación,
y análisis del espectro, su cómputo eficaz es un tema que ha recibido la atención
considerable por muchos matemáticos, ingenieros y científicos.
Hablando matemáticamente la notación X(k), representa los coeficientes de
Fourier de x(n). Básicamente, el problema computacional para la DFT [7] es
calcular la secuencia {X(k)} de N números complejos estimados teniendo en cuenta
otra secuencia de datos {x(n)} de longitud N, según la fórmula,
N 1
x(n).WNkn , 0 ≤ k ≤ N-1
X(k) =
n 0
WN = e-j2π/N
(I.1)
En general, la secuencia de datos x(n) es también asumido como valores
complejos. Similarmente, la Transformada Discreta de Fourier Inversa (IDFT) se
vuelve:
14
N 1
x(n) =
1
N n 0
X (k ).WN nk , 0 ≤ n ≤ N-1
(I.2)
Así la DFT y la IDFT envuelven básicamente el mismo tipo de cálculo, por lo
que el debate de los algoritmos computacionales eficientes para la DFT es aplicable
al cálculo eficiente de la IDFT también.
Observemos que para cada valor de k, el cálculo directo de X(k) involucra N
multiplicaciones complejas (4N multiplicaciones reales) y N-1 adiciones complejas
(4N-2 adiciones reales). Por consiguiente, para computar todos los N valores de la
DFT requiere N2 multiplicaciones complejas de N2 - N adiciones complejas.
El cálculo directo de la DFT es básicamente ineficiente principalmente porque
no explota la simetría y las propiedades de periodicidad del factor de fase W N. En
particular, estas dos propiedades son:
Propiedad de Simetría:
WNk
Propiedad de Periodicidad:
N/2
WNk
=
N
=
WNk
WNk
(I.3)
(I.4)
Los algoritmos computacionalmente eficientes descritos en este sección,
conocido colectivamente como algoritmos de la Transformada Rápida de Fourier
(FFT), explotan estas dos propiedades básicas del factor de fase.
1.4.1
Algoritmos de la FFT [7].
Algunos de los algoritmos usados en la FFT serán mencionados a continuación.
El núcleo de la FFT usa la descomposición de Radix-4 y de Radix-2 para computar
la DFT. Para las dos soluciones de fase, el método de diezmado en el tiempo (DIT)
es usado, mientras que el método de diezmado en frecuencia (DIF) es usado para
la solución de streaming o transmisión continua. Cuando se usa Radix-4, la FFT
consta de etapas de log4 (N), con cada etapa contiene N/4 de Radix–4 butterflie1. El
tamaño de los puntos que no son potencia de 4 necesita una etapa de Radix-2
adicional para combinar los datos.
1
Butterflie: Variante de cálculo de Radix-4 y Radix-2 en forma de mariposa
15
Una FFT que usa Radix-2 tiene etapas de log2 (N), con cada etapa que contiene
N/2 de Radix-2 butterflie. La FFT inversa (IFFT) es computada conjugando los
factores de fase. Con esta información, se hará la comparación de los dos distintos
algoritmos empezando con el Radix-4 y luego con el Radix-2.
1.4.1.1 Radix-4 [8].
Con esta solución, el núcleo de la FFT usa un bloque de procesamiento de
Radix-4 y la cual tiene dos procesos (Figura 1.4). Un proceso está cargando y/o
descargando los datos. El segundo proceso es calcular la transformada. Los datos
de E/S y el procesamiento no son simultáneos. Cuando la FFT es iniciada, los datos
son cargados. Después de que una trama completa haya sido cargada, el núcleo
computará la FFT. Cuando el cálculo ha terminado, los datos pueden ser
descargados ahora. Durante el proceso de cálculo, los datos cargados y
descargados no pueden tener lugar al mismo tiempo. Los datos que se cargan y los
procesos de descargar pueden solaparse si los datos son descargados en dígito de
orden inverso.
16
Figura 1.4 Radix – 4, Burst E/S [9].
Fuente: Xilinx, Fast Fourier Transform v5, 2007.
1.4.1.2 Radix-2 [8].
Esta arquitectura usa un bloque de procesamiento de Radix-2 (Figura I.5) y
tiene una arquitectura Burst 2E/S como en la versión de Radix-4. Después de que la
trama de datos es cargado, el flujo de datos de entrada debe detenerse hasta que
el cálculo de la transformada sea terminado. Entonces, los datos pueden ser
descargados. Como con Radix-4, en la arquitectura Burst E/S, los datos pueden ser
simultáneamente cargados y descargado si los resultados son presentados en bit
en orden inverso. Esta solución soporta tamaños de punto N = 8 - 65536 y usa un
mínimo de bloques de memoria.
Tanto las memorias de datos como las memorias de factor de fase pueden estar
en Bloques de Memoria o Memoria Distribuida (para tamaños de punto inferior o
iguales a 1024).
2
Burst: Arquitectura cuyas entradas de datos son de transmisión continua
17
Figura 1.5 Radix – 4, Recursos Mínimos [9].
Fuente: Xilinx, Fast Fourier Transform v5, 2007.
1.5 Instrumentos de Medición.
Los instrumentos más comunes de medición y visualización de señales ya sean
en el dominio del tiempo como en el de la frecuencia, son los Osciloscopios y los
Analizadores de Espectros respectivamente. Su funcionamiento puede ser de tipo
analógico como digital, y llegando a visualizar señales de alta frecuencia (en orden
de MHz para los Osciloscopios y en GHz para los Analizadores de Espectro).
Entre las características principales de un osciloscopio es la capacidad de
visualizar señales variantes en el tiempo, así como medir su nivel de voltaje
(amplitud de la señal) y su periodicidad. Existen funciones adicionales
especialmente para los osciloscopios digitales, como las funciones Hold, Triggering,
Zoom y almacenamiento de datos en memoria. La función Hold sirve para congelar
la señal en pantalla en un tiempo determinado para así poder ver cambios
pequeños y no repetitivos de la señal a analizarse. En cambio, la función Triggering
permite poder estabilizar la señal y tener así una adecuada visualización de la
misma, esta función es muy útil para poder calcular la amplitud y frecuencia de la
señal. La función de Zoom permite realizar una ampliación de la visión de la señal
18
en factores de 10:1 a 1:16 por lo general, variando de acuerdo a los fabricantes de
cada osciloscopio. Por último, un módulo de memoria es utilizada para recopilar los
datos de una señal, lo que permite almacenar/recuperar las señales para utilizarlas
posteriormente, exportar al portapapeles y compartir dicha información con
programas de computador, imprimir los resultados y sus parámetros [15].
En cambio, entre las características principales que cuenta un Analizador de
Espectros es la visualización y medición de las componentes espectrales de una
señal. Por lo general, su escala para medir la amplitud está dada en dBm o en
escala logarítmica, existiendo analizadores con la capacidad de escoger entre estos
tipos de escala. Otra característica es el ancho de banda, llegando a trabajar en
rango de frecuencias del orden de KHz hasta los GHz, y además de contar con la
capacidad del Zoom espectral para enfocarse en una determinada zona del
espectro de una señal. Los analizadores de espectro modernos cuentan con la
habilidad de poder interactuar con el PC para transferencia y almacenamiento de
datos. Hablando ya de algunas de las aplicaciones prácticas más comunes para los
Analizadores de Espectro se puede mencionar: medidas de potencia de canal,
medidas en cables, medidas de Potencia TDMA, medidas de potencia y análisis
escalar de redes entre otras [1].
1.6 Arquitectura de un FPGA [10].
La mayoría de los FPGA3 se basan en SRAM4 y pueden por lo tanto ser
programadas muy fácilmente. Debido que se basan en SRAM, los FPGA son
volátiles, por lo tanto, deben ser programados cada vez que la energía es aplicada.
Esto se logra con otra parte del circuito que recarga la configuración del bitstream,
tal como una PROM5.
La configuración de bitstream guardado en la SRAM controla las conexiones
hechas y también los datos para ser guardados en la look-up tables (LUTs). Las
LUTs son esencialmente pequeños memorias que pueden computar funciones
lógicas arbitrarias. Cada fabricante tiene un nombre distinto para su bloque básico,
pero la unidad fundamental es la LUT. Xilinx tienen los Bloques de Lógica
3
FPGA: Field Programmable Gates Array
SRAM: Static Random Access Memory
5
PROM: Programmable Read-Only Memory
4
19
Configurable (CLBs) organizadas en una matriz. Los bloques de lógica
configurables de un FPGA son en general localizados en un arreglo de estilo de
isla. Cada bloque lógico en la matriz está conectado con los recursos de
direccionamiento controlados por una matriz conmutada de interconexión.
Con este diseño de estilo de isla, un gran rango de conexiones pueden ser
hechas entre recursos. Una desventaja para esta estructura de direccionamiento
flexible es que a diferencia de los CPLD6, las rutas de señal no son fijas de
antemano, lo que puede resultar en sincronización imprevisible. Cada CLB en un
FPGA Xilinx abarca cuatro slices lógicos, que por turno contienen dos generadores
de función de 4 entradas, acarreo lógico, compuertas de lógica aritmética, amplios
multiplexores de funciones y dos elementos de almacenamiento. El LUT es capaz
de implementar cualquier función Booleana definida arbitraria de cuatro entradas y
los retrasos de propagación es por lo tanto constante sin considerar la función.
Cada slice también contiene flip-flops y una cadena de acarreo rápido. La lógica de
acarreo rápido dedicado permite que el FPGA realice circuitos de aritmética muy
rápidos.
La arquitectura de la familia Spartan 3 y XUP Virtex II Pro consta de cinco
elementos funcionales programables fundamentales:
Bloques de Lógica Configurable (CLBs) que contienen RAM basadas en
Look-up Tables (LUTs)
para
implementar
elementos de
lógica
y
almacenamiento que pueden ser usados como flip-flops o cerrojos. Los
CLBs pueden ser programados para efectuar una gran variedad de
funciones lógicas como almacenamiento de datos.
Bloques de entrada / salida (IOBs) la cuales controlan la circulación de los
datos entre los pines de E/S y la lógica interna de los dispositivos. Cada IOB
soporta la circulación de datos bi-direccionales más la operación de 3
estados.
El bloque RAM provee almacenamiento de datos en forma de 18 Kbit en
bloques de doble puerto.
Bloques Multiplicadores que aceptan dos números binarios de 18 bits como
entradas y calculan el producto.
6
CPLD: Complex Programmable Logic Device
20
Los bloques de Digital Clock Manager (DCM) proveen la auto calibración,
completa soluciones digitales para distribuir, retrasos, multiplicaciones,
divisiones y desplazamiento de fase de señales de reloj.
Un anillo de IOBs rodea una matriz regular de CLBs. Cada columna está
formada por algunos bloques de RAM de 18 Kbit; cada bloque es relacionado con
un multiplicador dedicado. Los DCMs son coloca
Figura 1.6 Arquitectura de los FPGA.
Fuente: Digilent, Spartan-3 Starter Kid Board User Guide, 2005.
La familia de Spartan 3 y de la XUP Virtex II PRO tiene como característica una
rica red de conectores e interruptores que interconectan todos los cinco elementos
funcionales, transmitiendo señales entre otros. Cada elemento funcional tiene
asociada una matriz de conmutación que permite conexiones múltiples para el
direccionamiento.
1.6.1
Características Técnicas de los FPGA Spartan 3 y Virtex II Pro.
Sabiendo ya los cinco elementos funcionales programables fundamentales de
las tarjetas Spartan 3 y Virtex II Pro, se puede hacer una diferenciación de las
características técnicas de éstos FPGA tomando en cuenta los elementos más
relevantes. En la tabla 1.1se indica las diferencias entre las dos distintas tarjetas.
21
Tabla 1.1 Características de los Dispositivos.
CARACTERÍSTICAS
SPARTAN-3
VIRTEX II PRO
XC3S200
XC2VP30
Slices
1920
13969
Array Size
24x20
80x46
RAM Distribuida
30 Kb
428 Kb
12
136
216 Kb
2448 Kb
DCMs
4
8
PowerPC RISC Cores
-
2
Multi-Gigabit Transceivers
-
8
VGA/XSGA
Si
Si
10/100 Ethernet
No
Si
Puerto Serial
Si
Si
PS/2 KBD & MOUSE
Si
Si
ADC/DAC Incorporados
No
Si
Modelo
Bloques Multiplicadores
Bloques RAM
Fuente: Digilent, Spartan-3 Starter Kid Board User Guide, 2005.
Xilinx, Hardware Reference Manual XCPV2P, 2005.
En base a la tabla 1.1 se puede observar que la tarjeta XUP Virtex II Pro es muy
superior en cuanto a características de funcionamiento que la Spartan-3, pero en
cambio las tarjetas de la familia Spartan son muy utilizadas por su fácil uso y su
costos reducidos. Para la adquisición de señales eléctricas, el FPGA Virtex II Pro
cuenta con el códec de audio AC97 el mismo que incorpora un ADC y un DAC que
permite contar con todas las funcionalidades analógicas de un sistema de audio. En
su defecto, la Spartan-3 no cuenta en sí incorporado un sistema I/O analógico y por
tal motivo se debe anexar una tarjeta periférica externa como la tarjeta AIO1, la
misma que cuenta con un ADC, un DAC, 4 amplificadores operacionales y un buffer
[12]. De lo anterior, se colige que se eligió la tarjeta Spartan-3 por sus reducidos
costos, para comprobar sus funcionalidades con respecto a los periféricos E/S
externos y para comprobar el funcionamiento de algoritmos de procesamiento para
la visualización de datos en el VGA. Por otro lado, se opto por la tarjeta Virtex II
Pro, especialmente por sus características de capacidad y alto grado de
procesamiento, y además porque en las pruebas preliminares, los resultados
arrojan que la tarjeta Spartan-3 es insuficiente en recursos para soportar el
algoritmo FFT.
22
CAPITULO II
Implementación de algoritmos en la FPGA.
En el presente capítulo se discutirá sobre la implementación del proyecto en el
FPGA, algoritmos de control para el sistema de monitoreo temporal, y algoritmos
para la extracción de características frecuenciales de una señal en el tiempo, con la
explicación de cada uno de sus elementos y los dispositivos necesarios para el
funcionamiento.
2.1 Introducción.
Este capítulo presenta el diseño de un sistema de adquisición de señales para
realizar un análisis en el dominio temporal el cual como aplicación final se empleará
como un sistema de monitorización de señales en el tiempo para un FPGA
Digelentic Spartan-3 serie XC3S200 [10].
Además se presenta un diseño de un sistema de adquisición de señales para
realizar un análisis en el dominio de la frecuencia el cual se efectuará en la FPGA
XUP Virtex II Pro serie XC2VP30 bajo el entorno de co-simulación [11].
2.2 Diseño del Sistema de Monitorización de Señales en el Tiempo.
Se ha diseñado un sistema de monitorización de señales en el tiempo (SMST)
en el rango de frecuencia de 0 a 3 KHz para la tarjeta Spartan-3 XC3S200, el
sistema cuenta con capacidades de adquisición de señales analógicas, conversión
A/D, procesamiento de la señal y la generación de señales de video.
Para la adquisición de señales analógica y para realizar la conversión de
análogo a digital (A/D) se utilizará la tarjeta periférica AIO17 [12] la misma que se
conecta al FPGA; los valores obtenidos de la conversión A/D se envían hacia la
Spartan-3 XC3S200 y guardados en un módulo de memoria llevado a cabo en el
FPGA; un controlador de video, también implementado en el FPGA, extrae estos
valores y genera las señales de video apropiados que se envían al puerto VGA y
7
AIO1: Analog I/O up to 1MHz
23
usados para mostrar una imagen en un monitor conectado a la tarjeta FPGA. Una
interacción básica con el usuario es posible a través de los botones e interruptores
de la tarjeta Spartan-3 XC3S200. El diseño del sistema de monitorización de
señales en el tiempo lleva a cabo los rasgos comunes de un osciloscopio
convencional básico, tales como el ajuste en la tasa de muestreo, así como las
funciones Hold y Triggering. Es así que el diseño reúne todos los requisitos para
emular a un osciloscopio, y se ha verificado a través de la simulación y la
implementación física.
El diseño consta de métodos de diseños en VHDL8, esquemático y librerías de
Xilinx para el FPGA Spartan-3 XC3S200. Cabe mencionar que el uso de VHDL
permite y ayuda a dar una descripción lógica de algún subsistema hardware el
mismo que se pueda implementar en una FPGA o un algoritmo DSP corriendo en
una FPGA. En este caso, permite hacer una descripción de la lógica que controlan
a una sistema de monitoreo de señales en el tiempo basado en las características
de funcionamiento de un osciloscopio. Hay que mencionar, que el diseño de este
proyecto no necesariamente es exclusivo para el FPGA Spartan-3 XC3S200 ya que
puede ser compatible con otros dispositivos de la familia Spartan o incluso para
familias distintas como la Virtex. Los circuitos de acondicionamiento de la señal
para la tarjeta periférica AIO1 se diseñaron con el uso de Workbench Multisim 9. La
transferencia del diseño al FPGA se llevó a cabo con la herramienta Xilinx Impact
8.1i a través de un cable JTAG paralelo. Las señales analógicas se obtuvieron a
través de una tarjeta de sonido de PC (especialmente por la versatilidad en el
manejo de estas señales), utilizando un archivo sub-vi del software LabView 8.2 o
por el software Cool Edit Pro 2.1, los cuales corren en Windows XP o con la
utilización de un generador de señales con una señal máxima de 12 Vpp.
El diseño del sistema se lo puede presentar en tres etapas: la etapa de
adquisición y adecuación la cual se basa en hardware empleando circuitos
electrónicos, una etapa de procesamiento la cual lo realiza el FPGA y su diseño se
basa en la programación de la Spartan-3, y finalmente una etapa de visualización
en la cual se conecta un monitor VGA estándar al FPGA para visualizar los datos.
Esto se puede ver en la figura 2.1 donde se detalla el diagrama general para el
SMST.
8
VHDL: Lenguaje de Descripción de Hardware de VHSIC
24
ETAPA DE ADQUISICIÓN Y ADECUACIÓN
Adquisición
de la señal
Adecuación
de la señal
ETAPA DE PROCESAMIENTO EN EL FPGA
Módulo de
Adquisición
Conversión A/D
Módulo de
Control
Módulo de
VGA_Display
ETAPA DE
VISUALIZACIÓN
Figura 2.1 Diagrama de Bloques General del SMST
Fuente: El Autor
El Sistema de Monitoreo de Señales en el Tiempo tiene el siguiente flujo de trabajo:
1) Las señales que podemos ingresar al sistema como prueba pueden ser
generadas a través de un generador de ondas, a través del envío por medio del
PC de señales analógicas por medio de la tarjeta de sonido, o a través de la
obtención de señales eléctricas de algún circuito como un generador de
funciones; haciendo énfasis que el umbral de la señal es de 12 Vpp, y a una
frecuencia máxima de 3 KHz.
2) La señal analógica se transfiere a la entrada del conector del circuito de
adecuación vía cable de audio tipo “jack to jack”.
3) Las señales a la salida del circuito de adecuación son conectadas a la tarjeta
periférica AIO1 para dirigirlas a las entradas del circuito conversor A/D
(AD7823).
4) El circuito conversor A/D en la tarjeta periférica AIO1 recibe las señales de
control apropiadas del FPGA y realiza la conversión digital, saliendo un bit a la
vez (transmisión serial). Se utiliza la transmisión serial de datos especialmente
para aprovechar los recursos de pines de la tarjeta. Un circuito de serial a
paralelo llevado a cabo en el FPGA recoge estos bits y construyendo un byte
que se guarda en una memoria de video que también reside en el FPGA (la
conversión de serial a paralelo es necesaria para ganar velocidad de
procesamiento de los datos dentro de la tarjeta FPGA).
5) Un controlador de VGA analiza la memoria de video y basado en los valores
guardados allí genera las señales apropiadas que son enviadas al puerto VGA y
crea una imagen en el monitor.
6)
La interacción del usuario toma forma por vía de los interruptores y botones de
la tarjeta Spartan-3 dónde el operador puede cambiar la tasa de muestreo de la
señal analógica y puede escoger diferentes modos de operación.
La etapa de adquisición y adecuación de la señal se la tratará más a fondo en el
capítulo de resultados, en términos generales consta de un circuito cuyo objetivo
25
principal, por medio de tres escalas distintas, atenuar la señal a un nivel de voltaje
apropiado, en el cual pueda trabajar el ADC presente en la tarjeta periférica AIO1
para una óptima digitalización de la señal.
2.2.1
Etapa de procesamiento en la FPGA
Ahora se explicará el funcionamiento de la etapa de procesamiento en el FPGA
y sus principales características.
ETAPA DE PROCESAMIENTO EN EL FPGA
MÓDULO DE
ADQUISICIÓN
MÓDULO DE
CONTROL
MÓDULO DE
VISUALIZACIÓN
VGA
LEDs
Figura 2.2 Diagrama de Bloques del SMST en el FPGA
Fuente: El Autor.
El gráfico superior indica el diagrama de bloques del Sistema de Monitorización
de Señales en el Tiempo (SMST) programado internamente en el FPGA (Figura
2.2) donde se muestra la separación del diseño en tres módulos funcionales
principales:
Módulo de Adquisición: implementa la comunicación con el conversor
AD7823 y suministra los valores digitalizados al módulo de “Visualización”.
Módulo de Control: genera el muestreo de la señal requerido por el módulo
de adquisición a la tasa especificada por el usuario; además controla la
dirección de memoria de video dónde el valor digitalizado se escribirá y se
conmutará entre los diferentes modos de funcionamiento.
Módulo de Vga_display: lee la memoria de video y crea las señales de
VGA requeridos por el monitor externo.
Las señales de mayor importancia son descritas brevemente en la tabla 2.1.
26
Tabla 2.1 Señales de mayor importancia.
Señales
mclk
rst
sclk
convst
din
hs
vs
red
grn
blu
ledg
led(7:0)
an(3:0)
ssg(7:0)
smpupbtn
smpdownbtn
hold
trigger_en
Modos
Imput Clock
Asynchronous input
Output
Output
Input
Output
Output
Output
Output
Output
Output
Output
Output
Output
Asynchronous input
Asynchronous input
Asynchronous input
Asynchronous input
Descripción
Entrada del Reloj Principal; 50MHz
Reinicio Principal del Sistema
Señal de Reloj al AD7823
Señal de Inicio de Conversión del AD7823
Datos de Salida del AD7823
Señal de Sincronización Horizontal del VGA
Señal de Sincronización Vertical del VGA
Señal Red VGA
Señal Green VGA
Señal Blue VGA
Señal Led gate
Señales de Led
Señal de Ánodo para un display de siete segmentos.
Señal de un display de siete segmentos para un dígito.
Sample up button; incrementa la tasa de muestreo
Sample down button; decremento de la tasa de muestreo
Señal Hold
Señal Trigger enable
Fuente: El Autor.
2.2.1.1 Módulo de Adquisición.
El módulo de adquisición implementa una interface de comunicación con el
conversor analógico a digital AD7823 que se encuentra en la tarjeta periférica AIO1.
Está compuesto de dos partes, tal como es mostrado en Figura 2.3. El primer
bloque es un controlador de conversión de datos de seriales a paralelos, diseñado
en entorno gráfico esquemático llamado “s2pctrl”, este componente maneja las
señales de control hacia el ADC como las señales de inicio de conversión llamada
“convst” y la señal de reloj hacia el ADC llamada “sclk”, es síntesis le da la orden al
ADC para que pueda enviar los datos al FPGA de manera que se pueda sincronizar
el ADC con la frecuencia de trabajo del FPGA, debido a que ambos sistemas (ADC
y FPGA) tienen un frecuencia de oscilación de reloj muy distintas.
MÓDULO DE ADQUISICIÓN
CONVERSOR
DE SERIE A
PARALELO
“s2pctrl”
ACUMULADOR
DE BITS
“SR8CE”
Figura 2.3 Diagrama del Módulo de Adquisición.
Fuente: El Autor.
27
El segundo bloque, es un registro de desplazamiento (shift register) estándar o
también conocido como acumulador, se ha aprovechado el diseño optimizado de la
librería de los programas de diseño microelectrónico de Xilinx para implementar
este subsistema, de esta manera se puede optimizar y minimizar el tiempo de
desarrollo de componentes para la implementación de un sistema complejo. Este
elemento se conoce con el nombre genérico “SR8CE” que se usa para acumular los
bits que vienen de la salida serial del circuito conversor y los almacena para formar
un byte completo.
El bloque conversor de serie a paralelo es principalmente implementado ya que
cuando se requiera trabajar en la programación de los datos para su visualización
en el VGA así como sus modos de operación (modos Hold y trigger) se necesitan
que estos datos estén en formato de bytes, por lo que conjuntamente con el bloque
acumulador se puede estableces este proceso. El bloque de control de serial a
paralelo denominado “s2pctrl” está implementado en el archivo de programación
VHD llamado “s2pctrl.vhd”.
2.2.1.2 Módulo de Control.
Este módulo es el circuito de control principal del diseño, el cual conduce las
señales de control y de dirección requeridos por los otros componentes, cumpliendo
con los varios modos de operación seleccionados por el usuario. Esto es definido
en el archivo de programación VHD fuente denominado “osc_ctrl.vhd”. Podemos
decir que el propósito general del control del osciloscopio esta dado en:
1. Controlar la tasa de muestreo del conversor A/D.
2. Controlar que se muestre la señal.
3. Mostrar algunos parámetros del SMST y las modificaciones que realice el
usuario.
4. Cambiar entre los modos de operación del SMST.
Hay que indicar que el control del osciloscopio en su archivo fuente está
compuesto por dos sub módulos: el primero ayuda a cambiar la tasa de muestreo
del circuito A/D la cual está implementado en el archivo de programación VHD
denominado “sr_tuner.vhd”, mientras que el segundo permite mostrar los valores en
los displays de siete segmentos los cuales representan los microsegundos por
28
división en la pantalla necesarios para el cálculo de la frecuencia y el cual está
implementado en el archivo fuente VHD nombrado como “ssgdisp.vhd”.
MÓDULO DE CONTROL
VARIAR TASA
DE MUESTREO
“sr_tuner”
VISUALIZADOR
EN DISPLAYS
“ssgdisp”
Figura 2.4 Diagrama del Módulo de Control.
Fuente: El Autor.
El módulo del circuito que controla la base de tiempo del Sistema de
Monitorización de Señales en el Tiempo (SMST) está implementado en el archivo
fuente VHD “sr_tuner.vhd”, en la que modificando la base de tiempo en efecto
significa cambiar la tasa de muestreo, es decir especificando cuan a menudo la
señal de muestreo se emite teniendo una interacción directa con el usuario ya que
éste indica la variación de la tasa de muestreo en base a los botones pulsados en el
FPGA, mientras se está instruyendo al módulo de adquisición para realizar una
conversión adecuada de la señal. Este cambio de tasa de muestreo significa tener
una mejor visualización de la señal, lo cual lleva a un adecuado cálculo de su
amplitud así como de su frecuencia.
Con respecto a los varios modos de operación (normal, hold, triggered) son
implementados por un controlador de dirección de memoria, dónde el valor
digitalizado proporcionados por el módulo de adquisición se supone que es escrito.
La tabla 2.2 discute cuando los modos de operación aplican dada las señales
“hold”, “trigger_en” y “trigger”, y cómo ellos afectan la dirección de memoria
previamente mencionada.
Cuando el Sistema de Monitorización de Señales en el Tiempo (SMST) está en
el modo “Hold” (congelar la señal), la memoria de video no se refresca o actualiza.
Éste congela el trazo de la señal en el monitor, porque el mismo contenido de la
memoria de video se despliega una y otra vez, es decir que los valores digitalizados
que llegan del módulo de adquisición no son guardados en la memoria de video.
Con este modo de operación se tiene como finalidad hacer un análisis de la señal
en un tiempo o evento determinado el cual no sea repetible.
29
Tabla 2.2 Modos de operación del SMST.
Dirección
< 639
Hold
X
Trigger_en Trigger
X
X
Acción
Address 
address+1
Descripción
Modo
Normal;
dirección
la
es
incrementada
Modo
Hold;
actualización de la
= 639
1
X
X
address  640
memoria
de
que
prevenida
es
video
especificando
una
dirección inválida
Modo
última
= 639
0
0
X
address  0
Normal;
entrada
de
memoria alcanzada,
la
dirección
es
reseteada.
Modo Triggered, no
= 639
0
1
0
No cambia
hay señal de trigger;
la dirección no es
incrementada.
Modo Triggered con
= 639
0
1
1
address  0
señal de trigger; la
dirección
es
reiniciada.
X = No importa
Fuente: El Autor.
Cuando el Sistema de Monitorización de Señales en el Tiempo está en el modo
“triggered”, es susceptible a un evento específico asociado con la señal analógica.
Cuando este evento ocurre, la señal “trigger”
se afirma, resultando en que la
dirección de memoria de video empieza a reiniciarse. El efecto del “triggering” es
que el trazo de la señal analógica en la pantalla del monitor es estable, una
inestabilidad eventual es el resultado de ruido que causa un “triggerring” prematuro.
30
Con estas funciones implementadas en el sistema de monitorización de señales
en el tiempo se cumple con uno de los objetivos, el cual es el emular algunas de las
funciones con las que cuenta un osciloscopio digital.
2.2.1.3 Módulo del Visualización VGA.
El último bloque para el Sistema de Monitorización de Señales en el Tiempo es
el módulo de visualización VGA, cuyo diagrama de bloque es mostrado en la figura
2.5, el cual ilustra que está compuesto de dos entidades: el bloque denominado
memoria VGA (“vgamemory”) y el bloque denominado “VGA”.
MÓDULO DE VISUALIZACIÓN VGA
MEMORIA
DEL VGA
“vgamemory”
VGA
Figura 2.5 Diagrama del Módulo de Visualización VGA.
Fuente: El Autor.
La entidad llamada “vgamemory” (implementada en el archivo de programación
fuente VHD llamado “vga_mem.vhd”) representa un módulo de memoria de puerto
dual dónde los valores obtenidos de la conversión A/D son almacenados para
empezarse a mostrar en la pantalla. La capacidad de la matriz de memoria es 640
bytes siendo de este tamaño debido a que cada valor en la matriz de la memoria
representa un pixel en la pantalla teniendo una resolución de 640x480 pixeles.
Cada entrada en la memoria corresponde a una columna en la pantalla. El valor
contenido en la entrada respectiva denota la coordenada vertical del pixel que se
encenderá en la columna correspondiente; por ejemplo si el valor de índice 20 en la
matriz de memoria es 42, significa que el pixel encontrado a la intersección de
columna número 20 y la hilera número 42 se encenderá.
El contenido de la entidad denominada “vgamemory” es escrito por el módulo
de adquisición y luego el contenido de la memoria es leído por el controlador del
VGA, cuya descripción se detallará posteriormente. En el diseño, el uso de la
memoria de VGA es imprescindible debido que los valores que se guardan en ella
31
son usados para el funcionamiento de los distintos modos de operación del SMST
como lo son normal, hold y triggered, ya que estos modos utilizan la dirección de
memoria de los datos para poder visualizarlos en la pantalla.
Hay que indicar que para la aplicación del SMST entre sus características de
funcionamiento son la visualización y medición de señales en el rango de 0 a 3
KHz, esto se debe al módulo de memoria ya que la capacidad como se mencionó
anteriormente, de 640 bytes no es suficiente para almacenar los valores
digitalizados de señales de mayor frecuencia y en especial el poder visualizarlos en
pantalla. Una forma de superar este inconveniente es aumentar la capacidad de la
memoria, pero eso significaría aumentar la resolución en la pantalla, lo cual sería un
problema para visualizar los datos en la Spartan-3 ya que su puerto VGA sólo
soporta una resolución de 640x480 pixeles [10].
La entidad del VGA (implementada en el archivo fuente VHD denominado
“vga.vhd”) es un controlador de video que maneja las señales de video (“hs”, “vs”,
“red”, “grn”, “blu”) [9] señaladas en la tabla 2.1 necesarios por un monitor externo.
Basado en estas señales el monitor puede crear una imagen a color la cual se
muestra en la pantalla.
La implementación del VGA se extiende a un ya existente módulo de
controlador de video, originalmente creado para la tarjeta Digilent Pegasus. Agrega
señales para las coordenadas lógicas de un lugar en la pantalla (“x” y “y”) y
reestructura las señales de color de video “red”, “grn” y “blu”, tal que ellos muestran
una imagen diferente. Las coordenadas lógicas se obtienen substrayendo los
contadores horizontales (hc) y verticales (vc), y los porches9 horizontales (hbp) y
verticales (vbp) respectivamente. La coordenada lógica horizontal (x) denota una
columna en la pantalla. Su valor es llevado al controlador a través de la señal de
direccionamiento y se usa para dirigirse la memoria de video. El valor obtenido
desde la memoria representa la coordenada lógica vertical que denota una fila en la
pantalla. Por lo tanto, el trazo de la señal en la pantalla consistirá en píxeles
encendidos que tienen las coordenadas iguales que corresponden a los pares [x,
data].
9
Porche: Espacio alto comprendido desde el borde superior o lateral del monitor.
32
2.3 Diseño del Sistema de Monitoreo de Señales en Frecuencia.
El intento de este proyecto es el desarrollo de un Sistema de Monitorización de
Señales en Frecuencia (SMSF) para el FPGA XUP Virtex II Pro serie XC2VP30 el
cual el diseño cuenta con módulos de filtrado de la señal, módulo de enventanado,
un módulo con la Transformada Rápida de Fourier de 512 puntos y la exportación
hacia el entorno de Matlab para su visualización.
Para la aplicación del sistema de monitoreo de señales en frecuencia, fue
diseñado con la ayuda de System Generator 8.1 (herramienta de diseño gráfico
para algoritmos DSP corriendo en una FPGA). La transferencia de datos para el
presente diseño se hará vía cable JTAG USB, la cual se compiló para que pueda
correr bajo co-simulación y las señales de entrada fueron generadas con ayuda de
Simulink y del Software Cool Edit Pro 2.1. El diseño del sistema de monitorización
de señales en frecuencia cuenta con los rasgos básicos de un analizador de
espectros, tales como filtrado de la señal, diezmado y enventanado, cálculo de la
FFT y extracción de las componentes espectrales de la señal. Es así que el diseño
reúne todos los requisitos para emular a un analizador de espectros para bajas
frecuencias, en este caso en el rango de 0 a 12 KHz.
Hay que mencionar que el presente proyecto es de uso pedagógico, por lo que
fue diseñado para funcionar en la banda de frecuencia de audio (20 Hz hasta 20
KHz), pero por prestaciones del FPGA Virtex II Pro en cuanto a capacidad de
procesamiento y almacenamiento bajo el entorno de co-simulación basándose en la
utilización de la herramienta System Generator, se trabajará entre el rango de 0
hasta los 12 KHz en la cual se consume gran parte de los recursos de la FPGA tal
como se verá más adelante en el capítulo de resultados. En el Sistema de
Monitoreo de Señales en Frecuencia (SMSF) se puede desglosar y mostrar
internamente la lógica de operación de un sistema emulador de un Analizador de
Espectro, en el cual se presenta el siguiente flujo de trabajo, tal y como se muestra
en la figura 2.6.
33
ADQUISICIÓN
DE LA SEÑAL
MÓDULO DE
FILTRADO
MÓDULO DE
ENVENTANADO
CÁLCULO
DE FFT
VISUALIZACIÓN
DE LA SEÑAL
Figura 2.6 Diagrama de bloques General del SMSF.
Fuente: El Autor.
1) La señal de entrada será producida por un archivo de audio, la misma que
podrá ser editada por el software “Cool Edit Pro” o puede ser generada bajo
el entorno Simulink de Matlab.
2) Luego la señal de audio ingresará al bloque de filtrado, el que permitirá
eliminar el ruido presente en la señal para que así tener una señal más pura.
3) La señal filtrada pasará posteriormente a un bloque de enventanado, el cual
permitirá eliminar las discontinuidades al principio y al final de los bloques de
la señal a analizarse para de esta forma eliminar componentes espurios que
degradan la señal.
4) Luego de eliminar y atenuar componentes de frecuencia parásitas, la señal
llega hasta el bloque de la Transformada Rápida de Fourier (FFT), la que
nos dará las componentes características de la señal.
5) Finalmente la señal a la salida de la FFT se exportará hacia Matlab para su
visualización la misma que se hará bajo el entorno de co-simulación con el
FPGA.
Figura 2.7 Diseño del SMSF en System Generator.
Fuente: El Autor.
En la figura 2.7 se puede observar que el diseño en System Generator está
divido en cuatro módulos o bloques principales:
34
Filtrado: es en donde se intentará eliminar el ruido proveniente de la señal
de audio a través de una serie de filtros.
Enventanado: con la ayuda de la ventana de Blackman se pretende
eliminar las discontinuidades al inicio y al final de los bloques de la señal a
analizarse.
FFT: en éste bloque se obtiene la Transformada Rápida de Fourier de 512
puntos para obtener el espectro de la señal de audio.
Visualización: la señal a la salida del bloque de la FFT es llevada a Matlab
para ser graficada y comparada frente a la herramienta de visualización
“Spectrum Scope” de System Generator.
2.3.1
Módulo de Filtrado y Diezmado.
Después de que la señal de audio sea generada por el PC llega al módulo de
filtrado el mismo que está compuesto por una serie de filtros [13] tal como se
muestra en la figura 2.8.
Figura 2.8 Diseño del Bloque de Filtrado y Diezmado en System Generator.
Fuente: El Autor.
Podemos observar que el bloque de filtrado está compuesto por los siguientes
tipos de filtros:
Pasa Bajos: este filtro está diseñado para que su ciclo de trabajo sea hasta
los 3 KHz, es decir frecuencias superiores las atenuará o eliminará.
35
Pasa Bandas: el filtro presenta ciclo de trabajo entre 3 KHz hasta los 7 KHz,
frecuencias fuera de éste rango serán eliminadas o atenuadas.
Pasa Altos: este filtro mantiene su ciclo de trabajo en frecuencias
superiores a los 7 KHz, pero en el sistema general será controlado por el
bloque de Diezmado que lo limitará hasta los 12 KHz.
Bloque Diezmado: En el proceso de diezmado, y para evitar aliasing en la
señal diezmada, hay que filtrar previamente la señal a diezmar por un filtro
pasa bajo con frecuencia de corte en éste caso de 12 KHz y donde el factor
de diezmado es de 2.
En la tabla 2.3 se puede observar las características de cada uno de los filtros
las cuales fueron diseñadas con la herramienta FDATool de System Generator.
Tabla 2.3 Características de los Filtros con FDATool.
Tipo
Pasa Bajos
Pasa Bandas
Pasa Altos
Diezmado
Orden
297
297
162
297
Fs (Hz)
48000
48000
48000
48000
Fpass1 (Hz)
Fpass2 (Hz)
3000
3600
7000
7600
12000
Fuente: El Autor.
Fstop1 (Hz) Fstop2 (Hz)
3300
3300
7300
7300
12500
-
Hay que mencionar que los filtros están dispuesto es forma paralela tal como se
observa en la figura 2.8, y las salidas de cada uno de los filtros son llevadas a un
Multiplexor, el mismo que fue desarrollado su código en Matlab y exportado hasta
System Generator por medio del bloque M-Code.
Como se mencionó anteriormente, a la salida del Multiplexor se utiliza un bloque
de diezmado, el mismo que está compuesto por un filtro pasa bandas con
frecuencia de corte de 12000 Hz y el cual tiene un factor de diezmado de 2. La
operación de diezmado modifican el número de muestras presentes en la señal,
disminuyendo la velocidad de muestreo de la señal continua subyacente. Este tipo
de operaciones son importantes en situaciones en las que, por ejemplo, existe un
sobre-muestreo que hace posible deshacerse de parte de las muestras sin perder
información. El filtro paso bajo presente en el diezmador tiene como misión evitar el
posible “aliasing” causado por la reducción de la tasa de muestreo. Es decir, el
descartar muestras puede no ser una operación invertible si la nueva velocidad de
36
muestreo no satisface el criterio de Nyquist, o lo que es lo mismo, si en frecuencia
se produce solapamiento de espectros.
2.3.2
Módulo de Enventanado.
Luego de que la señal haya sido filtrada y diezmada, su salida será multiplicada
o aplicada a un bloque de enventanado, el mismo que utiliza la ventana de
Blackman. El código para el enventanado se realizó en Matlab el cual es grabado
en una variable “g” que es importando hacia System Generator por medio de una
ROM tal como se muestra en la figura 2.9.
Figura 2.9 Diseño del Bloque de Enventanado y su configuración.
Fuente: El Autor.
Ya sabemos que esta técnica es usada para obtener una mejor respuesta en el
ancho del espectro de las muestras. La ventana de Blackman fue implementada, ya
que permite la mejor adaptación [14] para el sistema de visualización de los
resultados en Matlab en comparación con la ventana rectangular, la cual permitió
diferenciar dos componentes espectrales en regiones cercanas, aunque como
desventaja la ventana de Blackman cuenta con más carga computacional.
2.3.3
Módulo de la FFT.
37
Posteriormente que la señal salga del módulo de enventanado llega al módulo
de FFT, en donde se realiza la Transformada Rápida de Fourier para obtener la
respuesta espectral de las muestras tomadas de la señal de audio en el dominio de
la frecuencia. La FFT descompone la DFT en pequeñas transformadas de N
puntos, en donde N es el número de puntos por muestra. Con esto podemos indicar
que entre mayor número de puntos exista en la FFT mayor será la exactitud de los
armónicos en el dominio de la frecuencia de la señal a analizarse.
En la figura 2.10 se muestra el módulo o bloque de la FFT y su configuración
diseñado en System Generator con el Core FFTv3_1 de Xilinx.
Figura 2.10 Diseño del Bloque de FFT y su configuración.
Fuente: El Autor.
El módulo FFT computa la transformada rápida de Fourier de 512 puntos en
modo continuo; para ello se configura el Core FFTv3_1 de Xilinx como Radix-4
Streaming I/O. Se opta por no escalar la señal internamente en el procesador FFT y
se extrae la señal “vout” para controlar el posterior cálculo de la magnitud. Se elige
trabajar con el algoritmo Radix-4 ya que éste método brinda mayor exactitud en
cuanto al cálculo y visualización de los datos para la FFT frente a otros algoritmos
como Radix-2, aunque como desventaja representa mayor carga computacional.
38
Para el cálculo de la magnitud se emplea dos bloques Multiplicadores y un
bloque AddSub en modo de Adición de la librería de System Generator para así
poder calcular el módulo de la señal a la salida del bloque de la FFT, tal y como se
observa en la figura 2.11.
Figura 2.11 Cálculo de la magnitud de la FFT.
Fuente: El Autor.
Hay que mencionar por otro lado que la resolución de frecuencia de la FFT de N
puntos es:
fr =
donde
FS
;
N
(II.1)
Fs es la frecuencia de muestreo y N el número de puntos de la FFT. Es así
que la resolución de frecuencia de la formula II.1 para el presente diseño es de:
fr =
2.3.4
48000
= 93,75 Hz
512
Módulo de Visualización.
Finalmente después de encontrar la magnitud de la FFT de la señal de audio,
estos valores son exportados hacia Matlab a través del bloque “To Workspace” para
poder ser graficados y comparados con el “Spectrum Scope” de System Generator.
Cabe señalar que la implementación se realizará bajo co-simulación, es decir se
hará la simulación en System Generator mientras al mismo tiempo estará
trabajando el FPGA con el mismo tipo de información.
En la figura 2.12 se muestra la visualización de una señal de audio senoidal de
2.5 KHz graficada en Matlab.
39
Figura 2.12 Visualización de una señal con Matlab
Fuente: El Autor.
Como un limitante para poder visualizar la señal por medio de Matlab, se debe
esperar a que concluya la co-simulación en System Generator, para que los valores
enviados al Workspace estén listos y puedan ser leídos por Matlab. Cabe
mencionar que se puede visualizar la señal con el “Spectrum Scope” de System
Generator en tiempo real cuando se está ejecutando la co-simulación.
40
CAPITULO III
Resultados.
En el presente capítulo se hará un análisis de los resultados obtenidos en las
distintas etapas tanto del Sistema de Monitoreo de Señales en el Tiempo (SMST)
como del Sistema de Monitoreo de Señales en Frecuencia (SMSF).
3.1 Resultados en el SMST.
En vista que el diseño del SMST es en su mayor parte desarrollado en
esquemático, y en este tipo de programación no cuenta con mayores herramientas
para la simulación, se centrará en éste capítulo en los resultados del diseño de
hardware y en los resultados obtenidos en la visualización en el monitor o VGA.
3.1.1
Circuito de Atenuación y Acondicionamiento.
Como se mencionó en el capítulo II, el circuito de atenuación y de
acondicionamiento de la señal es muy importante, ya que permite atenuar y
adecuar la señal que proviene de la tarjeta de sonido del PC o del generador de
funciones a un nivel óptimo de voltaje, para así obtener una señal digitalizada real
por medio del ADC. Este circuito fue desarrollado y simulado con el programa
Multisim de Electronics Workbench, el cual es presentado en el Anexo E con su
respectivo sustento matemático.
El circuito de atenuación está compuesto por tres bloques, el primer bloque que
es un conjunto de amplificadores operacionales en paralelo en modo inversor que
permite realizar distintas atenuaciones para diferentes valores de voltaje de la señal
de entrada representando de ésta forma la escala del Sistema de Monitoreo de
Señales en el Tiempo por medio del switch1, el segundo bloque está compuesto
por un operacional en modo inversor con entradas múltiples el cual suma la señales
provenientes del bloque atenuador para formar una sola señal. Finalmente el último
bloque consta de dos resistencias y cuatro diodos los cuales actúan como un
limitador de voltaje, el mismo que impide un excesivo voltaje hacia el bloque de
adecuación y así evitar dañar el ADC, siendo la señal de salida OUTC1.
41
El circuito de acondicionamiento se comporta como un atenuador no inversor
con múltiples entradas [5] (en este caso con dos entradas) con la ayuda del
amplificador operacional, el cual suma la señal que viene del circuito de atenuación
OUTC1 con una señal continua VCC33 que es de 3.3 V, que proviene de la tarjeta
AIO1, el mismo que controla a través del potenciómetro el nivel de desplazamiento
vertical de la señal o “shift up”, para así adecuarla para el ADC.
(a)
(b)
Figura 3.1 Señales del circuito de atenuación y acondicionamiento: (a) a la entrada
del circuito de atenuación, (b) a la salida del circuito de acondicionamiento
Fuente: El Autor.
En las figuras 3.1 se observa las señales tanto a la entrada del circuito de
atenuación para una señal de 8 V como a la salida del circuito de
acondicionamiento ya adecuada, el mismo que es llevada por ADIN+ y ADIN- hacia
el ADC en la tarjeta periférica AIO1 conectada a la Spartan-3.
3.1.2
Diagrama de Tiempos en el Módulo de Adquisición.
Como se indicó en el capítulo II el módulo de Adquisición es el encargado de
dar las señales de control para el AD7823, y está compuesto internamente por dos
sub-módulos: un bloque denominado “s2pctrl” y otro bloque llamado “SR8CE”.
42
Para mantener el AD7823 en el Modo 1 de operación (Muestreo de Alta
Velocidad), las señales de control generados por el controlador de serie a paralelo
denominado “s2pctrl” deben tener el tiempo mostrado en la figura 3.2. Al recibir la
señal de de muestreo llamado “sample” desde el módulo de control del
osciloscopio, el bloque “s2pctrl” pone la señal de inicio de conversión denominado
“convst” en bajo y lo guarda allí menos de 1µs; de esta manera el AD7823 no se
impulsa a bajo después de la conversión. El flanco de bajada de la señal de inicio
de conversión “convst” inicia el proceso de la conversión que típicamente toma
entre 4 µs para completar. Después del final de la conversión, el módulo “s2pctrl”
puede empezar a extraer el resultado bit a bit desde el interno shift register del
AD7823. Esto se hace habilitando la señal de reloj del ADC “sclk” de 12.5 MHz y
diciéndole al bloque acumulador de bit denominado SR8CE que desplace a los bits
que aparecen en la señal de ingreso de datos “din”, así volviendo a montar el
resultado de la conversión. Después de 8 períodos de la señal de reloj “sclk”, la
señal de fin de conversión “rdy” se pone en bajo, notificando al módulo de control
de osciloscopio que el resultado del muestreo está disponible. La señal de
muestreo “sample” va a alto y así también lo hace la señal “rdy”.
Figura 3.2 Diagrama de tiempo para el s2pctrl en el módulo de adquisición.
Fuente: El Autor.
3.1.3
Visualización en el VGA e Implementación.
Una vez finalizado el proyecto e implementado en el FPGA Spartan-3 XC3S200,
se puede observar que al conectar el FPGA al VGA se visualiza en la pantalla la
señal tal como se muestra en la figura 3.3. Cabe mencionar que el tipo de conector
o interfaz hacia el monitor debe de ser tipo VGA, ya que sólo este tipo de conector
puede soportar el FPGA Spartan-3 XC3S200. Existen otros tipos de conectores
tales como el XSGA el cual si soporta la tarjeta Virtex II Pro XC2VP30. Una interfaz
externa inapropiada hacia el monitor dará como consecuencia una distorsión en los
gráficos presentados en pantalla, brindando de ésta forma una medición y
monitorización errónea de la señal de entrada.
43
Figura 3.3 Visualización de la señal en el VGA.
Fuente: El Autor.
Como se ve en la gráfica superior la señal se grafica sin ningún problema en el
VGA, y es la representación de la señal enviada por la tarjeta de sonido del PC o
con la utilización de un generador de funciones. En la figura 3.4 en cambio
podemos observar las señales graficadas en el VGA después del procesado por
parte del FPGA, y en un osciloscopio comercial conectado a la salida de la fuente
de la señal a analizarse.
Figura 3.4 Visualización de la señal en el VGA y Osciloscopio.
Fuente: El Autor.
44
Cabe mencionar que el sistema de monitoreo de señales en el tiempo basado
en FPGA no cuenta con una escala numérica visible en la pantalla para medir la
amplitud y frecuencia tal como posee un osciloscopio digital comercial, pero gracias
al circuito de atenuación el cual permite una señal de entrada con voltaje máximo
de 12 Vpp, la escala presente en la pantalla del SMST representada por la
cuadrícula será 3 V, 6V o 12 V, siendo que cada división en la escala simboliza
0.6V, 1.6V o 3.3 V implícitamente la cual dependerá de la escala seleccionada en el
circuito de adecuación. Siendo así para poder calcular la amplitud de la señal, se
debe multiplicar los 0.6 V (o el valor asignado por la escala del switch1) por el
número de divisiones que la señal cubra en su valor máximo, obteniendo así un
valor aproximado de su valor real.
En cuanto al cálculo de la frecuencia, en los displays del FPGA se muestra una
escala numérica en micro segundos la cual se multiplica por el número de
divisiones que cubra un periodo de la señal, se calcula el inverso de éste valor y se
obtendrá el valor de frecuencia en Hz. Así por ejemplo si en los displays se muestra
400 (dado en micro segundos) y el número de divisiones de un periodo en la
cuadrícula de la pantalla es 2.5 tendremos que la frecuencia es:
f=
1
= 1000 Hz
400 s * 2.5
(III.1)
En la siguiente tabla se presenta mediciones con valores randómicos hechos
por el osciloscopio comercial y por el SMST basado en FPGA, para así poder
calcular la exactitud o el margen de error entre ambos dispositivos.
45
Tabla 3.1 Mediciones con el Osciloscopio comercial y con el SMST.
Señal Aplicada
Medición en
Medición en el
Porcentaje de
Osciloscopio Comercial
SMST del FPGA
Error
(Vpp) / FREC.
(Vpp)
(Hz)
(Vpp)
(Hz)
(%Vpp)
(%Hz)
0.25 V a 500 Hz
0.25
500
0.30
500
0.42%
0%
0.5 V a 1000 Hz
0.5
1000
0.56
980
0.50%
0.67%
0.75 V a 2000 Hz
0.75
2000
0.8
2000
0.42%
0%
0.80 V a 2500 Hz
0.8
2500
0.78
2500
0.17%
0%
1.0 V a 2800 Hz
1
2800
1.02
2778
0.17%
0.73%
2.5 V a 1500 Hz
2.5
1500
2.4
1515
0.83%
0.50%
4 V a 800 Hz
4
800
4.2
794
1.67%
0.20%
5.2 V a 1200 Hz
5.2
1200
5.3
1190
0.83%
0.33%
7.2 V a 2000 Hz
7.2
2000
7
2000
1.67%
0%
8 V a 1000 Hz
8
1000
8.1
980
0.83%
0.67%
Fuente: El Autor.
Con esta tabla se puede observar que la diferencia entre las señales producidas
por el FPGA y por el osciloscopio comercial son muy aceptables, llegando a un
margen de error para el cálculo de la amplitud del 0.75% y para la frecuencia de
0.31%, lo que brinda seguridad al usuario que los valores mostrados en la pantalla
son reales o muy admisibles. En la figura 3.5 se muestra el dispositivo terminado.
Figura 3.5 SMST-Dispositivo Terminado.
Fuente: El Autor.
46
3.2 Resultados en el SMSF.
En este proyecto se mostrará los resultados de cada uno de los módulos o
bloques del Sistema de Monitorio de Señales en Frecuencia (SMSF), utilizando
System Generator con la herramienta de visualización “Scope”.
3.2.1
Bloque de Filtrado.
Como se indicó en el capítulo anterior el bloque de filtrado y diezmado está
compuesto por un conjunto de filtros configurados en una arquitectura paralela, los
cuales presentan distintas características, así como de distintas frecuencias de
trabajo. A la salida de éstos filtros se conectan a un Multiplexor el cual permite que
funcione un filtro a la vez dependiente de la señal de entrada, es decir cuando la
señal sea menor o igual a 3 KHz el Multiplexor permitirá que pase la señal del filtro
pasa bajos; si la señal está entre 3 KHz y 7 KHz se permitirá que pase la señal del
filtro pasa bandas y si finalmente la señal es mayor a 7 KHz pasará el filtro pasa
altos. Este funcionamiento se podrá observar en la figura 3.6 y figura 3.7.
Figura 3.6 Flujo de Trabajo de los Filtros para una señal de 2.5 KHz.
Fuente: El Autor.
47
Como se puede observar en la gráfica superior cuando se aplica una señal de
2.5 KHz actúa solamente el filtro pasa bajos y el Multiplexor sólo permite la salida
de ese filtro.
Figura 3.7 Flujo de Trabajo de los Filtros para una señal de 4 KHz
Fuente: El Autor.
Como se muestra en la figura 3.7 cuando se aplica una señal de 4 KHz se
activa el filtro pasa bandas y a la vez el Multiplexor permite que pase la salida de
éste filtro.
De esta misma manera sucederá cuando se genere cualquier señal superior a
los 7 KHz donde al final sólo se activará el filtro pasa altos y el Multiplexor dejará
pasar la salida de ese filtro únicamente. La señal a la salida del multiplexor luego
pasará a la etapa de diezmado y posteriormente pasará a multiplicarse por el
bloque de enventanado.
48
3.2.2
Bloque de Enventanado.
Luego de que la señal haya sido filtrada y diezmada se procede a multiplicar por
el bloque de enventanado y como ya se indico es utilizada la ventana de Blackman.
La generación del enventanado se lo realiza con la ayuda de Matlab y es
exportando a SysGen por medio del bloque ROM, para que conjuntamente con un
bloque contador denominado “Count” se carga la ventana en pasos de 512, esto
debido a que el proyecto sacará posteriormente la FFT de 512 puntos. La
generación del enventanado y del contador se puede observar en la figura 3.8.
Figura 3.8 Generación de la Ventana de Blackman en SysGen.
Fuente: El Autor.
Cabe señalar como se acotó en el capítulo anterior, la ventana de Blackman fue
utilizada en el desarrollo del presente proyecto ya que cumple con las
características requeridas y además brinda una respuesta espectral mucho más
eficientes. Por otro lado hay que mencionar que otras técnicas fueron probadas
tales como la ventana de Hann y la ventana de Hamming [14], además del
49
enventanado Rectangular, pero la primera no presentó una adecuada respuesta en
frecuencia y la segunda a pesar que cuenta con una respuesta similar a la de
Blackman presenta una pequeña discontinuidad al final de su forma característica lo
que implica tener un poco de distorsión en el dominio de la frecuencia. Todo esto se
observa en la figura 3.9 donde se hace una comparación entre los distintos tipos de
enventanado tanto en el dominio del tiempo como en el dominio de la frecuencia.
Figura 3.9 Tipos de Enventanados en dominio de tiempo y frecuencia
Fuente: El Autor.
Tabla 3.2 Características de las Ventanas Espectrales.
Atenuación en el lóbulo
Ancho de Banda
Máximo Rizado en
Window
de los lados (dB)
de la Transición
Parabanda (dB)
Rectangular
-13
2
0.9/N
-21
50
Hann
-31
2
3.1/N
-44
Hamming
-41
2
3.5/N
-53
Blackman
-57
2
5.5/N
-74
Fuente: Tomado de http://www1.ceit.es/asignaturas/tratamiento%20digital/tema9.pdf.
Con lo observado en la grafica y en la tabla superior se determina que con la
ventana de Blackman ayuda a eliminar las discontinuidades al inicio y al final de los
bloques de la señal a analizarse y además presenta una mejor respuesta en el
dominio de la frecuencia, ya que permite mayor atenuación en los lóbulos
secundarios por lo que es el método más idóneo para utilizar en el presente
proyecto.
3.2.3
Bloque de Visualización e Implementación en el FPGA.
Una vez que la señal ha sido filtrada, diezmada, enventanada y adquirida la FFT
se procede a llevar los datos desde System Generator a Matlab con la ayuda del
bloque de Simulink “To Workspace” donde se tomará los datos para poder
graficarlos y visualizarlos comparando con el “Spectrum Scope ” de SysGen. En la
figura 3.10 se puede observar la gráfica de una señal sinusoidal de 2.5 KHz
visualizadas en Matlab y en System Generator respectivamente.
Figura 3.10 Visualización de una señal: (a) con SysGen y (b) con Matlab.
Fuente: El Autor.
Como se puede observar entre las gráficas el armónico principal de la señal se
encuentra en 2.5 KHz teniendo el mismo valor de amplitud, aunque si existe
contraste con los niveles de atenuación, ya que con Matlab se llega un promedio de
51
-65 dB mientras que con System Generator se llega a una media de -55 dB, lo que
da a entender que el FPGA brinda mayor atenuación del ruido que la simulación en
Matlab. Ahora que el diseño cumple con lo esperado se procede a implementarlo,
mostrando en la tabla 3.3 los recursos ocupados por el sistema con la ayuda del
bloque de System Generator “Resource Estimator” observando que el diseño está
en los límites de los recursos de la tarjeta Virtex II Pro.
Tabla 3.3 Recursos estimados de hardware para el diseño del SMSF.
Componentes de la
Virtex II Pro
Slices
Recursos
Disponibles
13696
Recursos
Usados
13087
Porcentaje
de Uso
95%
FFs
27392
24246
88%
BRAMs
136
21
15%
LUTs
27392
14024
51%
IOBs
556
87
16%
Emb. Mults.
16
3
18%
Fuente: El Autor.
La implementación en la tarjeta se realiza mediante co-simulación. Es así que la
gráfica 3.11 muestra los pasos para la co-simulación.
Figura 3.11 Generación de la Co-simulación
Fuente: El Autor.
52
Para generar el bloque de co-simulación, en el bloque System Generator
determinamos las opciones siguientes:
Compilation: Hardware Co-Simulation => xup_virtex_ii_pro. (Parámetros de la
tarjeta Virtex II Pro).
Part: Automáticamente al elegir xup_virtex_ii_pro en compilación se determina las
partes de la FPGA, se obtiene: Virtex2P xc2vp30-7ff896
Target Directory: Se especifica el directorio donde se ubicara los archivos
generados como resultado de la compilación. Por defecto se nombre como: ./netlist
Hardware Description Language: Especifica el lenguaje de descripción de hardware
(HDL) que se usará para la compilación del diseño, pueden ser VHDL y Verilog; se
escogerá VHDL.
Simulink System Period: Define el periodo del sistema en simulink, en unidades de
segundo. En el caso de este proyecto será: 1/48000
Una vez definidos los parámetros del bloque System Generator generamos la
compilación del modelo realizado. Al cabo de unos minutos, se ha generado el
bloque de co-simulación, el cual lo conectamos a las respectivas entradas y salidas
para luego simular el modelo. Al simular el modelo ya con el bloque co-simulator, la
tarjeta debe estar debidamente conectada al PC y encendida, para que, al realizar
la simulación el modelo se compile dentro de la FPGA XC2VP30 y comprobar que
el funcionamiento en la FPGA sea el mismo que en la simulación de Sysgen.
Figura 3.13 Diseño Implementado en el FPGA cs2vp30 bajo co-simulación.
Fuente: El Autor.
53
Capítulo IV
CONCLUSIONES Y RECOMENDACIONES
4.1 Conclusiones.
A partir de este trabajo se ha diseñado e implementado un Sistema de
Monitoreo de Señales en el Tiempo (SMST), así como de un Sistema de
Monitoreo de Señales en Frecuencia (SMSF) y utilizarlos en un Sistema de
adquisición y monitoreo de señales eléctricas, a través de un sistema
electrónico
basado en la utilización de una
FPGA, para análisis y
caracterización de señales en el rango de frecuencias de 0 a 3 KHz para el
SMST y para frecuencias entre el rango de 0 hasta 12 KHz para el SMSF.
Se ha implementado en distintos FPGAs, es así que con la utilización de la
tarjeta Spartan-3 se realizó la aplicación del SMST con la utilización de un
VGA para su visualización, mientras que con la tarjeta Virtex II Pro se realizó
la aplicación bajo co-simulación del SMSF.
Se ha logrado diseñar e implementar un circuito de atenuación y adecuación
que permite una digitalización apropiada de la señal analógica proveniente
de una fuente de señal externa por medio del conversor analógico a digital
(ADC) presente en la tarjeta periférica AIO1 conectada en el FPGA Spartan3 para el Sistema Monitoreo de Señales en el Tiempo, con lo cual se puede
ingresar señales de voltaje hasta de 12 Vpp.
Se ha implementado en el FPGA una memoria lógica en el Sistema de
Monitorización de Señales en el Tiempo, la cual permite almacenar los
datos
digitalizados
de
la
señal
analógica
de
entrada,
para
que
posteriormente sea leída y sus valores sean representados en pantalla. El
tamaño de la memoria es de 640 bytes y en base a esto, se tiene la limitante
de que sólo se pueda visualizar señales hasta los 3 KHz debido que la
memoria no cuenta con la capacidad de almacenar los valores digitalizados
para señales de mayor frecuencia y visualizarlos en pantalla. La capacidad
de la memoria tiene una relación directa con la resolución de la pantalla, que
54
para la Spartan-3 es de 640x480 pixeles, y en el caso de aumentar la
capacidad de la memoria significa también aumentar la resolución de
pantalla lo cual la tarjeta Spartan-3 no estaría en capacidad de soportar. La
aplicación de estas memoria es realmente importante, debido a que se
puede aplicar funcionalidades al diseño como por ejemplo el de congelar en
pantalla la señal, o el de estabilizar una señal que es demasiado veloz para
poder visualizar sus características correctamente.
Se comprobó la fiabilidad del equipo del Sistema de Monitoreo de Señales
en el Tiempo en base a la comparación de resultados de mediciones frente
a un osciloscopio convencional, teniendo un error aproximado del 0.75%
para la amplitud es decir una variación de
frecuencia es decir una variación de
0.09V y de un 0.31% para la
9.3 Hz tal como se observa en la
tabla 3.1, brindado al usuario la seguridad que el análisis y procesamiento
de la señal se ha realizado de manera óptima.
Se ha conseguido incluir en el Sistema de Monitoreo de Señales en el
Tiempo las características básicas de un Osciloscopio Digital emulando en
gran parte su funcionamiento, es así que el SMST cuenta con un rango de
funcionamiento de 0 a 3 KHz el mismo que fue comprobado con un software
de generación de tonos y con un generador de funciones como fuentes de
señal, y con una señal de entrada de
12 Vpp debido al circuito de
atenuación que cuenta con tres escalas (0-3V, 3-6V y 6-12V). Además
posee las funciones Hold y Triggering que permite distintas visualizaciones
de la señal en pantalla. Como limitante en el proyecto, no se pudo realizar
una escala numérica en la pantalla para la visualización de la amplitud y
frecuencia, debido que es forzoso un módulo de memoria adicional para
programar los caracteres necesarios para mostrar en pantalla, pero esto
implica que con este nuevo módulo de memoria se excede los recursos de
la tarjeta Spartan-3 por lo que no se puede implementar.
Se ha conseguido implementar un Sistema de Monitoreo de Señales en
Frecuencia el mismo que cuenta con un rango de funcionamiento de 0 a 12
KHz debido a las características de la co-simulación y en cuanto se
encuentra el diseño en los límites de los recursos de la tarjeta XUP Virtex II
55
Pro, tal como se puede observar en la tabla 3.3. Además cuenta con
resolución de frecuencia de 93.75 Hz y salida de 16 bits. Posee la capacidad
de almacenar los datos analizados para una posterior visualización. Cabe
mencionar que el SMSF incorpora las funciones principales de un
Analizador de Espectro emulando así su funcionamiento, pero como una
limitante en el sistema es debido a la co-simulación, que reparte los
recursos de memoria
del computador para el análisis tanto en System
Generator de Matlab como en el FPGA, haciendo que el procesamiento de
los datos sea lento así como su visualización.
La implementación de estas herramientas tienen un gran contenido
pedagógico, ya que se diseñaron los algoritmos necesarios para cumplir con
los requerimientos básicos de un osciloscopio tales como la adquisición y
procesamiento de las señales, visualización en la pantalla de la señal y de
las funciones de Hold y Triggering, así como de un analizador de espectro; y
ayudar a los profesionales en formación en la comprensión de el
comportamiento de las distintas señales en el dominio del tiempo como en el
de frecuencia.
El uso de estas tecnologías son validas para la aplicación e implementación
de sistemas electrónicos de medición y monitoreo básicos frente a equipos
comerciales costosos. Pero a su vez, esta tecnología puede ser
reemplazada o mejorada con otros sistemas electrónicos, tal es el caso de
micro-controladores y pantallas GLCD que pueden reemplazar algunas
aplicaciones tanto de los FPGAs como de monitores VGA.
4.2 Recomendaciones.
El Sistema de Monitoreo de Señales en el Tiempo fue implementado en la
tarjeta Spartan-3 la cual tiene buenas prestaciones y brinda un
funcionamiento adecuado al momento de compilar y correr el diseño, pero
sería recomendable el intentar actualizar el diseño para un FPGA más
avanzado tal como la Virtex II Pro, la cual cuenta con mayores capacidades
así como de mayor volumen de procesamiento y de velocidad. Además la
Virtex II Pro cuenta con un conversor analógico a digital interno por lo cual la
56
tarjeta periférica AIO1 ya no sería necesaria lo que ayudaría a reducir el
tamaño de Hardware, y además cuenta con un puerto XSGA que serviría
para la visualización de la señal, como también posee una ranura de
expansión de memoria RAM lo que ayudaría a aumentar la velocidad de
procesamiento de los datos.
Se debe emprender en la investigación de aplicaciones con el VGA para la
familia Spartan y en especial para la Virtex, ya que fue esto uno de los
mayores problemas y limitantes para el diseño y culminación del proyecto de
tesis, debido que existe documentación de aplicaciones para la Spartan pero
para el caso de la familia Virtex no es así, por lo que el diseño de
aplicaciones para el VGA es complicado y difícil de implementar.
El sistema de monitorización de señales en frecuencia se implementó bajo
el método de co-simulación en la FPGA Virtex II Pro, y en base a aquello
sería muy interesante el proponer la mejora del diseño, con la exportación
de los datos a través del puerto serial de la tarjeta para que con la ayuda del
PC se pueda hacer la reconstrucción de los datos y su visualización. Hay
que aclarar que en el puerto serial su transmisión de datos no es muy rápida
por lo que se puede transmitir hasta 9600 bps pero sería muchos más
eficiente y rápido que el método de co-simulación.
Finalmente, otra forma de mejorar el desempeño y las características del
sistema de monitorización de señales en frecuencia es utilizando una nueva
tarjeta ya sea el FPGA Virtex 5 SXT o la Xtreme DSP la cual cuenta con un
módulo de RF el cual ayudaría a incrementar al ancho de banda de la señal
a analizarse. Además estas tarjetas cuentan con mayor capacidad de
procesamiento y rapidez lo que ayudaría para poder calcular la FFT de
1024 o 2048 puntos, así como lograr que los filtros tengan mejor respuesta
de frecuencia y sean mucho más selectivos.
57
BIBLIOGRAFÍA
[1] U.T.N.-F.R.M., Mediciones con Analizador de Espectro de RF-TP6, 2002.
[2] http://rabfis15.uco.es/lvct/tutorial/22/ayuda/terminologia.htm
[3] http://www.unicrom.com/Tut_la_corriente_alterna__.asp
[4] http://www.elo.utfsm.cl/~lsb/elo102/labs/sinusoides.htm
[5] http://es.wikipedia.org/wiki/
[6] KURT D. ROGERS (Binghamton University), Acceleration and Implementation of
a DSP Phase-Based Frequency Estimation Algorithm, 2003.
[7] Lyons Richard G., Understanding Digital Signal Processing, Prentice Hall Inc.,
2001.
[8] Jones Douglas L., Radix-4 FFT Algorithms, 2006.
[9] Xilinx, Fast Fourier Transform v5, 2007.
[10] Digilent, Spartan-3 Starter Kid Board User Guide, 2005.
[11] Xilinx, Hardware Reference Manual XUPV2P, 2005.
[12] Digilent, AIO1 Reference Manual, 2004.
[13] Petrone Joseph (The Florida State University), Adaptative Filter Architectures
for FPGA Implementation, 2004.
[14] http://www1.ceit.es/asignaturas/tratamiento%20digital/tema9.pdf
[15] http://www.pablin.com.ar/electron/cursos/introosc/index.htm
58
ANEXO A
LISTA DE ACRÓNIMOS Y TÉRMINOS.
ADC:
Conversión Analógica a Digital, conocida también como A/D.
AIO1:
Analog I/O up to 1MHz.
ALIASING:
Efecto que causa que señales continuas distintas se tornen
indistinguibles cuando se les muestrea digitalmente.
DFT:
Discrete Fourier Transform.
DSP:
Application Specific Integrated Circuit.
FDCE:
Flip-Flop type D with Clock Enable.
FFT:
Fast Fourier Transform.
FPGA:
Field Programmable Gates Array.
HDL:
Hardware Description Language.
I/O:
Imput / Output.
IDFT:
Inverse Discrete Fourier Transform.
JTAG:
Joint Test Action Group.
LUT:
Look-up Table.
MSB:
Bit de Mayor Significado.
PROM:
Programmable Read-Only Memory.
RADIX:
Algoritmo que permite calcular la FFT de una señal, y dependiendo si
es Radix-4 o Radix-2 los datos calculados serán más precisos pero
requerirá mayor carga computacional.
ROM:
Read Only Memory
VHDL:
Lenguaje de Descripción de Hardware de VHSIC.
SMST:
Sistema de Monitorización de Señales en el Tiempo.
SMSF:
Sistema de Monitorización de Señales en Frecuencia.
SR8CE:
Shift Register of 8 bits with Clock Enable.
SRAM:
Static Random Access Memory.
XC3S200:
FPGA de la Familia Spartan 3 serie 200.
XC2VP30:
FPGA de la Familia Virtex II Pro serie 30.
59
ANEXO B
Práctica 1: Empleo de un Osciloscopio para el desarrollo de
aplicaciones DSP
Objetivo.
Emplear el Sistema de Monitorización de Señales en el Tiempo (Osciloscopio) para
el entendimiento y desarrollo de aplicaciones de procesamiento digital de señales y
de telecomunicaciones así para el manejo de estos sistemas.
Procedimiento.
Se realizará pruebas para comprobar el correcto funcionamiento del Osciloscopio
implementado en una FPGA. Con el propósito de verificar éste sistema, se
emplearán señales conocidas en el dominio del tiempo la cual será generada por un
Generador de Funciones y el resultado será comparado por la simulación de la
misma señal utilizando el programa Electronics Workbench 9.
El Osciloscopio cuenta con las características siguientes:
Rango de frecuencia de 0 a 3000 Hz.
Señal de entrada: 12 Vpp Máx.
Conectividad con un monitor VGA.
Osciloscopio.
El osciloscopio no es más que un instrumento para la visualización y medición de
señales eléctricas en el dominio del tiempo. En otras palabras, se pueden ver
formas de una señal en él. Una señal eléctrica siempre se presentará con el tiempo
en el eje horizontal (X) y la amplitud en el eje vertical (Y).
La forma de onda nos proporciona una valiosa información sobre la señal. En
cualquier momento podemos visualizar la amplitud que alcanza y, por lo tanto,
saber si el voltaje ha cambiado en el tiempo. Es así que en el dominio temporal los
60
elementos más característicos de una señal eléctrica son: la amplitud, la fase y la
frecuencia.
Figura 1. Osciloscopio implementado en una FPGA.
Pruebas de Funcionamiento del Osciloscopio
Paso 1
Para comprobar el correcto funcionamiento del Sistema del Osciloscopio
implementado en la FPGA Spartan-3 XC3S200 se utilizará señales conocidas tal
cual como señales sinusoidales, señales rectificadas, y señales triangulares. Para
la generación de las señales se empleará un Generador de funciones el mismo que
llevará las señales al módulo de Adquisición del Osciloscopio.
Hay que tener en cuenta que el osciloscopio cuenta con un límite en cuanto a la
señal de entrada, la cual debe de estar entre 0 a 12 Vpp para la amplitud y de 0 a
3000 Hz para la frecuencia. El Osciloscopio basado en FPGA no cuenta con una
escala numérica visible en la pantalla para medir la amplitud y frecuencia tal como
posee un osciloscopio comercial, pero gracias al circuito de atenuación el cual
permite una señal de entrada con voltaje máximo de 12 Vpp, la escala presente en
la pantalla representada por la cuadrícula será 3 V, 6 V o 12 V, siendo que cada
división en la escala simboliza 0.6 V, 1.6 V o 3.3 V implícitamente la cual dependerá
de la escala seleccionada. Siendo así para poder calcular la amplitud de la señal,
se debe multiplicar los 0.6 V (o el valor asignado por la escala del selector del
osciloscopio) por el número de divisiones que la señal cubra en su valor máximo,
61
obteniendo así un valor aproximado de su valor real. En cuanto al cálculo de la
frecuencia, en los displays del FPGA se muestra una escala numérica (representa
los micro segundos en divisiones de la pantalla) por la que se debe multiplicar por el
número de divisiones que cubra un periodo de la señal, se calcula el inverso de
éste valor y se obtendrá el valor de frecuencia en Hz. Así por ejemplo si en los
displays se muestra 400 y el número de divisiones de un periodo en la cuadrícula
de la pantalla es 2.5 tendremos que la frecuencia es:
f=
1
= 1000 Hz
400 s * 2.5
(1)
Utilizando el programa Electronics Workbench simularemos como debe de ser la
visualización de las señales en el VGA del Osciloscopio.
Primero se generará una señal tipo seno de 1500 Hz con una amplitud de 1.5 V tal
como se observa en la simulación de la figura 2. Mientras que en la figura 3 se ve
los resultados obtenidos en el Osciloscopio implementado en el FPGA.
Figura 2. Señal Senoidal de 1.5 V y 1500 Hz.
62
En la figura 3 en cambio se puede observar la señal en el VGA, verificando su
correcta visualización.
Figura3. Visualización en el VGA
Se puede ver en la gráfica superior que la señal cubre en la cuadrícula 1.3
divisiones en el eje Y, lo cual por los 0.6 V que representa en este caso cada
cuadrado obtenemos un valor total de 1.56 Vpp. El diseño cuenta con un margen de
error de 0.09 V, por lo que se encuentra dentro de los valores establecidos.
Para cálculo de la frecuencia, se debe seguir el procedimiento antes descrito,
siendo la escala en el FPGA 400
tal y como se muestra en la figura 4.
Figura4. Escala en displays del FPGA para el cálculo de la Frecuencia.
Siguiendo con la ecuación 1, y observando que en la figura 3 el periodo de una
señal cubre 1.65 divisiones en el eje X, la frecuencia de la señal es de 1515 Hz. El
diseño consta con un margen de error de
dentro de los valores aceptables.
9.3 Hz por lo que la frecuencia consta
63
Siguiendo con las pruebas, se generará una señal senoidal de 60 Hz con una
amplitud de 4 Vpp, a la cual se lo conectará a un puente rectificador quien eliminará
el valor del semiciclo negativo de la señal. Esto se puede ver en la figura 5, la cual
representa una simulación de la señal con un puente rectificador.
Figura 5. Gráfica de una señal rectificada
Como se ve en la gráfica superior, al colocar un puente rectificador a una señal tipo
seno de 4 Vpp, el puente sólo permite el paso de la señal en el semi ciclo positivo
de la misma dando una onda de 2.5 Vp. En cambio, en la gráfica de la figura 6 se
muestra la señal visualizada en el VGA.
Figura 6. Gráfica de una señal rectificada en el VGA
Se puede observar que el osciloscopio basado en una FPGA cumple con la
correcta visualización, ya que cada cuadrado de la cuadrícula representa 1.6 V
64
siendo que el máximo valor de la onda es de 1.25 nos da una amplitud de 2.56 Vp y
de una frecuencia de 60.2 Hz.
Para finalizar se graficará una señal triangular de 1.2 KHz de 2.5 Vpp tal como se
ve en la figura 7.
Figura 7. Gráfica de una señal triangular.
Ahora, se presenta la imagen de la señal triangular visualizada con el osciloscopio
en un VGA.
Figura 8. Gráfica de una señal triangular en el VGA.
Como se puede observar la gráfica tiene una amplitud de 2.52 Vpp, ya que cada
cuadrado representa 0.6 V en la cuadrícula y su amplitud máxima cubre 2.1
65
cuadrados de la misma. En cuanto al cálculo de la frecuencia, la escala en los
displays del FPGA marca 40, y el número de divisiones que cubre un periodo de la
señal es de 2.1, siendo la frecuencia de 1190 Hz.
Práctica 2: Empleo de un analizador de espectro para el
desarrollo de aplicaciones DSP
Objetivo.
Emplear el Sistema de Monitorización de Señales en Frecuencia (Analizador de
Espectro) para el entendimiento y desarrollo de aplicaciones de procesamiento
digital de señales y de telecomunicaciones así para el manejo de estos sistemas.
Procedimiento.
Se realizará pruebas para comprobar el correcto funcionamiento del Analizador de
Espectro implementado en una FPGA. Con el propósito de verificar éste sistema, se
emplearán señales conocidas en el dominio de la frecuencia
El Analizador de Espectros tiene las características siguientes:
Un bloque FFT de 512 puntos.
Resolución de frecuencia de 93.75 Hz.
Un filtro Pasa Bajos (0Hz - 3000Hz).
Un filtro Pasa Bandas (3000Hz - 7000Hz).
Un filtro Pasa Altos (7000Hz - 12000Hz).
Analizador de Espectro.
El Analizador de Espectros es un instrumento que se basa en el análisis en el
dominio de la frecuencia y que permite ver en una pantalla en forma simple y rápida
las frecuencias de las armónicas que componen una señal compleja, y además
permite conocer la relación entre esas componentes, mediante bastones
presentados en la pantalla, cuya amplitud es proporcional a la amplitud de los
armónicos.
66
Figura 9. Analizador de Espectros implementado en una FPGA.
Pruebas de Funcionamiento del Analizador de Espectros
Paso 1
Para comprobar el correcto funcionamiento del Sistema del Analizador de Espectro
implementado en la FPGA Virtex II Pro XV2P30 se utilizará señales conocidas tal
cual como señales sinusoidales, señales cuadradas, y señales triangulares. Para la
generación de las señales se empleará el Software Cool Edit Pro 2.1 el mismo que
se exportará hacia el entorno de System Generator de Matlab.
Hay que tener en cuenta que el analizador de espectros fue implementado en el
FPGA bajo el entorno de co-simulación, es decir que se realiza una simulación en el
entorno de System Generator y se realiza al mismo tiempo el procesamiento de la
señal en la tarjeta en tiempo real. Además el diseño cuenta con un límite en cuanto
a la señal de entrada, la cual debe de estar entre 0 a 12 KHz.
En cuanto al funcionamiento del Analizador de Espectro, se sabe que en el dominio
del tiempo las señales se ven y muestran distinta información que en el dominio de
la frecuencia, y como método para comprobar su correcto funcionamiento esta el
introducir primeramente una señal pura de 5 KHz. Para una señal seno pura, su
representación tanto en el tiempo como en el dominio de la frecuencia se ilustra en
la figura 10.
67
Figura 10. Señal senoidal en el dominio temporal y frecuencial.
Cuando se habla de señal senoidal pura, se refiere al hecho de que la onda no
cuenta con ningunas otras componentes, lo cual se traslada al dominio de la
frecuencia en que sólo se visualiza un solo componente de frecuencia la cual se
denomina frecuencia fundamental. Sabiendo esto, en la gráfica 11 se visualiza la
señal procesada por el Analizador de espectro en el FPGA.
Figura 11. Señal senoidal de 5 KHz visualizado por el FPGA.
Como se observa, la frecuencia fundamental de la señal se encuentra en 5 KHz, y
no se visualiza armónicos secundarios. Hay que indicar que la escala vertical se
representa en este caso en dB, la cual es una función logarítmica en base a la
amplitud de la señal en voltios en el dominio temporal.
68
Otra prueba es introduciendo una señal cuadrada de 1 KHz de frecuencia, cuya
representación en el modo temporal y frecuencial se muestra en la figura 12.
Figura 12. Señal cuadrada en el dominio temporal y frecuencial.
Como se observa en la figura superior, una señal cuadrada además de contar con
el armónico principal posee armónicos secundarios los cuales son múltiplos
escalares de la frecuencia fundamental tal como se visualiza en la gráfica 12. Para
comprobarlo, se ingresará al analizador de espectros tal señal, cuyos resultados se
observan en la figura 13.
Figura 13. Señal cuadrada de 1 KHz visualizado en dB por el FPGA.
En la gráfica superior se visualiza la señal cuadrada a 1 KHz graficada por el
Analizador de espectros en escala logarítmica, pero en la figura 14 se presenta la
misma señal pero esta vez en escala lineal.
69
Figura 14. Señal cuadrada de 1 KHz visualizado en escala lineal por el FPGA.
La gráfica superior se observa que la representación espectral para una señal
cuadrada de 1 KHz es similar a la explicada en la figura 12, presentando así la
confiabilidad de los datos para el Analizador de Espectros implementado en una
FPGA.
Para finalizar, se ingresará una señal triangular de 1 KHz cuya representación en el
modo temporal y frecuencial se muestra en la figura 15.
Figura 15. Señal triangular en el dominio temporal y frecuencial.
Como se observa en la figura superior, una señal triangular además de contar con
el armónico principal posee armónicos secundarios al igual que en una señal
cuadrada, aunque sus niveles de voltaje son menores como se visualiza en la
gráfica 15. Para comprobarlo, se ingresará al analizador de espectros tal señal,
cuyos resultados se observan en la figura 16.
70
Figura 16. Señal triangular de 1 KHz visualizado en dB por el FPGA.
En la gráfica superior se visualiza la señal triangular a 1 KHz graficada por el
Analizador de espectros en escala logarítmica, pero en la figura 17 se presenta la
misma señal pero esta vez en escala lineal.
Figura 17. Señal triangular de 1 KHz visualizado en escala lineal por el FPGA.
La gráfica superior se observa que la representación espectral para una señal
triangular de 1 KHz es similar a la explicada en la figura 15, presentando así la
confiabilidad de los datos para el Analizador de Espectros implementado en una
FPGA.
71
ANEXO C
DISEÑO ESQUEMATICOS
TITULO:
Sistema de adquisición y monitoreo de señales eléctricas, basado en la utilización de
una FPGA, para análisis y caracterización de señales en el rango de frecuencias bajas
CONTENIDO: Diseño General del SMST en Esquemático
REVISADO:
FECHA:
10-12-2008
DIBUJO:
NÚMERO:
1/4
1
ESCALA:
1:1
72
TITULO:
Sistema de adquisición y monitoreo de señales eléctricas, basado en la utilización de
una FPGA, para análisis y caracterización de señales en el rango de frecuencias bajas.
CONTENIDO: Diseño del Módulo de Adquisición en Esquemático
REVISADO:
FECHA: 10-12-2008
DIBUJO:
NÚMERO:
2/4
2
ESCALA:
1:1
73
TITULO:
Sistema de adquisición y monitoreo de señales eléctricas, basado en la utilización de
una FPGA, para análisis y caracterización de señales en el rango de frecuencias bajas
CONTENIDO: Diseño del SR8CE del Módulo de Adquisición.
REVISADO:
FECHA: 10-12-2008
DIBUJO:
NÚMERO:
3/4
3
ESCALA:
1:1
74
TITULO:
Sistema de adquisición y monitoreo de señales eléctricas, basado en la utilización de
una FPGA, para análisis y caracterización de señales en el rango de frecuencias bajas
CONTENIDO: Diseño del Módulo de Vga Display
REVISADO:
FECHA: 10-12-2008
DIBUJO:
NÚMERO:
4/4
4
ESCALA:
1:1
75
ANEXO D
CÓDIGO EN VHDL.
CÓDIGO DEL “S2PCTRL” DEL MÓDULO DE “ADQUISITION”.
-- Descripción
-- 's2pctrl' es la parte de control del módulo de Adquisición.
-- Esta implementa el protocolo de comunicación con el convertidor A/D.
-- Además envía las señales de control al conversor A/D (convst, sclk)
-- Recibe los datos (din)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity s2pctrl is
port (rst
: in std_logic;
mclk
: in std_logic;
sample : in std_logic; -- dice q está listo para la conversión
convst : out std_logic; -- inicia la conversión
sclk
: out std_logic;
load
: out std_logic;
sh_en : out std_logic;
rdy
: out std_logic); -- la conversión está lista
end s2pctrl;
architecture Behavioral of s2pctrl is
signal cnt: std_logic_vector(7 downto 0) := (others => '0');
begin
-- con la ayuda de "cnt" el controlador obedece el tiempo de las señales del
convertidor A/D
76
process(mclk, sample,cnt)
begin
if (sample = '1') then
cnt <= (others => '0'); -- está bien empezar
elsif (mclk'event and mclk = '1') then
cnt <= cnt + 1;
end if;
if (cnt = X"FF") then
cnt(0) <= '0'; -- previene que el contador este en overflow (mantenerlo en X "FE")
empezando una conversión sin el consentimiento de osc_ctrl
-- ('cnt' debería ser reseteado solo por sample='1')
end if;
end process;
sh_en <= '1' when (cnt >= X"D6" and cnt < X"F5") else '0';
--habilita el clock serial cuando es necesitado
sclk <= cnt(1); -- los datos son recibidos desde el ADC en el flaco de subida de 'sclk'
load <= not cnt(1); -- carga los bits en el registro
convst <= '1' when (cnt = X"28" or rst = '1') else
'0' when cnt = X"02"; -- convst es activado alrededor de 1 us
rdy <= '1' when (sample = '1' or rst = '1') else
-- rdy es reseteado cuando osc_ctrl reconoce la activación de 'rdy' (poniendo
sample a '1')
'0' when cnt = X"F5";
-- rdy es activado cuando la conversión esta lista y los datos están disponibles en el
registro
end Behavioral;
77
CÓDIGO
DE
LA
FUNCIÓN
“SR_TUNER”
DEL
MÓDULO
DE
“OSC_CTRL”.
-- Descripción
-- 'srate' representa el tiempo transcurrido entre dos muestras
-- 'srate' es incrementado o decrementado exponencialmente cuando es presionado
'smpupbtn'/'smpdownbtn'
-- 'srate' inicia en un valor específico (250 ns) luego este es incrementado (500,
1000, etc.)
-- 'uspdiv' representa los 'microsegundos por división' en la pantalla del osciloscopio
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity sr_tuner is
PORT( ssg :
OUT
STD_LOGIC_VECTOR (7 DOWNTO 0);
an
:
OUT
STD_LOGIC_VECTOR (3 DOWNTO 0);
srate
:
OUT
STD_LOGIC_VECTOR (15 DOWNTO 0);
dn
:
IN
STD_LOGIC;
up
:
IN
STD_LOGIC;
rst
:
IN
STD_LOGIC;
mclk
:
IN
STD_LOGIC);
end sr_tuner;
architecture Behavioral of sr_tuner is
COMPONENT rate2div
PORT(
srate : IN std_logic_vector(15 downto 0);
uspdiv : OUT std_logic_vector(15 downto 0)
);
END COMPONENT;
COMPONENT ssgdisp
PORT(
rst : IN std_logic;
mclk : IN std_logic;
78
xval : IN std_logic_vector(15 downto 0);
ssg : OUT std_logic_vector(7 downto 0);
an : OUT std_logic_vector(3 downto 0)
);
END COMPONENT;
COMPONENT btnpush
PORT( mclk :
IN
STD_LOGIC;
up
:
IN
STD_LOGIC;
dn
:
IN
STD_LOGIC;
en
:
OUT
STD_LOGIC);
END COMPONENT;
signal ce : std_logic;
signal load : std_logic;
signal uord : std_logic;
signal sr : std_logic_vector(15 downto 0);
signal xval : std_logic_vector(15 downto 0);
begin
-- incrementa / decrementa el 'srate' de acuerdo a los botones de entrada (up/dn)
process (mclk)
begin
if (mclk'event and mclk='1') then
if (load='1') then
sr <= X"00FA";
elsif (ce = '1') then
if (up = '1') then
sr <= sr(14 downto 0) & '0';
else
sr <= '0' & sr(15 downto 1);
end if;
end if;
end if;
end process;
79
load <= rst or not sr(7);
srate <= sr;
uord <= up or dn;
-- este proceso tiene cuidado que el valor de "srate" sea incrementado solamente
una vez, cuando el botón es presionado
process(mclk, uord)
variable push_event : boolean := false;
begin
if (uord = '0') then
ce <= '0';
push_event := false;
elsif (mclk'event and mclk='1') then
if (push_event = false) then
ce <= '1';
push_event := true;
else
ce <= '0';
end if;
end if;
end process;
-- esta unidad calcula el valor en 'microsegundos por división' para ser mostrado
acorde a 'srate'
srate2uspdiv: rate2div PORT MAP(
srate => sr,
uspdiv => xval
);
-- el los 7 segmentos se muestra el valor de los 'microsegundos por división'
ssg_display: ssgdisp PORT MAP(
rst => rst,
mclk => mclk,
xval => xval,
80
ssg => ssg,
an => an
);
end Behavioral;
CÓDIGO
DE
LA
SUB
FUNCIÓN
“RATE2”
DEL
MÓDULO
DE
“OSC_CTRL”.
-- Descripción
-- 'uspdiv' representa los 'microsegundos por división' en la pantalla del osciloscopio
-- 'uspdiv' es una función lineal de 'srate': 'uspdiv' = 'srate' x periodos (mclk) x
(número de píxeles entre dos líneas verticales)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity rate2div is
Port ( srate : in std_logic_vector(15 downto 0);
uspdiv : out std_logic_vector(15 downto 0));
end rate2div;
architecture Behavioral of rate2div is
signal val : std_logic_vector(4 downto 0);
begin
-- el valor de uspdiv es traducido, en vez de ser calculado para optimización
--'uspdiv' = 'srate' x periodo (mclk) x (número de píxeles entre dos líneas verticales)
--'uspdiv' = 'srate' x 20 ns x 40 ns/div
-- si 'srate'=250 ns (X"00FA") entonces 'uspdiv' = 250 ns x 20 ns x 40 ns/div =
200000 ns = 200 us
val <= "00001" when srate=X"00FA" else
"00010" when srate=X"01F4" else
"00100" when srate=X"03E8" else
81
"01011" when srate=X"07D0" else
"11001" when srate=X"0FA0";
uspdiv <= "00" & val & "000000000";
end Behavioral;
CÓDIGO DE LA SUB FUNCIÓN “SSGDISP” DEL MÓDULO DE
“OSC_CTRL”.
-- Descripción
-- muestra los valores en los displeys de 7 segmentos
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ssgdisp is
Port (rst : in std_logic;
mclk : in std_logic; -- clock principal de 50 MHz
xval : in std_logic_vector(15 downto 0); -- número en hexadecimal para ser
mostrado (4 dígitos)
ssg : out std_logic_vector(7 downto 0);
an : out std_logic_vector(3 downto 0));
end ssgdisp;
architecture Behavioral of ssgdisp is
-- contador en milisegundos (exactamente 1.3107 ms) el tiempo en que un dígito es
mostrado en el 7 segmentos
signal ms_cnt : std_logic_vector(15 downto 0);
-- cuál digito es mostrado en un tiempo dado
signal digcnt : std_logic_vector( 1 downto 0);
82
-- el valor hexadecimal de un digito
signal hex : std_logic_vector(3 downto 0);
signal dig : std_logic_vector(6 downto 0);
begin
-- ms_cnt es reseteado cada milisegundo => el periodo de ms_cnt(15) es 1 ms
process (rst, mclk, ms_cnt)
begin
if (rst = '1') then
ms_cnt <= (others => '0');
elsif (mclk'event and mclk = '1') then
ms_cnt <= ms_cnt + 1;
end if;
end process;
-- cada digito del número a ser mostrado (ej. xval) es activado en el 7 segmentos
en 1 ms
process(rst, ms_cnt(15))
begin
if (rst = '1') then
digcnt <= "00";
elsif (ms_cnt(15)'event and ms_cnt(15) = '1') then
digcnt <= digcnt + 1;
end if;
end process;
-- estos intervalos de 4-bit representan los digitos (hexa) de los numeros a ser
mostrados
hex <= xval(15 downto 12) when (digcnt = "00") else
xval(11 downto 8) when (digcnt = "01") else
83
xval(7 downto 4) when (digcnt = "10") else
xval(3 downto 0) when (digcnt = "11");
-- habilita el ánodo correcto a un tiempo apropiada
an <= "1110" when (digcnt = "00") else
"1101" when (digcnt = "01") else
"1011" when (digcnt = "10") else
"0111" when (digcnt = "11");
dig <= "0111111" when hex = "0000" else – 0
"0000110" when hex = "0001" else -- 1
"1011011" when hex = "0010" else -- 2
"1001111" when hex = "0011" else -- 3
"1100110" when hex = "0100" else -- 4
"1101101" when hex = "0101" else -- 5
"1111101" when hex = "0110" else -- 6
"0000111" when hex = "0111" else -- 7
"1111111" when hex = "1000" else -- 8
"1101111" when hex = "1001" else -- 9
"1110111" when hex = "1010" else -- A
"1111100" when hex = "1011" else -- B
"0111001" when hex = "1100" else -- C
"1011110" when hex = "1101" else -- D
"1111001" when hex = "1110" else -- E
"1110001" when hex = "1111" else -- F
"0000000";
ssg(6 downto 0) <= not dig;
ssg(7) <= '1';
end Behavioral;
CÓDIGO DEL “VGA_MEM” DEL MÓDULO DE “VGA_DISPLAY”.
-- Descripción
84
-- memoria del video: cada entrada in la memoria representa una columna en la
pantalla
-- el valor de una entrada es la coordenada en y en la pantalla
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity vgamemory is
Port (rst : in std_logic;
rd : in std_logic;
wr : in std_logic;
r_addr : in std_logic_vector(9 downto 0);
w_addr : in std_logic_vector(9 downto 0);
dataout : out std_logic_vector(7 downto 0);
datain : in std_logic_vector(7 downto 0));
end vgamemory;
architecture Behavioral of vgamemory is
type mem_type is array (639 downto 0) of std_logic_vector(7 downto 0); -- tamaño
de la memoria: 640x8
signal mem: mem_type;
begin
-- proceso de lectura de la memoria
process (rst,r_addr, rd, mem)
begin
dataout <= (others => '0');
if (rst = '0' and rd = '1') then
dataout <= mem(conv_integer(r_addr));
end if;
end process;
-- proceso de escritura de la memoria
85
process (wr)
begin
if (wr'event and wr = '0') then
mem(conv_integer(w_addr)) <= datain;
end if;
end process;
end Behavioral;
CÓDIGO DEL “VGA” DEL MÓDULO DE “VGA_DISPLAY”.
-- Descripción
-- “vga” es el controlador de las señales que se presentaran en la pantalla
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity vga is
Port (
mclk : in std_logic;
data : in std_logic_vector(7 downto 0);
addr : out std_logic_vector(9 downto 0);
rd
: out std_logic;
hs
: out std_logic;
vs
: out std_logic;
red : out std_logic;
grn : out std_logic;
blu : out std_logic);
end vga;
architecture Behavioral of vga is
constant hpixels : std_logic_vector(9 downto 0) := "1100100000";
-- 800 Valor de los píxeles en la línea horizontal
86
constant vlines : std_logic_vector(9 downto 0) := "1000001001";
-- 521 Número de líneas horizontales en la pantalla
constant hbp : std_logic_vector(9 downto 0) := "0010010000";
-- 144 Porche trasero horizontal
constant hfp : std_logic_vector(9 downto 0) := "1100010000";
-- 784 Porche frontal horizontal
constant vbp : std_logic_vector(9 downto 0) := "0000100111";
-- 31 Porche trasero vertical
constant vfp : std_logic_vector(9 downto 0) := "0111111111";
-- 511 Porche frontal vertical
constant xmax : std_logic_vector(9 downto 0) := "1001111111"; -- 639
constant ymax : std_logic_vector(9 downto 0) := "0101101111"; -- 479
signal hc, vc : std_logic_vector(9 downto 0) := "0000000000";
-- estos son los contadores horizontales y verticales
signal clkdiv : std_logic := '0';
-- divisor del clock
signal vidon
: std_logic := '0';
-- dice si está o no listos los datos para mostrar
signal vsenable : std_logic := '0';
signal x, y
-- habilita el contador vertical
: std_logic_vector(9 downto 0) := "0000000000";
-- coordenadas horizontales y verticales
signal ycoord : std_logic_vector(9 downto 0) := "0000000000";
begin
-- esto reduce los 50Mhz del clock a la mitad
process(mclk)
begin
if(mclk = '1' and mclk'EVENT) then
clkdiv <= not clkdiv;
end if;
end process;
-- corre el contador horizontal
process(clkdiv)
87
begin
if(clkdiv = '1' and clkdiv'EVENT) then
if hc = hpixels then –-si el contador a llegado al final de contar píxeles
hc <= "0000000000";
--resetea el contador
vsenable <= '1'; --habilita el contador vertical para incrementar
else
hc <= hc + 1;
--Incrementa el contador horizontal
vsenable <= '0';
end if;
end if;
end process;
hs <= '1' when hc(9 downto 7) = "000" else '0'; --pulso de sincronización horizontal
process(clkdiv)
begin
if(clkdiv = '1' and clkdiv'EVENT and vsenable = '1') then
if vc = vlines then
--Resetea cuando el numero de línea es leído
vc <= "0000000000";
else
vc <= vc + 1;
--Incrementa el contador vertical
end if;
end if;
end process;
vs <= '1' when vc(9 downto 1) = "000000000" else '0';
--Pulso de sincronización Vertical
x <= hc - hbp;
y <= vc - vbp;
ycoord <= "0011110000" - (data * "00000101");
grn <= '1' when (y = ycoord and vidon = '1') else '0';
-- traza la señal en la pantalla
88
red <= '1' when (y = X"00F0" and vidon = '1') else '0';
-- dibuja una línea la cual representa la señal de valor '0'
-- dibuja las cuadrículas azules
blu <= '1' when ((y = X"6F" or y = X"9A" or y = X"C5" or y = X"11B" or y = X"146" or
y = X"171" or – dibuja las líneas horizontales
((x = X"27" or x = X"4F" or x = X"77" or x = X"9F" or x = X"C7" or x = X"EF" or x =
X"117" or x = X"13F" or x = X"167" or x = X"18F" or x = X"1B7" or x = X"1DF" or x =
X"207" or x = X"22F" or x = X"257") -- dibuja las líneas verticales
and y > X"6F" and y < X"171")) – estas líneas representan el mínimo y the
maximum of the signal
and vidon='1' and clkdiv = '1') or -- these rows represent the minimum and the
maximum of the signal
((x = X"7" or x = X"F" or x = X"17" or x = X"1F" or x = X"27" or x = X"2F" or x = X"37"
or x = X"3F" or x = X"47" or x = X"4F" or x = X"57" or x = X"5F" or x = X"67" or x =
X"6F" or x = X"77" or x = X"7F" or x = X"87" or x = X"8F" or x = X"97" or x = X"9F" or
x = X"A7" or x = X"AF" or x = X"B7" or x = X"BF" or x = X"C7" or x = X"CF" or x =
X"D7" or x = X"DF" or x = X"E7" or x = X"EF" or x = X"F7" or x = X"FF" or x = X"107"
or x = X"10F" or x = X"117" or x = X"11F" or x = X"127" or x = X"12F" or x = X"137"
or x = X"13F" or x = X"147" or x = X"14F" or x = X"157" or x = X"15F" or x = X"167"
or x = X"16F" or x = X"177" or x = X"17F" or x = X"187" or x = X"18F" or x = X"197"
or x = X"19F" or x = X"1A7" or x = X"1AF" or x = X"1B7" or x = X"1BF" or x = X"1C7"
or x = X"1CF" or x = X"1D7" or x = X"1DF" or x = X"1E7" or x = X"1EF" or x =
X"1F7" or x = X"1FF" or x = X"207" or x = X"20F" or x = X"217" or x = X"21F" or x =
X"227" or x = X"22F" or x = X"237" or x = X"23F" or x = X"247" or x = X"24F" or x =
X"257" or x = X"25F" or x = X"267" or x = X"26F" or x = X"277") and y > X"EC" and y
< X"F4") or ((y = X"92" or y = X"89" or y = X"80" or y = X"77" or y = X"6F" or y =
X"BD" or y = X"B4" or y = X"AB" or y = X"A2" or y = X"9A" or y = X"F0" or y = X"E8"
or y = X"DF" or y = X"D6" or y = X"CD" or y = X"C5" or y = X"F8" or y = X"101" or y
= X"10A" or y = X"113" or y = X"11B" or y = X"123" or y = X"12C" or y = X"135" or y
= X"13E" or y = X"146" or y = X"14E" or y = X"157" or y = X"160" or y = X"169" or y
= X"171") and x > X"13B" and x < X"143")else '0';
vidon <= '1' when ((hc < hfp) and (hc > hbp) and (vc < vfp) and (vc > vbp)) else '0';
-- habilita el spot en la pantalla
rd <= '1' when (x > X"27" and x <= xmax and y > X"6F" and y <= ymax) else '0';
-- lee la señal de la memoria
addr <= x;
end Behavioral;
89
ANEXO E
FUNDAMENTO
MATEMÁTICO
DEL
CIRCUITO
DE
ATENUACIÓN
Y
ACONDICIONAMIENTO.
CIRCUITO DE ATENUACIÓN.
El circuito de atenuación descrito en los capítulos anteriores fue diseñado en
base al software Electronics Workbench 9 y tiene como objetivo el atenuar las
distintas señales procedentes de la tarjeta de sonido o del generador de funciones.
Además permite crear una protección para el sobre voltaje permitiendo de esta
forma cuidar el ADC presente en la tarjeta periférica AIO1. En la figura 5.1 se
muestra el circuito de atenuación con sus respectivos valores de sus componentes.
Figura 5.1 Circuito Atenuador.
90
El sustento matemático del circuito de atenuación se describe a continuación
para la configuración de un operacional como un atenuador inversor tal como se ve
en la figura 5.2 y está dado por la fórmula:
Figura 5.2 Amplificador Inversor
=
*
(V.1)
En base a ésta ecuación se definirá los valores tanto para Rf y Ra. Cabe
mencionar que el signo negativo de la ecuación (V.1) se debe que la señal de salida
está desfasada 1800 con respecto a la señal que ingresa al circuito y no tiene
relación a ningún valor de alguna resistencia. Para el primer módulo del circuito se
tiene:
ATENUADOR 1
En base a los requerimientos de diseño se tiene que Vo= 1V y Vi= 3V debido que
para el atenuador 1 el rango de la señal de entrada va de 0 a 3V. En base a esto, la
ecuación (V.1) se transforma en:
(V.2)
Tomando en cuenta la figura 5.1 la resistencia Rf= R1, Ra= R2 y Rc= R3.
Asumiremos el valor de la resistencia Ra= 6.8 KΩ, por tanto Rf sería:
*(6.8K)
= 2.267 KΩ
2.2 KΩ
Siendo así, R1= 2.2 KΩ, R2= 6.8 KΩ. Como se ve Rc no tiene incidencia en la
fórmula (V.1), por tanto se puede suponer cualquier valor siendo de esta forma,
R3= 1 KΩ.
91
ATENUADOR 2
En base a los requerimientos de diseño se tiene que Vo= 1V y Vi= 6V debido
que para el atenuador 2 el rango de la señal de entrada va de 3 a 6V. Tomando en
cuenta la figura 5.1 la resistencia Rf= R4, Ra= R5 y Rc= R6. Asumiremos el valor
de la resistencia Ra= 7.5 KΩ, y basándose en la ecuación (V.2) por tanto Rf sería:
*(7.5 K)
= 1.25 KΩ
1.2 KΩ
Siendo así, R4= 1.2 KΩ, R5= 7.5 KΩ. Como se ve Rc no tiene incidencia en la
fórmula (V.1), por tanto se puede suponer cualquier valor siendo de esta forma,
R6= 1 KΩ.
ATENUADOR 3
En base a los requerimientos de diseño se tiene que Vo= 1V y Vi= 12V debido
que para el atenuador 3 el rango de la señal de entrada va de 6 a 12V. Tomando en
cuenta la figura 5.1 la resistencia Rf= R7, Ra= R8 y Rc= R9. Asumiremos el valor
de la resistencia Ra= 47 KΩ, y basándose en la ecuación (V.2) por tanto Rf sería:
*(47 K)
= 3.92 KΩ
3.9 KΩ
Siendo así, R7= 3.9 KΩ, R8= 47 KΩ. Como se ve Rc no tiene incidencia en la
fórmula (V.1), por tanto se puede suponer cualquier valor siendo de esta forma,
R9= 1 KΩ.
La salida de cada uno de los atenuadores va a un circuito sumador inversor de
múltiples entradas (figura 5.3), la cual tiene como objetivo multiplexar a una sola
señal y desfasar nuevamente 180 para así tener una correcta fase con respecto a la
señal de entrada original
92
Figura 5.3 Amplificador Inversor con Entradas Múltiples
La ecuación para un amplificador inversor con estradas múltiples está dada por
la siguiente fórmula:
=
*
(V.3)
Basándose en la figura 5.1 Ra= R10, Rb= R11, Rc= R12, Rf= R13 y Rd= R14.
Éste circuito no pretende amplificar o atenuar la señal, solo multiplexar a una sola
señal y desfasar la señal para que concuerde con la señal de ingreso. Por otro lado,
debido a la acción del switch 1 solo ingresa una señal a la vez es decir, por ejemplo
cuando el voltaje es existente en la señal Va, el voltaje en Vb y Vc serán cero.
Tomando en cuenta estas consideraciones podemos asumir que Ra= Rb= Rc= Rd=
Rf= 1 KΩ, por lo tanto R10= R11= R12= R13= R14= 1 KΩ.
Finalmente, se coloca el circuito de protección que consiste en el uso de dos
resistencias y cuatro diodos, tal como se muestra en la figura 5.4.
Figura 5.4 Circuito de Protección de sobre-voltaje
93
En base al gráfico, el circuito actúa como un limitador de voltaje en donde R1 y
R2 permiten limitar el nivel de voltaje deseado. En si para éste circuito no hay una
fórmula establecida, por lo que para obtener la respuesta del circuito que satisfaga
el umbral de voltaje deseado se debe ajustar continuamente los valores de las
resistencias aunque existe la premisa que R1 debe de estar en el orden de decenas
de Ω y R2 en centenas de KΩ. El circuito para cumplir con las prestaciones
planteadas debe permitir el paso de voltaje como máximo de 1.6 V, valores
mayores a éste el circuito atenuará la señal automáticamente presentado una
distorsión en su amplitud.
Con estas premisas, tenemos que el valor para el R1 será de 100 Ω, y para R2 el
valor de 68 KΩ. En cuanto a los diodos se utiliza unos de uso general tal como lo
son los 1N4148.
CIRCUITO DE ADECUACIÓN.
El circuito de adecuación intenta desplazar verticalmente la señal proveniente
del circuito de atenuación para una adecuada digitalización por parte del ADC
presente en la tarjeta periférica. El circuito se muestra en la figura 5.5 con los
valores de sus componentes.
Figura 5.5 Circuito de Adecuación.
El sustento matemático del circuito de adecuación se describe a continuación
para la configuración de un operacional como un atenuador no inversor con
múltiples entradas (figura 5.6) y está dado por la fórmula:
94
Figura 5.6 Amplificador no Inversor con Entradas Múltiples
=
*
*
(V.4)
Donde de acuerdo con los requerimientos del sistema Vo= 3V debido que es el
valor máximo que puede recibir el ADC para la conversión de la señal analógica a
digital. Además se tiene que Va= VCC33= 3.3V que es el voltaje de alimentación
que proviene de la tarjeta periférica conectada hacia el FPGA, el valor de Vb= 1V
que proviene desde el circuito de atenuación. Por otro lado, se hará la suposición
que el valor de Ra= 9.7 KΩ y Rb= 4.7 KΩ, convirtiéndose de esta forma la ecuación
(V.4) en:
(V.5)
En base a la ecuación (V.5) y reemplazando los valores de Ra, Rb, Vo, Va y Vb,
podemos encontrar al relación de valores entre Rf y Rc.
;
0.7136
Si asumimos que el valor de Rc= 6.8 KΩ, entonces por despeje de la formula
anterior tenemos:
KΩ
KΩ
4.8 KΩ
95
Hay que indicar que el objetivo de éste circuito es el de variar el desplazamiento
vertical de la señal o “shift up”, por lo que la resistencia Ra= 9.7 KΩ se derivará en
dos resistencia en serie, con un potenciómetro de 5 KΩ el cual controlará el
desplazamiento vertical y una resistencia de 4.7 KΩ, tal como se observa en la
figura 5.5.
96
ANEXO F
TITULO:
Sistema de adquisición y monitoreo de señales eléctricas, basado en la utilización de
una FPGA, para análisis y caracterización de señales en el rango de frecuencias bajas
CONTENIDO: Diseño del Sistema de Monitorización de Señales en Frecuencia en SysGen
REVISADO:
FECHA:
10-12-2008
DIBUJO:
NÚMERO:
1/3
5
ESCALA:
1:1
97
TITULO:
Sistema de adquisición y monitoreo de señales eléctricas, basado en la utilización de
una FPGA, para análisis y caracterización de señales en el rango de frecuencias bajas
CONTENIDO: Diseño del Módulo Filtrado y Diezmado en SysGen
REVISADO:
FECHA: 10-12-2008
DIBUJO:
NÚMERO:
2/3
6
ESCALA:
1:1
98
TITULO:
Sistema de adquisición y monitoreo de señales eléctricas, basado en la utilización de
una FPGA, para análisis y caracterización de señales en el rango de frecuencias bajas
CONTENIDO: Diseño del Módulo Windowing, FFT y Magnitud en SysGen
REVISADO:
FECHA: 10-12-2008
DIBUJO:
NÚMERO:
3/3
7
ESCALA:
1:1
99
ANEXO G
DISEÑO EN MATLAB PARA EL SISTEMA DE MONITORIZACIÓN DE SEÑALES EN
FRECUENCIA.
CÓDIGO PARA LA VENTANA DE BLACKMAN.
g=blackman(512);
%se define el valor para la FFT de 512
period=1/25000000;
CÓDIGO PARA EL MUX, BLOQUE M-CODE.
function sal = mux (out_lpf,out_bpf,out_hpf);
val=1;
if val==1;
sal = (out_lpf)+(out_bpf)+(out_hpf);
else
sal = 0;
end
CÓDIGO PARA LA VISUALIZACIÓN DESDE EL FPGA.
idxr=find(real~=0&real~=NaN);
idxi=find(imag~=0&imag~=NaN);
R2=real(idxr(1):end);
Q2=imag(idxr(1):end);
idxm=find(mag~=0&mag~=NaN);
R22=mag(idxr(1):end);
Yx=R2+j*Q2;
l=1;
k=512;
for l=1:90
Yt=R2+j*Q2;
Pyy =abs(Yt/512);
f =48000*(0:256)/512;
figure(2)
plot(f,10*log(Pyy(1+k:257+k)))
title('Frecuencia de la Señal')
xlabel('Frecuencia (Hz)')
ylabel('Magnitud (dB)')
grid
AXIS([0 14500 -130 20])
100
drawnow
%pause(0.3)
k=k+512;
end
clc
Descargar