литература / Пухальский Проектирование микропроцессорных систем 2001
.pdf330 Глава 4. Микропроцессоры 8086/8088 и сопроцессор 8087
Максимальная рассеиваемая мощность составляет 2,5 Вт для МП 8086/8086-2/8086-1 и 1,0 Вт для МП 80С86/80С86-2. Токи потребления и параметры выходных сигналов характери зуются значения:
max = 340/350/360 мА — 8086/8086-2/8086-1; / сс = 10 мА/МГц — 80С86/80С86-2;
max;= 0,45 |
В при Iql = 2,5 |
мА, V0H mi„ - |
2,4 В при 10н = -0,4 мА — 8086/8086-2/8086-1; |
Vol.max - 0,40 |
В при I0L = 2,5 |
мА и У0н тт - |
3,0 В при 10Н - -2,5 мА — 80С86/80С86-2. |
Микропроцессор 8088 имеет 8-разрядную внешнюю шину данных при 16-разрядной внутренней шине, и программно совместим с МП 8086. Микропроцессор 8088 удобен для мо дернизации аппаратных конфигураций на базе МП 8080/8085 при переходе на более мощную систему команд МП 8086 [12, 14].
С труктурная схема М П 8086. На рис. 4.2, а изображена структурная схема МП, состоя щая из двух относительно независимых устройств: исполнительного устройства (Execution Unit) и шинного интерфейса (Bus Interface Unit). В исполнительном устройстве реализуются основные функции по обработке данных. Оно состоит из регистров данных, указательных и индексных регистров (Data, Pointer and Index Regs), арифметическо-логического устройства
(16-Bit ALU — Arithmetic and Logic Unit) и регистра признаков (Flags). Исполнительное уст ройство принимает из шинного интерфейса предварительно извлеченные команды и возвраща ет в него несмещенные адреса операндов. Затем оно получает через шинный интерфейс нахо дящиеся в памяти операнды и возвращает полученный результат для записи в память. Функция шинного интерфейса заключается в обеспечении максимально возможной пропускной способ ности шины: производится упреждающая выборка команд с размещением их в 6-байтном реги стре очереди команд (6-Byte Instruction Queue) и реализуются функции, связанные с чтением и записью операндов в память, модификацией (перемещением) адресов и управлением шинами. Все интерфейсные операции выполняются параллельно с процессом обработки данных.
Основные узлы, входящие в состав МП 8086, изображены на рис. 4.2, б:
АХ, ВХ, СХ, DX — 16-разрядные регистры общего назначения (РОНы), которые могут использоваться и как 8-разрядные регистры данных АН и AL, ВН и BL, СН и CL, DH и DL (Н — High — старший байт и L — Low — младший байт 16-разрядных РОНов АХ, ВХ, СХ, DX);
IP, SP, ВР, SI, DI — указательные и индексные регистры, используемые для адресации памяти. За исключением регистра IP, любой из этих регистров можно использовать для хране ния 16-разрядных операндов;
CS, SS, DS, ES — сегментные регистры, используемые только для адресации памяти;
ALU — 16-разрядное арифметическо-логическое устройство (АЛУ);
Flags (PSW — Program Status Word) — регистр признаков (слово состояния программы);
Control Logic — схема управления;
6 Byte Instruction Queue — 6-байтная очередь команд, выбираемых из памяти с опереже нием по отношению к их декодированию и исполнению. Очередь команд представляет собой память типа FIFO 6 x 8 бит (first-in, first-out — первым вошел, первым вышел; см. § 2.6).
Слово состояния программы PSW (регистр признаков) содержит 16 разрядов, но исполь зуется только 9 флагов (рис. 4.2, в). Флаги МП 8086 разделяются на условные (или флаги усло вий), отражающие результат предыдущей операции АЛУ, и управляющие (или флаги управле ния), от которых зависит выполнение специальных функций:
SF (Sign Flag) — флаг знака (равен старшему разряду результата операции, представлен ного в дополнительном коде: SF - 0 — число положительное, SF = 1 — число отрицательное);
ZF (Zero Flag) — флаг нуля (ZF = 1 при получении нулевого результата и ZF = 0, если ре зультат отличается от нуля);
PF (Parity Flag) — флаг паритета (PF = 1, если младшие 8 бит результата содержат четное число единиц и PF - 0 в противном случае);
332 Глава 4. Микропроцессоры 8086/8088 и сопроцессор 8087
CF (Carry Flag) — флаг переноса (CF = 1, если при сложении или вычитании возникает перенос или заем, и CF = 0 в противном случае; другие команды также воздействуют на этот флаг);
AF (Auxiliary Carry Flag) — флаг вспомогательного переноса (AF = 1, если при сложении или вычитании возникает перенос или заем из разряда 3, и AF = 0 в противном случае; флаг предназначен только для двоично-десятичной арифметики);
OF (Overflow Flag) — флаг переполнения. Флаг OF устанавливается в 1, если возникло переполнение, т. е. полученный результат вышел из допустимого диапазона представления чисел в дополнительном коде. При сложении флаг OF устанавливается в 1, если имеется пере нос в старший бит и нет переноса из старшего бита, или наоборот. При вычитании флаг OF устанавливается в 1, когда возникает заем из старшего бита, но заем в старший бит отсутству ет, или наоборот;
DF (Direction Flag) — флаг направления (применяется в командах манипуляций цепочка ми данных; если флаг DF = 0, цепочка обрабатывается с первого элемента, имеющего наи меньший адрес; если же флаг DF = 1, цепочка обрабатывается от наибольшего адреса к наи меньшему);
IF (Interrupt Enable Flag) — флаг разрешения прерываний, управляемый командами раз решения STI и запрета CLI прерываний (IF = 1 — прерывания разрешены; IF = 0 — прерыва ния запрещены; этот флаг по назначению эквивалентен сигналу INTE МП 8080 и флагу IE МП
8085);
TF (Trap Flag) — флаг трассировки (если TF = 1, то после выполнения каждой команды генерируется внутреннее прерывание для выполнения программы в пошаговом режиме).
Последние три из описанных флагов принадлежат к группе флагов управления. Младший байт в PSW соответствует 8-разрядному регистру признаков МП 8080/8085 и содержит все флаги условий, кроме флага переполнения OF.
В табл. 4.1 показано соответствие регистров МП 8086 и 8080/8085 с точки зрения их про граммной совместимости. Регистры АХ, ВХ, СХ и DX предназначены для хранения операндов и результатов операций и допускают адресацию не только целых регистров, но и их младшей и старшей половин. Регистры ВХ, СХ и DX имеют и специальные назначения: ВХ служит базо вым регистром в вычислениях адреса, СХ в некоторых командах выступает неявным счетчи
ком, DX в некоторых операциях ввода-вывода содержит адрес порта ввода-вывода. |
|
|||||||||
Таблица 4.1. Соответствие регистров МП 8086 и 8080/8085 |
|
|||||||||
Регистр МП 8086 |
AL |
ВН |
BL |
СН |
CL |
DH |
DL |
SP |
IP |
PSW |
Регистр МП 8080 |
А |
н |
L |
В |
С |
D |
Е |
SP |
PC |
F |
Указатель команды (инструкции) IP и регистр SP являются 16-разрядными программным счетчиком и указателем стека, но полные 20-разрядные физические адреса команды и стека образуются суммированием содержимого этих регистров и содержимого сегментных регистров CS и SS, сдвинутого на 4 разряда в сторону старших разрядов:
физический адрес команды = 16 • CS + IP, физический адрес стека = 16 • SS + SP.
Пусть, например, содержимое сегментного регистра CS - 38ВСh, а содержимое указателя команды IP = 7А53h. Тогда физический адрес команды будет равен 16 ■CS + IP = 38ВС0 + + 7А53 = 40613/г. Аналогичным образом используются и все остальные сегментные регистры.
Регистр ВР является базовым при обращении к стеку и может использоваться с другими регистрами и (или) смещением, которое является частью команды. Регистры SI и DI предна значены для индексирования. Хотя их можно использовать сами по себе, они часто комбини-
4.1. Структурная схема МЛ 8086 |
333 |
руются с регистрами В Х и ВР и (или) смещением. Вычисление физических адресов памяти данных при выполнении команд может быть произведено, например, таким образом:
физический адрес = 16 • SS + BP + SI + dispS, физический адрес = 16 • DS + ВХ + DI + disp\6,
где dispS и disp\6 — 8- и 16-разрядные смещения (disp — displacement — смещение), а вычис ляемые 16-разрядные адреса ЕА = BP + SI + dispK и ЕА = ВХ + DI + disp 16 называются эффек тивными адресами (подробнее адресацию данных см. в § 4.2).
Применение сегментных регистров разделяет пространство памяти на сегменты, каждый из которых имеет размер 64 Кбайта и начинается на 16-байтной границе, называемой границей параграфа, т. е. любой сегмент всегда начинается с адреса, кратного 16. Содержимое сегмент ного регистра называется сегментным адресом, а сегментный адрес, умноженный на 16, —
начальным физическим сегментным адресом, или просто начальным (базовым) сегментным адресом. Сегменты памяти данных, стека и кода могут как перекрываться, так и не перекры ваться. Более того, все сегменты могут совпадать — иметь один и тот же базовый сегментный адрес. На рис. 4.3 изображено разделение памяти на не перекрывающиеся сегменты. Наличие
сегментных регистров обеспечивает следующие преимущества: |
|
|
||
максимальный объем адресуемой памяти ра |
|
1 FFFFFto |
||
вен 1 Мбайт, хотя команды оперируют 16-разряд- |
|
|||
ными адресами; |
|
|
|
Сегмент |
секции кода (команд программы), данных и |
|
|
кода (64 Кбайта) |
|
|
|
} |
||
стека могут иметь длину более 64К байт благодаря |
Сегментные |
|
Сегмент |
|
|
|
|
||
использованию |
нескольких сегментов кода, дан |
регистры |
+SP |
} |
стека (64 Кбайта) |
||||
ных и стека; |
|
CS |
|
Сегмент |
упрощается |
использование отдельных облас |
|
|
|
тей памяти для программы, ее данных и стека; |
D S |
|
данных (64 Кбайта) |
|
|
} |
|||
при каждой загрузке программы в память для |
ES |
|
Д ополнительный |
|
ее выполнения она сама и (или) ее данные могут |
п |
|
сегмент |
|
|
} |
|||
размещаться в различных областях памяти, т. е. |
|
|
данных (64 Кбайта) |
|
сегментная структура памяти обеспечивает созда |
|
^ |
ОООООЬ |
|
ние позиционно-независимых или динамически |
Рис. 4.3. Сегментная структура памяти |
перемещаемых программ; перемещение програм мы в адресном пространстве памяти производится изменением содержимого только сегмент
ных регистров без изменения программного кода команд переходов и вызова подпрограмм. Общие сигналы для максимального и минимального режимов работы МП. Условное
графическое обозначение МП 8086 с указанием обозначений сигналов при работе в макси мальном и минимальном режимах приведено на рис. 4.4. Режим работы задает значение сигна ла M N/M X {Minimum!Maximum): MNIMX = 0 — максимальный режим (вывод подключен к зем ле) и MNIMX = 1 —- минимальный режим (вывод подключен к VCc - +5 В). В зависимости от установленного режима изменяются функции восьми внешних выводов МП (выводов 24 31). Под мультиплексную шину адреса-данных и адреса-состояния заняты 21 линия, а для внешне го управления микропроцессором и сигналов квитирования передач данных — 16 линий.
Сигналы, общие для максимального и минимального режимов работы МП 8086, имеют назначение:
A D ,5_о (Address Data Bus) — мультиплексная шина адреса-данных. По этим двунаправлен ным линиям с разделением во времени передаются младшие 16 разрядов адреса памяти или полные адреса устройств ввода-вывода А 15_о и данные В первом такте (Т{) каждого цикла шины выдается адрес Л15-0, который необходимо зафиксировать во внешнем регистре сигналом ALE, а затем (такты Т2, 7’3, Tw, Т4) принимаются или передаются данные D 15 0 (см. рис. 4.5). Мультиплексирование адресов и данных во времени сокращает число контактов корпуса, но и
4.1. Структурная схема МП 8086 |
335 |
одно обращение к памяти, а по нечетному адресу — за два обращения (сначала читается млад ший байт по верхней части шины, а затем старший байт по нижней части шины). Значения сигналов ВНЕ и A19_i6, как и сигналов Ai5_o, необходимо запоминать (фиксировать сигналом ALE) во внешнем регистре. При подтверждении запроса захвата шин линия BHE/S7 переводит ся в Z-состояние и ВНЕ = 0 в течение такта Т\ в первом цикле подтверждения прерывания;
|
|
Таблица 4.3. У правление шиной данных |
ВНЕ |
Aq |
Операции запись/чтение |
0 |
0 |
Целое слово (два байта) ADJ5_o |
0 |
1 |
Байт по верхней части шины AD (AD15^8) / по нечетному адресу |
1 |
0 |
Байт по нижней части шины AD (.AD?_$) / по четному адресу |
1 |
1 |
Нет операций |
RD (Read) — сигнал чтения устройств, подключенных к локальной шине МП. Сигнал RD = 0 в течение тактов Т2, Т3 и Tw (данные из памяти или внешних устройств передаются по шине A D |5_о в МП). При подтверждении запроса захвата шин выход RD переводится в Z-состояние;
CLK {Clock) — тактовый сигнал от внешнего генератора для синхронизации работы МП (частота сигнала 5, 8 и 10 МГц в зависимости от модели МП). Оптимальная скважность сигна ла CLK равна 3;
RESET — сигнал системного сброса, переводящий МП в определенное начальное состоя ние. Минимальная длительность значения сигнала RESET = 1 должна быть при первом включе нии МП не менее 50 мкс, а при повторном запуске — не менее четырех тактов синхронизации. При этом производится сброс (установка в 0) регистров PSW (флаг IF = 0 — прерывания за прещены), IP, SS, DS, ES, очереди команд и загрузка в сегментный регистр CS числа FFFF/z, т. е. после сброса МП стартует с адреса памяти FFFFOh = 16 • CS + IP',
READY — сигнал готовности, приостанавливающий работу МП при значении READY = 0. Этот сигнал используется в интерфейсах устройств ввода-вывода и памяти, быстродействия которых недостаточно для синхронной работы с МП. Значение сигнала READY = 1 устанавли вает адресуемое устройство после окончания им передачи или приема данных;
TEST — сигнал проверки освобождения шины данных другим процессором в мультипро цессорных системах. Этот сигнал используется вместе с командой ожидания WAIT. Выполнив команду WAIT, МП проверяет уровень сигнала TEST: если значение TEST = 1, то МП вводит холостые состояния и периодически проверяет уровень сигнала TEST с интервалом в пять так тов синхронизации, а если значение сигнала TEST = 0, МП переходит к выполнению следую щей по порядку команды. Таким образом, команда WAIT и сигнал TEST обеспечивают синхро низацию действий МП с внешними событиями;
NM I (Non-maskable Interrupt) — сигнал запроса по положительному фронту немаскируе мого прерывания типа 2 (type = 2 — см. рис. 4.26, с. 398). Запрос прерывания всегда удовлетво ряется по завершении выполнения текущей команды независимо от того, разрешены пре рывания или нет (независимо от значения флага IF). Для прерывания типа 2 адрес (вектор) подпрограммы обслуживания прерывания (CS:IP) должен быть записан в четыре ячейки памя ти, начиная с адреса 4 х type = 8. Немаскируемые прерывания предназначены для сигнализации о некоторых катастрофических событиях, например аварийном отключении сетевого питания, ошибке в памяти и др.;
INTR (Interrupt Request) — сигнал запроса прерывания высоким уровнем с фиксацией во внутреннем триггере. МП проверяет состояние этого триггера в последнем такте выполнения