ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.04.2025

Просмотров: 392

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Л а б о р а т о р н а я р а б о та № 2

ОБМЕН ДАННЫМИ МЕЖДУ ЭВМ И ВНЕШНИМИ УСТРОЙСТВАМИ С ПРЕРЫВАНИЕМ ПРОГРАММЫ ПРОЦЕССОРА

Цель работы – изучение методики обмена данными между оперативной памятью ЭВМ и интерфейсом внешнего устройства с прерыванием текущей программы процессора и технических средств, реализующих управление аппаратными прерываниями в автоматизированных системах на основе ЭВМ семейства IBM AT.

2.1. Алгоритм взаимодействия компонентов системы при обмене данными с прерыванием программы

Характерные черты рассматриваемого способа программного обмена данными между ЭВМ и внешними устройствами (ВУ) заключаются в том, что обмен инициируется внешним устройством, а ввод или вывод данных выполняется оперативной программой, которая прерывает текущую программу процессора (ЦП), называемую часто фоновой.

Обмен с прерыванием программы используется, если заранее неизвестно какие ВУ и в какой момент времени потребуют обслуживания. В этой ситуации, единственно возможный способ обслуживания устройств

– прерывание текущей программы и выполнение операций обмена данными с требующим обслуживание ВУ под управлением другой (оперативной) программы.

Для управления прерываниями от ВУ в автоматизированных системах на основе ЭВМ семейства IBM PC используется программируемый контроллер прерываний (ПКП), входящий в состав ЭВМ.

Рассмотрим последовательность действий ВУ, ПКП и ЦП при обмене данными в режиме прерывания текущей программы (рис. 2.1).

Для сигнализации о необходимости обслуживания, ВУ посылают сигнал запрос прерывания программы (ЗП) через свой интерфейс на один из входов IRi ПКП.

ПКП в свою очередь посылает сигнал ЗП (INT) в ЦП.

ЦП, с получением сигнала INT, последовательно выполняет следующие действия:

1)запоминает информацию о своем текущем состоянии;

2)идентифицирует ВУ, от которого поступил сигнал INT;

3)осуществляет переход на оперативную программу обслуживания ВУ и выполняет обмен данными под управлением этой программы;

4)восстанавливает свое первоначальное состояние и возобновляет работу прерванной программы.

13


На первом шаге процессор после завершения текущей команды запоминает содержимое внутренних регистров: флагов (Flags), сегмента команд (CS) и указателя инструкций (IP). Сохранение указанных регистров необходимо для последующего возобновления прерванной программы.

В регистре флагов процессор сбрасывает флаги IF (прерывания) и TF (трассировки).

ЦП

ОЗУ

ПЗУ

Внешние ЗУ

Терминал

Маги стральный канал ЭВМ

IR0

Данные

IR1

Интерфейс

Внешнее

ПКП

ЗП

внешнего

Состояние

устройство

IRi

устройства

(ВУ)

Управление

IR7

Рис. 2.1. Функциональная схема автоматизированной системы и состав технических средств, обеспечивающих обмен данными с прерыванием программы

Второй шаг (идентификация ВУ) выполняется аппаратными средствами процессора и контроллера прерываний. ЦП посылает ПКП сигнал разрешения прерывания. ПКП, получив сигнал разрешения прерываний, передает процессору код – номер типа прерывания, по которому процессор идентифицирует ВУ затребовавшее прерывание программы. Процессор может распознать 256 различных прерываний, каждому из них соответствует код типа (целое число 0..255). Код типа умножается процессором на 4, а полученный результат используется в качестве указателя ячейки памяти - адреса вектора прерывания. По адресу вектора прерывания содержится начальный адрес оперативной программы обслуживания прерывания ВУ, называемый вектором прерывания. Следует отметить, что каждое устройство, использующее обмен с прерыванием, как правило, должно иметь свою уникальную программу обслуживания.

Третий шаг выполняется процессором путем загрузки содержимого вектора прерывания в счетчик команд процессора (регистры CS, IP) и выполнения последовательности команд оперативной программы.

Оперативная программа обслуживания устройства должна сохранять состояние тех внутренних регистров процессора, содержимое которых модифицируется в результате ее выполнения, а по завершении -

14


восстанавливать их прежние значения.

Четвертый шаг требует выборки из стека и загрузки в регистры процессора CS, IP, Flags прежних значений, что позволяет продолжить выполнение прерванной программы. Эти действия инициируются командой возврат из прерывания (IRET), которой должна заканчиваться каждая оперативная программа обслуживания прерываний.

Поскольку аппаратные прерывания возникают независимо друг от друга, может возникнуть одновременно несколько запросов прерываний. Чтобы система могла решить какое внешнее устройство обслуживать в первую очередь, в контроллере прерываний существует схема приоритетов. Система отдает предпочтение самому приоритетному устройству, откладывая обработку остальных прерываний. Если во время обслуживания низкоприоритетного устройства ВУ1 приходит запрос от устройства ВУ2 с большим приоритетом, система может прервать обслуживание ВУ1 и перейти к обслуживанию ВУ2. Такие прерывания называются вложенными. Режим вложенных прерываний оказывается возможным, если оперативная программа обслуживания ВУ1 в процессе работы установит флаг разрешения прерываний IF=1 в регистре Flags. Иначе все запросы прерываний от внешних устройств оказываются блокированными до её завершения и восстановления прежнего содержимого регистра Flags.

2.2. Техническое описание и алгоритмы работы основных элементов

системы

В автоматизированных системах на основе ЭВМ семейства IBM AT для

