ЛР3 > Работа с аудиокодеком WM8731 на стенде DE2

Тема: Настройка и работа с аудикодеком WM8731 на учебной плате DE2 на базе плис Cyclone II.

Теоретические сведения

 Скачать Материалы к лабораторной работе №3.

В данной работе необходимо выполнить нужные настройки аудиокодека WM8731. Аудиокодек используется для преобразования входного аналогового сигнала в цифровую форму, передачи цифрового аудиосигнала в ПЛИС, приема цифрового сигнала от ПЛИС и преобразование его в выходной аналоговый сигнал.

Перед началом работы, к стенду DE2 необходимо подключить дополнительные аудиоустройства, как показано на рисунке 1.

Рисунок 1. Подключение аудиоустройств к стенду DE2.

Задание 1

1. Создайте новый проект в Вашей рабочей директории. Укажите название проекта DE2_i2sound.

2. Откройте файл DE2_i2sound.bdf  (в папке с исходными данными). Окончательная схема должна выглядеть так же, как показано на рисунке 2. Задайте назначения контактов ввода/вывода (используя файл DE2_pin_assignments.csv).

3. Cостав устройства управления аудиокодеком входят следующие блоки:

  • CLOCK_500 – блок-формирователь тактовой частоты для аудиокодека (CLOCK_2), контроллера интерфейса I2C. Кроме того, в данном блоке хранится конфигурационная информация для аудиокодека, которая выдается в контроллер I2C по параллельной шине данных DATA[23..0]. Сигнал GO – сигнал подтверждения готовности очередного значения на шине данных. В этом же блоке осуществляется управление изменением громкости выходного аналогового сигнала.
  • keytr – блок-формирователь сигнала «СБРОС» для устройства. По этому сигналу загружается новая конфигурационная информация в аудиокодек и изменяется уровень громкости выходного сигнала. Для подачи сигнала «СБРОС» используется кнопка KEY0 стенда DE2.
  • I2C – контроллер последовательного канала I2C. Он преобразует параллельные входные данные в последовательный код и передает его в аудиокодек. Сигнал END индицирует окончание передачи очередных данных.

Рисунок 2. Схема устройства управления аудиокодеком.

4. Цифровой аудиопоток поступает из аудиокодека на вход AUD_ADCDAT и возвращается на выход AUD_DACDAT. Сигнал AUD_XCK – тактирующий сигнал аудиопотока. Для настройки аудиокодека откройте файл CLOCK_500.v. Вся конфигурационная информация задается в виде значений регистров памяти:

//——–AUDIO_CODEC CONFIG —————————-

    parameter LeftLineIn = 7’b0;

    parameter RightLineIn = 7’b1;

    parameter LeftHPOut = 7’b10;

    parameter RightHPOut = 7’b11;

    parameter AnAuPathCtrl = 7’b100;

    parameter DigAuPathCtrl = 7’b101;

    parameter PowDownCtrl = 7’b110;

    parameter DigAuIntFmt = 7’b111;

    parameter SamplingCtrl = 7’b1000;

    parameter ActCtrl = 7’b1001;

    parameter Active = 9’b1;

    parameter RstReg = 7’b1111;

//————————————

always @(posedge END)

    begin

        ROM[0] = {PowDownCtrl,     9’b000000000};

        ROM[1] = {DigAuIntFmt,     9’b001000010}; //, ~(AUDMODE)};

        ROM[2] = {AnAuPathCtrl, 9'b000010010};

        ROM[3] = {SamplingCtrl, 9'b000000000};

        ROM[4] = {LeftLineIn,     9'b000010111};

        ROM[5] = {RightLineIn,     9'b000010111};

        ROM[6] = {LeftHPOut,     2'b00, vol[6:0]};

        ROM[7] = {RightHPOut,     2'b00, vol[6:0]};

        ROM[8] = {DigAuPathCtrl, 9'b000000110}; //emphasis 32 kHz or Disabled

        ROM[rom_size]= {ActCtrl, 9’b000000001}; //active

        DATA_A = ROM[address];

    end

Рисунок 3.
Формирование конфигурационных параметров для аудиокодека.

Конфигурационные параметры в регистрах ROM[] состоят из адреса регистра (старшие 7 бит) и его значения (младшие 9 бит). Значения определяются по технической документации на аудиокодек (стр.46 и 47).

5. Установите конфигурационные параметры для аудиокодека как показано на рисунке 3. Сохраните файл.

6. Скомпилируйте проект. Запустите его для тестирования на стенде DE2.

Задание для самостоятельной работы

1. Измените настройки аудиокодека. Проверьте результат на стенде DE2.

2. Измените количество градаций управления громкостью выходного сигнала.