Me gustaría escribir una interfaz VPI/PLI que abrirá archivos de audio (es decir, wav, aiff, etc.) y presentará los datos al simulador Verilog. Estoy utilizando Icarus en este momento y deseo usar libsndfile para manejar formatos de archivos de entrada y conversión de tipo de datos.Módulo Verilog VPI simple para abrir archivos de audio
No estoy seguro de qué usar en el código C ... he visto IEEE 1364-2001 y todavía confundido qué funciones se supone que debo utilizar.
Idealmente me gustaría tener un módulo verilog con puerto de datos (en serie o paralelo), entrada de reloj y pin de inicio/detención. Me gustaría implementar dos módulos, uno para la reproducción desde un archivo, y otro registraría la salida de un filtro bajo prueba.
¿Puedo hacerlo todo en C y solo una instancia del módulo en mi banco de pruebas o voy a tener que escribir una función (por ejemplo $read_audio_data
) y el módulo de envoltura para llamarlo en cada pulso de reloj ??
Hm, o puede ser que necesite crear el módulo y luego obtener un control para ello y pasar el valor/vect al mango de alguna manera?
No estoy muy preocupado sobre cómo se establecerán los nombres de los archivos, ya que probablemente no lo haría desde el código verilog de todos modos. Y probablemente me apegue a muestras enteras de 24 bits por el momento y libsndfile
se supone que maneje la conversión bastante bien. Tal vez, me atengo a la serie por ahora (incluso puede hacerlo en la forma de I2S) y de serializarlo en Verilog si es necesario.
También he examinado Icarus plug-in que implementa una cámara de video que lee archivos PNG, , aunque hay muchos más aspectos para el procesamiento de imágenes que el audio. Por lo tanto, ese código parece un poco demasiado complicado para mí en este momento, ninguno de los dos me las arreglé para ejecutar .
Tuve un pequeño problema al implementar 'audio_data <= $ ReadSample;', así que lo hice en '$ ReaddSample (audio_cah1n1, audo_chan2);' moda. La diferencia es básicamente si es Función o Tarea, las funciones parecen ser bastante desagradables de acuerdo a cómo se comportan ... parece que las funciones se pueden llamar algo en cualquier punto durante la simulación y esto no es bueno si estoy contando el índice de muestra en la función C! – errordeveloper