Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
E_UP_DVS.doc
Скачиваний:
67
Добавлен:
11.03.2016
Размер:
1.02 Mб
Скачать

3. Основы микропроцессорных устройств: мп и его окружение, порты ввода/вывода

Микропроцессором(процессором) называется устройство, предназначенное для логической и арифметической обработки информации под программным управлением. Термин микро- возник когда процессор «уместился» в одну микросхему.

Программа- совокупность команд, определенная пользователем, позволяющая функционировать м/п системе в заданном режиме.

Система команд- совокупность всех элементарных действий м/п - команд (число команд 33 – 150 и более).

Команда- одно из элементарных действий м/п, кодируется в 1- 6 и более байтах. Каждая команда выполняется за определенное число импульсов т.г. –Nтг . Быстродействие таким образом определяетсяf т.г.иNтг .

У каждого м/п имеется своя "система команд", определяющая характер его «деятельности». Самая простая система команд у 8-р. м/п, самая сложная - у 32-р. (8-р. м/п оперируют только с 8-р. словами или отдельными битами этого слова, у 16-р. м/п система команд имеет 8-р. операции и 16-р. операции. Соответственно у 32-р. м/п имеются команды 8, 16 и 32-разрядные).

С.к. условно разделяется на группы команд: к. пересылки данных (MOV- память - регистр, р. -р., порт - регистр), к. сравненияCMP(==0, !=0,<, <=, >, >=), к. переходов (JMPусловные, безусловные), к. арифметические (+ADD, -SUB, *MUL, /DIV), к. логические побитные (NOT, AND, OR,XOR).

М/п имеет рабочие регистры (8-32), регистр флагов, программный счетчик PC, указатель стека SP. Снаружим/п имеет шину адреса, шину данных, сигналы управления, обеспечивающие воздействие на м/п со стороны внешних устройств и взаимодействие м/п с подчинеными устройствами. Важнейшими из сигналов управления являются сигналы сброса -RESET, тактирования - CLK (Clock), запроса прерывания –INT, а также сигналы управления памятью и портами ВВ.

Рабочие регистрыиспользуются при выполнении большинства команд. Они являются промежуточным местом хранения данных при обработке.

Регистр флаговотражает наступление событий при выполнении операций. Отдельные биты регистра флагов -C (Carry) -перенос (в командах сложения и вычитания при переполнении или заеме),Z (Zero) - нулевой результат,S (Sign) – знак минус,OF– (overflow– переполнение – в основном для умножения). ВIntel 80x86 в регистр флагов попал бит разрешения прерываний IF (Interrupt Flag) – управляет ходом выполнения программы при наличии запросов прерываний.

Программный счетчик PC автоматически увеличивается на 1 после чтения очередного байта при чтении кода команд, а также может изменяться принудительно командами переходов (аббр. JMP), вызовами программных процедур (CALL), процедурами прерываний и командами т.н. возвратов (RETURNх).

Нарисовать м/п: входыRESET,CLK,INT.

Выходы: Address, -RD, -WR, M/-IO.

Двунаправленную шину DATA.

По сигналу «сброс» м/п готовится к работе (совершаются внутренние микрокоманды, а также сбрасываются флаги, PC- программный счетчик принимает определенное начальное значениеMicroChip, ATMEL - 0000, Intel 80x86 - FFFF0), потом читает первую команду, выполняет ее. Программный счетчик принимает новое значение - далее читается следующая команда и т.д. Команда может состоять из 1, а чаще из 2 и более байтов. При чтении первого байта команды м/п сам знает, сколько байтов следует допрочитать, чтобы «понять» и выполнить команду.

«Голый»м/п работать не будет - ему нужны тактовые импульсы и программа.

Дорисоватьм/с памяти. В простейшем случае (одна м/с памяти) –CS=0. Если используется несколько устройств на шине м/п, то сигнал –CS должен быть активным только у одного устройства. Активность на шине м/п только одного устройства в данный момент времени достигается установкой адресных дешифраторов. Это могут быть простейшие логические элементы, а также м/с дешифраторов. Рассмотреть 2 варианта адресных дешифраторов для памяти.

