Convertidores Analógico - Digital y su Interfaz con Dispositivos de Lógica Programable

Documentos relacionados
DISEÑO DE PROCESADORES DEDICADOS. Práctica 6 LCD de Propósito General

INVERSORES DE GIRO PARA MOTORES A PASOS EN DISPOSITIVOS DE LÓGICA PROGRAMABLE

Inversores de Giro para Motores a Pasos en Dispositivos de Lógica Programable

UNIVERSIDAD CARLOS III DE MADRID. Ejercicios de VHDL. Circuitos Integrados y Microelectrónica. Luis Entrena. Celia López.

DISEÑO DE PROCESADORES DEDICADOS. Práctica. No. 8 Circuitos de Barrido y Escaneo: Teclado Matricial de Propósito General y Matriz de LEDs

Preparación: Para el diseño secuencial será necesario que utilices una señal de reloj. Para generar este pulso de reloj, refiérete a la práctica 2.

5.1. Introducción a los sistemas digitales

Sistemas Electrónicos Digitales Curso de adaptación al Grado

Sistemas Electrónicos Digitales. PRACTICA nº 3

Tutorial 2: Pasar de diagrama ASM a un circuito

CIRCUITOS MULTIPLEXORES Y DEMULTIPLEXORES

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA ELECTRÓNICA TRABAJO TUTORADO DE VHDL. Primer Cuatrimestre Curso 2005/2006.

PARTE I. TÉCNICAS DE DISEÑO ELECTRÓNICO MEDIANTE LENGUAJES DE DESCRIPCIÓN HARDWARE

CAPITULO 5 GENERADOR DIGITAL DE TREN DE PULSOS PROGRAMABLE

ABEL Para Síntesis. Dr. Juan C. Herrera Lozada

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores. Bloque 3: Sistemas secuenciales Tema 9: Módulos secuenciales básicos

Recursos y Metodologías. Función. Programas

1. Módulo de desarrollo Spartan 3 STARTER KIT con un FPGA xc3s200 ft Software de diseño XILINX ISE versión 10.1

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

Practica No. 8 Introducción a las Máquinas de Estados. 1. En la figura 1 se muestra el comportamiento de un robot que evade obstáculos.

Planificaciones Sistemas Digitales. Docente responsable: ALVAREZ NICOLAS. 1 de 5

Máquinas de Estados en la GAL22V10 Usando ABEL-HDL

Práctica 7. Diseño en VHDL de un modulador PPM

En el presente capítulo, se tratará lo referente a los circuitos necesarios para la

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

+ Máquinas de Estado Finitas

6. Codificadores. Electrónica Digital. Tema

Practica No. 5 Diseño de un Multiplicador

DISEÑO DE CIRCUITOS SECUENCIALES

8. Multiplexores Digitales

Arquitectura Básica para Controladores de Lógica Difusa a Programarse en FPGAs

Practica 9 Estilos de codificar a estados FCE

VHDL y el método de diseño basado en descripción y síntesis. RESUMEN.

Práctica No. 6 del Curso "Meteorología y Transductores". "Convertidores ADC y DAC"

Práctica I Modelado y simulación de una máquina expendedora de refrescos

ELECTRÓNICA DIGITAL 24-I Determinar el valor decimal de los números expresados en Complemento a 2. (0.25 puntos).

Tabla 4.1 Pines de conector DB50 de Scorbot-ER V Plus Motores Eje Motor Número de Pin Interfaz de Potencia 1 2Y (1) 2 3Y (1) 3 2Y (2) 4 4Y (2) 5

Electrónica Digital Departamento de Electrónica VHDL. Bioingeniería Facultad de Ingeniería - UNER

Tema 09: Convertidor Analógico Digital

Tutorial de VHDL: Contadores y Simulación

Sistemas Electrónicos Digitales. PRACTICA nº 8

DECODIFICADORES. Para cualquier código dado en las entradas solo se activa una de las N posibles salidas. 2 N

Sesión 1: Introducción al lenguaje VHDL. S1 1 Laboratorio de Estructura de Computadores Curso 04 / 05

5. Decodificadores. Salida _1= A A A A = m = M ... Electrónica Digital. Tema

Sistemas Digitales - Examen temas 1, 2 y 3 - (6 de Abril 2016)

