Documentos de Académico
Documentos de Profesional
Documentos de Cultura
“Proyecto Final”
Reporte
PRESENTA
PROFESOR
Un conversor o convertidor de señal analógica a digital (Conversor Analógico Digital, CAD; Analog-
to-Digital Converter, ADC) es un dispositivo electrónico capaz de convertir una señal analógica, ya
sea de tensión o corriente, en una señal digital mediante un cuantificador y codificándose en
muchos casos en un código binario en particular. Donde un código es la representación unívoca de
los elementos, en este caso, cada valor numérico binario hace corresponder a un solo valor de
tensión o corriente.
Cuando una señal digital es atenuada o experimenta perturbaciones leves, puede ser
reconstruida y amplificada mediante sistemas de regeneración de señales.
Cuenta con sistemas de detección y corrección de errores, que se utilizan cuando la señal
llega al receptor; entonces comprueban (uso de redundancia) la señal, primero para
detectar algún error, y, algunos sistemas, pueden luego corregir alguno o todos los errores
detectados previamente.
Facilidad para el procesamiento de la señal. Cualquier operación es fácilmente realizable a
través de cualquier software de edición o procesamiento de señal.
La señal digital permite la multigeneración infinita sin pérdidas de calidad.
Es posible aplicar técnicas de compresión de datos sin pérdidas o técnicas de compresión
con pérdidas basados en la codificación perceptual mucho más eficientes que con señales
analógicas.
Muestreo
Durante el “muestreo” y la “retención”, la señal aún es analógica, puesto que aún puede tomar
cualquier valor. No obstante, a partir de la “cuantificación”, cuando la señal ya toma valores finitos,
la señal ya es digital. Los cuatro procesos tienen lugar en un conversor analógico-digital.
Cuantificación
En el proceso de cuantificación se mide el nivel de voltaje de cada una de las muestras. Consiste en
asignar un margen de valor de una señal analizada a un único nivel de salida. Incluso en su versión
ideal, añade como resultado una distorsión no deseada a la señal de entrada: el ruido de
cuantificación.
Codificación
La codificación consiste en traducir los valores obtenidos durante la cuantificación al código binario.
Hay que tener presente que el código binario es el más utilizado, pero también existen otros tipos
de códigos que también son utilizados.
Objetivo
El presente reporte describe el uso de convertidor analógico digital (ADC) el cual se usa para
muestrear una señal del tipo senoidal para así encontrar el valor pico de la señal y posterior mente
encontrar el valor rms de la señal y mostrar ese valor en el LCD y mandarlo a la computadora usando
una comunicación RS232.
Antecedentes
El manual del usuario de la tarjeta Spartan-3A/3AN FPGA Starter Kit [1] es su capítulo 5 da una
descripción general sobre el uso del LCD y la posible implementación para impresión de caracteres.
Entre lo más importante se encuentran los siguientes puntos.
El LCD tiene una configuración de 2 x 16 caracteres y tiene un controlador de gráficos interno
Sitronix ST7066U, El controlador tiene tres regiones de memoria internas, cada una con un propósito
específico: DD RAM, CG ROM y CG RAM. La pantalla debe ser inicializada antes de acceder a
cualquiera de estas regiones de memoria.
La RAM de datos de pantalla (DD RAM) almacena el código de caracteres que se mostrará en la
pantalla. La Fig. 2 Muestra la dirección predeterminada para las 32 posiciones de caracteres en la
pantalla. La línea superior de caracteres se almacena entre las direcciones 0x00 y 0x0F. La segunda
línea de caracteres se almacena entre las direcciones 0x40 y 0x4F.
“Display On/Off” esta función permite el encendido o pagado del display controlando todos los
caracteres. El cursor y el carácter de la posición del cursor parpadean. El cursor utiliza los cinco
puntos en la línea inferior del carácter. El cursor aparece como una línea debajo del carácter mostrado.
Esto tiene un tiempo de procesamiento de 40 μs.
El comando “Cursor and Display Shift” mueve el cursor y desplaza la pantalla sin cambiar el
contenido de la memoria RAM DD. Desplaza la posición del cursor o la pantalla a la derecha o a la
izquierda sin escribir o leer los datos de la pantalla. Esta función posiciona el cursor para modificar
un carácter individual, o para desplazar la ventana de visualización hacia la izquierda o hacia la
derecha para revelar datos adicionales almacenados en la RAM DD, más allá del carácter decimosexto
en una línea.
El cursor se desplaza automáticamente a la segunda línea cuando se desplaza más allá de la ubicación
del carácter número 40 de la primera línea. Las pantallas de primera y segunda línea cambian al
mismo tiempo. Cuando los datos visualizados se desplazan repetidamente, ambas líneas se mueven
horizontalmente. La segunda línea de visualización no cambia a la primera línea de visualización.
Tiempo de Procesamiento 40 μs.
“Function Set” Establece la longitud de los datos de la interfaz, el número de líneas de la pantalla y
la fuente del carácter. El tablero del kit de inicio admite un único conjunto de funciones con valor
0x28. Tiempo de ejecución 40 μs.
“Set CG RAM Address” Establece la dirección inicial de la RAM del CG. Después de este comando,
todas las operaciones subsiguientes de lectura o escritura en la pantalla son hacia o desde la RAM
CG. Tiempo de ejecución: 40 μs.
“Set DD RAM Address” Establece la dirección DD RAM inicial. Después de este comando, todas las
operaciones subsiguientes de lectura o escritura en la pantalla son hacia o desde DD RAM. Tiempo
de ejecución: 40 μs.
“Write Data to CG RAM or DD RAM" Graba datos en DD RAM si el comando sigue un comando
Set DD RAM Address anterior, o escribe datos en CG RAM si el comando sigue un comando anterior
Set CG RAM Address.
El contador de direcciones se decrementa en uno. 0 1 Desplace la posición del cursor hacia la derecha.
El contador de direcciones se incrementa en uno. 1 0 Mueva toda la pantalla hacia la izquierda. El
cursor sigue el desplazamiento de la pantalla. El contador de direcciones no cambia. 1 1 Desplace la
pantalla completa hacia la derecha. El cursor sigue el desplazamiento de la pantalla. El contador de
direcciones no cambia. Después de la operación de escritura, la dirección se incrementa o disminuye
automáticamente en 1 de acuerdo con el parámetro Modo de entrada. El modo de entrada también
determina el desplazamiento de la pantalla. Tiempo de Ejecución: 40 μs
“Read Data from CG RAM or DD RAM” Lee los datos de DD RAM si el comando sigue un comando
anterior Set DD RAM Address o lee datos de CG RAM si el comando sigue un comando anterior Set
CG RAM Address. Después de la operación de lectura, la dirección se incrementa o disminuye
automáticamente en 1 según el comando Set de modo de entrada. Sin embargo, no se ejecuta un
cambio de pantalla durante las operaciones de lectura. Tiempo de Ejecución: 40 μs
La secuencia de inicialización establece primero que la aplicación FPGA [2] desea utilizar la interfaz
de datos de cuatro bits en la pantalla LCD de la siguiente manera:
1. Espere 15 ms o más, aunque la pantalla está generalmente lista cuando FPGA termina la
configuración. El intervalo de 15 ms es de 750.000 ciclos de reloj a 50 MHz.
2. Escriba LCD_DB <7: 4> = 0x3, y pulse LCD_E High durante 12 ciclos de reloj.
3. Espere 4,1 ms o más, lo que es 205,000 ciclos de reloj a 50 MHz.
4. Escriba LCD_DB <7: 4> = 0x3 y pulse LCD_E High durante 12 ciclos de reloj.
5. Espere 100 μs o más, lo que es 5.000 ciclos de reloj a 50 MHz.
6. Escriba LCD_DB <7: 4> = 0x3, y pulse LCD_E High durante 12 ciclos de reloj.
7. Espere 40 μs o más, lo que es 2.000 ciclos de reloj a 50 MHz.
8. Escriba LCD_DB <7: 4> = 0x2, y pulse LCD_E High durante 12 ciclos de reloj.
9. Espere 40 μs o más, lo que es 2.000 ciclos de reloj a 50 MHz.
Convertidor Analógico Digital usado para este proyecto
Incluido en todas las ediciones de ISE Design Suite así como en ISE WebPACK.
Busque IP por palabra clave u ordene los listados de IP alfabéticamente o por tipo de función.
También puede ver el núcleo de IP programado para ser "Reemplazado" por versiones más
recientes y los núcleos programados para "Descontinuado" se pueden ver seleccionando
"Todas las versiones de IP".
Los núcleos IP compatibles con la familia de dispositivos seleccionados se pueden ver
seleccionando "Solo IP compatible con la parte elegida".
Fácil acceso a información detallada sobre cada núcleo (hojas de datos, guías del usuario,
notas de la versión, estado de las licencias, listas de mejoras para nuevas versiones).
Salida IP mejorada:
Señales de la RS-232.
Request To Send (RTS) Esta señal se envía de la computadora (DTE) al módem (DCE) para
indicar que se quieren transmitir datos. Si el módem decide que esta OK, asiente por la línea
CTS. Una vez la computadora prende la señal RTS, esperará que el módem asiente la línea
CTS. Cuando la señal CTS es afirmado por el módem, la computadora empezará a transmitir
datos.
Clear To Send (CTS) Afirmado por el módem después de recibir la señal de RTS indica que
la computadora puede transmitir.
Data Terminal Ready (DTR) Esta línea de señal es afirmada por la computadora, e informa
al módem que la computadora está lista para recibir datos.
Data Set Ready (DSR) Esta línea de señal es afirmada por el módem en respuesta a una señal
de DTR de la computadora. La computadora supervisa el estado de esta línea después de
afirmar DTR para descubrir si el módem esta encendido.
Receive Signal Line Detect (RSLD) Esta línea de control es afirmada por el módem e informa
a la computadora que se ha establecido una conexión física con otro módem. A veces se
conoce como detector de portadora (CD). sería un error que una computadora transmita
información a un módem si esta línea no está prendida, es decir si la conexión física no
funciona.
Transmit Data (TD) es la línea por donde el dato se transmite de un bit a la vez
Receive Data (RD) es la línea por donde el dato se recibe de un bit a la vez.
Metodología
Utilizando lo aprendido en la materia se utilizaron varios recursos ya hechos, por ejemplo la
transmisión RS232 y la impresión en el LCD de la tarjeta Spartan 3A. Para la realización de este
proyecto primero se obtuvo la resolución del ADC, esto nos permite saber a cuanta cantidad de voltaje
equivale cada muestra que se tome, en la fórmula 1 se puede observar como se obtuvo la resolución.
3.3
= = = .000805
2 4095
Formula 1: Resolución del ADC.
Sabiendo la resolución del ADC procedemos a programarlo, eso solo es el primer paso, ahora esas
muestras se tienen que guardar en una memoria para posteriormente analizarlas y encontrar el valor
mayor dentro de todas estas muestras.
En la figura 8 se puede observar el diagrama RTL completo utilizado para el desarrollo de este
proyecto,
Figura 8: Diagrama RTL.
RAM
Utilizando la herramienta ya mencionada en los antecedentes (core generator) se creó una memoria
RAM que contiene 4096 direcciones las cuales equivalen a la cantidad de muestras que nos genera el
PMOD AD1, cada dirección tiene un tamaño de 12 bits para soportar la cantidad de datos que manda
el convertidor.
Simulaciones
Resultados
Para verificar el resultado de este algoritmo implementado, se procede a realizar un barrido de voltajes
pico por medio de un Generador de funciones, y para verificar el resultado obtenido se utilizó un
Osciloscopio.
Vp Osciloscopio Matlab Teorico
En la tabla que se muestra en la parte de arriba se puede observar los valores pico que se introdujeron
mediante el generador de funciones, también se puede observar los valores que se obtuvieron con el
Osciloscopio los valores obtenidos con el Matlab y los valores teóricos.
Figura 12: Grafica de comparación de resultados.
En la figura 12 se puede observar que el valor obtenido en matlab tiene un error muy grande con los
valores que se encuentran entre 0 y .8 Vp, esto se debe a que las señales que se introducen entre 0 y
0.8 tienen demasiado ruido en la señal como se muestra en la figura 13.
Conclusiones
El Procesamiento de Señales Digitales o DSP es la manipulación matemática de una señal de
información para modificarla o mejorarla en algún sentido. Este está caracterizado por la
representación en el dominio del tiempo discreto, en el dominio frecuencia discreta, u otro dominio
discreto de señales por medio de una secuencia de números o símbolos y el procesado de esas señales.
Todo este proyecto nos llevó a darnos cuenta de la magnitud de todo lo que se puede hacer con el
lenguaje de programación VHDL, y el utilizar varios recursos de la tarjeta para realizar operaciones
complejas como el procesamiento digital de señales, y la comunicación RS232.
El FPGA es una herramienta muy poderosa y útil, ya que se pueden realizar operaciones de un DSP
dentro de la tarjeta lo que la hace muy útil, y en comparación con el DSP el FPGA tiene muchas
ventajas como que su arquitectura trabaja en paralelo lo que la hace más rápida y trabaja mediante
reconfiguración de hardware.
Referencias
[1] Xilinx, «Spartan-3A/3AN FPGA Starter Kit Board User Guide,» Xilinx, Inc., 2008.
[2] F. D. R. Huiltron, «Reporte LCD,» Celaya Guanajuato, 2017.
[3] R. d. J. R. Troncoso, Electrónica digital y lógica programable, Guanajuato: Universidad de
Guanajuato (UGto), 2016.