ПРОГРАММИРОВАНИЕ ЗВУКОВЫХ ПЛАТ

 

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

· 2x4h - порт индекса миксера ('х' - второй разряд базового адреса);

· 2x5h - порт данных чтения и записи данных;

· 2х6h - порт инициализации ЗП;

· 2хAh - порт чтения данных;

· 2хCh - порт записи команд и данных (7-й бит - состояние буфера записи);

· 2хEh - порт состояния буфера чтения (бит 7) и подтверждения прерывания восьми разрядных ЗП;

· 2хFh - порт подтверждения прерывания шестнадцати разрядных ЗП.

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

* записывается 1 в порт инициализации;

* задержка 3 микросекунды;

* записывается 0 в порт инициализации;

* читается порт состояния буфера пока бит 7 равен 1;

* опрашивается порт данных чтения до появления кода AAh.

Если в течение 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 Кбайтам.