Red de Respuestas Legales - Consulta de información - Necesito urgentemente una explicación detallada y un análisis del núcleo IP en FPGA, ¡gracias! ! !

Necesito urgentemente una explicación detallada y un análisis del núcleo IP en FPGA, ¡gracias! ! !

Hace unos años, el diseño de circuitos integrados para aplicaciones específicas (ASIC) todavía era una cuestión de unos pocos ingenieros de diseño de circuitos integrados. A medida que la integración del silicio continúa aumentando, no es difícil realizar ASIC con. millones de puertas El diseño de empresas de fabricación de sistemas La gente utiliza cada vez más la tecnología ASIC para integrar funciones a nivel de sistema (System Level In tegrete - SL I), o sistema en un chip (System on a chip). Las capacidades de diseño y de fabricación también están aumentando. Ahora los diseñadores ya no tienen que usar todas las puertas lógicas para diseñar ASIC. De manera similar al diseño de chips de circuitos integrados (IC) en placas impresas, los diseñadores de ASIC pueden aplicar módulos funcionales equivalentes a chips IC en placas impresas, lo que se denomina diseño de sistema basado en el núcleo. Macroceldas (núcleo) o de propiedad intelectual (IP). Este es el método de diseño basado en núcleos. La CPU, la memoria, el controlador de bus, el circuito de interfaz, el DSP, etc. pueden convertirse en núcleos. Sin embargo, el diseño de ASIC es muy diferente del diseño de placas impresas (PCB). Los ASIC deben utilizar herramientas EDA para el diseño de hardware. Los principales problemas se resuelven mediante simulación por computadora y no se pueden resolver mediante depuración experimental como el diseño de placas impresas. ASIC También se requieren cantidades considerables (normalmente decenas de miles de dólares) de gastos de ingeniería no repetibles (NRE). Los conjuntos de puertas programables en campo (FP

GA) y los dispositivos lógicos programables complejos (CPLD) que aparecieron a finales de la década de 1980 son un tipo de ASIC. Su ventaja es que en el chip FPGA o CPLD proporcionado por el fabricante. El ingeniero de diseño puede programarlo in situ para completar el diseño final del ASIC sin costosas tarifas de NRE. Ahora la escala de FPGA ha alcanzado el millón de puertas. Por ejemplo, XILINX-p.htm" target="_blank" title="XILINX Supply and PDF information"gt; la serie V irtex de la compañía XILINX puede implementar completamente un sistema en un chip. y su método de diseño pasará gradualmente al diseño basado en núcleos.

1 Clasificación y características de los núcleos

Un núcleo es un módulo funcional complejo predefinido y probado que se puede integrar en el sistema. diseño Las características principales del diseño básico son que los módulos de diseño existentes se pueden reutilizar, el tiempo de diseño se acorta, los riesgos de diseño se reducen y se espera que el rendimiento de todo el sistema mejore mediante una integración de alto nivel. núcleos en diseño FPGA, como se muestra en la Tabla 1:

Tabla 1 Clasificación y características de los núcleos

Núcleo duro

(hard core)

Los módulos predefinidos colocados y enrutados no pueden Para modificar el diseño, se debe utilizar la tecnología de implementación especificada para garantizar el rendimiento del tiempo

Núcleo firme

(núcleo firme) Código fuente HDL, algunas funciones de la lista de redes relacionada con la tecnología de implementación se puede modificar, utilizando la tecnología de implementación especificada se puede controlar el tiempo de la ruta crítica

Software

(núcleo blando)

Comportamiento El código fuente HDL de nivel o nivel RTL puede modificar el diseño y el tiempo no tiene nada que ver con la tecnología de implementación específica. El rendimiento no está garantizado y lo determina el usuario

El núcleo duro está optimizado para tecnología de implementación específica Tiene una estructura, un diseño y un enrutamiento que no se pueden modificar. Se puede usar como componente de biblioteca y tiene un rendimiento de sincronización estable, pero el núcleo duro La sincronización no se puede modificar ni ajustar según las necesidades del diseño. código fuente y una lista de redes relacionada con la tecnología de implementación. Los usuarios pueden agregar o eliminar algunas funciones de acuerdo con las regulaciones. El tiempo de la ruta crítica del núcleo sólido no se puede cambiar, pero su tecnología de implementación no se puede cambiar. Los FPGA de diferentes fabricantes no se pueden utilizar indistintamente.

El núcleo blando es un código fuente de lenguaje de descripción de hardware sintetizado (HDL). No tiene nada que ver con la tecnología de implementación y se puede modificar según las necesidades del usuario. Sin embargo, tiene la mayor flexibilidad de uso. El núcleo blando no está garantizado y el rendimiento final está determinado principalmente por las técnicas de síntesis, ubicación y ruta y de implementación adoptadas por los usuarios.

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 tanto, como software, se utiliza principalmente el núcleo sólido, que es un compromiso entre núcleo duro y núcleo duro. Lo anterior es la clasificación de núcleos representativos. En el uso real, los núcleos con ciertas funciones a menudo aparecen en varias formas y son seleccionados por los usuarios de acuerdo con sus necesidades. Los núcleos blandos no solo tienen código fuente HDL, sino que también incluyen comportamientos utilizados para pruebas funcionales. Vectores de modelo y prueba, 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 MCU y RAM en Figura 1. La otra parte es el circuito lógico definido por el usuario. Conectar estos módulos funcionales entre sí de acuerdo con los requisitos del diseño del sistema completa el diseño del chip. Actualmente no existe un estándar unificado para la conexión de cada núcleo o bloque funcional. Depende de diferentes diseños y generalmente debe cumplir con ciertos requisitos de sincronización. El primer paso en el diseño basado en núcleos es seleccionar un núcleo adecuado, que se selecciona principalmente entre los aspectos de función central, confiabilidad del rendimiento y tecnología de implementación.

