Tengo un problema "interesante".
El diseño propuesto, para un sistema en el que estoy trabajando, necesita usar 16 ADC seriales de 16 bits y necesito interconectar los resultados de los 16 ADC con un flujo serial síncrono que se ejecuta a 40 Mbits por segundo. Habrá un tamaño de trama de 289 bits que comprende: -
Se asignan 17 bits por ADC aunque los ADC sean de 16 bits. Esto significa una velocidad de cuadro de 7.225 microsegundos. Bastante fácil usando un EPLD de los proveedores normales.
Por cierto, el bit 17 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 observa los ADC potenciales: la mayoría tarda aproximadamente uno o dos microsegundos (por ejemplo) en "convertir", dejando aproximadamente 5 microsegundos para transmitir los datos desde ellos y esta es la raíz del problema. En esos 5 microsegundos, necesitaríamos extraer 16x 16 bits de datos, agregar el 17.º bit adicional y esto significa que tendríamos que transmitir (para evitar la estupidez de la complejidad del EPLD), a una velocidad de datos (para esos 5 microsegundos) de 54,4 Mbits por segundo. ¡Tiene que ser 40 Mbits por segundo desafortunadamente (malditos 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 "retención" en serie, cuando esté completo, podemos transmitir con más tranquilidad. velocidad de 40 Mbits por segundo. Esto, como lo veo, requiere un registro de desplazamiento en serie de 272 bits de largo (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 desplazamiento se llena a una velocidad mientras que el otro transmite los datos previamente almacenados.
Entonces, mi pregunta principal es: ¿existe tal dispositivo y, si no, cuáles son las recomendaciones de las personas? Tal vez use 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) usar un FPGA, pero el consumo de energía podría ser un problema grave en este diseño. La mayoría de estos diseños que hago funcionan a través de "un espacio" porque el módulo se fija a las máquinas rotativas.
Esta no es mi área específica de experiencia (realmente lo analógico es mi área), así que si me perdí una solución obvia, sea amable. Hay un par de ADC que pueden convertirse en aproximadamente 400 ns, pero estos son dispositivos raros y costosos 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) tardan más de un microsegundo en convertirse.
Hay muchos FPGA de baja potencia. Actel (ahora Microsemi ), en particular, tiene algunos buenos.
Una vez usé uno de sus productos (lo siento, olvidé exactamente cuál) en un proyecto de auriculares a batería que necesitaba canalizar varios canales de audio digital entre varios ADC y DAC y un chip DSP. El cliente estaba muy contento con la forma en que funcionó.
Esta parece ser una aplicación ideal para un FPGA. Incluso un FPGA relativamente pequeño podría admitir 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 en 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 interfaces SPI para un ADC y un DAC usando Verilog. 40MHz tampoco es una frecuencia particularmente alta para los FPGA modernos.
david tweed
Andy alias
usuario34084
joe hass
Andy alias
Andy alias