5 votos

¿Cómo minimizar el tamaño de un microcontrolador implementado en una FPGA?

Tengo 1500 líneas de datos de 16 bits que el procesamiento de necesidad. Diseñé un microcontrolador para ejecutar un algoritmo de procesamiento de datos en el dataset. Lo hace bien cuando el número de líneas es pequeña (< 100), pero explota rápidamente a medida que aumenta.

¿¿Normalmente trabajan con gran cantidad de datos manteniendo una pequeña zona? Tenga en cuenta que he limitado a experiencia en aplicación de FPGA en general.

13voto

Kevin Moore Puntos 376

Estoy asumiendo que usted está realizando una operación de procesamiento de datos en 1500 16 bits de las palabras.

En general, los FPGAs permiten que el comercio fuera de área reducida por la disminución de la velocidad y aumento de la complejidad.

Digamos que su algoritmo fue de autocorrelación, que es algo que tiene n2 de la complejidad, y podría volar al 100 elementos, pero tomar para siempre en 1500 elementos (225 veces más).

En un FPGA podría diseñar un pequeño módulo que se mantenga una muestra de contador, un desplazamiento de contador, y un acumulador. La muestra contra la iba a subir una vez por cada par de ciclos de reloj, el desplazamiento de contador de ir una vez por el bucle de la muestra de contador. La muestra de contador sería una dirección en los datos, y el offset + muestra contra la que sería la otra dirección. El producto de los dos sería añadido en el acumulador. Al final de la muestra de contador de bucle, el resultado sería escrito en la salida de búfer de datos, y el acumulador se borra.

Esta es, probablemente, el área mínima de aplicación. Si es lo suficientemente rápido, genial, pero si no tiene la flexibilidad que usted no tiene en el microcontrolador. Usted puede tuberías el diseño para asegurarse de que usted obtiene de multiplicar se acumulan por reloj. Usted puede asegurarse de que está utilizando el bloque de carneros y duro multiplicadores para la más rápida Fclk desde el sintetizador/lugar-y-la ruta de las herramientas. Por último, puede aumentar el paralelismo, en el costo de la zona. Se podría añadir un multiplicador adicional para realizar más de una operación en un momento. Este será el doble de rendimiento, pero también el doble de ancho de banda de memoria.

Todo esto es mucho más difícil que escribir un microcontrolador de código, pero tiene tantos grados de libertad, que pueden converger en una solución óptima.

6voto

tjester Puntos 51

En general se habla de la forma en que los FPGAs son diseñados si sus datos fueron almacenados en una memoria RAM estilo de memoria y el procesamiento realizado con un simple micro controlador el único aumento en el tamaño del procesador debe ver debe ser su direccionamiento ancho y relacionados con las señales/módulos (caché de IE).

Los controladores están diseñados generalmente a escala muy bien con el aumento de los espacios de memoria, después de todo, su procesador intel podría utilizar 4, 8 o 16 GB de memoria con la misma arquitectura, por lo que están relacionadas, pero sólo como sigue: para acceder individualmente A los 1500 elementos requiere log2(1500) =11 bits de direccionamiento, de 100 líneas (7 bits). Dicho esto, el número de bits de menos de dobles por lo que este no tiene en cuenta la "explosión" de modo que el problema probablemente está en cómo se almacenaron los datos (es decir, no la RAM como en paralelo acceso de codificación / accidente), por lo que en la metodología.

Dos ideas generales:

1) Que la FPGA son generalistas, jack de todos los oficios y no es óptima en el almacenamiento de datos de gran tamaño (la manera en que la memoria DRAM es al menos).

2) Que la codificación RTL para FPGA no es como el software de escritura de los transformadores. Escribir RTL para utilizar la FPGA características y la forma de aquellos a los patrones que requieren (si es posible), por desgracia, lo que a menudo sucede es que si usted escribe RTL que no se muy bien el mapa para la funcionalidad de la FPGA muy bien por lo que el software va a "ayudar" y encontrar una manera de hacer lo que me pediste, o de intentar y fallar, y, a continuación, a menudo no logran comunicar la naturaleza del resultado en un humanamente comprensible de la moda. El software es siempre la interpretación de lo que realmente quieres, entonces usted necesita para estar siempre a la comprobación de que esas suposiciones eran acertadas (herramienta de la lectura de los registros e informes).

Es muy útil si usted puede dibujar o conceptualizar de alguna manera su diseño en puertas o, preferiblemente, luts y chanclas. Si usted puede hacer que usted probablemente puede obtener una idea aproximada de cuántos recursos se podría esperar que para el uso. Si puedes visualizar el hardware y comprender cómo su idioma (Verilog o VHDL) define que el hardware entonces son más propensos a escribir el código que todas las herramientas interpretar correctamente (Pero ir a través de los informes de recursos como un halcón de todos modos). Obviamente, Roma no se construyó en un día y esto se lleva a la práctica.

Así, en línea con la filosofía de la "utilizando el hardware que existe" considerar cómo sus 1500 líneas se almacenan en la FPGA. Si se almacenan como bits en 1500*(ancho de datos) flip-flop que se va a quemar a través de sus recursos.

la eficiente recuerdos en FPGAs tienen una estructura rígida y esto significa que el controlador puede tener un 1500 palabra de memoria en el espacio, pero que debe ser accesible sólo 1 dirección (a veces 2 direcciones) en una memoria a la vez, ya que es una de las maneras que usted puede implementar de manera eficiente. Cuando se restringe el problema de esta manera, la FPGA puede, a menudo con ayuda de la herramienta (IE ip catálogo, otros), impliment eficiente de la memoria (por ejemplo BRAM). Para grandes conjuntos de datos de las personas en general el uso real de los recuerdos que están fuera de la FPGA en su junta directiva, cuando sea necesario y práctico. Esto no puede ser el modelo de acceso que desea pero que es lo que generalmente escalas para muchos casos. Si por ejemplo estás tratando de diseñar un acceso diferente estilo para los datos, por ejemplo un CAM (contenido accesible de memoria) hacerlo en cualquier plataforma es muy costoso en términos de luts y puertas relativly hablando.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X