pautas de la interfaz adc-fpga para vhdl

1

Quiero interconectar 3 ADS8548 ADC separados con XC3S200AN fpga. El fpga domina las líneas de control de los ADC y también adquiere los datos digitales de los ADC a través de un bus paralelo.

Tendré que adquirir datos de los tres Adcs simultáneamente. Soy un principiante en lo que se refiere a VHDL y no tengo ni idea de la duración de la adquisición de datos.

¿Cuáles son las cosas que tendré que considerar en VHDL para asegurarme de que los tres Adcs se controlan de manera efectiva y los datos se adquieren sin ningún lapso de tiempo entre ellos?

Las respuestas en términos de bloques lógicos en el código y el código de ejemplo para la adquisición de datos ADC serán realmente útiles.

    
pregunta V V Rao

2 respuestas

2

Tendrá que suministrar un impulso a CONVST_A, CONVST_B, CONVST_C y CONVST_D para que los tres ADC comiencen sus conversiones. Use un reloj externo (XCLK) para sincronizar las conversiones. Verifique la salida BUSY / INT para el final de la conversión:

  

Cuando el bit C27 = 1 (BUSY / INT en CONFIG), este pin es una salida de interrupción. Este pin transiciones alto después de una conversión   se ha completado y permanece alta hasta el próximo acceso de lectura. Este modo solo se puede utilizar si los ocho canales   se muestrean simultáneamente (todos los CONVST_x se unen). La polaridad de la salida OCUPADA / INT se puede cambiar   utilizando el bit C26 (BUSY L / H) en el registro de configuración. ( página 16 )

Luego puede leer los datos de los diferentes ADC en varios registros. En ese momento, la sincronización ya no es relevante para la sincronicidad de la conversión.

    
respondido por el stevenvh
0

Su mejor apuesta, en mi opinión, es configurar 3 conjuntos de líneas SPI en el FPGA. Uno para cada IC. Comparte la línea del reloj como dijo stevenh. Cree un bloque SPI, configúrelo como maestro y haga que se comunique con un solo esclavo. Luego inicia un archivo esquemático. Pon 3 de tus bloques SPI en el esquema. Construye un nuevo bloque para actuar como un controlador. Use una máquina de estados para iniciar el inicio de la transmisión y haga que bloquee los valores del ADC una vez que se complete la transmisión. Puede usar ese bloque para distribuir los valores a los bloques que realizan el procesamiento. Recuerda, VHDL es un lenguaje concurrente. Si ha estado programando en C por un tiempo, tomará un poco para que su mente pase de modo secuencial a modo concurrente.

Ya que no dijiste qué tipo de experiencia digital tienes, recomendaría este libro. enlace Hay un montón de ejemplos VHDL de todos los circuitos digitales de bloques de construcción.

Si esa no es información suficiente para comenzar, dibujaré algo más adelante.

    
respondido por el Matt Young

Lea otras preguntas en las etiquetas