Курсовая работа по дисциплине «Организация ЭВМ»
Студент: Изотов И.Н.
Брянский государственный технический университет
Брянск 2007
Введение
Программирование современных звуковых плат - весьма сложное занятие. В качестве примера рассмотрим одну часто применяемую операцию – воспроизведение оцифрованного звука. Для вывода звука через звуковую плату может использоваться один из трех режимов: пряной вывод (команда 10h), когда программа должна сама с нужной частотой посылать отдельные байты из оцифрованного звука в DSP; простой DMA-режим, когда выводится блок данных, после чего вызывается прерывания; и DMA с автоинициализацией, когда данные выводятся непрерывно и после вызова каждого блока вызывается прерывание. Именно в этом порядке увеличивается качество воспроизводимого звука. В первом случаи качество звука будет очень плохим, поэтому будем реализовывать второй случай, благодаря чему мы сможем указать точную скорость оцифровки звука и выводить 16-битный звук. Данная программа работает только на звуковых платах Sound Blaster.
Устройство звуковой платы Sound Blaster
Звуковые платы совместимые с теми или иными моделями Sound Blaster, выглядят как четыре независимых устройства:
DSP (Digital Signal Processor) - устройство, позволяющее выводить и считывать оцифрованный звук;
Микшер (Mixer) - система регуляторов громкости для всех каналов платы;
DFM (Frequency Modulation) или AdLib (по названию первой звуковой платы) - устройство, позволяющее синтезировать звук из синусоидальных и треугольных волн. Слова типа OPL2 или OPL3 в описании платы - это и есть номера версии используемого FM-синтезатора;
MIDI (Music Instrumental Digital Interface) - стандартный интерфейс передачи данных в музыкальной аппаратуре. Но в нашем случае рассматривается GMIDI (обобщенный MIDI) - более качественная система генерации музыки, в которой используются не искусственные синусоидальные сигналы, а образцы звучания различных инструментов. К сожалению, качество этих образцов в большинстве дешевых плат оставляет желать лучшего.
Номера портов ввода-вывода, предоставляющих доступ ко всем этим устройствам, отсчитываются от базового порта, обычно равного 220h, но допускаются также конфигурации с 210h, 230h, 240h, 250h, 260h и 280h. Кроме того, интерфейс - GMIDI использует другую серию портов, которая может начинаться как с 300h, так и с 330h. В описаниях портов мы будем считать, что базовыми являются 220U и 300h. Область портов интерфейса с AdLib начинается с 388h.
Существует большое число модификаций плат Sound Blaster, отличающихся, помимо всего прочего, набором поддерживаемых команд и портов ввода-вывода. После названия каждой команды или порта мы будем указывать сокращенное название платы, начиная с которой эта команда или порт поддерживается:
- SB- Sound Blaster 1.0;
- SB2 - Sound Blaster 2.0;
- SBPro - Sound Blaster Pro;
- SBPro2 - Sound Blaster Pro2;
- SB16 - Sound Blaster 16;
- ASP - Sound Blaster 16 ASP;
- AWE - Sound Blaster AWE32.
Программирование DSP
Цифровой процессор - наиболее важная часть звуковой платы. Именно с его помощью осуществляется вывод обычного оцифрованного звука, так же как и запись звука из внешнего источника в файл. Для своей работы, помимо описываемых в этом разделе портов, DSP использует прерывания и контроллер прямого доступа к памяти DMA. Программирование DMA мы рассмотрим далее. DSP обслуживается при помощи следующих портов:
226h для записи: сброс DSP (SB)
Запись в этот порт осуществляет полную переинициализацию DSP, прерывая все происходящие процессы. ............