Главная > FPGA Programming > Модель аудио-кодека WM8731.

Модель аудио-кодека WM8731.

Одним из моих основных рабочих инструментов является плата Altera DE2 от компании Terasic. В ходе работы с этой платой возникла необходимость в создании поведенческой модели аудио-кодека WM8731, установленного на этой плате. К слову сказать, кодек оказался довольно неплохим. Однако мне совсем не понравилось, как инженеры Terasic установили его на плату.

Во-первых: вход тактового сигнала кодека подключен к FPGA. То есть при разработке аудио-приложений один модуль PLL оказывается занят. Хотя на плате уйма места для того, чтобы поставить рядом с кодеком собственный кварцевый генератор. Серьезный минус!
Во-вторых: выводы кодека CSB и MODE заземлены, что делает невозможным его конфигурацию по SPI-протоколу (только I2C). Сам же модуль конфигурации кодека, поставляемый вместе с платой, работает через раз (пришлось писать свой собственный).

Я не стал создавать полную модель WM8731 за ненадобностью, а сделал только модель последовательного аудио-интерфейса. Чем и спешу поделиться.

Кодек работает только в режиме MASTER, то есть сигналы BCLK, ADCLRC и DACLRC генерируются моделью на основе параметров.
Модель поддерживает все 5 режимов работы последовательного аудио-интерфейса: I2C, DSP/PCM Mode A, DSP/PCM Mode B, Left Justified Mode, Right Justified Mode. Более подробно о режимах работы, а так же временные диаграммы можно найти в спецификации кодека. Выбор режима работы осуществляется заданием параметра IF_MODE.
АЦП реализован не мудрствуя лукаво: модель читает данные из двух входных текстовых файлов (левый и правый канал) и выводит их по выбранному протоколу через порт ADCDAT.
ЦАП реализован аналогичным образом: данные, поступающие через порт DACDAT, записываются в два выходных текстовых файла (левый и правый каналы). Имена и пути входных и выходных файлов задаются через параметры (см. список пользовательских параметров модели). 

Пользовательские параметры модели:

parameters

Пример объявления модели в проекте (длина входного файла 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 и распаковать.

 

About these ads
Рубрики:FPGA Programming Метки: ,
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Отслеживать

Get every new post delivered to your Inbox.