Cómo realizar el diseño de interfaz entre el microcontrolador y FPGA (1)
, solo superado por los microcontroladores
. Los FPGA se pueden utilizar para ejecutar cualquier lógica adhesiva, IP personalizada o aceleradores de algoritmos de computación intensiva. Los FPGA pueden ayudar a mejorar el rendimiento del sistema al eliminar algunas de las tareas de procesamiento, liberando al microcontrolador de tareas de ciclo intensivo. Los FPGA también ofrecen excelentes características de rendimiento y mayor flexibilidad para adaptarse a los estándares cambiantes.
Existen dos métodos de implementación básicos para el diseño de MCU basado en FPGA: uno es construir el núcleo blando de MCU en la estructura lógica de FPGA; el otro es utilizar productos de MCU estándar basados en FPGA discretos. El núcleo blando incorporado de FPGA es efectivo, pero en comparación con la MCU estándar, implementar un microcontrolador de esta manera es más costoso y consume más energía. Especialmente usando núcleos basados en ARM de 32 bits. Como resultado, los diseños de MCU FPGA basados en el núcleo blando incorporado de FPGA representan solo un tercio. Los dos tercios restantes son productos de microcontroladores estándar basados en FPGA discretos.
Ni los productos de microcontroladores estándar ni los FPGA desarrollan eficazmente la comunicación entre ambos, incluso utilizando lenguajes diferentes. Por tanto, la interfaz entre ellos será un desafío. La FPGA no tiene ningún circuito lógico especializado para comunicarse con el microcontrolador. Primero, el diseño de este módulo lógico debe comenzar desde cero. En segundo lugar, la comunicación entre el microcontrolador y la FPGA es asíncrona. En particular, existe la necesidad de sincronizar el microcontrolador con el dominio de reloj de la FPGA. Finalmente, existen cuellos de botella tanto en la interfaz como en el bus del microcontrolador. La transferencia de información entre MCU y FPGA generalmente necesita circular en el bus MCU y generalmente consume recursos (PIO o EBI), lo que afecta la velocidad de transferencia. Por lo tanto, se debe tener cuidado para evitar cuellos de botella con la memoria SRAM o flash externa y el bus del microcontrolador.
Existen básicamente tres opciones de hardware para interfaces FPGA a MCU: E/S programables (PIO); interfaz de bus externo (EBI), si está disponible y, finalmente, una interfaz dedicada entre MCU, Advanced High Speed; Autobús (AHB) y FPGA. El uso de este método depende de la aplicación de alto nivel y de las expectativas del mercado.
Interfaz PIO Conectar MCU y FPGA a través de PIO es relativamente simple para la transmisión de datos, incluida la transmisión de direcciones de 32 bits, datos de 32 bits y el control de algunas señales de control. Esto requiere un PIO de 32 bits y un PIO de 2 bits (Figura 1).
Figura 1 Conexión PIO a FPGA
Para transferir datos a la FPGA, la dirección del búfer bidireccional en el PIO debe configurarse en salida. El algoritmo de software para la transmisión de datos a FPGA se implementa de la siguiente manera:
El método de lectura de datos de FPGA es similar. De manera similar, el búfer en PIO primero debe configurarse en salida y luego cambiar la dirección de entrada para leer datos del FPGA. El siguiente es el código de ejecución:
El algoritmo anterior es una transmisión básica, más. Se necesitan algoritmos avanzados. Establezca una comunicación adecuada entre el microcontrolador ARM y la FPGA. Se debe prestar especial atención a garantizar la confiabilidad de los datos, como que no se pierdan datos debido a la alta velocidad o períodos de espera.
La suma de los cálculos del tiempo de acceso:
T acceso-PIO=t1+etapa de procesamiento+t2+etapa de datos
Usando el compilador GCC de máxima optimización, el El sistema tarda aproximadamente 55 ciclos AHB en realizar una operación de escritura en la FPGA (Figura 2).
Figura 2 PIO escribe datos en FPGA
Suponiendo que t2 (el tiempo de respuesta de espera de FPGA) también es de aproximadamente 25 ciclos AHB, el sistema necesita aproximadamente 85 ciclos AHB para leer desde el FPGA (Figura 3).
Figura 3 PIO lee datos de FPGA
La conexión de la interfaz propia de la MCU es muy simple y directa. Sin embargo, se debe utilizar una lógica especial en la FPGA para decodificar todo el tráfico generado por el PIO. En la mayoría de los casos, el flujo de negocios del microcontrolador es completamente asíncrono.