Аппаратные средства персональных компьютеров
все про компьютерное железо
Сайт создан в системе uCoz
на главную
ПК
процессоры
ОЗУ и ПЗУ
системные платы
BIOS
блоки питания
устройства ввода
интерфейсы
магнитные диски
звук
⇒канал звука
⇒использование канала звука
⇒звуковые карты
⇒подключение внешних устройств
⇒MIDI-клавиатуры и синтезаторы
⇒способы синтеза звука
⇒MIDI-интерфейс
⇒музыкальные синтезаторы
⇒спецификация АС'97
⇒звуковые колонки
⇒микрофоны и наушники
компакт-диски
видеоадаптеры
мониторы
сети

Канал звука


Так как традиционный канал звука в персональном компьютере предназначен для озвучивания системных событий, то все его узлы, которые участвуют в формировании звуковой волны, разнесены по разным блокам (ранее микросхемам). Каждым блоком-микросхемой надо управлять по отдельности, используя специфичные для нее особенности, поэтому вроде бы простое управление звуком никак не напоминает работу с музыкальным синтезатором.
Для операций, синхронизированных с реальным временем, а это системные часы и звуковой канал, используются три программируемых интервальных счетчика-таймера. В самых первых моделях IBM PC XT и AT применялась микросхема 8253 (или 8254), а в дальнейшем ее функции были встроены в чипсет системной платы. Принципы управления счетчиками, независимо от типа процессора, остаются одними и теми же.
На рис. показана подсистема формирования звуковых сигналов. От системных часов поступают импульсы с частотой 1,19 МГц, которые одновременно подаются на три канала таймера (на рисунке показан только канал 2). Каналы 0 и 1 используются для расчета времени системных событий, например прерываний BIOS или восстановления синхронизации времени после аппаратных прерываний. Заметим, что хотя пользователю доступно программирование этих каналов, но использовать их и менять какие-либо настройки и режимы нежелательно.
Третий канал (канал 2) используется для формирования звуковых сигналов BIOS. Но т, к. системные события, которые озвучивает BIOS, происходят только во время начальной загрузки и при тяжелых ошибках операционной системы, то пользователь вправе использовать этот канал по своему усмотрению. То есть любая пользовательская программа может управлять режимом этого канала по собственному алгоритму, например синтезировать голос человека, музыку или подавать звуковые сигналы в ответ на ошибочные действия пользователя.
Канал управления звуком
В каждом канале используются 16-разрядные двоичные счетчики, с помощью которых можно сосчитать максимально 65 635 импульсов. Если разделить входную частоту 1,19 МГц на разрядность счетчика, то минимальная частота на его выходе будет около 55 Гц или 18,2 импульса в секунду.
Счетчик канала может работать в 6-ти режимах, которые программируются пользователем. Но в любом из них за каждый такт системных часов счетчик всегда только вычитает единицу из значения, которое в него записано. После обнуления он формирует выходной импульс.
В счетчик можно записать любое число в диапазоне от 0 до 65 635 двумя способами — загрузить два байта или только один, старший или младший.
Чтобы не нарушать работу счетчика во время загрузки нового значения (частота синхронизации процессора и таймера не совпадают), каждый канал снабжен регистром-задвижкой, в который загружается будущее значение счетчика. А содержимое счетчика меняется только после получения таймером байта управления и одного или двух байтов, которые должны быть в него загружены.
Для управления любым каналом таймера используется управляющий порт с адресом 43h, в который посылаются однобайтные команды. После команды управления по адресу порта нужного канала передается один или два байта для загрузки счетчика канала. Рабочий цикл счетчика завершится, когда его значение будет равно 0. Адреса портов таймера приведены в табл. 10.1, а значения битов в командном слове — в табл. 10.2. Табл. 10.3 содержит названия возможных режимов работы каналов таймера, но почти всегда используется 3-й режим, когда канал таймера работает в режиме обычного делителя импульсов, имитируя генератор.
Порты таймера

Назначение

Адрес порта

Назначение

Адрес порта

Канал 0

Канал 1

40h

41h

Канал 2

Управление

42h

43h

Значение битов в командном слове таймера

Бит

Описание

0

3-1

Если 0, то двоичные данные, иначе BCD

Номер режима — 000-101

5-4


7-6

Тип операции: 00 — передавать значения счетчика в задвижку; 01 — читать/писать только старший байт;

 

10 — читать/писать только младший байт; 1 1 — читать/писать сначала старший байт, а потом младший Номер программируемого канала

Режимы работы каналов таймера

Режим

Название

0

1

2

3

4

5

Прерывание по пользовательскому счету

Односчетныи запуск

Задающий генератор (деление входной частоты)

Формирование прямоугольных импульсов

Формирование одиночного импульса

Формирование одиночного импульса

Динамик компьютера не подключен непосредственно к выходу 2-го канала таймера, а управляется блоком периферийного интерфейса. Это значит, что помимо управления таймером, для того чтобы запищал динамик, надо установить определенные биты портов периферийного интерфейса.
Интерфейс с периферией ранее выполнялся на микросхеме 8255, представляющей собой три однобайтовых порта. Каждый порт в состоянии как принимать данные, так и передавать. При этом полученное или переданное значение может, по желанию программиста, храниться во внутреннем регистре интерфейса. Адреса портов интерфейса с периферией приведены в табл. 10.4. Само управление блоком периферийного интерфейса похоже на работу с таймером, но т. к. в данном случае, кроме управления таймером и динамиком, на эти порты возлагаются и другие системные функции, то требуется изменение состояния одиночных битов, а не целых байтов. Поэтому программисту приходится сначала считывать состояние порта, а потом записывать новое значение с измененными одним или двумя битами.
Младший бит (бит 0) порта В управляет воротами (gate), которые разрешают (бит равен 1) или запрещают (бит равен 0) прохождение импульсов от системных часов к счетчику какого-либо канала таймера. Чтобы импульсы от таймера проходили к динамику, помимо битов порта В надо установить в единицу бит 5 порта С. Кроме того, выходные импульсы от таймера проходят через порт В (бит 1). Заметим, что этот порт также можно использовать для генерации звука.
Порты периферийного интерфейса

Назначение

Адрес порта

Назначение

Адрес порта

Порт А

Порт В

60h

61h

Порт С

Управление

62h

63h

Яндекс цитирования

Rambler's Top100