Автор работы: Пользователь скрыл имя, 25 Ноября 2011 в 07:49, курсовая работа
Целью моей работы является программирование в среде Windows XP АЦП и ЦАП стандартного звукового адаптера. Обе задачи реализуются на языке Borland Delphi 7.0 Enterprise в одной программе, алгоритмы и блоки которой в дальнейшем могут быть использованы в качестве основы для написания программы цифрового осциллографа либо обмена данными между ПК и радиотехническим прибором.
Введение………………………………………………………………...2
Краткие сведения об устройстве звукового адаптера………….…3
Основные понятия и возможности звукового интерфейса………5
Потоковая модель…………………...…………………………………………....5
Звуковой буфер……………………………………………………………………5
Синхронные и асинхронные устройства……………………………………....6
Полу- и полнодуплексные звуковые устройства……………………………...6
Уведомление о завершении обработки буфера………………………………..7
Подготовка буферов……………………………………………………………..7
Способы кодирования цифрового звука……………………………………….7
Формат потока…………………………………………………………………...8
Структура потока………………………………………………………………..9
Паузы, сброс и зацикливание………………………………………………….10
Поддержка нескольких процессов…………………………………………....10
Служба переназначения устройств и форматов………………………………11
Номера звуковых устройств…………………………………………………...11
Идентификаторы (ключи) открытых устройств……………………………...12
Низкоуровневое программирование звука в Windows……………………..13
Общая схема взаимодействия программы и звуковой подсистемы……...14
Структуры, используемые в звуковом интерфейсе………………………...16
Структура WAVEFORMATEX………………………………………………..16
Структуры WAVEINCAPS и WAVEOUTCAPS………………………….….18
Структура WAVEHDR………………………………………………………...19
Заключение…………………………………………………………………...….21
Федеральное агентство по образованию
ГОУ ВПО “Кемеровский Государственный Университет”
Физический факультет
Кафедра
экспериментальной физики
КУРСОВАЯ
РАБОТА
Тема:
“Разработка программы
для управления внешними
устройствами с помощью
звукового адаптера
персонального компьютера”
Выполнил:
Научный
руководитель:
Кемерово 2005
Содержание
Введение……………………………………………
Краткие сведения об устройстве звукового адаптера………….…3
Основные понятия и возможности звукового интерфейса………5
Потоковая
модель…………………...……………………………………
Звуковой
буфер…………………………………………………………………
Синхронные и асинхронные
Полу- и полнодуплексные звуковые устройства……………………………...6
Уведомление о завершении
Подготовка буферов………………………………
Способы кодирования цифрового звука……………………………………….7
Формат потока……………………………………………
Структура потока……………………………………
Паузы, сброс и зацикливание………
Поддержка нескольких
Служба переназначения
Номера звуковых устройств……………
Идентификаторы (ключи) открытых устройств……………………………...12
Низкоуровневое программирование звука в Windows……………………..13
Общая схема взаимодействия программы и звуковой подсистемы……...14
Структуры, используемые в звуковом интерфейсе………………………...16
Структура WAVEFORMATEX……………………
Структуры WAVEINCAPS и WAVEOUTCAPS………………………….….18
Структура WAVEHDR…………………………………
Заключение……………………………………
В последнее время наблюдаются тенденции к внедрению информационных технологий к широкому применению персональных компьютеров в различных сферах деятельности человека. Одной из таких сфер является радиоэлектроника. Характеристики персональных компьютеров по обработке информации достаточно высоки, поэтому они предоставляют широкие возможности их использования. Возможна автоматизация экспериментальных работ с использованием ПК (примером может служить снятие характеристик различных радиоэлектронных компонентов).
Программы и приспособления для такого рода использования ПК уже существуют, но они недоступны широкому кругу пользователей вследствие своей дороговизны. Она образуется из-за применения в этих устройствах сложных (и, как следствие, дорогих) контроллеров, содержащих в себе аналого-цифровые (АЦП) и цифро-аналоговые преобразователи (ЦАП). Например, цифровой измерительный комплекс, способный работать в качестве осциллографа и построить вольтамперную характеристику, в дополнение к которому нужен еще и ПК, оценивается в $350, а за осциллограф, способный построить вольтамперную характеристику (и больше ничего!) придется заплатить как минимум $1000.
Альтернатива этому - использование возможностей звуковой карты, в которой есть свои АЦП и ЦАП. Применять звуковую карту можно в тех случаях, когда частотный диапазон звуковой карты удовлетворяет условиям эксперимента. Примеры: построение вольтамперных (ВАХ) и амплитудно-частотных характеристик (АЧХ), изучение зависимости коэффициента усиления транзистора от тока коллектора, и т. п.
Целью моей работы является программирование в среде Windows XP АЦП и ЦАП стандартного звукового адаптера. Обе задачи реализуются на языке Borland Delphi 7.0 Enterprise в одной программе, алгоритмы и блоки которой в дальнейшем могут быть использованы в качестве основы для написания программы цифрового осциллографа либо обмена данными между ПК и радиотехническим прибором.
Типовой звуковой адаптер содержит стереофонические АЦП и ЦАП (аналого-цифровой и цифро-аналоговый преобразователи), микшер и управляющий цифровой процессор DSP (Digital Signal Processor), координирующий работу всех узлов адаптера.
Микшер расположен в аналоговой части адаптера. В его задачу входят: регулировка входных уровней различных источников звука - микрофона, линейного входа, компакт-диска, модема и т.п., сведение всех источников в единый звуковой сигнал, поступающий на АЦП, а также регулировка выходного сигнала адаптера, снимаемого с ЦАП.
В режиме записи схема АЦП через равные интервалы времени опрашивает входной сигнал и формирует последовательность мгновенных значений амплитуды, называемых отсчетами. В зависимости от заданного режима, разрядность отсчета (sample width) может быть разной: 8 или 16 бит — для простых адаптеров и от 18 до 24 - для сложных и качественных. Чем больше разрядность отсчета, тем выше точность цифрового представления сигнала и ниже уровень шумов и помех, вносимых АЦП при оцифровке.
Частота, с которой АЦП опрашивает входной сигнал, называется частотой дискретизации (sample rate). Для точного цифрового представления сигнала частота дискретизации должна быть как минимум вдвое выше максимальной частоты сигнала; на практике обычно выбирается небольшой запас для компенсации погрешностей. Например, для представления сигналов с полосой частот до 10 кГц выбирается частота около 22 кГц.
Последовательность отсчетов, сформированная АЦП, передается управляющим процессором в основную память компьютера при помощи внепроцессорного доступа к памяти (DMA - на шине ISA, Bus Mastering - на шине PCI). После заполнения части (обычно половины) выделенной для обмена области памяти адаптер подает сигнал аппаратного прерывания, по которому драйвер адаптера извлекает накопленные в памяти данные и переносит их в буфер программы, которая запросила запись звука. После заполнения буфера программы драйвер подает ей программный сигнал, по которому программа переносит данные в нужное ей место: в другую область памяти для обработки, на диск, отображает на экране и т.п.
При
воспроизведении звука
Для удобства буфер обмена между процессором и звуковым адаптером делается циклическим (кольцевым). Это означает, что пока одна сторона (адаптер или ЦП) ведет запись первой половины буфера, другая сторона должна успеть прочитать данные из второй половины, и наоборот. Если быстродействия ЦП или драйвера не хватает, или нарушается правильная работа системы аппаратных прерываний, то записываемый звук теряется, а воспроизводимый — зацикливается. Зацикливание короткого фрагмента воспроизводимого звука — типичный признак неверного выбора линии прерывания для адаптера или неисправности в системе прерываний.
Как правило, звуковая карта имеет два сдвоенных (стереофонических) входа и два таких же выхода. Первый (линейный) вход рассчитан на входные сигналы с амплитудой около 1 В, второй - микрофонный, для более слабых сигналов. При использовании звуковой карты в качестве аналого-цифрового преобразователя можно использовать любой из этих входов - в зависимости от уровня обрабатываемого сигнала
Взаимодействие приложения с драйвером организуется в виде взаимного обмена потоками звуковых данных в реальном времени. От устройства ввода к приложению идет непрерывный поток записанного звука, от приложения к устройству вывода - непрерывный поток воспроизводимого. Приложение должно успевать принимать записываемый поток и формировать воспроизводимый, иначе в звуковых потоках возникают выпадения и помехи.
Звуковой буфер служит для переноса потоков между приложением и звуковым драйвером. Он представляет собой область памяти, в которой хранится небольшой фрагмент потока длительностью в десятки-сотни миллисекунд. Звуковые буферы создаются приложением и затем передаются драйверу: пустые - для устройств ввода, заполненные звуковыми данными - для устройств вывода. Драйвер ставит полученные буферы в очередь в порядке поступления; воспроизведение или запись данных ведется с начала очереди.
После завершения обработки каждого очередного буфера драйвер возвращает его приложению. С этого момента буфер доступен для повторного использования: он может быть заполнен новыми данными и снова передан этому же или другому звуковому устройству для постановки в очередь. Таким образом, между драйвером и приложением происходит циклическое “вращение” буферов, в которых переносятся звуковые потоки.
Для каждого звукового буфера приложением также создается заголовок (header) - структура-описатель, куда заносятся параметры буфера и режимы его обработки. Обмен буферами между приложением и драйвером происходит в виде обмена указателями их заголовков.
Если к моменту завершения обработки буфера устройства вывода в очереди не имеется следующего буфера, то в выходном звуковом сигнале возникает пауза, но вывод потока не прерывается. Если программа не успевает передать драйверу очередной буфер для устройства записи, то фрагмент сигнала теряется.
Звуковые устройства делятся на синхронные и асинхронные. Синхронному устройству для выполнения операций записи/воспроизведения требуются все ресурсы центрального процессора. Драйвер такого устройства, получив очередной буфер, не возвращает управления до тех пор, пока буфер не будет заполнен или проигран. В очереди драйвера синхронного устройства может находиться только один звуковой буфер.
Асинхронное устройство работает независимо от центрального процессора, обрабатывая данные в выделенной области памяти и лишь изредка (один раз в несколько десятков миллисекунд) сообщая драйверу о завершении обработки очередного фрагмента потока. Драйвер асинхронного устройства возвращает управление сразу же после получения очередного буфера, и в его очереди может находиться сколь угодно большое количество буферов.
Звуковые адаптеры, способные одновременно записывать и воспроизводить различные звуковые потоки, называются полнодуплексными (full duplex). Соответствующие устройства ввода и вывода в Windows могут быть открыты и использованы одновременно, и при этом встречные потоки никак не влияют друг на друга.
Адаптеры, способные в каждый момент времени работать только в одном режиме (либо на запись, либо на воспроизведение), называются полудуплексными (half duplex). Из соответствующей пары устройств в Windows одновременно может быть открыто только одно — либо устройство ввода, либо устройство вывода. При попытке открытия второго устройства возвращается ошибка “устройство занято”.
Некоторые адаптеры обладают возможностью ограниченной полнодуплексной работы, например: только в монофоническом режиме (ряд адаптеров на микросхемах ESS), только в восьмиразрядном режиме (большинство моделей Sound Blaster 16, AWE32, SB 32, AWE64) и т.п. В остальных режимах такие адаптеры работают только в полудуплексе.