Уч. пособие к лабораторной работе Программирование системных устройств
Описание файла
Документ из архива "Уч. пособие к лабораторной работе Программирование системных устройств", который расположен в категории "". Всё это находится в предмете "теория и проектирование алгоритмов цос" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "теория и проектирование алгоритмов цос" в общих файлах.
Онлайн просмотр документа "Уч. пособие к лабораторной работе Программирование системных устройств"
Текст из документа "Уч. пособие к лабораторной работе Программирование системных устройств"
Цель работы – изучение архитектуры системных устройств персонального компьютера и приемов их программирования на языке ассемблера.
Наряду с микропроцессором в состав персонального компьютера входит ряд системных и периферийных устройств, без которых невозможна его нормальная работа. Данная лабораторная работа посвящена изучению внутренней организации системных устройств ПК, методов программирования системных и периферийных устройств ПК, использования отладчиков программного обеспечения
| |||||||||||||||
Функциональные узлы системной платы IBM PC-совместимого компьютера
Системная плата персонального компьютера соответствующего платформе IBM PC традиционно содержит ряд функциональных узлов, которые с самого начала имели подробное открытое описание и в дальнейшем обязательно воспроизводились всеми изготовителями системных плат, поскольку использовались огромным количеством системных и прикладных программ. В первых моделях IBM PC эти узлы реализовывались на отдельных микросхемах. В настоящее время большинство их функций интегрированы в БИС набора микросхем (чипсета) системной платы. Среди этих узлов основными являются следующие.
Схемы предоставления системных ресурсов — памяти, ввода-вывода, прерываний, прямого доступа к памяти. Микросхемы ROM BIOS с программным кодом начального тестирования, запуска и функций ввода-вывода. Системный таймер, реализованный на микросхемах 8253 или 8254, использовавшийся как генератор запросов регенерации памяти, интервальный таймер и тональный генератор для динамика. Системный порт AT, предназначенный для управления звуком и немаскируемыми прерываниями. Канал управления звуком — логическая схема, использующая тональный сигнал таймера и программно-управляемые биты системного порта. Последовательный интерфейс клавиатуры, реализуемый с помощью микроконтроллера 8042. Память конфигурации и часы-календарь — CMOS RTC (real-time clock).
Хотя элементная база системной платы изменилась, но программная модель этих узлов, сохранилась. Рассмотрим их подробнее.
Системный порт Восьмибитный системный порт с адресом 61h выполняет следующие функции: управление звуком, сохранившее полную совместимость с XT; разрешение и идентификация источников немаскируемых прерываний Старшие 4 бита порта допускают только чтение (R), младшие 4 бита — чтение и запись (R/W). Назначение бит системного порта AT (061h): бит 7 R (только чтение) — РСК — ошибка четности ОЗУ или сигнал SERR# [1] на шине PCI; бит 6 R — IOCHK — ошибка контроля на шине ISA (сигнал 10СНК#); бит 5 R — Т20 — выход 2 счетчика 8254; бит 4 R — RFD — регенерация памяти; бит 3 R/W (чтение/запись) — EIC — разрешение контроля шины ISA; бит 2 R/W — ERP — разрешение контроля ОЗУ и сигнала SERR# шины PCI; бит 1 R/W — SPK — управление звуком; бит 0 R/W - T2G - вход GATE 2 счетчика 8254.
Системный таймер (8253/8254) Во всех моделях PC используется трехканальный счетчик-таймер, выполняющий следующие функции: генерацию прерываний от системных часов, вызывающих инкремент счетчика системного времени в ячейке 40:006Е BIOS Data Area (области данных BIOS); генерацию запросов на регенерацию памяти; генерацию звуковых сигналов.
В качестве счетчиков-таймеров в XT применялась микросхема i8253, а в AT — более быстродействующая i8254, которая с процессорами 80286 могла работать без тактов ожидания. На современных системных платах те же функции берет на себя чипсет, сохраняя программную совместимость с 8253/8254. Микросхемы 8253 и 8254 представляют собой трехканальные программируемые счетчики-таймеры (рис. 1) с независимыми входами CLK – вход счетных импульсов и GATE – вход разрешения счета и выходом OUT, изменяющим состояние по окончании счета | |||||||||||||||
[1] Символ # в конце обозначения сигнала или вывода микросхемы означает, что активным значением этого сигнала является логический «0» | |||||||||||||||
| |||||||||||||||
Внутренние счетчики микросхемы имеют разрядность 16 бит, но общение с ними возможно только 8-битными операциями. При этом можно задавать значение только младшего байта счетчика (LSB - least significant bit), только старшего (MSB - most significant bit) или обоих (LSB/MSB), причем сначала передается младший, а потом старший байт. Программирование микросхемы осуществляется записью байт в управляющий регистр по отдельности для каждого канала. Назначение регистров счетчиков-таймеров приведено в таблице 1. Все каналы работают в режиме генерации импульсов, в канале 2 используется управляющий вход GATE, высокий уровень которого разрешает счет (формирование выходного сигнала, см. ниже). Счет для каналов 0 и 1 разрешен постоянно. Входная частота для всех каналов 1,19318 МГц. | |||||||||||||||
Таблица 1 Регистры счетчиков-таймеров | |||||||||||||||
| |||||||||||||||
| |||||||||||||||
Канал управления звуком (PC Speaker) | |||||||||||||||
Cтандартный канал управления звуком PC Speaker рассчитан на подключение высокоомного малогабаритного динамика. Логическая схема канала приведена на рис. 2. Звук формируется из тонального сигнала от второго канала таймера, работой которого можно программно управлять. Частоту сигнала (тон) можно изменять, программируя коэффициент деления счетчика. Кроме того, разрешая/запрещая формирование сигнала программно-управляемым битом 1 системного порта 61h, можно подавать сигналы определенной длительности. Такой способ формирования звука мало загружает даже процессор 8086/88 и позволяет исполнять незамысловатые мелодии, причем и в фоновом режиме, посылая команды из очереди по прерываниям от системного таймера. А с учетом физиологии слуха (инерционности восприятия) быстрым переключением частот можно достигать эффекта псевдомногоголооия. Таймер генерирует выходной сигнал при высоком уровне на входе GATE2 (при единичном значении бита 0 порта 61h). При низком уровне на входе GATE2 таймер формирует высокий уровень на выходе. | |||||||||||||||
Рис. 1. Канал управления звуком | |||||||||||||||
Более интересные звуки можно извлекать, используя принцип широтно-импульсной модуляции, программно осуществляемый через бит 1 порта 61h. При этом на входе GATE таймера должен быть низкий уровень (бит 0 порта 61h должен быть нулевым), чтобы на выходе OUT2 установился высокий уровень. В этом случае динамик играет роль фильтра нижних частот (инерционного звена) демодулятора. | |||||||||||||||
| |||||||||||||||
Порядок выполнения лабораторной работы | |||||||||||||||
1. Внимательно изучите исходный код процедуры sound по первому листингу, приведенному в приложении. Просмотрите текст других подпрограмм и общую структуру модуля в файле «sound.asm».
2. По табл.1 проверьте правильность задания байта, записываемого в управляющий регистр (порт 43h) счетчика-таймера: используемый счетчик – 210 = (10)2 режим обращения – запись двух байт младшего и старшего – (11)2 режим работы – генерация меандра – (011)2 режим счета – двоичный (0)2
3. Найдите шестнадцатеричный код частоты системного генератора 1193180 Гц. Подставьте два старших байта этого в команду задания старших байт делимого (регистр dx), а два младших байта – в команду задания младших байт делимого (регистр ax). Деление этого числа на заданную частоту звучания, передаваемую через регистр di, обеспечит определение периода генерируемого меандра на выходе счетчика.
4. Запустите программу на трансляцию, компоновку и выполнение. Для выполнения всех трех этапов обработки программы одной командой подготовьте командный файл, например, с именем TALR.BAT, содержащий три строки текста ..\tasm\tasm.exe /l %1.asm ..\tasm\utilites\tlink %1.obj %1.exe В приведенной записи этого файла полагалось, что папка (каталог) с файлами турбо ассемблера и папка с вашими рабочими файлами расположены на одной в одной и той же папке верхнего уровня, а папка utilites с программой компоновщиком tlink.exeвложена в папку tasm. Для обработки исходной программы запустите командный файл непосредственно в сеансе DOS или с помощью файлового менеджера (Norton Commander, Volkov Commader, FAR Commander): talr имявашейпрограммыбезрасширения
5. Запишите время выполнения программы, выведенное на дисплей. Если в течение времени выполнения программы системное время перешло границу минут и выведенное число секунд неправдоподобно велико, запустите готовую программу на выполнение еще раз. Добейтесь чтобы время выполнения программы (время звучания звукового сигнала), составило 10 с +/- 0.1 с. Для этого в тело цикла создающего требуемую задержку вставьте необходимое количество команд JCXZ $+2 (переход на адрес следующей команды, если содержимое регистра CX равно 0, т.е. безусловный переход на следующую команду). Эта команда обычно используется для формирования задержки, поскольку ее выполнение требует 9 тактов процессора 8086, что больше чем у большинства других, а сама команда занимает в памяти всего два байта. Добившись приближенного к 10 с времени звучания сигнала (в пределах 8 – 13 с), найдите точное значение количества повторений цикла задержки. Требуемое значение находится из пропорции
где Tзв – фактическое время звучания, X – требуемое число повторений цикла. |