Tengo una gran cantidad de procesamiento de la señal de transformación que debe ser portado desde matlab a VHDL. Se requiere, sin duda, algún tipo de intercambio de recursos. Un poco de cálculo me dio la siguiente:
- 512 fft de 64 puntos
- 41210 multiplicar-agregar operaciones
Teniendo en cuenta la mayor Virtex 6 FPGA ha ~2000 DSP48E bloques, sé que puedo recurso compartido con el fin de re-uso de los recursos en múltiples ocasiones. El tiempo de ejecución no es realmente un problema, el tiempo de procesamiento puede tomar un tiempo relativamente prolongado en FPGA términos.
Buscando en el uso de los recursos, el uso de radix-2 lite arquitectura me pone 4dsp bloques/operación FFT = 2048 DSP bloques, con un total de ~43k. mayor FPGA Virtex tiene 2k de bloques, o 20 operaciones/mux.
Obviamente incluyendo grandes une a la tela también va a tomar las rebanadas. Donde puedo encontrar el extremo superior de este límite? Yo no puedo infinitamente compartir los recursos de la FPGA. Es 41210 multiplicadores demasiado grande? ¿Cómo puedo calcular lo que es demasiado grande?
También he mirado en otros recursos (Rodajas, Brahms, etc). Radix-2 Lite también te da 4 x de 18 quilates de brams/fft = 2048 brams más grande de Xilinx FPGA contiene 2128 Brams. muy en el límite. Me preocupa que mi diseño es simplemente demasiado grande.
ACTUALIZACIÓN:
Algo más de información sobre el diseño en sí. Yo no puedo entrar en detalles, pero aquí es lo que puedo dar:
Initial conditions -> 512 ffts -> 40k multipliers ---------|----> output data to host
^------re-calculate initial conditions----|
salida datarate spec: "más rápido que el de simulación matlab"
los cálculos sabio, esto es donde estoy:
FFT etapa: fácil. Puedo implementar 1/2/4/8 Fft, almacenar los resultados en SDRAM y el acceso posterior. Relativamente pequeño, incluso si tarda mucho, está bien. el uso de radix-2 lite puedo conseguir 2 DSP48Es y 2 de 18 quilates de BRAMS/FFT. streaming da 6 DSP48Es 0BRAMS/FFT. en cualquier caso, 64 punto de FFT es pequeño en FPGA de recursos de términos.
Multiplicadores: este es mi problema. La multiplicación de las entradas son tomado de las tablas de búsqueda o datos FFT. De verdad que es sólo un montón de multiplicar-añade. No hay mucho que optimizar. No es un filtro, pero tiene características similares a un filtro.
Teniendo en cuenta el uso compartido de recursos de la FPGA, matemáticas funciona de la siguiente manera: Una LUT-6 puede ser utilizado como un 4-way mux. La fórmula para N-way, M bits mux es como sigue:
N*M/3 = number of luts, or N*M/12 = slices (4 LUTS/slice).
cálculo de las cifras para mi aplicación no da buenos resultados. El 90% de la virtix-6 la familia no tiene suficiente rodajas de recursos a compartir el Dsp para realizar 40k operaciones.