Electrónica Digital. Actividad Dirigida. Implementación de un Cronómetro Digital

Manual de referencia de la tarjeta BASYS 2

Tema 09: Convertidor Analógico Digital

CONTADORES. Definición. Diseño y analisis de un contador binario hacia arriba de 3 bits con flip-flops JK. Otros contadores típicos.

Practica No. 1 Circuitos Secuenciales

Julio. [ Programación en VHDL ] Guía rápida. [ h t t p : / / w w w. o p e n b o x e r m b. c o m / a s i g n a t u r a s / d s d.

Comparador de 1 bit Tabla de verdad y circuito lógico A B A > B A = B A < B

DESCRIPCIÓN VHDL DE INTERFACES PARA EL PUERTO PARALELO DE UNA PC

TÉCNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA AUTOMATIZACIÓN EN COMPETENCIAS PROFESIONALES ASIGNATURA DE DISPOSITIVOS DIGITALES

Arquitectura de Computadores. Práctica 1: Diseño Hardware de Procesadores. Práctica 1/1

La circuitería interna del 555 según National Semiconductors, es la siguiente:

4.5. Procedimiento de síntesis

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) QUINTA CLASE DE VHDL

Práctica I.- Introducción a los Sistemas Secuenciales

El circuito integrado ADC1230, fabricado

Hardware Libre: Clasificación y desarrollo de hardware reconfigurable en entornos GNU/Linux

GUÍA PRÁCTICA DEL SOFTWARE ACTIVE-HDL.

Curso a Distancia INTRODUCCIÓN AL DISEÑO DIGITAL CON VHDL Y LÓGICA PROGRAMABLE. Ing. Arturo J. Miguel de Priego Paz Soldán.

SISTEMAS DIGITALES VHDL

ARQUITECTURAS ESPECIALES

VHDL. Carlos Andrés Luna Vázquez. Lección 10 Problemas

Diseño Lógico I Facultad de Ciencias Exactas y Tecnología UNT. LENGUAJES DE DESCRIPCIÓN DE HARDWARE

SÍNTESIS DE CIRCUITOS DIGITALES CON VHDL.

Introducción al VHDL. VHDL orientado a la síntesis de circuitos en Dispositivo Lógicos Programables

sistema RAGNVALD funciona correctamente, así como para encontrar posibles mejoras

Arquitectura de Computadoras Practica No. 1 Circuitos Secuenciales

Para implementar una memoria de mayor capacidad se deben considerar los siguientes pasos:

VHDL Y FPGA LENGUAJE VHDL

PRACTICA N0.7 UTILIZACIÓN DE UN CONVERTIDOR A/D OBJETIVO ESPECÍFICO: APLICAR EL CONVERTIDOR ADC0804 EN UN CONTROL DE TEMPERATURA

Tipos de datos en VHDL

Tema 3 - Modelado con HDL a nivel RTL

Electrónica Básica. Introducción. Electrónica Digital. José Ramón Sendra Sendra Dpto. de Ingeniería Electrónica y Automática ULPGC

INSTRUMENTACIÓN ELECTRÓNICA

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA ELECTRÓNICA

ÍNDICE. Sistemas Electrónicos Digitales Práctica 2

PLANIFICACIÓN DOCENTE DISEÑO Y SIMULACIÓN DE CIRCUITOS ELECTRÓNICOS ASISTIDO POR COMPUTADOR

^6+1 2^5+1 2^2+1 2^1+1 2^ ^6+1 2^0-65.

Estudio del impacto de implementaciones de operadores aritméticos en dispositivos lógicos programables FPGA

Universidad Autónoma de Querétaro Facultad de Ingeniería

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) SEGUNDA CLASE DE VHDL

Diseño de un sistema de adquisición de datos de un micrófono utilizando una FPGA

2. PANTALLA ALFANUMÉRICA DE LCD (HITACHI HD44780U)

PRÁCTICA: LENGUAJE VHDL

ITT-327-T Microprocesadores

Armado de un microcomputador, basado en microcontrolador 8031

Índice. VHDL Lección 2.9 Máquinas de Estados Finitos (FSM) 1

VHDL. Lenguaje de descripción hardware Estructura Básica de diseño

Dispositivos y Sistemas Programables Avanzados

II. Unidades de Diseño en VHDL

