logo
Выч

8.2. Программирование звуковых плат.

Основным элементом программного обеспечения ЗП естественно считать ее драйвер, при установке которого определяется конкретный номер аппаратного прерывания и базовый адрес портов ввода / вывода, которые должны принадлежать интервалу 220 - 250h. Контроллер ЗП программируется через семь основных портов:

Работа с ЗП начинается с ее инициализации по следующему алгоритму:

Если в течение 100 мкс требуемый код не поступил, то либо ЗП отсутствует, либо неверен базовый адрес.

Запись в контроллер ЗП требует предварительной проверки состояния порта записи: бит 7 должен стать равным 1. При выполнении этого условия информация пересылается в порт записи.

Чтение информации из контроллера ЗП через порт чтения данных предваряется проверкой бита 7 порта состояния буфера чтения: он должен стать равным 0.

Воспроизведение и ввод звуковой информации может осуществляться одним из двух методов:

Команды прямого программирования контроллера ЗП: 10h - вывести байт данных на ЦАП без КПДП; D1h - включить воспроизведение звука; D3h - выключить воспроизведение звука; 20h - получить байт данных из АЦП. Скорость обмена данных в этом режиме определяется скоростью поступления команд и скоростью их обработки в аппаратуре ЗП.

Метод использования КПДП для управления ЦАП и АЦП позволяет оперировать с шестнадцатиразрядными данными и основан на использовании команд, приведенных в табл.8.1. Система команд позволяет использовать адаптивную импульсно-кодовую модуляцию (АИКМ), основанную на передаче разности смежных выборок. АИКМ позволяет уменьшить длину выборки и сжать информацию.

Табл.8.1.

Код команды

Содержание команды

14h

Включение вывода байта на ЦАП.

24h

Включение записи байта с АЦП.

74h

Включение вывода на ЦАП 4-х бит АДКМ.

75h

Включение вывода на ЦАП 4-х бит АДКМ с байтом ссылки.

76h

Включение вывода на ЦАП 2.6 бит АДКМ.

77h

Включение вывода на ЦАП 2.6 бит АДКМ с байтом ссылки.

16h

Включение вывода на ЦАП 2-х бит АДКМ.

17h

Включение вывода на ЦАП 2-х бит АДКМ с байтом ссылки.

1Ch

Включение вывода байта на ЦАП с авто инициализацией и частотой выборки до 23 кГц.

90h

Включение вывода байта на ЦАП с авто инициализацией и частотой выборки до 44 кГц.

48h

Установка длины блока на пересылку командами 91h и 99h.

91h

Включение вывода на ЦАП стерео.

99h

Включение записи с АЦП стерео.

D0h

Остановить 8-ми битный режим.

D4h

Возобновить 8-ми битный режим.

D5h

Остановить 16-ти битный режим.

D6h

Возобновить 16-ти битный режим.

D9h

Выход из авто инициализационного 8-ми битного режима после окончания текущего блока.

DAh

Выход из автоинициализационного 16-ти битного режима после окончания текущего блока.

E1h

Получить номер версии ЗП.

40h

Установка частоты выборки.

КПДП управляет пересылками данных без использования процессора. Длинна элемента данных определяется номером КПДП: КПДП-1 с данными размером 1 байт, КПДП-2 с данными размером 2 байта. Максимальный объем пересылаемой информации равен 64 Кбайтам.