Адресное пространство- совокупность адресов памяти и портов ввода/вывода, обслуживаемых м/п. Таким образом, различают два адресных пространства - памяти и портов ВВ/ВЫВ. Оба пространства обслуживаются одними и теми же адресными линиями м/п. Аппаратное разделение памяти и портов ВВ/ВЫВ осуществляется по выходному сигналу м/п -M/-IO.В универсальных м/п адресное пространство ВВ/ВЫВ как правило меньше (8080/5 64К и 256, 8086 1024К и 64К).

Порты (порты ВВ/ВЫВ)- есть внешние по отношению к м/п регистры, позволяющие м/п обмениваться информацией с внешними устройствами.

Принципиальной разницы между памятью и портами нет. В компьютере PDP-11 ф. DEC (Электроника-60 - копия) верхняя часть адресного пространства (8К из 64) отводилась устройствам ВВ/ВЫВ. Остальные 56К - под оперативную память. Различие между памятью как таковой и портами в том, что память непрерывна и ее ячейки однотипны (можно записать некую информацию, начиная с одного или другого адреса - суть одно и то же). Порты - внешние по отношению к м/п регистры, которые как правило уникальны (т.е. соседний по адресу порт оперирует с другими внешними устройствами). Самое большое отличие состоит в наличии команд, непосредственно работающих с памятью (сложение, умножение…предполагает чтение-модификация-запись в одной команде), а с портами только команды ввода-вывода (предполагается только чтение или только запись данных в одной команде).

В обиходе под портами ВВ/ВЫВ подразумеваются гораздо более сложные устройства, нежели просто регистры, подсоединенные к шинам м/п. Например, в компьютерном мире часто используемые понятия - «параллельный» и «последовательный» порты. Параллельный порт передает данные одновременно по 8 линиям, последовательный – по одной. В состав этих портов помимо собственно портов-регистров входят дополнительные электронные компоненты, обеспечивающие работу устройства согласно принятым стандартам (протоколам). Так параллельный порт состоит из двух регистров-портов. Последовательный порт имеет 8 регистров-портов, а также сложную схему функционирования.

В нашем случае под портами ВВ/ВЫВ пока будем понимать лишь совокупность внешних регистров для обмена информацией м/п с внешним миром.

Дополнить схему портами ввода (буфер с 3-состояниями. Вход –OEподключить к адр. дешифратору)и вывода (простой регистр, вход С к элементу ИЛИ: -WR, соотв. выход дешифратора).

Нужен свой адресный дешифратор cвходом –Е для подключения к линииM/-IO.

Рабочие регистры i80x86.AX(AH,AL),BX(BH,BL),CX(CH,CL),DX(DH,DL).

Примеры команд обмена м/п с памятью и портами i80x86. По схеме м/п системы проследить выполнение команд.

C48A MOV AL, AH регистр м/п AH - > AL

078B MOV AL, [BX] ячейка памяти с адресом BX - > AL

60B0 MOV AL, 60 число 60 - > AL

EE OUT DX, AL AL - > PORT DX

XXE4 IN AL, port XX port XX -> AL

C103 ADD AX, CX – сложение AX + CX -> AX, (установка/сброс CF - перенос)

D833 ADC BX, DX – сложение BX + DX + CF -> BX (CF - перенос)

Две последние команды подряд – сложение двух 4-байтных чисел "BX,AX" + "DX,CX" -> "BX,AX"

Стек(Stack – полка, стеллаж, куча) - специально выделенная область памяти, в которую записываются и читаются данные по принципу (первым вошел - последним вышел) или (последним вошел - первым вышел). К понятию стека следует добавить его важнейшую деталь -вершину стекаили чаще -указатель стека SP. Итак,указатель стека– спец. регистр м/п, содержащий адрес свободной ячейки, в которую можно произвести запись данных. При чтении данных указатель стека должен быть сначала перемещен на последнюю занятую ячейку, и потом уже можно произвести с этого места чтение данных.

