Estoy buscando una forma eficiente (en términos de huella) para recopilar datos periódicamente de una multitud de elementos de procesamiento (PE) dentro de un diseño basado en Spartan6.
Actualmente tengo 16 PE, pero cuando el diseño se amplía, puede llegar a 64. Cada PE genera dos palabras de datos de 16 bits ( A
y B
) a una frecuencia de ~ 100 KHz. Los datos de salida de todos los PE deben recopilarse y sumarse a dos sumas ( A_sum
y B_sum
). El reloj del sistema será > 100 MHz, así que tengo > 1000 ciclos de reloj para recopilar los datos de los PE.
La forma más fácil de hacerlo sería con dos multiplexores de 16 bits de ancho ( A_mux
y B_mux
) con una entrada por PE cada uno. Para 16 PE, esto costaría 128 cortes más 512 líneas de interconexión dentro del chip, y se necesitarían 16 ciclos de reloj para recopilar los datos. Como no es necesario que sea tan rápido, me pregunto si hay una forma más eficiente de hacerlo.
Estaba pensando en serializar los datos de alguna manera. Esto ahorraría líneas de interconexión, pero usaría más porciones para implementar los serializadores en cada PE. También necesitaría registros de desplazamiento con salidas paralelas (por lo tanto, no SRL32) para la deserialización.
ACTUALIZAR
Algunos de ustedes sugirieron que yo podría haber contestado mi propia pregunta. La serialización obviamente viene a la mente, sin embargo, no estoy seguro de si realmente va a ser más eficiente. Mi pregunta no es tanto si la serialización es factible, pero me preocupa que los serializadores para cada PE usen más recursos FPGA que un multiplexor de 16 bits con entradas para cada PE. Tal vez haya una implementación inteligente en la que no haya pensado, pero me parece que Fat Mux es realmente la forma más eficiente de recursos. ¿Estoy equivocado?