КЛЕВО_FPGA
.pdfГлава 16. Структура, система команд и работа микропроцессора
интерфейса с портами А, В и С, каждый шириной 8 бит. С помо щью двух адресных линий Ai и А^ выбирается один из четырех ре гистров интерфейса. Такими регистрами могут быть как регистры данных портов А,В и С, так и командный регистр. Командный ре гистр содержит информацию как о том, действует ли интерфейс как вход или как выход, так и об особенностях способов передачи данных.
РА,.,,РАп |
РС7...РС0 |
РВу...РВо |
Регистр данных |
Регистр данных |
Регистр данных |
канал А |
канал С |
канал в |
Внутренняя шина данных (8 бит)
Логика управления |
командный |
драйвер шины |
считыванием и записью |
регистр |
данных |
гтттп |
|
|
.CS-xWR-^RD А. |
RESET |
D,...Do |
|
|
Рис. 16.5. Параллельный интерфейс микропроцессора 8255.
Линии данных от DQ ДО D^ подключены к шине данных, они являются высокоомными до тех пор, пока блок не выбран с помощью сигнала -^CS. К выводам от А^ до Ао, от Ст до Со и от Bj до ^о можно подключить переключатели, светодиоды, датчики, принтеры др. устройства.
Регистры выбираются линиями данных Ао и Ai в соответствии с табл. 16.2.
16.6.Процесс выполнения команд
внормальном рабочем состоянии процессор реализует непрерывно повторяющуюся последовательность шагов. Постоянно из ЗУ выда-
16.6. Процесс выполнения |
команд |
ются программы, которые затем обрабатываются. В командном ЗУ команды приводятся в порядок в соответствии с последовательно стью программы. Счетчик команд (PC, program counter) в процессо ре содержит адрес команды, которая будет выполняться следующей.
Таблица 16.2.
Лг |
Ло |
Регистр |
0 |
0 |
регистр данных, порт А |
0 |
1 |
регистр данных, порт В |
1 |
0 |
регистр данных, порт С |
1 |
1 |
может быть записано в командный регистр |
Команда имеет фиксированный формат, она снабжена специ альным кодом и, когда необходимо, адресом. В качестве примера используем ассемблерную программу STA 0F12H. Она служит для запоминания содержания накапливающего регистра (accumulator) в ячейке ЗУ 0F12H. STA представляет собой так называемое мне моническое изображение; можно легко заметить, что оно выведе но из английского описательного обозначения «store accumulator». Компилирующая ассемблерная программа переводит эту команду на машинный язык, в двоичное представление, которое может быть интерпретировано процессором. В машинном языке заменены друг на друга младшие и старшие байты адреса.
Таблица 16.3. Противопоставление ассемблерного, шестнадцатеричного и двоичного представлений команды STA DF12H. Команда состоит из 3 байтов.
Ассемблерный способ записи |
STA |
0F12H |
Шестнадцатеричный способ записи |
32 |
OF 12 |
Двоичный способ записи |
ООН 0010 |
0001 0010 0000 1111 |
Для выполнения команды содержание счетчика команд переда ется на адресную шину и команда из ЗУ загружается в декодер команд. Эта фаза называется «выборка операционного кода» (OF, operation code fetch). В этом машинном цикле команда также деко дируется. После этого становится известным, из скольких байтов состоит команда и сколько машинных циклов необходимо, чтобы ее выполнить. В предложенном примере это два дальнейших байта, задаюш;их адрес ЗУ, в котором должно быть перезаписано содержание накопительного регистра. В конце этого цикла счетчик команд по вышает свое значение на 1. Теперь он указывает на младшие байты адреса (в данном примере OF Н).
16.6. Процесс выполнения команд
Такт 2
К началу второго такта сигнал считывания -^RD устанавливается на L (low). ЗУ отвечает на это содержанием ячейки ЗУ, адрес кото рой выслан в такте 1. После интервала, соответствующего времени обращения к ЗУ, операционный код находится на шине данных.
ТактЗ
Данные подаются на шину данных. Сигнал считывания -^RD вновь устанавливается на Н (high). Поскольку протекает OF-цикл, ав томатически обрабатывается следующий такт. Значение счетчика программ возрастает на 1.
Такт 4
В течение этого такта декодируется операционный код. Решается, будут ли обрабатываться дальнейшие такты, как это имеет место при команде DCX.
16.6.2. Цикл считывания памяти (MR, memory read)
Цикл считывания памяти (MR, memory read) представлен здесь в виде двзос протекаюпщх друг за другом циклов, причем один из циклов содер жит «состояние ожидания» (wait state) Т^. Такт Tyj происходит то гда, когда на входе READY состояние READY — О показывает, что ЗУ с более высоким временем доступа еш;е выдается значаш;ие дан ные на шину данных. В случае быстрых ЗУ, которые могут ответить в течение одного такта, сигнал READY^ как правило, устанавлива ется на Н. Временная диаграмма этого цикла изображена на рис. 16.7.
Такт 1
В начале цикла посылаются управляюш;ий сигнал и сигнал приори тета. Процессор накладывает адрес счетчика команд на адресную шину. Сигнал ALE вызывает загрузку младшей части адреса в ре гистр промежуточного ЗУ. Программный счетчик повышает свое значение на 1.
Такт 2
К началу второго такта сигнал считывания ->RD устанавливает ся на L (low). ЗУ отвечает на это содержанием ячейки ЗУ, адрес которой выслан в такте 1. После интервала, соответствуюш;его вре мени выборки, имеются значаш;ие данные. Поэтому сигнал READY находится в состоянии Н (high).
Такт 3
Данные вводятся на шину данных и сигнал считывания -iRD вновь устанавливается на Н (high). Во втором из показанных MR-циклов
16.6. Процесс выполнения команд |
3 7 7 |
Аналогичный порядок действий справедлив и цикла Ю-write |
(«за |
||||
пись по входу/выходу»), только при этом 10/-^М = 0. |
|
||||
|
MW |
MW |
|
|
|
|
T2 |
ъ |
T, |
|
|
|
|
r1\-j~i |
|||
CLK |
|
|
|||
Ю/-лМ • |
\ I O / M 4 . S 1 = 0 . S 0 - |
\ IO/M=f S1=0.S0' |
|||
|
|
||||
|
L |
L |
|
DC |
|
ADo-AD-j' |
)[A.-A. О\Щ n-n^irr |
УА» - А - ,ОШ( D»-D, (PUT |
|
к |
|
ALE J |
r~\ |
|
г |
||
-nWR READY
Р и с . 16.8. Временная диаграмма цикла memory-write с наличием и без на личия состояния ожидания (wait state). Протекание процесса действительно и для цикла lO-write.
16.6.4.Пример выполнения команды
Вкачестве примера демонстрируется команда STA IB02H, 3 байта которой записываются в ЗУ по следующим адресам:
Адрес |
Содержание |
Комментарий |
1001 |
32 |
STA |
1002 |
02 |
младший байт адреса |
1003 |
Id |
старший байт адреса |
Процессор перезаписывает адреса и данные всегда в следуюп];ей последовательности: младший байт — старший байт.
На рис. 16.9 показано, что в первом цикле получаем команду STA, во втором цикле младшую часть адреса (02) и в третьем цикле старшую часть адреса (IB). В каждом из трех циклов программ ный счетчик увеличивает свое значение на 1, от 1001 до 1003. В 4-ом цикле адрес 1В02 подается на адресную шину и содержание накапливаюш;его регистра записывается в адресованную таким образом ячейку ЗУ.
378 |
Глава |
16. |
Структура, |
система |
команд и работа |
микропроцессора |
|||||||||
Zvklus |
|
|
|
OF |
|
|
|
|
|
MR |
|
|
|
|
MW |
|
т, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Takt |
|
Тг |
Т4 |
|
т, Т2 |
Тз |
|
т, |
Тз |
|
т, |
|
Тз |
||
Л-Дз |
_ 1 |
10 |
)[ |
1 10 |
|
|
1 |
10 |
|
; |
IB |
|
|
||
|
|
|
|
|
кж:^ |
||||||||||
АПь-ALh \ |
01 |
\-{ |
32 } |
^ |
02 |
И |
}2 ^ |
( |
щН |
IB |
)^ |
02 |
|||
|
сиг |
|
IN |
|
сиг |
|
IN |
|
ал |
IN |
|
ош |
|
oLrr |
|
ALE |
п |
|
|
п |
|
|
п |
|
п |
|
|
||||
—Ни^ |
|
\ |
Г |
|
|
|
/ |
|
i |
/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
11ГТУ |
. J |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
—\vvK |
|
|
1 |
|
|
|
|
|
|
|
|
|
\ |
||
|
|
|
|
|
|
|
|
|
|
|
|
||||
Рис. 16.9. Временная диаграмма команды STA IB02H (содержание из А: 4С).
16.7.Управление с помощью прерывания (interrupt)
Прерывание представляет собой возможность останавливать выпол няющуюся программу извне. Это может потребоваться, например, тогда, когда с помощью клавиатуры введена какая-либо команда, или тогда, когда должна быть проведена аварийная остановка упра вляемого микропроцессором станка. Если на линию прерывания (in terrupt line) подан сигнал, выполнение программы прерывается и вместо нее выполняется подпрограмма обработки прерывания (ISR, interrupt-service-routine), которая должна решить имеющиеся зада чи. В заключение выполнение программы продолжается.
Сигналы interrupt являются активными High-сигналами (Н) и могут формироваться на основе тактовых сигналов процессора. При выполнении каждой подобной команды проверяется, поступил ли сигнал interrupt извне. Это происходит во время предпоследнего такта команды. В любом случае команда выполняется до конца.
При любых прерываниях сначала должно быть сохранено сте ковое ЗУ (stau). Потом адреса программы обработки прерывания (ISR) загружаются в программный счетчик. В заключение програм-
16.7. Управление с помощью прерывания (interrupt)
ма обработки прерывания выполняется. В конце ISR с помощью ко манды RET содержание счетчика команд выносится из стекового ЗУ и программа продолжается с прежнего места.
Таблица 16.4. Свойства сигналов прерывания у 8085А.
Прерывание |
Запуск |
Способность |
Способность |
Адрес |
Приоритет |
TRAP |
фронт |
нет |
нет |
0024 |
1 |
|
состояние |
|
|
|
|
Я5Т7.5 |
фронт |
да |
да |
002С |
2 |
Я5Г6.5 |
состояние |
да |
да |
ООЗС |
3 |
Я5Т5.5 |
состояние |
да |
да |
0034 |
4 |
Различают следующие моменты:
•блокирование прерывания: с помощью команды EI (enable in terrupt, «разрешение прерывания») и команды DI (disable in terrupt, «запрещение прерывания») все прерывания, вплоть до TRAP, могут быть включены либо выключены (mascable inter rupt, «маскируемое прерывание»). Прерывания, которые могут быть заблокированы, блокируются с помощью ШТЕ-триггера. На него могут воздействовать сигнал возврата в исходное со
стояние (reset), прерывание и команда DI (disable interrupt).
•маскирование прерывания: с помощью команды SIM (set inter rupt mask, «установка маски прерывания») маскируемые пре рывания могут быть селективно включебны и выключены.
Когда в одно и то же время накладывается несколько прерыва ний, обрабатывается то, которое имеет самый низкий приоритет. После установления прерывания начинает выполняться программа обработки прерывания (ISR), которая должна быть записана про граммистом под заданным в табл. 16.4 адресом.
Сигнал прерывания INTR взаимодействует с внешним контрол лером, который может обработать большое количество прерываний. Контроллер прерываний при появлении прерывания выдает адрес подлежащей обработке программе прерываний на адресную шину. Для управления взаимодействием используются линии INTR-INTA.
Сигнал reset обрабатывает протекающую программу (также и обработку прерывания). В заключение программа выполняется с адреса 0000.
Глава 16. Структура, система команд и работка микропроцессора
16.8. Ассемблерное программирование
Программа ассемблерного типа является программой, которая сим волические обозначения команд (мнемонические обозначения) пере носит в двоичный машинный код. По существу, ассемблерная про грамма является переводчиком. Представленную на ассемблерном языке программу называют source code («исходная программа»), вы полняемую микропроцессором программу называют object code («объ ектная программа»). Процесс перевода называют трансляцией с ас семблерного языка. Перевод может также производиться « от руки». Для учебных целей предлагаются специальные моделирующие про граммы. Одна из возможных версий представлена в [42].
Язык ассемблерного типа называют также языком программи рования, в котором команды представлены в мнемонической форме. Они специфичны ^\ля микропроцессоров.
Ассемблерная программа
Ассемблерный язык |
Машинный язык |
"source code" |
"object code" |
разрабатывается программистом |
реализуется микропроцессором |
мнемоническое обозначение |
двоичный код |
STA F734H |
ООН 0 0 1 0 1 1 1 1 0 1 1 1 ООН 0 1 0 0 |
Р и с . 16 . 10 . Соотношение ассемблерного языка и машинного языка.
16.9. Набор команд
Ниже обсуждается набор команд микропроцессора 8085А. В каче стве примеров подобных команд выбраны несколько экземпляров, относящихся к различным их видам. При обсуждении набора ко манд использованы следующие сокращения:
addr |
16-битовый адрес |
data |
8-битовый элемент данных |
data 16 |
16-битовое число |
byte п |
п-ый байт команды |
port |
8-битовый адрес периферийного блока |
г, г1, г2 |
один из регистров А, В, С, D, Е, Н, L |
