Аудиопорт

Процессорная система «DЕ2-70 Media Computer» включает аудиопорт, который соединён с микросхемой аудиокодека (Coder/Decoder) на плате DE2-70. По умолчанию аудиокодек настроен на скорость оцифровки 48К образцов в секунду. Аудиопорт обеспечивает возможность ввода аудиоинформации через разъём микрофона на стенде DE2-70 и возможность вывода аудиоинформации через выходной разъём. Аудиопорт включает 4 буфера FIFO, которые используются для хранения вводимых и выводимых данных. Вводимые данные сохраняются в левом и правом каналах читаемых буферов FIFO, а выводимые данные хранятся в левом и правом каналах записываемых буферов FIFO. Все буферы FIFO имеют максимальную глубину 128 32-битных слов.

Программируемый интерфейс аудиопорта состоит из четырех 32-битных регистров, как показано на рис. 3.16. Регистр управления имеет адрес 0x10003040. Для получения информации о состоянии аудиопорта его необходимо прочитать, а для того, чтобы выполнить управляющие установки - записать. Бит RE этого регистра обеспечивает возможность прерывания процессорной системы для ввода данных. Установка этого бита в 1 позволит контроллеру аудиопорта сформировать прерывание процессора, когда читаемый буфер FIFO заполнится на 75% или более. Причем бит RI в этом случае установится в единицу, чтобы указать, что прерывание произошло. Сигнал прерывания снимется после извлечения данных из читаемых буферов FIFO до тех пор, пока их заполнение станет менее 75% процентов. Бит WE реализует возможность прерывания процессорной системы при выводе данных. Установка этого бита в 1 позволит аудио контроллеру сформировать сигнал прерывания, когда в записываемых буферах FIFO останется менее 25% свободного места. При этом бит WI установится в 1, чтобы указать, что прерывание произошло. Потом он может быть очищен путём освобождения записываемых буферов более, чем на 25%. Биты CR и СW, показанные на рис. 3.16, предназначены для очистки буферов записи и чтения, соответственно. Функция очистки активируется посредством установки бит CR и СW в единицу. Функция остаётся активной до тех пор, пока соответствующие биты не будут сброшены в 0.

 

Рис. 3.16 – Регистры аудиопорта

 

Доступный по чтению регистр Fifospace показан на рис. 3.16. Он содержит четыре 8 - битных поля. Поля RARC и RALC отображают число слов, хранимых в настоящий момент времени в правом и левом входных буферах FIFO, соответственно. Поля WSRC и WSLC показывают число слов, доступных для заполнения в текущий момент времени, в правом и левом выходных буферах FIFO. После очистки всех буферов FIFO аудиопорта, величины, содержащиеся в Fifospace, станут следующими RARC=RALC=0 и WSRC=WSLC=128.

Информация из регистров Left data и Right data считывается процессором для выполнения записи аудиоинформации в буферы FIFO ввода, и записывается - для вывода аудио. Когда данные читаются из этих регистров, то они извлекаются из вершины читаемых буферов FIFO, и когда данные записываются в эти регистры, они загружаются в записываемые буфера FIFO.

Фрагмент кода на языке С, который использует аудиопорт, показан в листинге 16. Код проверяет, когда глубина правого или левого порта FIFO превысит 75% полноты и передаёт данные из этих FIFO в буферную память. Этот код входит в состав приложения AMP в раздел «Sample programs» под именем «Media».

 

Листинг 16. Пример кода, который использует аудиопорт

volatile int * audio_ptr = (int *) 0x10003040; //адрес аудиопорта

 

/* Используется для аудио записи/воспроизведения */

int fifospace, leftdata, rightdata;

int record = 0, play = 0, buffer_index = 0;

int left_buffer[BUF_SIZE];

int right_buffer[BUF_SIZE];

fifospace = *(audio_ptr + 1); // читаем fifospace регистр

if ( (fifospace & 0x000000FF) > 96 ) // проверяем значение поля RARC

{

// Сохраняем данные из аудио буферов

while ( (fifospace & 0x000000FF) && (buffer_index < BUF_SIZE) )

{

left_buffer[buffer_index] = *(audio_ptr + 2); //сохраняем аудиоданные

right_buffer[buffer_index] = *(audio_ptr + 3);

++buffer_index;

fifospace = *(audio_ptr + 1); // читаем fifospace регистр

}

}

 









Дата добавления: 2015-05-30; просмотров: 996;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.