En términos generales, la forma en que se diseñan los FPGA si sus datos se almacenaron en una memoria tipo RAM y el procesamiento se realizó con un microcontrolador simple, el único aumento que debe ver en el tamaño del procesador debe ser el ancho de direccionamiento y las señales / módulos relacionados (IE cache).
Los controladores generalmente están diseñados para escalar bien con el aumento de los espacios de memoria; después de todo, su procesador Intel puede usar 4, 8 o 16 GB de memoria con la misma arquitectura, por lo que están relacionados, pero solo de la siguiente manera: Para acceder individualmente a 1500 elementos requiere log2 (1500) = 11 bits de direccionamiento, 100 líneas (7 bits). Dicho esto, la cantidad de bits requeridos es menos que el doble, por lo que esto no tiene en cuenta la "explosión" descrita, por lo que el problema probablemente reside en cómo se almacenaron los datos (IE no RAM como acceso paralelo / accidente de codificación), etc.
Dos ideas generales:
1) Que FPGA es un conector generalista de todos los comercios y no es óptimo para almacenar datos grandes (la forma en que DRAM es al menos).
2) Que la codificación RTL para FPGA no es como escribir software para procesadores. Usted escribe RTL para utilizar las funciones FPGA y las adapta a los patrones que necesita (si es posible), desafortunadamente, lo que sucede a menudo es que si escribe RTL que no se adapta bien a la funcionalidad del FPGA, el software "ayudará" Usted y encuentra una manera de hacer lo que pidió, o tratar de fallar, y luego a menudo no comunica la naturaleza del resultado de una manera humanamente comprensible. El software siempre está interpretando lo que realmente desea, por lo que siempre debe verificar que esas suposiciones fueron precisas (leer registros e informes de la herramienta).
Es muy útil si puede dibujar o conceptualizar de alguna manera su diseño en puertas o, preferiblemente, en cortes y chanclas. Si puede hacer eso, probablemente pueda obtener una idea aproximada de cuántos recursos puede esperar que utilice. Si puede visualizar el hardware y entender cómo su idioma (Verilog o VHDL) define ese hardware, es más probable que escriba un código que las herramientas interpretarán correctamente (pero, de todos modos, lea los informes de recursos como un halcón). Obviamente, Roma no se construyó en un día y esto requiere práctica.
Entonces, en línea con la filosofía de "utilizar el hardware que existe", considere cómo se almacenan sus 1500 líneas en el FPGA. Si se almacenan como bits en flip flops de 1500 * (ancho de datos), quemará sus recursos.
las memorias eficientes en los FPGA tienen una estructura rígida y esto significa que su controlador puede tener un espacio de memoria de 1500 palabras, pero que solo debería ser accesible 1 dirección (a veces 2 direcciones) en una memoria a la vez porque esa es una de las Maneras en que puedes implementarlo eficientemente. Cuando restringe el problema de esta manera, el FPGA puede, a menudo con ayuda de la herramienta (IE ip catalog, otros), implementar una memoria eficiente (ejemplo BRAM). Para conjuntos de datos más grandes, las personas generalmente usan memorias reales que están fuera del FPGA en su tablero cuando sea necesario y práctico.
Es posible que este no sea el patrón de acceso que desea, pero es el que generalmente se escala en muchos casos. Si, por ejemplo, está intentando diseñar un estilo de acceso diferente para sus datos, por ejemplo, CAM (memoria accesible) hacerlo en cualquier plataforma es muy costoso en términos de puertas y puertas en términos relativos.