Файл: Курс лекций Разработчик Афонин Ю. Д. Екатеринбург, 2007 2 Содержание.pdf

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

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

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

Добавлен: 12.01.2024

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

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

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

48
Шинный цикл обычно состоит из четырех рабочих периодов длительностью T (машинный такт), однако компьютер автоматически вводит в этот цикл дополнительный период ожидания T
W
. Таким образом, в компьютере весь шинный цикл содержит как минимум пять периодов и составляет примерно 0.6 мкс.
Шинный цикл ВВОД инициируется каждый раз, когда микропроцессор выполняет команду IN. Во время периода T
1
в активное состояние
Действительный адрес порта
T
1
T
2
T
3
T
W
T
4
CLK
ALE
SA0-SA9
IOR
SD0-SD15
Данные действительны
Рисунок 3.5 – Цикл ВВОД. переключается линия сигнала ALE, по срезу которого выдается признак того , что разряды SA0 ÷ SA9 адресной шины содержат действительный адрес порта
УВВ. Во время периода T
2
в активное состояние переводится сигнал управления IOR, который указывает, что отклик адресуемого УВВ должен заключаться в выводе им содержимого своего регистра данных на шину данных. В начале периода T
4
процессор считывает информацию с шины данных, и переводит сигнал IOR в неактивное состояние. Если расписать по стадиям это будет выглядеть так:
• в начале такта T
1
процессор переводит сигнал ALE в высокое состояние, указывая, что будет выполняться цикл обращения к УВВ;
• затем помещает адрес порта УВВ на линии адреса;

49
• УВВ по заднему фронту сигнала ALE запоминает адрес в своей входной логике, анализирует его и, если он совпадает с адресом данного УВВ, то активизируется;
• в начале такта T
2
процессор переводит сигнал IOR в низкое состояние, указывая, что будет выполняться цикл ВВОД;
• в ответ на понижение сигнала IOR УВВ помещает свои данные на линии данных магистрали;
• в начале периода T
4
процессор считывает данные с шины данных и снимает сигнал IOR, а затем и адрес с линий адреса;
• в ответ на снятие сигнала IOR УВВ снимает данные с линий данных магистрали.
Шинный цикл ВЫВОД'>ВЫВОД используется для передачи данных от активного устройства к пассивному и инициируется каждый раз, когда процессор выполняет команду OUT. Временная диаграмма выполнения цикла представлена на рис. 3.6.
Порядок выполнения операций в цикле ВЫВОД следующий:
• процессор в начале периода T
1
переводит сигнал ALE в высокое состояние, указывая, что будет выполняться цикл обращения к УВВ;
Действительный адрес порта
T
1
T
2
T
3
T
W
T
4
CLK
ALE
SA0-SA9
IOW
SD0-SD15
Данные действительны
Рисунок 3.6 – Цикл ВЫВОД.


50
• затем помещает адрес порта УВВ на линии адреса;
• УВВ по заднему фронту сигнала ALE запоминает адрес в своей входной логике, анализирует его и, если он совпадает с адресом данного УВВ, то активизируется;
• процессор во время периода T
2
переводит сигнал IOW в низкое состояние, указывая, что будет выполняться цикл ВЫВОД, затем помещает данные на шину данных;
• УВВ считывает данные с шины данных во время действия сигнала
IOW;
• в начале периода T
4
процессор снимает сигнал IOW, данные с шины данных и адрес с шины адреса, освобождая их.
3.4 Цикл по прерыванию программы
В PC совместимых компьютерах используется два вида прерываний: аппаратные и программные.
Прерывания, которые, как правило, связаны с внешними по отношению к микропроцессору устройствами, например, с дисковыми накопителями, клавиатурами, принтерами, таймерами, получили название аппаратных прерываний. Прерывания, которые генерируются в самом микропроцессоре, получили название программных прерываний. Прерывание, которое может игнорироваться микропроцессором, называют маскируемым. Маскируемые прерывания разрешаются и блокируются программным способом.
В PC используется программируемый контроллер прерываний, который обрабатывает запросы на внешние прерывания, поступающие по восьми линиям и генерирует для процессора код типа прерывания (рис 3.7).

