Veo de dónde viene, aunque perfilar no es realmente el término correcto aquí. Los FPGA no están programados en el mismo sentido que una computadora. Describe qué hardware se requiere con el código, luego lo sintetiza con la cadena de herramientas del proveedor específico cuyo FPGA está apuntando. A continuación, recibirá un informe de síntesis que le indicará la utilización de recursos del diseño. El hardware FPGA no cambia dinámicamente, es decir, usted conoce el uso exacto de los recursos en el momento de la compilación y, por lo tanto, no lo "perfila".
Además, ¿te refieres a FPGA o SoC de FPGA? Los dos son diferentes. Algunos FPGA tienen un procesador duro incorporado (SoC). Otros no lo hacen. Si planea intentar hacer esto en software en un procesador integrado (suave o duro) en la lógica FPGA vs. dedicada, la respuesta es muy diferente.
Para agregar a la respuesta de Simons, es prácticamente imposible decir qué recursos utilizará un diseño dado simplemente porque depende no solo del diseño, sino también de muchos otros factores, como la familia específica, si FPGA está utilizando, qué parte del FPGA que está utilizando y las velocidades de reloj que está ejecutando. De hecho, puede cambiar una línea de código que parece ser intrascendente, y cuando vuelva a compilar la disposición completa del diseño y la utilización de los recursos puede cambiar drásticamente debido en parte a las optimizaciones de síntesis.
Para los diseños de FPGA, generalmente lo que hace es comenzar a diseñar la lógica y los algoritmos que planea usar primero. Elija un proveedor (por ejemplo, Altera, Xilinx, etc.) y comience a hacer compilaciones de prueba de partes de su diseño. Para empezar, puede elegir cualquier familia de FPGA, solo para tener una idea de la cantidad de recursos necesarios para cada una de las diferentes familias de FPGA (puede probar más de una).
Una vez que tenga alguna idea de lo que se requiere, puede consultar los requisitos de funciones especiales. Necesitará bloques y PLLs de LVDS SERDES para la interfaz de su cámara, así que mire qué velocidades admite cada familia. Además, si está haciendo un montón de cosas de multiplicación y DSP que parece que es, desea ver las familias que tienen una gran cantidad de recursos DSP (multiplicadores de hardware, etc.).
Una vez que tenga una idea de a qué familia irá a buscar, comience a diseñar su código alrededor de esa familia. Haga más pruebas de compilación con trozos cada vez más grandes de su diseño. Esto le dará una estimación aproximada de los requisitos de recursos que necesitará en su diseño final, y luego podrá conformarse con un FPGA específico: cuanto más grandes son, más caros son, por lo que realmente no quiere ir. con uno que tiene cientos de veces más recursos de los que necesita, pero igualmente no desea ir por uno demasiado pequeño para que el diseño se ajuste.
Lo ideal es que desee apuntar a un FPGA que su diseño utilizará aproximadamente el 70% o menos. El uso de recursos aumenta a medida que se usa cada vez más el diseño debido a la duplicación lógica para cumplir con el tiempo y también la congestión de enrutamiento (demasiadas cosas que intentan encajar en un espacio demasiado pequeño). ¿Por qué el 70%? Bueno, eso es solo una estimación aproximada: a veces, incluso si solo está utilizando una pequeña fracción de los recursos, puede tener problemas si todos esos recursos intentan estar en el mismo lugar en el diseño (debido a los requisitos de tiempo, etc.) ) resultando en una utilización pico mucho más alta.