Модель аудио-кодека WM8731.
Одним из моих основных рабочих инструментов является плата Altera DE2 от компании Terasic. В ходе работы с этой платой возникла необходимость в создании поведенческой модели аудио-кодека WM8731, установленного на этой плате. К слову сказать, кодек оказался довольно неплохим. Однако мне совсем не понравилось, как инженеры Terasic установили его на плату.
Во-вторых: выводы кодека CSB и MODE заземлены, что делает невозможным его конфигурацию по SPI-протоколу (только I2C). Сам же модуль конфигурации кодека, поставляемый вместе с платой, работает через раз (пришлось писать свой собственный).
Я не стал создавать полную модель WM8731 за ненадобностью, а сделал только модель последовательного аудио-интерфейса. Чем и спешу поделиться.
Модель поддерживает все 5 режимов работы последовательного аудио-интерфейса: I2C, DSP/PCM Mode A, DSP/PCM Mode B, Left Justified Mode, Right Justified Mode. Более подробно о режимах работы, а так же временные диаграммы можно найти в спецификации кодека. Выбор режима работы осуществляется заданием параметра IF_MODE.
АЦП реализован не мудрствуя лукаво: модель читает данные из двух входных текстовых файлов (левый и правый канал) и выводит их по выбранному протоколу через порт ADCDAT.
ЦАП реализован аналогичным образом: данные, поступающие через порт DACDAT, записываются в два выходных текстовых файла (левый и правый каналы). Имена и пути входных и выходных файлов задаются через параметры (см. список пользовательских параметров модели).
Пользовательские параметры модели:

Пример объявления модели в проекте (длина входного файла 10×16 бит, режим работы PCMA):
wm8731 CODEC
(
.MCLK (…),
.BCLK (…),
.DACLRC (…),
.ADCLRC (…),
.ADCDAT (…),
.DACDAT (…),
.CLKOUT (…)
);
defparam CODEC.DWIDTH = 16;
defparam CODEC.MFREQ = 18432000;
defparam CODEC.BASE_SFREQ = 48000;
defparam CODEC.TARGET_SFREQ = 8000;
defparam CODEC.IN_VECTOR_LENGTH = 10;
defparam CODEC.IF_MODE = «PCMA»;
defparam CODEC.LEFT_IN_FILE = «.left_adc_in.vec»;
defparam CODEC.RIGHT_IN_FILE = «./right_adc_in.vec»;
defparam CODEC.LEFT_OUT_FILE = «./left_dac_out.txt»;
defparam CODEC.RIGHT_OUT_FILE = «./right_dac_out.txt»;
defparam CODEC.tCOP = 10;
defparam CODEC.tDL = 10;
defparam CODEC.tDDA = 15;
Скачать Verilog-модель и пример входных файлов
Поскольку WordPress не поддерживает закачку архивов, то после скачивания файла необходимо заменить его расширение на .zip и распаковать.

Последние комментарии