51
IS
A
ш и
на
Контроллер прерываний 8259А
Процессор
INTA
IN
T
R
Время
Клавиатура
Свободн.
СОМ2
СОМ1
Свободн.
НГМД
LPT1
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
Рисунок 3.7 – Схема организации прерываний в компьютере PC
Каждой линии прерывания соответствует свой код (см. таблицу 3.1).
Таблица 3.1 – Коды и функции прерываний.
Линия
Код (тип) прерывания
Функция
IRQ0 8
Системный таймер 18.2 Гц.
IRQ1 9
Клавиатура
IRQ2
A
Свободен в XT, второй контроллер прерываний в AT.
IRQ3
B
СОМ2
IRQ4
C
СОМ1
IRQ5
D
Свободен
IRQ6
E
Накопитель НГМД
IRQ7
F
Порт LPT1 (принтер)
Умножая код на 4 можно получить адрес вектора прерывания для данной линии. Каждый вектор прерываний состоит из четырех байт – 16 разрядного смещения и 16 разрядного сегмента (рис 3.8).
Обработка прерывания сводится к следующему. По переднему фронту сигнала IRQ контроллер прерываний вырабатывает сигнал INTR – запрос на прерывание. Процессор, если данное прерывание разрешено, выставляет сигнал
INTA – разрешение прерывания, помещает содержимое своих регистров и программного счетчика в стек.


52
Вектор прерывания,
4 байта
Адрес вектора прерывания (тип *4)
00000H
00400H
Подпрограмма обслуживания данного прерывания
Рисунок 3.8 – Вектор прерывания.
Затем по коду прерывания помещает вектор прерывания в программный счетчик и переходит на программу обслуживания данного устройства. Внешнее устройство должно удерживать сигнал IRQ в высоком состоянии до тех пор, пока к нему не будет обращения. После выполнения цикла ВВОД или ВЫВОД внешнее устройство должно снять сигнал IRQ. После выполнения программы обслуживания данного прерывания процессор восстанавливает содержимое своих регистров и программного счетчика и продолжает выполнение основной программы.
Для работы с прерываниями выделено два регистра. Формат первого регистра (первое слово рабочих приказов OCW1 – порт 21) приведен на рис.
3.9.
0 1
2 3
4 5
6 7
М1
М2
М0
М3
М4
М5
М6
М7
Рисунок 3.9 – Регистр OCW1 (порт 21).
Единичное значение одного из битов М0÷М7 означает, что прерывания соответствующего уровня
(IRQ0÷IRQ7) маскируются и не будут обрабатываться контроллером.
Второй регистр (второе слово рабочих приказов OCW2 - порт 20) предназначен для вывода команды завершения обработки аппаратного

53 прерывания (EOI), циклического сдвига и явного изменения приоритетов уровней. Назначение битов OCW2 приведено на рис. 3.10.
Процедура обработки аппаратного прерывания должна перед своим завершением очистить свой бит в ISR (регистр состояния, описывает в битах прерывания каких уровней в данный момент обрабатываются) выводом команды завершения обработки прерывания (End Of Interrupt, EOI). Существует два варианта команды EOI: обычный и специфицированный EOI. Обычный EOI очищает бит в ISR, соответствующий прерыванию с максимальным приоритетом. Специфицированный EOI (R=0, SL=1, EOI=1,
0 1
2 3
4 5
6 7
L1
L2
L0 0
0
EOI
SL
R
Эти 3 бита определяют номер уровня прерывания,
если он требуется в команде.
1- команда завершения обработки аппаратного прерывания.
0 0
0 0
1 1
1 1
Используется вместе с EOI=1.
Циклический сдвиг приотитетов влево на одну позицию.
Специфицированный EOI (сбрасывает в ISR бит,
определяемый полями L0-L2 ).
Назначение низшего приотитета уровню,
определяемому полями L0-L2.
Рисунок 3.10 – Регистр OCW2 (порт 20).
L0 - L2 равно номеру уровня прерывания) очищает в ISR бит, соответствующий прерыванию с номером, указанным в L0 - L2, независимо от его приоритета.
Команды с битом R=l позволяют изменить приоритеты уровней. Циклический сдвиг приоритетов сдвигает приоритеты влево на единицу, при этом, если после обычного распределения приоритетов, издать команду циклического сдвига, уровень 0 получит низший приоритет, уровень 1 - наивысший, уровень
2 - следующий за ним и т.д. Команда явного назначения низшего приоритета одному из уровней изменяет приоритеты остальных уровней циклически.


