SlideShare ist ein Scribd-Unternehmen logo
1 von 8
Downloaden Sie, um offline zu lesen
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




                                                       FPGA
                                ADC0804                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.

Weitere ähnliche Inhalte

Was ist angesagt?

Amplificador colector común clase 8
Amplificador colector común clase 8Amplificador colector común clase 8
Amplificador colector común clase 8
ManuelGmoJaramillo
 

Was ist angesagt? (20)

Pulsos de reloj de Circuito integrado 555
Pulsos de reloj de Circuito integrado 555Pulsos de reloj de Circuito integrado 555
Pulsos de reloj de Circuito integrado 555
 
Impulse response and step response.ppt
Impulse response and step response.pptImpulse response and step response.ppt
Impulse response and step response.ppt
 
8a clase amplificador colector común
8a clase amplificador colector común 8a clase amplificador colector común
8a clase amplificador colector común
 
Block diagram Reduction.ppt
Block diagram Reduction.pptBlock diagram Reduction.ppt
Block diagram Reduction.ppt
 
Sistemas de primer, segundo y orden superior
Sistemas de primer, segundo y orden superiorSistemas de primer, segundo y orden superior
Sistemas de primer, segundo y orden superior
 
ADC
ADCADC
ADC
 
Calculator design with lcd using fpga
Calculator design with lcd using fpgaCalculator design with lcd using fpga
Calculator design with lcd using fpga
 
Tema 1.1 fundamentos de los sistemas digitales
Tema 1.1 fundamentos de los sistemas digitalesTema 1.1 fundamentos de los sistemas digitales
Tema 1.1 fundamentos de los sistemas digitales
 
R-2R Ladder DAC
R-2R Ladder DACR-2R Ladder DAC
R-2R Ladder DAC
 
lec z-transform.ppt
lec z-transform.pptlec z-transform.ppt
lec z-transform.ppt
 
Electrónica: Aplicaciones transistor
Electrónica: Aplicaciones transistorElectrónica: Aplicaciones transistor
Electrónica: Aplicaciones transistor
 
Recortadores emerson
Recortadores emersonRecortadores emerson
Recortadores emerson
 
Shockley Diode
Shockley DiodeShockley Diode
Shockley Diode
 
Modulacion psk
Modulacion pskModulacion psk
Modulacion psk
 
Amplificador colector común clase 8
Amplificador colector común clase 8Amplificador colector común clase 8
Amplificador colector común clase 8
 
DESIGN OF IEEE 1149.1 TAP CONTROLLER IP CORE
DESIGN OF IEEE 1149.1 TAP CONTROLLER IP COREDESIGN OF IEEE 1149.1 TAP CONTROLLER IP CORE
DESIGN OF IEEE 1149.1 TAP CONTROLLER IP CORE
 
Sumador\Restador
Sumador\RestadorSumador\Restador
Sumador\Restador
 
instalación eléctrica
 instalación  eléctrica instalación  eléctrica
instalación eléctrica
 
Lugar geométrico de las raices control 1
Lugar geométrico de las raices control 1Lugar geométrico de las raices control 1
Lugar geométrico de las raices control 1
 
Diode and Applications of diode
Diode and Applications of diodeDiode and Applications of diode
Diode and Applications of diode
 

Andere mochten auch (6)

FFT de alta velocidad para OFDM óptico con FPGA
FFT de alta velocidad para OFDM óptico con FPGAFFT de alta velocidad para OFDM óptico con FPGA
FFT de alta velocidad para OFDM óptico con FPGA
 
Utp pds_cap01_intro pds
 Utp pds_cap01_intro pds Utp pds_cap01_intro pds
Utp pds_cap01_intro pds
 
Utp pds_cap0_generalidades
 Utp pds_cap0_generalidades Utp pds_cap0_generalidades
Utp pds_cap0_generalidades
 
Utp pds_s7y8_dft y fft
 Utp pds_s7y8_dft y fft Utp pds_s7y8_dft y fft
Utp pds_s7y8_dft y fft
 
Zynq architecture
Zynq architectureZynq architecture
Zynq architecture
 
Calculo de radio enlaces wifi y microondas, elprofegarcia
Calculo de radio enlaces wifi y microondas, elprofegarciaCalculo de radio enlaces wifi y microondas, elprofegarcia
Calculo de radio enlaces wifi y microondas, elprofegarcia
 

Ähnlich wie Adc fpga

Puertos de entrada/salida
Puertos de entrada/salidaPuertos de entrada/salida
Puertos de entrada/salida
tecautind
 
Puertos de entrada diapositivas
Puertos de entrada diapositivasPuertos de entrada diapositivas
Puertos de entrada diapositivas
tecautind
 
Conversor análogo
Conversor análogoConversor análogo
Conversor análogo
tecautind
 
4ª practica control del puerto de paralelo,activación y desactivación de equipos
4ª practica control del puerto de paralelo,activación y desactivación de equipos4ª practica control del puerto de paralelo,activación y desactivación de equipos
4ª practica control del puerto de paralelo,activación y desactivación de equipos
Jose Alvino Utp
 
Servicios de bios para la transmisión de datos
Servicios de bios para la transmisión de datosServicios de bios para la transmisión de datos
Servicios de bios para la transmisión de datos
Santiago Acurio
 

Ähnlich wie Adc fpga (20)

Convertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVRConvertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVR
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
 
Adc 4
Adc 4Adc 4
Adc 4
 
Curso AVRs 2008 - ADCs
Curso AVRs 2008 - ADCsCurso AVRs 2008 - ADCs
Curso AVRs 2008 - ADCs
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Pic 16 F877XA A/D
Pic 16 F877XA A/DPic 16 F877XA A/D
Pic 16 F877XA A/D
 
Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 
Puertos de entrada/salida
Puertos de entrada/salidaPuertos de entrada/salida
Puertos de entrada/salida
 
Puertos de entrada diapositivas
Puertos de entrada diapositivasPuertos de entrada diapositivas
Puertos de entrada diapositivas
 
Conversor ADC
Conversor ADCConversor ADC
Conversor ADC
 
Conversor análogo
Conversor análogoConversor análogo
Conversor análogo
 
Dac y adc
Dac y adcDac y adc
Dac y adc
 
Universidad tecnologica equinoccial
Universidad tecnologica equinoccialUniversidad tecnologica equinoccial
Universidad tecnologica equinoccial
 
CAD conversion analogico digital
CAD conversion analogico digitalCAD conversion analogico digital
CAD conversion analogico digital
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assembler
 
4ª practica control del puerto de paralelo,activación y desactivación de equipos
4ª practica control del puerto de paralelo,activación y desactivación de equipos4ª practica control del puerto de paralelo,activación y desactivación de equipos
4ª practica control del puerto de paralelo,activación y desactivación de equipos
 
Tutorial micro MSP430
Tutorial micro MSP430Tutorial micro MSP430
Tutorial micro MSP430
 
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
 
Servicios de bios para la transmisión de datos
Servicios de bios para la transmisión de datosServicios de bios para la transmisión de datos
Servicios de bios para la transmisión de datos
 

Kürzlich hochgeladen

🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Francisco158360
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
NancyLoaa
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Kürzlich hochgeladen (20)

Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 

Adc fpga

  • 1. 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.
  • 2. 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.
  • 3. 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.
  • 4. 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
  • 5. 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';
  • 6. 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.
  • 7. 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.
  • 8. Posteriormente se incluye una lectura procesada que se compara con el respectivo valor medido por un multímetro. Tarjeta de Desarrollo FPGA ADC0804 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.