Introducción a los Dispositivos Lógicos Programables (FPGAs) Guillermo Güichal

Contador de pulsos para Servomecanismos

ICTP Latin-American Advanced Course on FPGADesign for Scientific Instrumentation. 19 November - 7 December, 2012

Práctica 8. Diseño en VHDL de un modulador BPSK

Tema 7. Análisis de Circuitos Secuenciales

Tutorial introductorio al Lenguaje Abel ( Advanced Bolean Equations Language).

Transcripción:

Convertidores Analógico - Digital y su Interfaz con Dispositivos de Lógica Programable Juan Carlos Herrera Lozada Centro de Innovación y Desarrollo Tecnológico en Cómputo (CIDETEC IPN) e-mail: jlozada@ipn.mx Resumen. Una de las principales aplicaciones de los procesadores embebidos es el control de sistemas. En la enseñanza a nivel superior de la lógica programable y tecnologías derivadas, la adquisición es fundamental para introducir datos hacia un dispositivo configurado como procesador. Suponiendo un diseño que lo requiera; después de la adecuación de una señal es necesario en la mayoría de los casos conectar uno o varios convertidores analógico digital (ADCs) para proveer al PLD de los datos analógicos convertidos a bits. Este documento muestra de manera simple, cómo es posible generar una interfaz para conectar un ADC paralelo a un FPGA, planteando una metodología que se adapta sin cambios drásticos a cualquier problemática similar de diseño. Palabras Clave: ADC, PLD, FPGA, HDL. 1. Antecedentes. Para unificar criterios, se decidió enfocar los esfuerzos de este trabajo hacia un ADC con salida paralela, en particular el ADC0804 de uso común entre los estudiantes y diseñadores. La ventaja inmediata de la conversión paralela es la velocidad con la que se obtiene un dato completo binario; la desventaja sería el número de líneas comprometidas, cuestión que no es preponderante considerando un PLD de arquitectura avanzada (CPLD, FPGA o aproximados). La descripción de la lógica de interfaz con el ADC se propuso utilizando HDLs, que conllevan a una mejor realización hardware del algoritmo de control básico. Para el caso de algún ADC serial, como por ejemplo el ADC0831 o afines, se puede aplicar el mismo criterio de solución con las restricciones lógicas que presenta la conversión serie.

1. 1. Funcionamiento del ADC0804. El ADC0804 entrega una salida digital de 8 bits [3]. Requiere un voltaje de alimentación y de referencia de 5V, por lo que puede convertir señales analógicas entre un rango de 0 a 5V equivalentes a una salida digital entre 0 y 255. A través de una referencia externa o aumentando el valor de la señal Vin- con respecto a GND es posible obtener rangos más amplios de conversión (se recomienda consultar la hoja de especificaciones del fabricante). Su frecuencia de trabajo característica es de 8KHz, aunque si se deseara utilizar un ADC de alta velocidad, las soluciones aportadas también serían sostenibles dadas las características de funcionales de las arquitecturas de PLDs actuales. Al igual que la mayoría de los ADCs paralelos, el 0804 mantiene un esquema de control respaldado por 4 líneas primitivas: Write (WR), Read (RD), Chip Select (CS) e Interruption (INTR). Las tres primeras son entradas en el ADC, la última es salida del mismo. En el caso del ADC0804 las cuatro señales se activan con lógica negativa. El proceso de conversión comienza con la petición de escritura de dato, que infiere habilitar CS con un nivel lógico de 0, y así enviar un pulso negativo hacia el pin WR, esto es, mantener la parte baja del pulso al menos 100ns y posteriormente deshabilitarlo regresando a un estado alto, tal y como se aprecia en el diagrama de tiempos de la Fig.1. Fig. 1. Petición de escritura y conversión. INTR debe pasar automáticamente a un estado alto y no volverá a bajo sino hasta que haya terminado la conversión, momento en el cual es posible leer el dato convertido seleccionando nuevamente CS con un estado bajo y enviando un pulso negativo a RD. Después de esperar al menos 200ns (tacc, Tiempo de Acceso según hoja de especificaciones del convertidor) en el mismo estado bajo, las ocho salidas de datos del ADC muestran el dato binario convertido. Posteriormente es necesario deshabilitar RD y CS para volver a comenzar el proceso. Obsérvese el diagrama de tiempos de la Fig. 2.