Figura 1 Diagrama esquemático del chip de diseño basado en núcleo

Un núcleo primero debe tener un archivo de descripción funcional del núcleo, que se utiliza para describir la función, los requisitos de tiempo, etc. del núcleo, como se muestra en la Figura 2. En segundo lugar, debe incluir documentos sobre la implementación del diseño y la verificación del diseño, 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 después de implementar el vector de prueba. La implementación del núcleo duro es relativamente simple, similar al uso de chips IC en el diseño de PCB. El uso del núcleo blando es más complicado y el rendimiento después de la implementación está relacionado con el método de implementación específico del usuario. proveedores de núcleos blandos generalmente También se proporciona un archivo de descripción completo para guiar la síntesis de núcleos blandos, y el uso de núcleos sólidos se encuentra en algún punto entre los dos anteriores.

Figura 2 El núcleo consiste en la implementación y verificación del diseño. Muchos proveedores de núcleos proporcionan entornos de evaluación de núcleos, demostraciones y placas de desarrollo para facilitar que los usuarios comprendan las funciones y usos del núcleo.

El proceso de diseño de FPGA basado en núcleos se muestra en la Figura 3. La parte de entrada del diseño incluye:

1) Entrada de la lógica de diseño del usuario, 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 a nivel de comportamiento, que solo se utiliza para simulación funcional y no se sintetiza.

Figura 3 Proceso de diseño de FPGA basado en núcleos

La entrada del diseño generalmente está en lenguaje HDL, como VHDL, Verilog, etc. Después de ingresar el diseño y el modelo de simulación, la simulación funcional puede Cuando se completa la simulación funcional, se puede sintetizar el circuito lógico.

Se deben agregar restricciones de tiempo razonables a la síntesis de la lógica del usuario y el núcleo blando 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 y los archivos de restricciones de diseño del núcleo se fijan, y la lista de redes y los archivos de restricciones de diseño sintetizados por el usuario se ingresan a la herramienta de enrutamiento y ubicación de FPGA. Complete la implementación final de la FPGA y genere archivos de temporización. Se utiliza para simulación de temporización y verificación funcional. Finalmente, se ingresa a la fase de verificación del diseño, donde 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 y los resultados de la simulación de sincronización se comparan para verificar si la sincronización y las funciones del diseño son correctas.

Si el rendimiento del diseño no puede cumplir con los requisitos, es necesario descubrir la ruta crítica que afecta el rendimiento, devolver la información de retraso, modificar el archivo de restricciones, volver a sintetizar, colocar y enrutar el diseño, y repetir esto muchas veces. hasta que se cumplan los requisitos de diseño. Si los requisitos de diseño no se pueden lograr después de repetidos intentos, es 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 de trabajo y otras deficiencias se han compensado en gran medida, y los núcleos blandos desempeñan un papel cada vez más importante en el diseño basado en núcleos. Su principal ventaja es que sus funciones son independientes de la tecnología de implementación y su uso es flexible. De esta manera, podemos utilizar fácilmente núcleos blandos bajo diferentes tecnologías de implementación. Por ejemplo, el núcleo blando implementado por XIL INX FPGA no necesita cambiarse en el diseño después de la resíntesis, se puede implementar en ACTEL FPGA, lo que mejora enormemente la flexibilidad de diseño e implementación. 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 el rendimiento esperado es actualmente un problema difícil que debe resolverse. En los últimos años, los 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 mediante algunas restricciones en el código fuente HDL para compilar núcleos blandos. combinado con la función de restricción de tiempo de las herramientas de síntesis. Por ejemplo, el núcleo blando está restringido a utilizar únicamente un diseño de lógica síncrona estricta, sin bucles de retroalimentación, múltiples rutas de reloj, lógica de tres estados, pestillos y flip-flops de reinicio de conjunto asíncrono, y solo usa flip-flops 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 la tecnología de implementación específica. Por supuesto, esto es a expensas de ciertos recursos lógicos de FPGA, pero con el desarrollo de la tecnología de silicio, los recursos de hardware son muy abundantes y vale la pena desperdiciar una cierta cantidad de recursos de hardware a cambio de una mayor flexibilidad de diseño, al igual que en Diseño de software para PC, ahora pocas personas piensan demasiado en el espacio de almacenamiento que ocupan los programas.

De acuerdo con las ideas de diseño de núcleo blando anteriores, el autor de este artículo adopta un diseño lógico totalmente síncrono y solo utiliza flip-flops D y puertas lógicas para realizar el diseño de un microcontrolador de 8 bits compatible con PIC16C57. . La estructura de nivel superior se muestra en la Figura 4, que 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 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. Los registros de instrucciones y los registros de funciones especiales, incluidos los registros de puertos IO, registros de estado, contadores de programas, etc., se componen de flip-flops D. El registro general utiliza el módulo RAM de la FPGA. La unidad de lógica aritmética y decodificación de instrucciones se compone de. Puertas lógicas combinacionales.