Llevo un tiempo haciendo un proyecto de reconfiguración parcial de una FPGA. Tengo problemas para entender qué significan términos como "archivo parcial de bits", "flujo de bits", etc. ¿Cómo puede un archivo .bit ser parcial? Además, sé que Xilinx proporciona la herramienta PlanAhead para la reconfiguración, pero ¿requiere algún tipo de licencia para que funcione? Sé que para la reconfiguración, tendría que separar mi tejido en dos partes-estática y dinámica. Mientras que la parte estática es lo que se suele hacer, ¿hay alguna forma específica de codificar mi lógica dinámica en HDL? Cualquier ayuda será apreciada. Gracias.
Respuestas
¿Demasiados anuncios?La idea detrás de la reconfiguración parcial es que, básicamente, se puede cambiar una parte del diseño sobre la marcha sin tener que reconfigurar toda la FPGA. Sin embargo, yo no he utilizado la reconfiguración parcial. Y es posible que necesites la System Edition de ISE para tener acceso a PlanAhead.
El flujo de bits es la información de configuración que informa a la FPGA de cómo configurar todos sus elementos lógicos y de enrutamiento internos y las RAM de bloque para implementar tu diseño. La idea de la reconfiguración parcial es que no se especifica una configuración para toda la FPGA, sino para una parte de ella. Ciertamente hay limitaciones en cuanto a la cantidad de chip que puede reconfigurarse sobre la marcha y cómo la parte reconfigurable debe interactuar con el resto del diseño.
En cuanto a cómo codificar la parte dinámica, bueno, no es realmente "dinámica" en sí, sólo reconfigurable. Así que tendrías que generar probablemente un proyecto separado para cada configuración, y cada proyecto tendría la implementación de esa configuración. Las salidas de esos serían archivos de bits parciales. Al cargar uno de los archivos de bits parciales, se reemplazaría la implementación del bloque configurable en consecuencia.
Supongamos que tienes un diseño para una radio definida por software que puede hablar varios estándares inalámbricos diferentes. Puedes tener una interfaz común para la ruta de datos y los ADCs y DACs y quizás incluso un softcore o dos en la parte no reconfigurable. Luego implementas los módems específicos en la sección reconfigurable. Sobre la marcha, puedes cargar un archivo de bits parcial y apagar la radio e intercambiar el módem mientras los núcleos blandos siguen funcionando.
Sin embargo, me temo que no puedo ser de mucha ayuda en los detalles, ya que no tengo experiencia con la reconfiguración parcial.
Sólo una breve ampliación de la respuesta de Alex. El flujo de la herramienta que describe es el sugerido por Xilinx, que es probablemente por donde deberías empezar. Sin embargo, siempre y cuando se puedan generar flujos de bits parciales, se puede reconfigurar la FPGA en tiempo de ejecución a voluntad. Las restricciones que Xilinx pone a la reconfiguración parcial en tiempo de ejecución están más relacionadas con sus herramientas que con lo que el hardware de la FPGA es capaz de hacer.
Nuestro grupo de investigación ha estado trabajando en la implementación de la Especialización Dinámica de Circuitos, que genera nuevos circuitos especializados en tiempo de ejecución y actualiza la configuración de la FPGA para ajustarse al nuevo circuito. Es útil cuando el número de módulos posibles es muy grande, por ejemplo cuando se implementa un filtro FIR adaptable. Si está interesado en esto, puede encontrar nuestro flujo de herramientas en github .