Fig. 2. Lectura de datos. 2. Interfaz de conexión. A continuación se analizan las tres soluciones más comunes para conectar el ADC al dispositivo programable en cuestión. En el caso particular de este trabajo, se utilizó un FPGA Spartan II de Xilinx (2S100PQ208). 2. 1. Solución completa. La configuración de conexiones completa de un ADC0804, se muestra en el diagrama de la Fig. 3. Obsérvese que para facilitar la explicación y dado que sólo se considera un solo convertidor, el pin CS se conecta a GND para mantener el dispositivo siempre habilitado. En algunos diseños se requiere más de un ADC por lo que es necesario controlar CS para seleccionar el dispositivo que debe trabajar en determinado momento. Otra alternativa es considerar un ADC con varios canales analógicos que se seleccionan a través de un multiplexor como por ejemplo el dispositivo ADC0808 con 8 canales analógicos. La señal analógica, únicamente como referencia de conversión, se genera a través de un potenciómetro común conectado entre VCC y GND. Fig. 3. Conexión básica del ADC0804 para propósito general.

Analizando el proceso de conversión y lectura de un dato comentado con anterioridad, se aprecia que no es más que una máquina de estados muy simple. El siguiente código escrito en ABEL HDL [2], muestra una aproximación al control del ADC del diagrama citado. La señal reloj es la frecuencia de trabajo de la máquina de estados. Recordando que el ADC soporta hasta 8KHz y para evitar complicaciones se propone una frecuencia menor. La señal INT_ADC es propiamente INTR proveniente del ADC. Dentro del estado Convierte_ADC se deberá implementar el módulo que recibirá los 8 bits del convertidor para ser procesados. Idealmente, el FPGA inicia la máquina [1] con WR y RD en 0; sin embargo, ambos estarían activados, por lo que por cuestiones de diseño de decidió invertir las señales desde el mismo código. El estado Auxiliar es indeseable dadas sus condiciones. MODULE CONT_ADC "entradas reloj,int_adc pin; "salidas secuenciales registradas y negadas WR,RD pin istype 'com'; NW, NR node istype 'reg'; "declaración de set sreg=[nw,nr]; Inicio=[0,0]; Write_ADC=[1,0]; Convierte_ADC=[0,1]; Auxiliar=[1,1]; equations sreg.clk=reloj; state_diagram sreg state Inicio: goto Write_ADC; state Write_ADC: goto Convierte_ADC; state Convierte_ADC: IF (INT_ADC==0) THEN Write_ADC ELSE Convierte_ADC; state Auxiliar: goto Write_ADC; equations WR=!NW; RD=!NR; END En el caso de que se presente algún diseño que requiera el control de CS, sólo bastaría con adicionar un bit más en cada estado con este propósito. En la primera solución analizada se están considerando todas las señales implicadas de manera formal. Cabe mencionar que la tarjeta de desarrollo utilizada está configurada con un oscilador de 60MHz, por lo que se requirió un divisor de frecuencia para obtener una menor a los 8KHz del ADC, cuestión que se detallará posteriormente. 2.2. Free Running. Algunos autores desestiman utilizar todas las señales del ADC. Con una frecuencia sustentable, mucho menor que los 8KHz naturales del dispositivo, es posible

obtener circuitos más simples como el denominado Free Running que propone utilizar un inversor hacia RD de la señal WR, obligando a que RD siempre sea el complemento de WR y viceversa. El inversor se puede implementar dentro de código o utilizar un circuito integrado 74HC04 de manera externa (ver Fig.4). Fig. 4. Conexión Free Runnig. El siguiente listado en VHDL [2] muestra la solución a este tipo de conexión. Nótese que se ha adicionado una señal de restablecimiento y no se invierte WR como en el primer caso analizado. LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; ENTITY ADC IS PORT( reloj, RESET, INT_ADC: in STD_LOGIC; WR: out STD_LOGIC); END ADC; ARCHITECTURE CONTROL_ADC OF ADC IS type state_type is (Inicio, Write_ADC, Convierte_ADC); signal estado, estado_siguiente: state_type; begin registra:process (reloj, RESET) begin if RESET='1' then estado <= Inicio; elsif reloj='1' and reloj'event then estado <= estado_siguiente; end if; end process registra; fun_estado_siguiente: process (estado, INT_ADC) begin case estado is when Inicio => estado_siguiente <= Write_ADC; when Write_ADC => estado_siguiente <= Convierte_ADC; when Convierte_ADC => if INT_ADC='0' then estado_siguiente <= Write_ADC; else estado_siguiente <= Convierte_ADC; end if; end case; end process fun_estado_siguiente; salida: process (estado) begin case estado is when Inicio => WR <= '1';

