11 votos

¿Existen bibliotecas de código abierto para VHDL así para C++ o python?

Cuando me estoy acercando a un problema en C++ o python, hay muchas bibliotecas que existen, que hacen el trabajo pesado de mi código. Estoy pensando en GNU GSL, BOOST, o FFTW para C++, y NumPy o SciPy para python. En muchas maneras, el hecho de que estos recursos existen en hacer la programación en estos idiomas respectivos vale la pena, como las bibliotecas evitar tener que reescribir todo el bajo nivel de las cosas desde el principio.

El estándar IEEE bibliotecas parecen cubrir sólo los conceptos básicos, tales como tipos de datos (algo similar a la de C estándar libs).

Parece que en VHDL, usted puede comprar/encontrar algunos "Núcleos IP" que va a resolver un problema, en lugar de usar una librería de código libre. En python, si quiero hablar a un dispositivo serie, acabo import serial y estoy básicamente de hecho. En VHDL, yo iba a estar pegado a escribir un protocolo de serie desde el principio, o me tendría que google en torno a los diversos repositorios hasta que encontré a la persona que había producido algo de ese tipo de obras. Podría ser parches bits de código en mi proyecto, en lugar de solo incluir algo y llamar a eso. En forma similar, si quiero realizar una FFT, me pueden encontrar ejemplos de Fft en VHDL a través de google, pero no es algo tan simple como FFTW que puedo encontrar.

¿Hay algún integral de bibliotecas de código abierto disponible que puedo importar a mis proyectos? ¿Por qué todos parecen rodar su propio código para muchas de las mismas cosas?

14voto

Paebbels Puntos 1646

Soy desarrollador y mantenedor en 'El PoC Biblioteca'. Tratamos de ofrecer una biblioteca compuesta de paquetes (colección de nuevos tipos y funciones) y módulos. Se trata común, fifos, aritmética, de la cruz-reloj de componentes, de baja velocidad de e/S de los componentes y una Ethernet/IP y UDP de la pila (de próxima publicación).

Como @crgrace descrito, es bastante complicado para el diseño de los módulos, que:

  • trabajo en muchas plataformas
  • apoyo de la mayoría de los proveedores de la herramienta de cadenas
  • no añadir/menos sobrecarga

Nuestra biblioteca tiene una configuración interna mechanismn (PoC.config) para distinguir a los vendedores, dispositivos e incluso dispositivo subfamilias para elegir el código de derecho o de una óptima implementación. Asimismo, distingue entre la síntesis y simulación de código en algunos puntos.

Por ejemplo PoC.fifo_cc_got es un FIFO con un 'reloj' (cc) de la interfaz y poner/dieron señales de control de la fifo. El fifo es configurable en anchuras, profundidades de relleno, el estado de los bits y el tipo de aplicación. Es posible elegir una tabla de búsqueda basado en la RAM o En el Chip de la RAM (ocram) aplicación tipo. Si este fifo es sintetizado con ocram opción para Altera, se utiliza altsyncram; si Xilinx es elegido, se utiliza un genérico BlockRAM descripción e implementa la aritmética de punteros por explícita carrychain instanciación (Xilinx XST no encontrar la solución óptima, por lo que se hace manualmente).

Hay otras 2 fifo tipos con 'dependiente de reloj' (dc) y reloj independientes (ic) de la interfaz. Lo que si es necesario para pasar de una normal fifo a una cruz de reloj fifo (PoC.fifo_ic_got), cambiar el nombre de la entidad y añadir un reloj y reset para el segundo reloj de dominio, eso es todo.

Creo que esto demuestra, es posible escribir módulos comunes, que trabajan en múltiples plataformas y compilar en diferentes herramientas (Spartan->Virtex, el Ciclón -> Stratix; ISE, Vivado, Quartus).

Además de PoC, hay otras bibliotecas de código abierto:

3voto

crgrace Puntos 1486

Bibliotecas de código abierto como el que usted describe no sería tan cerca como útil para VHDL o Verilog, ya que son para un lenguaje de programación de propósito general. Esto es debido a CÓMO implementar una función dada puede muy mucho dependiendo de lo que usted está tratando de hacer. Código que es bueno para la FPGA y probablemente no es tan bueno para un ASIC y viceversa.

También, ya que estamos describiendo hardware, una función que hace un FFT requeriría tales especificaciones como ancho de palabra y de reloj y reset estrategia que ataban sus manos y restringir su diseño del conjunto. Si usted hace la función muy flexible, podría tener un enorme sobrecarga.

Por último, mira el tamaño de su archivo ejecutable al incluir una gran cantidad de bibliotecas en C, por ejemplo. Hay un montón de sobredimensionamiento de allí. Eso no importa para el desarrollo de software (la mayoría del tiempo) pero importa mucho para la FPGA y especialmente ASIC de desarrollo. No hay ningún sentido sintetizar un montón de gastos generales que no necesita.

Así que la conclusión es que no hay ningún tipo de bibliotecas, y su enfoque actual es el sonido.

0voto

Spehro Pefhany Puntos 90994

El primer sitio que ir a por este tipo de cosas (como @MarkU mencionado) es opencores.org.

Por ejemplo, es un motor FFT parametrizada, escrito en VHDL, publicado bajo la licencia BSD. El estado es "beta".

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X