usando bibliotecas C dentro de verilog

0

Estoy implementando una radio en Verilog. El tiempo necesario para la inversión de bits mientras se calcula la FFT es mayor. es casi igual a un tiempo de símbolo (sistema OFDM). ¿Puedo usar una biblioteca FFT en C, que se puede integrar al código, para acelerar mi simulación?

Si es así, ¿pueden usarse estos códigos para un FPGA en tiempo real?

    
pregunta phanitej

3 respuestas

5

Bueno, podrías hacerlo para acelerar tu simulación, pero no es posible sintetizar esto y ponerlo en un FPGA. El código de Verilog es un lenguaje de descripción de hardware que describe la funcionalidad e interconexiones de su diseño. No se ejecuta como un programa, se sintetiza en el equivalente de un diagrama esquemático.

Podría ejecutar su algoritmo FFT en una CPU que está escrita en verilog, pero eso anula el propósito de usar un FPGA si necesita una FFT muy rápida. Sin embargo, hay núcleos FFT disponibles, por lo que no debería tener que reinventar la rueda. Creo que el generador central de Xilinx puede generar uno, o puede usar uno de un sitio como opencores.org.

Por cierto, la inversión de bits, si entiendo lo que quieres decir con eso, debería ser una operación trivial en un FPGA si se implementa correctamente.

    
respondido por el alex.forencich
1

Dudo que esto sea posible.

Recuerda que cuando escribes Verilog no estás programando . Su código Verilog no se "ejecutará" en su FPGA. En su lugar, estás describiendo un sistema lógico . Esto es algo diferente. Uno correrá línea tras línea es una manera secuencial cuando el otro describe un sistema en el que tu cosa está funcionando en paralelo.

Desafortunadamente, el lenguaje Verilog se parece a C , pero para mí esto es engañoso porque el fundamento fundamental es muy diferente.

Para responder a su pregunta, un fragmento de código que debe ejecutarse como un programa secuencial no se puede usar de manera eficiente aquí. Hay algunos traductores de C a Verilog que intentan crear una descripción de lo que hace el código C en Verilog. Pero para una biblioteca compleja que seguramente hará alguna asignación de memoria de cosas dinámicas, esto puede no funcionar en absoluto. ¿Por qué no buscar un código FFT directamente? Por ejemplo, ¿qué puede encontrar en opencores.org ?

    
respondido por el Blup1980
1

Si solo está apuntando a la simulación, hay formas de interactuar lenguajes como C / C ++ con Verilog / SystemVerilog, como Interfaz de procedimiento Verilog y Interfaz de programación directa de Verilog del sistema

Pero AFAIK, no creo que las herramientas de síntesis sean lo suficientemente inteligentes como para sintetizar cualquiera de estas llamadas C / C ++ para un FPGA

    
respondido por el nav

Lea otras preguntas en las etiquetas