Usando componentes de hardware específicos de FPGA al escribir RTL

1

A veces he escuchado que alguien que escribe un diseño de circuito digital puede querer usar primitivas reales presentes en el FPGA directamente en el diseño. Esto significa incluir la biblioteca que contiene esas definiciones primitivas en nuestro diseño y luego crear una instancia en ellas. Los ejemplos podrían ser un bloque de memoria, un bloque DSP, un bloque de matriz lógica e.t.c. instanciado directamente y conectado a nuestro diseño.

No lo he hecho todavía y no veo cuándo hacerlo es importante. ¿Por qué alguien querría hacerlo? ¿Efectúa la forma en que hacemos la simulación del diseño?

Siempre nos gusta escribir nuestro circuito desde un nivel más alto de abstracción, por lo tanto, crear instancias de tales bloques no tiene mucho sentido para mí.

    
pregunta quantum231

3 respuestas

1

Una vez que comience a incorporar primitivas específicas en su diseño, ese diseño ya no es portátil, sino que está vinculado a la tecnología en la que aparecen esas primitivas.

Para simular un diseño de este tipo, necesita tener la biblioteca de simulación del fabricante para esos primitivos. Estas bibliotecas a menudo se entregan como archivos binarios encriptados, a fin de evitar la publicación de información patentada sobre la implementación de esos primitivos.

Una cosa que a menudo hago cuando me enfrento a la necesidad de usar una primitiva de este tipo es "envolver" la primitiva en un módulo externo que tiene una interfaz más abstracta y específica para mi aplicación. Esto me permite escribir una versión puramente de comportamiento para la depuración funcional inicial y también encontrar una manera diferente de asignar esa funcionalidad a la tecnología patentada de un proveedor diferente.

    
respondido por el Dave Tweed
2

En su mayor parte, el sintetizador es bueno para inferir primitivas. Sin embargo, hay primitivas que no se pueden inferir. A veces es tan simple como una RAM de doble puerto con diferentes anchos de puerto o un FIFO sin lógica de estructura adicional. También hay cosas como DCM y PLL para generar y administrar relojes que no se pueden inferir con HDL puro.

Los FPGA en muchos casos también contienen primitivas mucho más grandes y más especializadas, como serializadores, puntos finales PCIe, MAC de Ethernet o núcleos de procesadores duros. Estos deben ser específicamente instanciados y configurados para poder ser utilizados.

    
respondido por el alex.forencich
0

A veces, los FIFO instanciados aprovecharán la lógica especializada que las herramientas de compilación HDL no podrán utilizar en un diseño inferido. Como resultado será significativamente más rápido. Sufre en portabilidad pero gana en velocidad.

    
respondido por el IanJ

Lea otras preguntas en las etiquetas