when Write_ADC => WR <= '0'; when Convierte_ADC => WR <= '1'; when others => null; end case; end process salida; end CONTROL_ADC; Este diseño presenta errores de sincronía, por lo que es necesario disminuir la frecuencia de trabajo o estimar otra forma de conexión entre WR y RD. Por lo general, quien utiliza esta configuración, recurre a controlar la habilitación de CS para limitar la problemática. Una variante aún más burda del circuito anterior surge con la intención de simplificar al máximo la circuitería y la lógica de control, consiste en eliminar la señal INTR y mantener RD siempre habilitado (referirse a la Fig. 5). Sólo se necesita una señal de reloj que se envía hacia WR. Para asegurar el funcionamiento de esta conexión se requiere que la frecuencia de reloj con la que varía la máquina de estados sea baja (casi a la mitad de la frecuencia natural de trabajo), garantizando que exista el fin de conversión para leer un dato actualizado. Para eliminar cualquier error, se debe generar una máquina de estados que envíe un pulso negativo cuyo estado bajo dure cuatro o cinco veces menos que el estado alto, recordando que WR se habilita con lógica negativa. Fig. 5. Variante de la conexión Free Running, controlando sólo WR. 3. Pruebas y Resultados. Las tres configuraciones indicadas se programaron sobre un FPGA 2S100PQ208 de Xilinx. El módulo de control para el ADC0804 se muestra en la Fig. 6 y se probó experimentalmente de manera individual antes de la aplicación más completa. En el mismo módulo se incorporó un divisor de frecuencia, debido a que la tarjeta de desarrollo utilizada incluye un oscilador de 60MHz.

Fig. 6. Módulo esquemático para la máquina de estados que controla al ADC. En la Fig.7 se muestra el resultado de la simulación para una máquina de estados para el ADC en configuración Free Runnig, en ésta se espera hasta que INT_ADC (INTR del ADC0804) se habilite con un estado lógico bajo, para enviar nuevamente el pulso negativo hacia WR. Fig. 7. Resultados de simulación para la máquina de estados en configuración Free Running. La Fig. 8 exhibe el diagrama esquemático de la solución experimental completa, en la cual se implementó un medidor de voltaje con un rango entre 0.0 Volts y 5.0 Volts que despliega resultados en una pantalla convencional de cristal líquido. Consta de dos módulos principales: el propio de control del ADC con su divisor de frecuencia y el módulo que obtiene el dato convertido para procesarlo y mostrar el resultado en una pantalla de LCD de propósito general. El software de captura y síntesis utilizado fue Foundation Series 4.1i de Xilinx. Fig. 8. Diagrama esquemático completo de la aplicación para los resultados experimentales. En la Fig. 9 se muestran unas fotografías del trabajo experimental, es posible apreciar en primera instancia la tarjeta de desarrollo y el convertidor.

Posteriormente se incluye una lectura procesada que se compara con el respectivo valor medido por un multímetro. Tarjeta de Desarrollo ADC0804 FPGA 2S100PQ208 Fig. 9. Circuito experimental y comparación de lecturas. 4. Conclusiones. En este trabajo se abordó la manera de conectar un ADC de salida paralela a un FPGA. La metodología planteada es extensiva a cualquier diseño que infiera un PLD. Se aportó un análisis de la configuración Free Runnig, la cual simplifica el hardware y la lógica para diseñar la interfaz. Los módulos controladores analizados fueron modelados en ABEL HDL y VHDL buscando la simpleza sintáctica, pensando en los estudiantes que comienzan a utilizar las tecnologías programables. Referencias. [1] Sebastian M. J., Application - Specific Integrated Circuits, Addison Wesley, 2000. [2] John Wakerly, Digital Design, Prentice Hall, 2002. [3] Datasheet, National Semiconductor. http:// www.national.com/pf/ad/adc0804.html.