Puerto dual, interfaz serie, almacenado en búfer, registro de desplazamiento

3

Tengo un problema "interesante".

El diseño propuesto, para un sistema en el que estoy trabajando, necesita usar ADC en serie de 16 x 16 bits y debo conectar los resultados de los 16 ADC a una secuencia en serie síncrona que se ejecuta a 40 Mbits por segundo. Habrá un tamaño de trama de 289 bits que comprende: -

  • Un encabezado de 17 bits seguido de
  • 16x 17 bits de valores ADC

Se asignan 17 bits por ADC aunque los ADC son de 16 bits. Esto significa una velocidad de fotogramas de 7.225 microsegundos. Bastante fácil usando un EPLD de los proveedores normales.

Por cierto, el 17mo bit invierte el LSB de cada ADC para mantener el codificador de datos en funcionamiento - reduce los períodos "muertos" en el flujo de datos en aproximadamente un 50%. También tenga en cuenta que los ADC 16x se "convierten" simultáneamente (una parte importante de la especificación).

El problema comienza cuando observas los posibles ADC: la mayoría toma alrededor de un microsegundo o dos (por ejemplo) para "convertir", dejando aproximadamente 5 microsegundos para transmitir los datos desde ellos y esta es la raíz del problema. En esos 5 microsegundos tendríamos que extraer 16x 16 bits de datos, agregar el 17mo bit adicional y esto significa que tendríamos que transmitir (para evitar la complejidad del EPLD) a una velocidad de datos (para esos 5 microsegundos) de 54.4 Mbits por segundo. ¡Desafortunadamente, tiene que ser de 40 Mbits por segundo (malditos sean los burócratas)!

Entonces, lo que estoy buscando son ideas y de ahí el título de la pregunta: si extraemos los datos de los ADC 16x y los transmitimos en un registro de "tenencia" en serie, cuando esté completo, podemos transmitirlos a El ritmo más pausado de 40Mbits por segundo. Esto, como veo, requiere un registro de desplazamiento en serie con una longitud de 272 bits (16 x 17) que, una vez lleno, se transfiere instantáneamente (modo paralelo) a un registro de desplazamiento idéntico para generar los datos a una velocidad más constante. Un registro de turnos se llena a una velocidad mientras que el otro transmite los datos almacenados previamente.

Entonces, mi pregunta principal es: ¿existe tal dispositivo y, de no ser así, cuáles son las recomendaciones de la gente? tal vez utilice un EPLD a medida para hacer esto. Por supuesto, necesitaría al menos 544 flip-flops y esto es más grande que la mayoría de los EPLD. He considerado (durante unos diez minutos) el uso de un FPGA, pero el consumo de energía puede ser un problema grave en este diseño. La mayoría de estos diseños que hago se activan a través de "un hueco" porque el módulo se corrige a las máquinas rotativas.

Esta no es mi área de especialización específica (lo análogo es realmente mi área), por lo que si me he perdido una solución obvia, sea amable. Hay un par de ADC que se pueden convertir aproximadamente en 400 ns, pero son dispositivos raros, caros y físicamente un poco más grandes que un MSSOP de 8 pines. Todos los ADC de 16 bits que se ajustan a la factura en tamaño y costo (es decir, menos de $ 20 cada uno y pequeños dispositivos de 8 pines) toman más de un microsegundo para convertirlos.

    
pregunta Andy aka

2 respuestas

1

Hay un montón de FPGA de bajo consumo. Actel (ahora Microsemi ), en particular, tiene algunos buenos.

Una vez usé uno de sus productos (lo siento, olvido exactamente cuál) en un proyecto de auriculares con batería que necesitaba canalizar varios canales de audio digital entre varios ADC y DAC y un chip DSP. El cliente estaba bastante contento con la forma en que funcionó.

    
respondido por el Dave Tweed
2

Esta parece ser una aplicación ideal para un FPGA. Incluso un FPGA relativamente pequeño podría soportar 16 interfaces SPI distintas para los ADC, y crear un registro de desplazamiento de 289 bits es bastante fácil. La elección de un FPGA particular dependerá de otras restricciones de diseño, como los voltajes disponibles, los límites de potencia, el tamaño físico y el costo. He pirateado juntos las interfaces SPI para un ADC y un DAC usando Verilog. 40MHz tampoco es una frecuencia particularmente alta para los FPGA modernos.

    
respondido por el Joe Hass

Lea otras preguntas en las etiquetas