Tarifas de propiedad intelectual de NRE
GA) y el dispositivo lógico programable complejo (CPLD) son ambos un tipo de ASIC. Su ventaja es que el ingeniero de diseño puede programar in situ el chip FPGA o CPLD proporcionado por el fabricante para completar el diseño final del ASIC sin costosos costos de NRE. En la actualidad, la escala de FPGA ha alcanzado el millón de puertas. Por ejemplo, Xilinx-p.htm " target = " _ Blank " title = " Xilinx source and PDF materials " > La serie V irtex de Xilinx puede realizar completamente el sistema en 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, probado y predefinido que se puede integrar en. un diseño de sistema basado en núcleos La característica principal del diseño es que los módulos de diseño existentes se pueden reutilizar, el tiempo de diseño se acorta y los riesgos de diseño se reducen. Hay tres núcleos en el diseño de FPGA que se espera mejorar a través de alta. integración de niveles, como se muestra en la Tabla 1:
Tabla 1 Clasificación y características del kernel
Hardcore
(Hardcore)
Módulos predefinidos con la ubicación y el enrutamiento no pueden modificar el diseño, el rendimiento debe estar garantizado por la tecnología de implementación especificada
Núcleo sólido
(núcleo firme) El código fuente HDL puede modificar algunas funciones de netlist relacionadas con el. tecnología de implementación y uso de la implementación especificada La tecnología puede controlar el tiempo de la ruta crítica
Software
(Soft Core)
El código fuente HDL de nivel RTL o de comportamiento se puede modificar. y diseñado independientemente de la tecnología de implementación específica, el rendimiento del tiempo no está garantizado; sin embargo, depende del usuario decidir.
El núcleo duro tiene una estructura y un diseño inmutables y puede usarse como una biblioteca estable. componentes de sincronización Sin embargo, el núcleo duro no puede modificar y ajustar la sincronización de acuerdo con los requisitos de diseño. El núcleo sólido está compuesto por código fuente HDL y listas de redes relacionadas con la tecnología. El usuario puede agregar o eliminar algunas funciones de acuerdo con las regulaciones. , pero el tiempo de ruta crítica del núcleo sólido es fijo. La tecnología de implementación es inmutable, es decir, los núcleos FPGA de diferentes fabricantes no se pueden usar indistintamente. El núcleo blando es el código fuente del lenguaje de descripción de hardware (HDL). sintetizado y puede modificarse según las necesidades del usuario. Tiene la mayor flexibilidad de uso. Sin embargo, el rendimiento de sincronización de la ruta crítica del núcleo blando no está garantizado. El rendimiento final depende principalmente de la tecnología de integración, diseño e implementación. usuario
En el diseño de FPGA, debido a las diferentes tecnologías de implementación específicas de los fabricantes, el rendimiento de los núcleos blandos, que no tienen nada que ver con la tecnología de implementación del hardware, es muy limitado, mientras que los núcleos duros carecen de flexibilidad. en uso, por lo que se utilizan más como un compromiso entre núcleos blandos y duros. Es una clasificación de núcleos representativos. En el uso real, el núcleo de una determinada función a menudo aparece en varias formas y es seleccionado por el usuario según las necesidades.
El núcleo blando no solo tiene código fuente HDL, sino que también incluye modelos de comportamiento y vectores de prueba para pruebas funcionales, que se utilizan para guiar la síntesis de archivos de restricciones.
Introducción al método de diseño FPGA de doble núcleo
En el diseño basado en núcleos, un diseño completo consta principalmente de dos partes. Una es el núcleo, como la MCU y la RAM en la Figura. 1; Es un circuito lógico definido por el usuario. Según los requisitos del diseño del sistema, estos módulos funcionales se conectan entre sí para completar el diseño del chip. Actualmente no existe un estándar unificado para la conexión de cada núcleo o bloque funcional. Debido a los diferentes diseños, se deben cumplir ciertos requisitos de sincronización. Como primer paso en el diseño basado en núcleos, se debe seleccionar un núcleo adecuado, principalmente en aspectos como funciones centrales, confiabilidad del rendimiento y tecnología de implementación.
Figura 1 Esquema del chip de diseño basado en el núcleo
El núcleo primero debe tener un archivo de descripción funcional para explicar las funciones del núcleo y los requisitos de sincronización, como se muestra en la Figura 2. En segundo lugar, debe incluir dos documentos: implementación del diseño y verificación del diseño, es decir, no solo el código fuente RTL o netlist para implementar las funciones principales, sino también el modelo de simulación y los vectores de prueba para verificar la exactitud de las funciones lógicas después de la implementación principal. . 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 complejo y el rendimiento después de la implementación está relacionado con el método de implementación específico del usuario. Para garantizar el rendimiento de los núcleos blandos, los proveedores de núcleos blandos generalmente proporcionan archivos de descripción completos para guiar la síntesis de los núcleos blandos, mientras que el uso de núcleos reales se encuentra en algún punto intermedio entre los dos anteriores.
El núcleo de la Figura 2 consiste en la implementación y verificación del diseño. Muchos proveedores principales proporcionan entornos de evaluación, demostraciones y placas de desarrollo para el núcleo para facilitar que los usuarios comprendan la funcionalidad y el uso 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 lógica diseñada por el usuario, modelo de simulación de núcleo blando, núcleo real o núcleo duro,
2) Simulación funcional,
3) Síntesis lógica. El modelo de simulación es un modelo de comportamiento que solo se utiliza para simulación funcional sin síntesis.
Figura 3 Proceso de diseño de FPGA basado en kernel
La entrada del diseño suele ser 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. Cuando se completa la simulación funcional, se puede sintetizar el circuito lógico.
La síntesis de la lógica del usuario y los núcleos blandos debe estar sujeta a restricciones de tiempo razonables para cumplir con los requisitos de diseño. Las restricciones pueden venir dadas por un script de síntesis. Una vez completada la entrada del diseño, se ingresa a la fase de implementación del diseño, en la que se fijan los archivos de lista de red y restricciones de diseño. Los archivos de lista de red y restricciones de diseño sintetizados por el usuario se ingresan en la herramienta de enrutamiento y ubicación de FPGA para completar la implementación final. FPGA y generar archivos de sincronización para simulación de sincronización y verificación de funciones. 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 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 puede cumplir con los requisitos, es necesario descubrir la ruta crítica que afecta el rendimiento, devolver información de retraso, modificar el archivo de restricciones, volver a sintetizar y diseñar el diseño, y repetir esto muchas veces hasta que el diseño se cumplen los requisitos. Si los requisitos de diseño aún no se cumplen después de múltiples iteraciones, 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 rápidos, lo que compensa la baja tasa de utilización. De los recursos de núcleo blando, las deficiencias de la velocidad de trabajo lenta, los núcleos blandos juegan 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 con X LINX FPGA se puede implementar con ACTEL FPGA sin cambiar el diseño, lo que mejora en gran medida 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 el rendimiento esperado de los núcleos blandos es un problema urgente 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. Se espera que a través de algunas restricciones en la compilación del código fuente HDL de núcleos blandos, combinadas con la función de restricción de tiempo de las herramientas de síntesis, Se puede lograr el propósito de controlar parcialmente el rendimiento de los núcleos blandos. Por ejemplo, los núcleos blandos solo pueden usar 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 usan flip-flops D y puertas lógicas.
De esta manera, con la ayuda de herramientas integrales, 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 es a expensas de algunos recursos lógicos de FPGA, pero con el desarrollo de la tecnología de silicio, los recursos de hardware se han vuelto muy abundantes y vale la pena desperdiciar algunos recursos de hardware a cambio de una mayor flexibilidad de diseño, al igual que en el software de PC. diseño, pocas personas prestan demasiada atención al espacio de almacenamiento que ocupa el programa.
Basándose en las ideas de diseño de núcleo blando anteriores, el autor adopta un diseño lógico totalmente síncrono y solo utiliza flip-flops D y puertas lógicas para implementar el diseño de un microcontrolador de 8 bits compatible con PIC16C57. La estructura de nivel superior se muestra en la Figura 4, utilizando la estructura de Harvard. La búsqueda de instrucciones y la ejecución de instrucciones funcionan en paralelo, excepto algunas instrucciones de salto de programa, todas las demás 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 en la FPGA. El bus de datos adopta la forma de un multiplexor para adaptarse a diferentes tecnologías de implementación. Registros de instrucciones y registros de funciones especiales, incluidos registros de puertos IO, registros de estado, contadores de programas, etc. , están compuestos por chanclas D. El registro general utiliza el módulo RAM de la FPGA, y las unidades de decodificación de instrucciones y lógica aritmética están compuestas por puertas lógicas combinacionales.
Referencia:
/htm_tech/2008-1/10171_120768.htm