Я хотел бы написать интерфейс VPI / PLI, который будет открывать аудиофайлы (например, wav, aiff и т. Д.) И представлять данные в симуляторе Verilog.В настоящее время я использую Icarus и хочу использовать libsndfile для обработки форматов входных файлов и преобразования типов данных.
Я не совсем уверен, что использовать в коде C ... Посмотрел IEEE 1364-2001и все еще не понял, какие функции я должен использовать.
В идеале я хотел бы иметь модуль verilog с портом данных (последовательным или параллельным), входом тактовой частоты и контактом пуска / останова.Я хотел бы реализовать два модуля, один для воспроизведения из файла, а другой записывал бы выходные данные тестируемого фильтра.
Могу ли я сделать все это в C и просто создать экземпляр модуля вмой тестовый стенд, или мне придется написать функцию (скажем, $read_audio_data
) и модуль-обертку, чтобы вызывать его для каждого тактового импульса ??
Hm, или, может быть, мне нужно создать модуль изатем получить дескриптор для него и как-нибудь передать значение / vect дескриптору?
Меня не очень волнует, как будут заданы имена файлов, так как я, вероятно, в любом случае не буду делать это из кода verilog.И я, вероятно, пока что буду придерживаться 24-битных целочисленных выборок, а libsndfile
должен довольно хорошо обрабатывать преобразование.Возможно, я сейчас остановлюсь на serial (может быть, даже на I2S-подобной моде) и десериализую его в Verilog при необходимости.
Также я посмотрел на плагин Icarus , которая реализует видеокамеру, которая читает файлы PNG, хотя есть гораздо больше аспектов обработки изображений, чем звука.Следовательно, на данный момент этот код выглядит для меня немного сложнее - и мне не удалось заставить его работать.