reasignación de línea usando un CPLD

0

En el producto que estoy diseñando, tengo un conector de entrada de 60 líneas y un conector de salida de 32 líneas.

La entrada se puede conectar a diferentes productos externos y luego las líneas se pueden mezclar, por lo que la idea del producto es, más o menos, volver a asignar las líneas de entrada relevantes a las de salida.

Por ejemplo, la línea de salida Number1 se puede conectar a la línea de entrada número 1 o al número 2 u 55. Lo mismo para el número 2. Lo que significa que mi producto es más o menos un multiplexor enorme entre 60 entradas y 32 salidas.

Lo primero que se me ocurrió hacer eso con bastante facilidad y poder cambiar la configuración si es necesario en el futuro, es utilizar un CPLD. Mi problema es que no tengo experiencia con CPLD y no sé qué tipo de característica debo buscar en la hoja de datos.

¿Este tipo de proyecto requeriría muchos recursos en un CPLD?

¿Cuáles son las características que debo buscar para asegurarme de que el CPLD que elija tenga suficiente recurso (flip-flop? gate? macrocell?)?

¿Cómo puedo hacer una estimación aproximada de los recursos necesarios para este tipo de proyecto?

Editar

Para agregar información, en realidad hay dos posibilidades diferentes para el CPLD que surgió de las respuestas anteriores. La primera posibilidad es hacer lo que se requiere de forma estática, lo que significa que una vez que se haya programado el CPLD, la configuración entre la entrada y la salida no cambiará hasta la próxima programación.

La segunda posibilidad es poder cambiar la configuración dinámicamente sin reprogramar el CPLD, por ejemplo, por SPI sería bueno.

Las preguntas que hice antes son para ambas posibilidades.

También mis entradas están sincronizadas entre sí y la frecuencia máxima será de aproximadamente 5MHz, ¿cómo estimo el retraso entre la entrada y la salida y la desincronización debido a las diferentes rutas en el CPLD?

    
pregunta damien

2 respuestas

1

Si todo lo que está haciendo es enrutar 32 de 60 entradas a 32 salidas, entonces los requisitos de las celdas son simples: Qn = Dn. No veo necesidad de flip flops, solo una puerta que no invierte entre la salida y la entrada. Su E / S y el número de pines se deben considerar: 92 I / O y pines correspondientes. Podría usar un solo dispositivo, como un TQFP de 144 pines (Altera 5M240Z) o dividirlo en dos dispositivos más pequeños, como el 64 pines 5M40Z. Observe la disipación de potencia y la velocidad cuando realice su selección para asegurarse de que cumple con los requisitos de su sistema. Es posible que también necesite traductores de nivel para que i / o sea compatible con el CPLD.

    
respondido por el AlmostDone
4

Un CPLD es una opción suficientemente razonable. Un CPLD típico en el mercado hoy en día será una pila de bloques lógicos (diferentes proveedores usan términos diferentes), cada uno de los cuales consta de una LUT de 4 entradas y un registro (flip-flop). Tanto la LUT como el registro pueden configurarse y pueden usarse juntos o de forma independiente.

Puede leer mucho sobre la función de una LUT y de un registro configurable en muchos sitios web. Basta con decir que la LUT es un pequeño circuito de compuerta lógica con 4 entradas lógicas y 1 salida. Los valores de bit de salida de LUT para cada uno de los 16 valores de entrada posibles de 4 bits se especifican durante la configuración. Por lo tanto, la LUT puede suplantar cualquier circuito de compuerta lógica con 4 entradas y 1 salida. Incluyendo un pequeño mux.

Hay una lógica de acarreo con la LUT en algunos CPLD que puede explotarse para hacer un mux más grande, pero seamos sencillos y digamos que 1 LUT puede usar 3 entradas para hacer un mux de 2 a 1 con una sola línea de selección.

Desea multiplexores de 32 x 60 a 1 ('mux') más alguna lógica de interfaz que le permita seleccionar la ruta a través de cada mux. Así que usas muxes en muxes en muxes para hacer un mux de 60 a 1 de un montón de 2 a 1 muxes. Específicamente, puede usar 30 + 15 + 8 + 4 + 2 + 1 mux = 60 muxes. Los primeros 30 muxes toman 60 entradas y producen 30 salidas, los siguientes 15 muxes toman 30 entradas y producen 15 salidas y así sucesivamente, a través de seis niveles de mux para producir un resultado de 1 bit.

Usted quiere 32 de estos, así que son 32 x 60 muxes = 1920 muxes = 1920 LUTs. A continuación, desea que la lógica seleccione la ruta, que es un registro por LUT. El registro se configurará para ser un Flip-Flop tipo D (DFF). El registro y la LUT vienen en un par, por lo que es conveniente porque su CPL de 1920 LUT vendrá automáticamente con los registros de 1920 necesarios para controlar las LUT de 1920.

A continuación, necesita algún tipo de interfaz para aceptar información de control para la selección de enrutamiento en cada mux. SPI, bus paralelo, una enorme fila de interruptores, summat más, eso depende de usted decidir. Eso también requiere algo de lógica y depende de tu elección.

Finalmente, necesita suficientes pines para transportar sus 60 entradas, 32 salidas, interfaz de control, reloj lógico y reinicio. Su CPLD podría tener un oscilador interno, podría producir un reinicio interno. La frecuencia del oscilador debe ser lo más baja posible para hacer el trabajo, para reducir las emisiones innecesarias de EMI.

Así que mire los CPLD con al menos 2100 LUT / registro de pares y suficientes pines para la interfaz y 94 más y estará en el camino correcto. En ese momento, el costo, las capacidades para una familia de piezas y la disponibilidad de piezas lo guiarán por el resto del camino.

Como se mencionó anteriormente, algunos CPLD pueden usar la lógica de acarreo para hacer un mux de 4 a 2 con 1 línea de selección, de modo que usarían algo así como la mitad de las LUT de este ejemplo. Si fuera yo, diseñaría el circuito en VHDL y lo sintetizaría en diferentes CPLD de adivinar usando el software libre del fabricante. Entonces pude ver qué puede hacer una familia de CPLD en particular con mi circuito y guiar mi selección. No use más del 70 ... 80% de la capacidad del dispositivo para permitir una futura expansión; en su lugar, elija un dispositivo más grande.

    
respondido por el TonyM

Lea otras preguntas en las etiquetas