Preguntas urgentes relacionadas con el "Diseño del módulo de interfaz microprocesador-ASIC", ¡esperando en línea! ! ! ! ! ¡Dará la respuesta!
1 Clasificación y características del kernel
Los kernels son módulos funcionales complejos predefinidos y verificados que se pueden integrar en diseños basados en kernel. La característica principal es que puede reutilizar módulos de diseño existentes, acortar el tiempo de diseño, reducir los riesgos de diseño y mejorar el rendimiento de todo el sistema a través de la integración avanzada. Hay tres tipos de núcleos en el diseño de FPGA, como se muestra en la Tabla 1: /p>
Tabla 1 Clasificación y características del núcleo
Núcleo duro
(núcleo duro)
Los módulos predefinidos se han ordenado en el diseño y enrutamiento y no puede Para modificar el diseño, debe adoptar la tecnología de implementación especificada para garantizar el rendimiento del tiempo
Núcleo firme
(núcleo firme) Código fuente HDL, debe adoptar la tecnología de implementación para garantizar el rendimiento
(núcleo firme). (núcleo firme)
Algunas funciones del código fuente HDL y la lista de redes relacionadas con la tecnología de implementación se pueden modificar, y el tiempo de la ruta crítica se puede modificar. controlarse utilizando la tecnología de implementación especificada
Núcleo suave
(Núcleo suave)
El diseño del código fuente HDL de nivel RTL o de comportamiento se puede modificar y el rendimiento del tiempo no se puede garantizar independientemente de la tecnología de implementación específica, y lo decide el usuario
El núcleo duro está optimizado para una tecnología de implementación específica. La estructura, el diseño y el enrutamiento de un núcleo duro optimizado para una tecnología de implementación específica no pueden. Se puede modificar como componente de biblioteca y tiene un rendimiento de sincronización estable, pero el núcleo duro no se puede modificar de acuerdo con la sincronización y los ajustes del diseño.
El núcleo sólido consta de código fuente HDL y listas de redes relacionadas con la tecnología de implementación. Los usuarios pueden agregar o eliminar algunas funciones según sea necesario. El tiempo de la ruta crítica del núcleo sólido es fijo, pero su tecnología de implementación no se puede cambiar, es decir, los FPGA producidos por diferentes fabricantes no se pueden usar indistintamente con el núcleo sólido. El núcleo blando es un código fuente de lenguaje de descripción de hardware (HDL) sintetizable. No tiene nada que ver con la tecnología de implementación y se puede modificar según las necesidades del usuario. Tiene la mayor flexibilidad, pero el rendimiento de sincronización de la ruta crítica del núcleo blando. no está garantizado el rendimiento final está determinado principalmente por las técnicas de síntesis, diseño e implementación utilizadas por el usuario.
En el diseño de FPGA, debido a las grandes diferencias en las tecnologías de implementación específicas de diferentes fabricantes, el rendimiento del núcleo blando, que es completamente independiente de la tecnología de implementación del hardware, es muy limitado, mientras que el núcleo duro carece de flexibilidad de uso, por lo que se utilizan más comúnmente los núcleos sólidos, un compromiso entre núcleos blandos y núcleos duros. Las anteriores son clasificaciones de kernel representativas. En aplicaciones prácticas, los kernels con ciertas funciones a menudo vienen en muchas formas y los usuarios pueden elegir según sus necesidades. Los núcleos blandos incluyen no solo el código fuente HDL, sino también modelos de comportamiento y módulos de prueba funcionales. , archivos de restricciones utilizados para guiar la síntesis.
2 Introducción al método de diseño FPGA basado en núcleos
En el diseño basado en núcleos, un diseño completo consta principalmente de dos partes, una parte es el núcleo, como la MCU en la Figura 1, RAM y la otra parte son circuitos lógicos definidos por el usuario. De acuerdo con los requisitos del diseño del sistema, estos módulos funcionales deben conectarse entre sí para completar el diseño del chip. Actualmente no existe un estándar unificado para el método de conexión de cada núcleo o bloque funcional. Según los diferentes diseños, generalmente se deben cumplir ciertos requisitos de sincronización. . Como primer paso en el diseño básico del kernel, es elegir el kernel apropiado, lo que depende principalmente de la función, el rendimiento y la confiabilidad del kernel, así como de la tecnología de implementación.
Figura 1: Diagrama esquemático del chip de diseño basado en núcleo
Un núcleo debe tener primero una descripción funcional del núcleo, que se utiliza para explicar las funciones del núcleo, los requisitos de tiempo, etc. ., como se muestra en la Figura 2, y luego también debe incluir archivos de diseño tanto para la implementación como para la verificación, es decir, no solo el código fuente del nivel de transferencia de registros (RTL) o netlist que implementa la función principal, sino también el modelo de simulación y Modelo de simulación utilizado para verificar la exactitud de la función lógica central. Pruebe el modelo. Esto significa no solo el código fuente o netlist de la capa de transferencia de registros (RTL) que implementa las funciones principales, sino también los modelos de simulación y los vectores de prueba utilizados para verificar las funciones lógicas después de implementar el núcleo. La implementación del núcleo duro es relativamente simple, similar al uso de chips IC en el diseño de PCB, mientras que el uso del núcleo blando es más complicado. El rendimiento después de la implementación está relacionado con el método de implementación específico del usuario. Se utiliza para guiar la síntesis de núcleos blandos y el uso de núcleos sólidos se encuentra en algún punto intermedio entre los dos anteriores.
Figura 2: El kernel consta de la implementación y verificación del diseño. Muchos proveedores de kernel proporcionan entornos de evaluación del kernel, así como placas de demostración y desarrollo para facilitar que los usuarios comprendan las funciones y el uso del kernel.
El proceso de diseño de FPGA basado en núcleos se muestra en la Figura 3. La entrada de diseño incluye:
1) Lógica de diseño del usuario, entrada del modelo de simulación de núcleo blando, núcleo sólido o núcleo duro
2) Simulación funcional
3) Síntesis lógica. El modelo de simulación es un modelo de comportamiento que se utiliza únicamente para simulación funcional y no para síntesis.
Figura 3 Proceso de diseño de FPGA basado en kernel
La entrada del diseño generalmente utiliza lenguaje HDL, como VHDL, Verilog, etc. Después de ingresar el modelo de diseño y simulación, se puede realizar la simulación funcional. Una vez completada la simulación funcional, se puede sintetizar el circuito lógico.
Al sintetizar la lógica del usuario y el núcleo blando, se deben agregar restricciones de tiempo razonables para cumplir con los requisitos de diseño. Las restricciones pueden venir dadas por el archivo de síntesis (Synthesis Script). Después de completar la entrada del diseño, se ingresa a la etapa de implementación del diseño. En esta etapa, la lista de redes central fija y el archivo de restricciones de diseño, la lista de redes completa del usuario y el archivo de restricciones de diseño se ingresan en la herramienta de enrutamiento y ubicación de la FPGA para completar la implementación final de la FPGA. y generar el archivo de sincronización. Realizar simulación de sincronización y verificación funcional. Finalmente, al ingresar a la etapa de verificación del diseño, se utiliza el análisis de sincronización estática para determinar si el diseño cumple con los requisitos de desempeño, y los resultados de la simulación funcional se comparan con los resultados de la simulación de sincronización para verificar si la sincronización y las funciones del diseño son correctas.
Si el rendimiento del diseño no cumple con los requisitos, debe averiguar la ruta crítica que afecta el rendimiento, devolver la información de retraso, modificar el archivo de restricciones, resintetizar el diseño, el lugar y la ruta, y repetir esto muchas veces hasta que Se cumplen los requisitos de diseño. Si los requisitos de diseño no se pueden repetir varias veces, será necesario modificar el diseño o utilizar otras técnicas de implementación.
3 Diseño y uso de núcleo blando
Debido al rápido desarrollo de la tecnología de hardware FPGA, los recursos de hardware son cada vez más abundantes y más rápidos, por lo que la tasa de utilización de los recursos de núcleo blando No es alto, la baja velocidad y otras deficiencias se han compensado en gran medida, y el papel del núcleo blando en el diseño se está volviendo cada vez más importante. Su principal ventaja es que su funcionalidad es independiente de la tecnología de implementación y es flexible de usar. Por lo tanto, podemos utilizar fácilmente núcleos blandos en diferentes tecnologías de implementación. Por ejemplo, un núcleo blando implementado con X IL INX FPGA se puede implementar con ACTEL FPGA después de la resíntesis sin cambiar el diseño, lo que mejora en gran medida la flexibilidad de la implementación del diseño. Sin embargo, el rendimiento de los núcleos blandos todavía se ve muy afectado por la tecnología de implementación. Cómo garantizar que los núcleos blandos alcancen un rendimiento ideal es actualmente un problema que debe resolverse. En los últimos años, países extranjeros han propuesto la idea de núcleos blandos sintetizables que no tienen nada que ver con la tecnología de implementación. Esperan controlar parcialmente el rendimiento de los núcleos blandos imponiendo algunas restricciones del código fuente HDL en la preparación de núcleos blandos y combinándolos. con las limitaciones de tiempo de las herramientas de síntesis. Por ejemplo, los núcleos blandos están restringidos únicamente a diseños de lógica estrictamente síncrona y no pueden usar bucles de retroalimentación, múltiples rutas de reloj, lógica de tres estados, pestillos y flip-flops de reinicio asíncrono. Solo pueden usar indicadores D y puertas lógicas. De esta manera, con la ayuda de herramientas de síntesis, se puede controlar eficazmente el retraso de la ruta crítica del núcleo blando y se puede predecir el rendimiento del núcleo blando en tecnologías de implementación específicas. Por supuesto, esto se produce a expensas de ciertos recursos lógicos de FPGA, pero con el desarrollo de la tecnología de silicio, los recursos de hardware se han vuelto muy abundantes. Vale la pena intercambiar un cierto desperdicio de recursos de hardware para mejorar la flexibilidad del diseño, como en. PC En el diseño de software, pocas personas ahora prestan demasiada atención al espacio de almacenamiento que ocupa el programa.
El autor de este artículo siguió las ideas de diseño de núcleo blando anteriores, adoptó un diseño lógico totalmente síncrono y solo utilizó flip-flops D y puertas lógicas para realizar el diseño de un microcontrolador de 8 bits compatible con PIC16C57. Su estructura de nivel superior se muestra en la Figura 4. Adopta la estructura de Harvard. La búsqueda de instrucciones y la ejecución de instrucciones funcionan en paralelo, excepto algunas instrucciones de salto del programa, todas las instrucciones son instrucciones de ciclo de reloj único. La memoria del programa ROM generalmente se coloca fuera de la FPGA. Si hay pocas instrucciones en la ROM, también se puede colocar dentro de la FPGA. El bus de datos adopta la forma de un multiplexor para adaptarse a diferentes tecnologías de implementación. El registro de instrucciones y los registros de funciones especiales (incluidos registros de puerto IO, registros de estado, contadores de programa, etc.) están compuestos por flip-flops tipo D, los registros generales utilizan módulos RAM FPGA y las unidades de decodificación de instrucciones y lógica aritmética están compuestas de puertas lógicas combinacionales.
Referencias:. /htm_tech/2008-1/10171_120768.htm