54
Таким образом, если Вы зададите низший приоритет уровню 5, то уровень 6 получит наивысший.
3
.5 Магистраль PCI IBM PC совместимого компьютера
PCI (Peripheral Component Interconnect bus) - шина для подсоединения периферийных устройств. Стала массово применяться для Pentium-систем, но используется и с 486 процессорами. Частота шины от 20 до 33МГц, теоретически максимальная скорость 132/264 Мбайт/с для 32/64 бит.
Слот PCI самодостаточен для подключения любого контроллера. 32- битный слот заканчивается контактами А62/В62, 64-битный - А94/В94. На системной плате может сосуществовать с любой из других шин ввода-вывода.
Шина PCI - первая шина в архитектуре IBM PC, которая не привязана к этой архитектуре. Она является процессорно - независимой и применяется, например, в компьютерах Macintosh. В отличие от остальных шин, компоненты расположены на левой поверхности плат PCI-адаптеров. По этой причине крайний PCI-слот обычно разделяет использование посадочного места с соседним ISA-слотом.
Стандарт PCI определяет для каждого слота конфигурационное пространство размером до 256 восьмибитных регистров, не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным циклам шины Configuration Read и
Configuration Write, вырабатываемым контроллером при обращении процессора к регистрам контроллера шины PCI, расположенным в его пространстве ввода- вывода.
На PCI определены два основных вида устройств - инициатор (по ГОСТ
- задатчик), т.е. устройство, получившее от арбитра шины разрешение на захват ее и устройство назначения, цель (target) с которым инициатор выполняет цикл обмена данными.

55
Рассмотрим сигналы шины PCI. Черта под названием сигнала означает, что активный уровень этого сигнала низкий, в скобках ввод (I) и, или вывод
(O).
AD31-AD0 (I/O) Эти 32 адресно-информационных контакта образуют мультиплексную адресно-информационную шину PCI. Каждая операция шины
PCI состоит из фазы адресации, во время которой через контакты АD31-AD0 передается адрес, и из одной или нескольких фаз передачи информации.
C/BE3-C/BE0 Через эти четыре контакта передается команда шины и сигналы разрешения байта. Эти контакты являются мультиплексными. Во время адресной фазы через контакты C/BE3-C/BE0 передается тип цикла шины.
При этом возможны следующие комбинации C/BE3-C/BE0:
(0000) Последовательность
INTA
(1000) Резерв
(0001) Специальный цикл (1001) Резерв
(0010) Чтение ввода-
вывода
(1010) Чтение
конфигурации
(0011) Запись ввода-
вывода
(1010) Запись
конфигурации
(0100) Резерв
(1100) Многократное обращение к памяти
(0101) Резерв
(1101) Двойной цикл адресации
(0110) Чтение памяти
(1110) Чтение строки памяти
(0111) Запись в память
(1111) Запись в память с аннулированием
Во время информационной фазы сигналы BE3-BE0 определяют, какие байты передаваемой 32-разрядной информации являются достоверными.
Заметим, что между достоверными данными может существовать "разрыв"
(например, возможна комбинация ВЕ3=0, ВЕ2=1, ВЕ1=ВЕ0=1).
CLK (O) Через этот контакт передается сигнал таймера PCI, сопровождающий все операции PCI. В соответствии с техническими требованиями, его частота лежит в интервале от 0 до 33 МГц.


