ПРОГРАММИРОВАНИЕ ЗВУКОВЫХ ПЛАТ
Основным элементом программного обеспечения ЗП естественно считать ее драйвер, при установке которого определяется конкретный номер аппаратного прерывания и базовый адрес портов ввода / вывода, которые должны принадлежать интервалу 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 Кбайтам.