Обычно стек заполняется в сторону уменьшения адресов. Для организации стека достаточно определить указатель стека. Так, например, если указатель стека SP = 87F4, то при записи в стек данные (например, 0102) будут записаны по этому адресу - 87F4 и указатель переместится вниз на 87F2.Если понадобится извлекать содержимое из стека, то получимBDA4 (A4),и указатель стека увеличится на 2SP = 87F6 (или на 1 – SP = 87F5).

Замечание.Микропроцессоры Intel (8080, 80x86) при работе со стеком оперируют только 2-байтными данными (нет стековых команд передачи 8-разрядных данных).

Адрес

Содержимое

Комментарий

87F6

BDA4

при чтении SP=87F4->87F6, получим данные BDA4

87F4

FA33

при записи на этот адрес запишутся новые данные 0102

87F2

2067

87F0

0009

Адрес

Содержимое

Комментарий

87F6

BDA4

87F4

0102

после записи новые данные 0102

87F2

2067

после записи новое значение SP = 87F2

87F0

0009

В начале работы (после сброса м/п) следует задать SP= …(обычно конец памяти – старший адрес). В нашем случае, например,SP= 87F6 – это не самый конец ОЗУ (87FE).

50 PUSH AХ (PUSH - "продвигать вперед, проталкивать" = запись в стек).

- в ячейку SP записывается AХ, SP = SP - 2

5А POP DX (POP– "высунуть" = взятие из стека).

- SP = SP + 2, далее из ячейки памяти с адресом равным содержимому SP данные попадают в регистр DX.

Вместо команд PUSH и POP можно было бы использовать обычные команды пересылки данных, но в этом случае потребовалось бы использовать команду обмена с памятью и дополнительно модифицировать SP. Число команд – 2 или больше, затраты программной памяти – 4 байта или более. Время выполнения - в 2 раза больше как минимум.

Вопросы на экзамене: как организовать стек, в какой памяти (где) находится.

Прерывание- это выполнение блока вычислений при наступлении какого-либо внешнего по отношению к вычислительному процессу события (поступил сигнал ВМТ, зуб с КВ, с датчика фазы, истек временной промежуток системного счетчика времени, пришел очередной байт с компьютера, который хочет знать о работе двигателя и т.д.). Запросы прерываний от внешних устройств поступают на вход м/пINT.

Система прерываний позволяет решать задачи в 100 и более раз эффективнее, нежели без них. Из истории первые компьютеры IBMне имели системы прерываний, но со временем это упущение было исправлено… При программировании на ПК начинающие программисты могут и не знать о прерываниях. Для задач управления без прерываний нельзя ступить ни шагу.

Последовательность прерывания:при возникновении сигнала на входеINT и разрешенном флаге реакции на прерывание (IF= =1), завершается выполнение текущей команды, в стеке запоминается адрес следующей команды, сбрасывается флаг(IF=0), и начинает выполняться программа обработки прерывания. В стеке также запоминается регистр флагов и некоторые рабочие регистры по усмотрению программиста или компилятора (при программировании на ассемблере или языке высокого уровня). Далее, выполняются собственно программа обработки произошедшего события. По завершении программы обработки прерывания в обратной последовательности извлекается содержимое стека. Команда "возврат-return" последним восстанавливает программный счетчик. Флаг разрешения обработки прерываний также восстанавливается(IF=1).Таким образом, продолжается дальнейшее выполнение программы с тем же содержимым рабочих регистров, регистра флагов, как–будто не было отвлечения на обработку целой серии операций.

В стеке могут храниться не только адреса для программ обработки прерываний и других процедур (16-разрядные), но и другие врЕменные данные.

При реакции на прерывания, а также команды вызова подпрограмм, возврата из подпрограмм и прерываний (RETURNx), специальные команды "послать в стек", "извлечь из стека", автоматически воздействуют на указатель стекаSP.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]