56
FRAME (I/O) Сигнал FRAME выдается действующим главным абонентом шины PCI. Переход FRAME на низкий, т.е. активный, уровень инициирует фазу адресации. Чтобы обозначить последнюю фазу данных, завершающую цикл работы шины, главный абонент должен вновь деактивировать FRAME.
INTA, INTB, INTC, INTD (I, I, I, I) Каждое функциональное устройство PCI может выдавать до четырех аппаратных прерываний, устанавливая низкий уровень на этих контактах. Монофункциональное устройство может активировать только INTA, а многофункциональное, в зависимости от структуры и требований, также и INTВ - INTD. В РС INTА -
INTD функционального блока соответствуют аппаратным прерываниям IRQ0-
IRQ15.
IRDY (I/O) Сигнал "готовность инициатора" показывает, что инициатор
(главный абонент шины) готов к выполнению текущей фазы передачи данных.
При записи инициатор активирует сигнал IRDY, который показывает, что на шине выставлена нужная информация. При чтении IRDY показывает, что инициатор готов к чтению данных. Сигнал IRDY соответствует сигналу процессора RЕАDY, за исключением того, что он выдается не устройством- целью (slave), а инициатором (master). Фаза передачи данных считается завершенной только в том случае, если оба сигнала IRDY и ТRDY активны.
ТRDY (I/O) Сигнал "готовность цели" показывает, что вызываемое устройство PCI (цель) готово к выполнению текущей информационной фазы.
При записи устройство-цель активирует сигнал ТRDY, который показывает, что устройство готово к принятию данных для записи. При чтении ТRDY показывает, что устройство-цель подготовило данные для чтения. Сигнал
ТRDY соответствует сигналу процессора RЕАDY. Информационная фаза считается завершенной только в том случае, если оба сигнала IRDY и ТRDY активны.
DEVSEL (I/O) Сигнал "Выбор активного устройства". Низкий уровень сигнала показывает, что декодирующая схема определила соответствующее устройство PCI как устройство-цель для данной операции шины.

57
Рассмотрим, как выполняется чтение при вводе-выводе (рис 3.11). При таком запросе данные читаются с устройства PCI в области адресов ввода- вывода. Адресные разряды ADx определяют адрес байта, следовательно, AD1 и
AD0 тоже должны декодироваться, поскольку в области адресов ввода-вывода может находиться адрес как 8-разрядного, так и 16-разрядного портов. Доступ обычно состоит из адресной и информационной фаз.
Рисунок 3.11 - Пакет чтения PCI. Типичный запрос PCI на чтение
инициируется посредством активирования сигнала FRAME. Здесь
показан не оптимальный пакет 3-1-1-1-…, а пакет 3-1-2-2, в
котором состояние ожидания в первом цикле вызывается
неактивным сигналом TRDY (готовность цели), а во втором -
неактивным сигналом IRDY (готовность инициатора). Если
вызываемое устройство PCI определяет, что именно оно является
целью вызова, оно выставляет в ответ активный сигнал DEVSEL.
Передача (пакет 3-1-2-2) заканчивается деактивированием FRAME
в последней фазе передачи данных
Отметим, что первый цикл таймера после адресной фазы используется для переключения направления передачи мультиплексной адресно- информационной шины PCI. Во время адресной фазы контакты ADx используются для выдачи величины (адреса), а во время информационной фазы
- для приема значения (считанные данные). Для смены направления требуется один пустой (оборотный) цикл. Следовательно, первая величина может быть передана не раньше третьего цикла таймера. Поэтому наиболее экономичным пакетом чтения PCI (без циклов ожидания) будет пакет 3-1-1-1…