управления приоритетными векторными прерываниями от ВУ используется

БИС программируемого контроллера прерываний (ПКП) Intel 8259A.

ШД ША ШУ

D7-D0

от ВУ

IOR

(ввод)

RD

IR0

IOW

(вывод)

WR

IR1

ISR

PR

IMR

IRR

К

INTR (ЗП)

INT

ЦП

INTA (РП)

INTA

IR7

IR7

Дешифратор

CS

адреса

А0

Схема управления

SP/EN

CAS2-CAS0

Ведущий/ведомый

К другим ПКП

Рис. 2.2. Функциональный состав ПКП и схема связи его с ЦП и ВУ

15


ПКП (рис. 2.2) имеет 8 входов запросов прерываний и может обслуживать до 8 запросов прерываний от внешних устройств.

Число обслуживаемых запросов прерываний может быть расширено до 64 путем каскадного соединения микросхем ПКП. В ЭВМ семейства IBM AT имеются два ПКП, включенных каскадно, что позволяет использовать максимально 15 входов запросов прерываний.

Полное описание микросхемы можно найти в справочной литературе [1] или по ее отечественному аналогу КР-1810-ВН59А [2].

Для реализации своих функций ПКП связан:

-с шиной данных (D7 - D0), шиной адреса (A0, CS) и шиной управления

(RD, WR) ЭВМ;

-с ЦП через линии управления прерываниями (INT, INTA);

- c ВУ через линии запросов прерываний (IR7 - IR0);

- с другими ПКП через линии каскадирования (CAS2 - CAS0).

Для каждого контроллера в адресном пространстве ввода/вывода ЭВМ выделяются два адреса (для первого ПКП: 20h и 21h). При включении питания BIOS (базовая система ввода-вывода) ЭВМ выполняет начальную инициализацию ПКП и программирует его в режим вложенных прерываний, при котором каждому из входов запросов прерываний IR7– IR0 назначается фиксированный приоритет в порядке возрастания, и запрос с большим приоритетом может прерывать обслуживание запросов с

меньшими приоритетами.

В табл. 2.1 показано назначение входов запросов

прерываний для

первого ПКП и номера типов прерываний после его инициализации BIOS.

Аппаратные прерывания первого ПКП

Таблица 2.1

Вход

Номер типа

Назначение входа

прерывания

IR0

8

Таймер

IR1

9

Клавиатура

IR2

Ah

Для каскадирования

IR3

Bh

COM2

IR4

Ch

COM1 (AT)

IR5

Dh

LPT2 (AT)

IR6

Eh

Контроллер НГМД

IR7

Fh

LPT1

Если некоторые из перечисленных устройств отсутствуют (например, COM2, LPT2) или не используют выделенные им линии IRi, то к соответствующим входам ПКП можно подключить устройства связи с объектом автоматизации.

Функциональная схема контроллера прерываний включает: регистр запросов (IRR), регистр масок (IMR), регистр обслуживаемых запросов

16


(ISR) и шифратор приоритетов (PR). Все регистры 8-разрядные.

Регистр запросов прерываний IRR, фиксирует все запросы на входах IR0–IR7. Для чтения содержимого регистра IRR служит команда “Разрешение чтения регистра IRR” (код Ah), выводимая в порт с адресом 20h. После выполнения этой команды контроллером содержимое регистра IRR может быть считано процессором по тому же адресу.

Регистр масок прерываний IMR маскирует (разрешает) запросы прерываний. Если какой–либо бит IMi регистра маски установлен в “1”, то запрос от соответствующего входа регистра запросов IRi будет запрещен. Сигнал IRi=1 зафиксируется в регистре IRR, но установленный бит маски в регистре IMR не пропускает его в шифратор приоритетов. Маскирование входа IRi с некоторым приоритетом не запрещает прерывания от входов с меньшими приоритетами. Содержимое регистра маски в любой момент может быть записано или считано процессором из порта с адресом 21h.

Регистр обслуживаемых запросов ISR хранит запросы, обслуживаемые процессором. На время обслуживания запроса IRi соответствующий разряд ISi регистра ISR устанавливается в единичное состояние, при этом блокируются прерывания от этого и всех других входов с меньшими приоритетами.

Программа обслуживания прерывания при своем завершении должна сбросить бит ISi в регистре ISR. Сброс бита в регистре ISR, соответствующего последнему обслуженному запросу, выполняется командой "Обычный конец прерывания" (код 20h), которая выводится в порт с адресом 20h.

Для чтения регистра ISR служит команда "Разрешение чтения регистра ISR" (код Bh), также выводимая в порт с адресом 20h. После выполнения команды, содержимое регистра ISR может быть считано процессором по тому же адресу.

Шифратор приоритетов PR анализирует содержимое регистров IRR, IMR, ISR и определяет, необходимо или нет генерировать сигнал запрос прерывания INT процессору.

Алгоритм работы ПКП в режиме вложенных прерываний:

1)при появлении запроса прерывания на входе IRi запрос IRi фиксируется в регистре IRR установкой бита IRi=1;

2)установленный в “1” бит IRi регистра IRR сравнивается с соответствующим битом IMi регистра IMR. Если бит IMi сброшен в ноль (IMi=0), запрос передается в шифратор приоритетов PR;

3)шифратор приоритетов PR проверяет его приоритет, и если в регистре ISR биты запросов с большими приоритетами сброшены в ноль, формируется сигнал запрос прерывания INT в процессор;

4)если прерывания процессора разрешены (флаг прерывания в регистре флагов процессора установлен в единицу, IF=1), то по завершении

17