МПС

Микропроцессоры и микроконтроллеры (Лекция)

 

ПЛАН ЛЕКЦИИ

– 8-разрядный микропроцессор i8080

– Командный цикл микропроцессора

– Машинные циклы и их идентификация

– 16-разрядный микропроцессор i8086

– Внутренняя структура

– Машинные циклы i8086 в минимальном и максимальном режимах

– Структура микропроцессорных модулей на базе микропроцессора i8086

– Однокристальные микро-эвм типа МК51

– Архитектурные особенности МК51

– Организация внутренней памяти данных

– Машинные циклы и синхронизация микро-ЭВМ

– Внешние устройства МК51

– Подсистема прерываний МК51

– Система команд МК51

– Микроконтроллер PIC фирмы Parallax

 

Как известно, процессор является основным вычислительным блоком компьютера, в наибольшей степени определяющим его мощь. Процессор является устройством, исполняющим программу - последовательность команд (инструкций), задуманную программистом и оформленную в виде модуля программного кода. Чтобы понять, что делает процессор, рассмотрим его в окружении системных компонентов IBM PC-совместимого компьютера. Этой компьютерной архитектурой, естественно, не ограничивается сфера применения процессоров. Всем известный IBM PC-совместимый компьютер представляет собой реализацию так называемой фон-неймановской архитектуры вычислительных машин. Эта архитектура была представлена Джоном фон-Нейманом еще в 1945 году и имеет следующие основные признаки. Машина состоит из блока управления, арифметико-логического устройства (АЛУ), памяти и устройств ввода/вывода. В ней реализуется концепция хранимой программы: программы и данные хранятся в одной и той же памяти. Выполняемые действия определяются блоком управления и АЛУ, которые вместе являются основой центрального процессора. Центральный процессор выбирает и исполняет команды из памяти последовательно, адрес очередной команды задается "счетчиком адреса" в блоке управления. Этот принцип исполнения называется последовательной передачей управления. Данные, с которыми работает программа, могут включать переменные - именованные области памяти, в которых сохраняются значения с целью дальнейшего использования в программе. Фон-неймановская архитектура - не единственный вариант построения ЭВМ, есть и другие, которые не соответствуют указанным принципам (например, потоковые машины). Однако подавляющее большинство современных компьютеров основано именно на этих принципах, включая и сложные многопроцессорные комплексы, которые можно рассматривать как объединение фон-неймановских машин. Конечно же, за более чем полувековую историю ЭВМ классическая архитектура прошла длинный путь развития. В общем смысле под архитектурой процессора понимается его программная модель, то есть программно-видимые свойства. Под микроархитектурой понимается внутренняя реализация этой программной модели. Для одной и той же архитектуры разными фирмами и в разных поколениях применяются существенно различные микроархитектурные реализации, при этом, естественно, стремятся к максимальному повышению производительности (скорости исполнения программ). Сейчас существует множество архитектур процессоров, которые делятся на две глобальные категории - RISC и CISC. RISC - Reduced (Restricted) Instruction Set Computer - процессоры (компьютеры) с сокращенной системой команд. Эти процессоры обычно имеют набор однородных регистров универсального назначения, причем их число может быть большим. Система команд отличается относительной простотой, коды инструкций имеют четкую структуру, как правило, с фиксированной длиной. В результате аппаратная реализация такой архитектуры позволяет с небольшими затратами декодировать и выполнять эти инструкции за минимальное (в пределе 1) число тактов синхронизации. Определенные преимущества дает и унификация регистров. CISC - Complete Instruction Set Computer - процессоры (компьютеры) с полным набором инструкций, к которым относится и семейство х86. Состав и назначение их регистров существенно неоднородны, широкий набор команд усложняет декодирование инструкций, на что расходуются аппаратные ресурсы. Возрастает число тактов, необходимое для выполнения инструкций. Процессоры х86 имеют самую сложную в мире систему команд. Хорошо ли это, вопрос спорный, но груз совместимости с программным обеспечением для IBM PC, имеющим уже 20-летнюю историю, не позволяет расставаться с этим "наследием тяжелого прошлого". В процессорах семейства х86, начиная с 486, применяется комбинированная архитектура - CISC-процессор имеет RISC-ядро.

Различают следующие способы организации вычислительного процесса:

1)      один поток команд - один поток данных (Simple Instruction - Simple Data, SISD) - характерно для традиционной фон-неймановской архитектуры (иногда вместо Simple пишут Single);

2)      один поток команд - множественный поток данных (Simple Instruction - Multiple Data, SIMD) - технология MMX;

3)      множественный поток команд - один поток данных (Multiple Instruction - Simple Data, MISD);

4)      множественный поток команд - множественный поток данных (Multiple Instruction - Multiple Data, MIMD).

 

8-разрядный микропроцессор i8080

 

На  рисунке ниже представлена внутренняя структура МП i8080, включающего в себя 8-разрядное АЛУ с буферным регистром и схемой десятичной коррекции, блок РОН, регистры указателя стека SP и счетчика команд PC, первичный управляющий автомат УА, буферные схемы шин адреса и данных и схему управления системой.

 

Рис. Внутренняя структура МП i8080

 

Внешний интерфейс представлен 8-разрядной двунаправленной шиной данных D[7:0], 16-разрядной шиной адреса A[15:0] и группой линий управления.

Назначение входных и выходных линий МП :

D[7:0] - двунаправленная шина данных служит для приема и выдачи данных, приема команды, приема вектора прерывания, выдачи дополнительной управляющей информации (слово PSW);

A[15:0] - однонаправленная шина адреса служит для выдачи адреса памяти и устройств ввода/вывода;

Ф1,Ф2 - сигналы тактового генератора частотой 1..2,5 МГц;

RESET - сброс (начальная установка и запуск программы с адреса 0000);

READY - входной сигнал готовности памяти или ВУ к обмену (обеспечивает асинхронный режим обмена);

INT - запрос внешнего прерывания;

HOLD - захват шины (требование прямого доступа в память со стороны ВУ);

WR - запись - выходной сигнал, определяющий направление передачи информации по шине данных от процессора к памяти или ВУ;

RD - чтение - выходной сигнал, определяющий направление передачи информации по шине данных от памяти или ВУ к процессору;

SYNC - выходной сигнал, идентифицирующий наличие на шине данных дополнительной управляющей информации (PSW);

WAIT - выходной сигнал, отмечающий состояние ожидания или останова МП;

INTE - выходной сигнал, подтверждающий режим внешних прерываний;

HLDA - выходной сигнал, подтверждающий режим прямого доступа в память (подтверждение захвата).

 

Командный цикл микропроцессора

 

МП работает в составе МПС, обмениваясь информацией с памятью и ВУ. В основе работы МП лежит командный цикл - действия по выбору из памяти и выполнению одной команды. В зависимости от типа и формата команды, способов адресации и числа операндов командный цикл может включать в себя различное число обращений к памяти и ВУ и следовательно - иметь различную длительность.

Любой командный цикл (КЦ) начинается с извлечения из памяти первого байта команды по адресу, хранящемуся в PC, что команды i8080 имеют длину 1, 2 или 3 байта, причем в первом байте содержится информация о длине команды. В случае 2- или 3-байтовой команды реализуются дополнительные обращения к памяти по соседним (большим) адресам.

После считывания команды начинается ее выполнение, причем в процессе выполнения может потребоваться еще одно или несколько обращений к памяти или ВУ (чтение операнда, запись результата).

Для реализации команды i8080 может потребоваться от 1 до 5 обращений к памяти (ВУ). Хотя обращения к ЗУ/ВУ располагаются в разных частях КЦ, выполняются они по единым правилам, соответствующим интерфейсу МПС и реализованы на общем оборудовании управляющего автомата. Действия МПС по передаче в/из МП одного байта данных/команды называются машинным циклом.

 

Машинные циклы и их идентификация

 

Командный цикл представляет собой последовательность машинных циклов (МЦ), причем КЦ i8080 может содержать от 1 до 5 МЦ, которые принято обозначать M1, M2,..M5.

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

Машинный такт (такт) образует пара сигналов тактового генератора Ф1, Ф2, поэтому длительность такта постоянна - период тактового генератора (за исключением такта Tw - см. ниже).

Таким образом, просматривается иерархия процедур при работе микропроцессора (не только i8080):

 

Командный цикл ® Машинный цикл ® Машинный такт

 

Каждому такту соответствует определенное состояние управляющего автомата. Любой МЦ i8080 обязательно содержит такты T1, T2, T3, предназначенные для передачи байта по интерфейсу. МЦ, в которых осуществляется передача и/или преобразование информации в МП, содержат дополнительно один или два такта T4, T5. МП i8080 вырабатывает несколько типов МЦ, основными из которых являются циклы ПРИЕМ и ВЫДАЧА

 

МЦ микропроцессора i8080 предусматривает возможность обмена как в синхронном, так и в асинхронном режиме. Если в составе МПС использованы только "быстрые" устройства, т.е. такие, которые могут работать с тактовой частотой МП, то передача информации в МЦ осуществляется в синхронном режиме. В этом случае на вход READY МП подается константа "1" и после такта T2 начинается такт T3. При работе с "медленными" устройствами, быстродействие которых не позволяет переключаться с частотой тактового генератора МП, необходимо "растянуть" во времени МЦ, реализовав асинхронный принцип обмена. Для этого в начале МЦ обмена с "медленными" устройствами на входе READY формируется уровень логического нуля. В такте T2 МП анализирует состояние READY, и если READY = 0, то МП после T2 переходит не к T3, а к такту ожидания Tw, который может длиться произвольное число периодов тактового генератора. Переход к T3 осуществляется по фазе Ф1, если в предыдущей Ф2 READY установился в "1". С помощью входа READY можно не только согласовывать работу МП с устройствами различного быстродействия, но и реализовывать пошаговый и потактовый режимы работы МП.

 

Рис. 9.2. Временная диаграмма МЦ "ПРИЕМ "

 

Таким образом, в машинном цикле выполняются следующие действия:

1)      выдача адреса;

2)      выдача информации о начатом МЦ (PSW);

3)      анализ значения входных сигналов;

4)      при необходимости - ожидание сигнала READY = 1;

5)      прием/выдача данных;

6)      при необходимости - внутренняя обработка/пересылка данных.

 

При реализации одного МЦ процессор может:

1)      принять из памяти байт команды;

2)      принять из памяти байт данных;

3)      принять из УВв байт данных;

4)      принять из стека байт данных;

5)      принять вектор прерывания;

6)      выдать в память байт данных;

7)      выдать в стек байт данных;

8)      выдать на УВыв байт данных.

 

Относительно выходных сигналов МП все перечисленные выше разновидности МЦ отличаются только направлением передачи данных: в МП - циклы 1..5 (ПРИЕМ), из МП - циклы 6..8 (ВЫДАЧА).

 

 

 

Рис. 3. Временная диаграмма МЦ "ВЫДАЧА"

 

Дефицит внешних выводов МП не позволяет выводить во внешний интерфейс достаточный для эффективного функционирования объем управляющей информации. Для выдачи более полной информации о состоянии МП в текущем МЦ используется мультиплексирование шины данных. В начале каждого МЦ на линии шины данных D[7:0] выдается байт дополнительной управляющей информации (т.н. PSW), разряды которого имеют следующее назначение:

D0 - подтверждение прерывания;

D1 - запись (в ЗУ) или вывод (на УВыв);

D2 - обращение в стек;

D3 - подтверждение останова;

D4 - вывод (на УВыв);

D5 - M1 (считывание из памяти первого байта команды);

D6 - ввод (из УВв);

D7 - чтение (из ЗУ).

Наличие на D[7:0] управляющей информации отмечается специальным выходным сигналом SYNC.

 

Байт управляющей информации присутствует на шине данных (ШД) один такт, а использоваться может в течение всего МЦ. Поэтому в МПС, использующих информацию PSW, предусматривается специальный, внешний по отношению к МП, регистр-защелка для фиксации PSW.

 

16-разрядный микропроцессор i8086

 

Первый 16-разрядный процессор i8086 фирма Intel выпустила в 1978 году. Частота - 5 Мгц, производительность - 0,33 MIPS для инструкций с 16-битными операндами (позже появились процессоры 8 и 10 МГц). Технология 3 мкм, 29 000 транзисторов. Адресуемая память 1 Мбайт. Через год появился i8088 - тот же процессор, но с 8-разрядной шиной данных. С него началась история IBM PC, неразрывно связанная со всем дальнейшим развитием процессоров Intel, Массовое распространение и открытость архитектуры IBM PC привели к лавинообразным темпам появления нового программного обеспечения, разрабатываемого крупными, средними и мелкими фирмами, а также энтузиастами-одиночками. Технический прогресс тогда и сейчас был бы немыслим без развития процессоров, но, с учетом огромного объема уже существующего программного обеспечения для PC, уже тогда возник принцип обратной программной совместимости - старые программы должны работать на новых процессорах. Таким образом, все нововведения в архитектуре последующих процессоров должны были пристраиваться к существующему ядру.

16-разрядный МП i8086 явился дальнейшим развитием линии однокристальных МП, начатой i8080. Наряду с увеличением разрядности в i8086 реализован ряд новых архитектурных решений:

1)      расширена система команд (по набору операций и способам адресации);

2)      архитектура МП ориентирована на мультипроцессорную работу. Разработана группа вспомогательных БИС (контроллеров и специализированных процессоров) для организации мультимикропроцессорных систем различной конфигурации;

3)      начато движение в сторону совмещения во времени выполнения различных операций. МП включает два параллельно работающих устройства

4)      обработки данных и связи с магистралью, что позволяет совместить во времени процессы обработки информации и передачи ее по магистрали;

5)      введена новая (по сравнению с i8080) организация памяти, которая далее использовалась во всех старших моделях семейства INTEL - сегментация памяти.

Для сохранения преемственности модели с i8080 в i8086 предусмотрено два режима работы - "минимальный" и "максимальный", причем в минимальном режиме i8086 работает просто как достаточно быстрый 16-разрядный i8080 с расширенной системой команд (архитектура МПС на базе i8086-min напоминает архитектуру на базе i8080).

Максимальный режим ориентирован на работу i8086 в составе мультимикропроцессорных систем, в которых, помимо нескольких центральных процессоров i8086, могут функционировать специализированные процессоры ввода/вывода i8089, сопроцессоры "плавающей арифметики" i8087.

Определим более четко введенные выше понятия:

Центральный процессор – поддерживает собственный командный цикл, выполняет программу, хранящуюся в системной памяти, по сбросу системы управление, как правило, передается центральному процессору (или одному из ЦП, если их несколько в системе).

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

Сопроцессор не поддерживает собственный командный цикл, выполняет команды, выбираемые для него ЦП из общего потока команд. По сути дела сопроцессор является расширением ЦП.

 

Внутренняя структура

 

Структурная схема МП i8086 представлена на рис. МП включает в себя три основных устройства :

1)      УОД - устройство обработки данных;

2)      УСМ - устройство связи с магистралью;

3)      УУС - устройство управления и синхронизации.

УОД предназначено для выполнения команд и включает в себя 16-разрядное АЛУ, системные регистры и другие вспомогательные схемы; блок регистров (РОН, базовые и индексные) и блок микропрограммного управления.

УСМ обеспечивает формирование 20-разрядного физического адреса памяти и 16-разрядного адреса ВУ, выбор команд из памяти, обмен данными с ЗУ, ВУ, другими процессорами по магистрали. УСМ включает в себя сумматор адреса, блок регистров очереди команд и блок сегментных регистров.

УУС обеспечивает синхронизацию работы устройств МП, выработку управляющих сигналов и сигналов состояния для обмена с другими устройствами, анализ и соответствующую реакцию на сигналы других устройств МПС.

МП может работать в одном из двух режимов - "минимальном" (min) и "максимальном" (max). Минимальный режим предназначен для реализации однопроцессорной конфигурации МПС с организацией, подобной МПС на базе i8080, но с увеличенным адресным пространством, более высоким быстродействием и значительно расширенной системой команд. Максимальная конфигурация предполагает наличие в системе нескольких МП и специального блока арбитра магистрали (используется интерфейс Multibus).

На внешних выводах МП i8086 широко используется принцип мультиплексирования сигналов - передача разных сигналов по общим линиям с разделением во времени. Кроме того, одни и те же выводы могут использоваться для передачи разных сигналов в зависимости от режима (min - max).

Ниже приводится описание внешних выводов МП i8086. При описании выводов косой чертой разделены сигналы, появляющиеся на выводе в разные моменты машинного цикла. В круглых скобках указаны сигналы, характерные только для максимального режима. Символ \ после имени сигнала - знак его инверсии.

 

 

Рис. 4. Внутренняя структура процессора i8086

 

A/D[15:0] - младшие [15:0] разряды адреса / данные;

A[19:16]/ST[6:3] - старшие [19:16] разряды адреса / сигналы состояния;

BHE\/ST[7] - разрешение передачи старшего байта данных / сигнал состояния;

STB(QS0) - строб адреса (состояние очереди команд);

R\ - чтение;

W\/(LOCK\) - запись (блокировка канала);

M-IO\(ST2\) - память - внешнее устройство (состояние цикла);

OP-IP\(ST1\) - выдача-прием (состояние цикла);

DE\(ST0\) - разрешение передачи данных (сост. цикла);

TEST\ - проверка;

RDY - готовность;

CLR - сброс;

CLC - тактовый сигнал;

INT - запрос внешнего прерывания;

INTA\(QS1) - подтверждение прерывания (состояние очереди команд);

NMI - запрос немаскируемого прерывания;

HLD(RQ\/E0) - запрос ПДП (запрос / подтверждение доступа к магистрали);

NLDA(RQ\/E1) - подтверждение ПДП (запрос / подтверждение доступа к магистрали);

MIN/MAX\ - потенциал задания режима (1-min, 0-max).

Сигналы состояния ("статуса") используются для отображения внутреннего состояния МП. Некоторые группы статусных сигналов используются только в максимальном режиме.

Сигналы ST[2:0]\ определяют тип текущего машинного цикла (аналогично PSW для i8080), и формируются только в максимальном режиме:

Таблица 1

ST2

ST1

ST0

Тип машинного цикла

0

0

0

Обслуживание прерывания

0

0

1

Чтение ВУ

0

1

0

Запись ВУ

0

1

1

Останов

1

0

0

Извлечение кода команды

1

0

1

Чтение ЗУ

1

1

0

Запись ЗУ

1

1

1

Пассивное состояние

 

Разряды статуса 3..4 определяют сегментный регистр, используемый для вычисления физического адреса:

Таблица 2

ST4

ST3

Сегментный регистр

0

0

ES

0

1

CS

1

0

SS

1

1

DS

 

ST[5] отражает состояние флага разрешения прерывания IF, ST[6] всегда установлен в 0, когда МП обменивается информацией по магистрали, состояние ST[7] не определено (зарезервировано).

Сигналы QS[1:0] формируются только в максимальном режиме и отражают состояние очереди команд:

Таблица 3

QS1

QS0

Состояние очереди команд

0

0

Нет операции

0

1

Очередь очищается

1

0

Извлекается первый байт

1

1

Извлекается очередной байт

 

Практически все команды МП i8086 могут работать как со словами (2 байта) так и с байтами. При работе со словами сигнал BHE\ разрешает передачу старшего байта слова.

Сигнал STB отмечает наличие на линиях A/D и A/S адреса.

R и W\ стробируют данные на шине A/D соответственно при чтении и записи.

M-IO\ и OP-IP\ определяют соответственно устройство, с которым производится обмен (память - ВУ) и направление передачи информации (вывод - ввод) относительно процессора.

DE\ стробирует внешний буфер A/D при передаче данных.

Вход TEST\ предназначен для синхронизации программы с внешними процессами. Команда WAIT (ожидание) переводит процессор в режим ожидания, в котором он будет находиться до тех пор, пока на входе TEST\ удерживается высокий уровень сигнала (лог. "1"). При этом все магистрали МП переводятся в высокоимпедансное состояние.

RDY - (готовность) аналогично соответствующему входу МП i8080 обеспечивает возможность асинхронного машинного цикла.

CLR - (сброс) устанавливает все регистры МП в 0, кроме CS, который устанавливается в FFFF и осуществляет запуск командного цикла. Таким образом, стартовый адрес i8086 - всегда FFFF0.

CLC - тактовый сигнал.

INT, INTA\ - соответственно запрос и подтверждение вешнего прерывания (подробнее см. раздел 7).

NMI - запрос внешнего немаскируемого прерывания по фиксированному вектору 2.

HLD, HLDA - соответственно требование и предоставление прямого доступа в память (работает аналогично подсистеме ПДП i8080). В максимальном режиме вместо сигналов HLD, HLDA используются две двунаправленные линии RQ\/Ei\ - запрос шины/разрешение доступа, на которые работает специальная микросхема - арбитр шины.

 

Машинные циклы i8086 в минимальном и максимальном режимах

 

Временные диаграммы работы МП i8086 в минимальном режиме представлены на Рис 9.5. и Рис. 9.6

Рис.9.5. Минимальный режим – цикл ЧТЕНИЕ

 

 

 

 

 

Рис. 6. Минимальный режим – цикл ЗАПИСЬ

 

Цикл начинается с формирования в T1 сигнала M/IO, определяющего тип устройства - память или ВУ, с которым осуществляется обмен данными. Длительность сигнала M/IO равна длительности цикла шины, и он используется для селекции адреса устройств. В T1 и в начале T2 МП выдает адрес A[19:16] и A[15:0] и сигнал BHE, который вместе с A0 определяет передачу слова или одного из байтов. По спаду строба ALE адрес фиксируется во внешних регистрах-защел­ках.

 В такте T2 происходит переключение шин: на выводы A[19:16]/ ST[6:3] поступают сигналы состояния; выводы A/D[15:0] в цикле ЧТЕНИЕ переводятся в высокоимпедансное состояние, а в цикле ЗАПИСЬ - на них выдаются данные, предназначенные для записи в устройство.

Циклы ЧТЕНИЕ и ЗАПИСЬ отличаются не только активными значениями сигналов RD и WR и состоянием сигнала OP/IP, но и тем, что в цикле ЗАПИСЬ сигналы DEN и WR становятся активными раньше и имеют большую длительность, чем в цикле ЧТЕНИЕ.

В максимальном режиме изменяются значения восьми управляющих сигналов МП, на основании которых системный контроллер К1810ВГ88 формирует системные управляющие сигналы. Временные диаграммы работы i8086 в максимальном режиме представлены на Рис. 9.7.

Код состояния S[2:0] выдается по срезу CLK в последнем такте предшествующего цикла, которым может быть T4 или TI. В такте T1 контроллер формирует строб ALE и устанавливает необходимый уровень на выходе OP/IP (DT/R). В такте T2 начинается формирование DEN, который в отличие от минимального режима имеет активный высокий уровень. Контроллер. .ВГ88 формирует так же MRDC\, IORC\, AMWC\, AIOWC\. Последние два - сигналы опережающей записи обеспечивают более длительный импульс записи, что может потребоваться для некоторых устройств. Следует помнить, что сигналы опережающей записи не гарантируют установку данных по началу импульса записи. При разработке контроллера. .ВГ88 предполагалось, что шина данных системы буферизована, поэтому сигналы MRDC, IORC, AMWC, AIOWC начинают формироваться еще до того, как МП переведет шину в третье состояние. Поэтому эти сигналы не должны подаваться на те устройства, которые подключены непосредственно к мультиплексированной шине A/D. На Рис. 9.  в рамки помещены сигналы, которые формирует системный контроллер К1810ВГ88.

При работе в асинхронном режиме между тактами T3 и T4 могут появиться один или несколько тактов ожидания Tw, в течении которых МП удерживает в активном состоянии выводы ST2..ST0, так что контроллер сохраняет управление шиной в течение любого числа тактов ожидания Tw. Сигнал направления передачи OP/IP\, передаваемый на шинные формирователи (ШФ), устанавливается в такте T1, но работа ШФ не разрешается до появления сигнала DEN\ = 0 в такте T2. Строб данных DEN\ заканчивается в такте T4, что обеспечивает отключение ШФ до начала следующего цикла шины.

 

Рис. 7. Временные диаграммы МЦ i8086 в максимальном режиме

 

Структура микропроцессорных модулей на базе микропроцессора i8086

 

Структура процессорных модулей на базе МП i8086 существенно зависит от выбранного режима работы МП.

Процессорный модуль, представленный на рисунке далее, работает аналогично процессорному модулю на базе i8080, но управляет памятью большего объема и может осуществлять обмен двухбайтовыми словами.

 

 

Рис. 8. Процессорный модуль на базе 8086 в минимальном режиме

 

Максимальный режим предполагает наличие в системе нескольких равноправных задатчиков, работающих на общую шину. При этом возможны варианты организации системы с одной системной шиной или с системной шиной и шиной ввода/вывода. Управление шинами осуществляется специализированными БИС: контроллером шины и арбитром шины.

На Рис. 9.9 показана однопроцессорная конфигурация с системной шиной (СШ), представленной линиями адреса AB[15:0], линиями данных DB[19:0] и линиями управления: MRDC\, MWTC\, AMWTC\, IORC\, IOWC\, AIOWC\, INTA\.

 

 

 

 

Рис. 9. Однопроцессорная конфигурация для максимального режима

 

Однокристальные микро-эвм типа МК51

 

МК51 это серия с ядром 80С51В. странах СНГ МК51 выпускаются на базе n-МОП технологии (серия 1816) и КМОП технологии (серия 1830).

 

Структура МК51

Рис. 10. Структура МК51

 

В МК51 используются следующие сигналы:

ALE  - строб адреса;

PSEN\  - строб чтения внешней памяти программ;

RD\,WR\- стробы чтения и записи внешней памяти данных;

EA\  - разрешение обращения во внутреннюю память программ;

T0,T1 - входы счетчиков внешних событий;

INT0,INT1- запросы внешних радиальных прерываний;

RxD - вход данных последовательного канала;

TxD - выход данных последовательного канала.

В состав МК51 входят параллельные 8-разрядные квазидвунаправленные порты P0..P3. Порт Р3 может быть использован для ввода и вывода управляющих сигналов.

Таким  образом,  в циклах обращения к внешним ресурсам на линиях порта P3 работают управляющие сигналы, а при отсутствии  необходимости  управления внешними  ресурсами эти же линии могут быть использованы как линии порта.

 

Архитектурные особенности МК51

 

МК51  позволяет управлять пятью (частично пересекающимися) адресными пространствами памяти,  четыре из которых являюся областями данных:

 

RSEG   - пространство регистров (4*8 байт);

DSEG   - пространство внутренней памяти данных (256 байт);

BSEG   - битовое пространство данных (256 бит);

XSEG   - пространство внешней памяти данных (до 64К байт);

CSEG   - пространство программного кода (до 64К байт).

 

Пространства RSEG и BSEG частично пересекаются, физически совмещаются с DSEG и образуют единую внутреннюю среду для  хранения  данных.  Это позволяет одни и те же данные рассматривать с разных позиций (ячейка памяти,  регистр,  битовое поле, порт ввода/вывода и т.п.)  и организовывать наиболее удобный для данного случая доступ к ним.

Характерно, что  все порты ввода/вывода,  системные регистры, таймеры так же отображены на пространство DSEG.

Пространство регистров  представлено четырьмя банками регистров по 8 в каждом,  а так же 16-разрядными программным счетчиком PC и регистром косвенного адреса DPTR,  8-разрядными аккумуляторами A и B, указателем стека SP и регистром PSW.

Все регистры, кроме PC, отображаются на DSEG.

 

PSW[7] - CY - перенос из старшего (7) разряда АЛБ;

PSW[6] - AC - перенос из третьего разряда АЛБ;

PSW[5] - F0 - флаг пользователя.

Кроме того, формат PSW включает двухбитовое поле PSW[4:3] - RS номера  банка  регистров  и  флаги  арифметического  переполнения OV (PSW[2]) и четности P (PSW[0]).

Флаги CY,  AC  и  OV  отражают  признаки результата последней арифметической операции,  а P - четность содержимого  аккумулятора A. Расширение  аккумулятора B используется в командах умножения и деления, а в остальных операциях - как обычная ячейка памяти. Программный счетчик  адресует  пространство  памяти  программ CSEG объемом до 64K байт, причем переход из области внутренней памяти программ к внешней осуществляется автоматически.

Указатель данных DPTR используется для обращения к XSEG и при пересылке  констант из CSEG в A.  Кроме того,  содержимое DPTR используется а  качестве  смещения  в  команде  перехода.

Указатель стека SP образует системный стек  глубиной  до  256 байт. SP хранит адрес последнего занесенного байта и растет при записи в сторону больших адресов.

Регистры R0,  R1 каждого банка используются в качестве указателей данных. При сбросе машины в A,  B,  PC и DPTR загружаюся 0h, а в SP - 07h.

 

Организация внутренней памяти данных

 

Пространство DSEG включает  в себя 256 ячеек памяти,  часть из которых является одновременно элементами других пространств.  Так,  первые  32 байта ОЗУ занимают 4 банка.  Служебные регистры,  порты ввода/вывода, таймеры, аккумуляторы и др. так же совмещены с ячейками памяти и полями битового сегмента.  Это дает возможность обращения к одному физическому объекту  разными  способами.  Так,  к  ячейке DSEG[E0]  можно  обратиться по прямому и косвенному адресу,  обратиться как к аккумулятору A и как к полю BSEG[E0..E7]    каждому биту в отдельности).

 

Рис. 11. Пространство внутренней памяти данных DSEG

 

Память программ адресуется PC[15:0] и может составлять до 64К байт,  причем младшие 4 К могут располагаться  непосредственно на кристалле, а остальная память внешнее ЗУ. С точки зрения программиста внешняя и внутренняя  память  программ представляют единое адресное пространство.  Имеются "особые точки"

CSEG:

RESET   0000h - стартовый адрес;

EXTI0   0003h - внешнее прерывание 0;

TIMER0  000Bh - прерывание от таймера/счетчика T0;

EXTI1   0013h - внешнее прерывание 1;

TIMER1  001Bh - прерывание от таймера/счетчика T1;

SINT      0023h - прерывание последовательного            порта;

 

Машинные циклы и синхронизация микро-ЭВМ

 

Питание МК51 осуществляется от одного источника +5В. Кварцевый резонатор 3,5..12 МГц подключается к выводам Х1, Х2; возможно подключение внешнего тактового генератора через Х1.

OSC/2 - основная внутренняя тактовая частота CLK.  Первая половина периода CLK фаза P1,  вторая - P2.  Каждый машинный  цикл состоит из шести периодов CLK: состояний S1, S2, .. S6 или двенадцати периодов OSC,  называемых фазами S1P1,  S1P2,  S2P1,  .. S6P, S6P2.  Каждый машинный цикл сопровождается генерацией двух стробов ALE длительностью в один период  CLK  -  S1P2..S2P1,  S4P2..  S5P1.

Командный цикл (КЦ) содержит один или несколько машинных циклов  (МЦ)  и отсчитывается от S1P1.  По фазе S1P2 в IR фиксируется код операции, второй байт двухбайтовой команды читается в S4P2 того же МЦ,  третий байт трехбайтовой - в S1P2 следующего МЦ.  Таким образом,  для ввода каждого байта команды требуется один полуцикл.

Во  время  всех оставшихся полуциклов в фазах S1P2 и S4P2 читается код операции следующей размещенной в памяти команды,  однако он не помещается в IR и не инкрементируется PC. Текущий КЦ всегда завершается в S6P2. Вслед за этим начинается S1, в котором в IR вводится новый байт.

Обращение к внешней памяти данных XSEG по команде MOVX требует  второго МЦ,  в котором не вырабатывается первый строб ALE.  На рис. 3.7 приведена временная диаграмма обращения к XSEG.

Для приведение МК51 в исходное состояние необходимо  подать на  вход  RST  импульс H-уровня длительностью не менее 24 периодов OSC (два МЦ) при условии что генератор запущен.

 

Внешние устройства МК51

 

К "внешним" устройствам МК51 отнесем:

·        4 параллельных двунаправленных порта ввода/вывода P0..P3;

·        буфер SBUF и регистр управления SCON последовательного  канала;

·        таймеры/счетчики T0,  T1,  их регистр управления TCON и регистр режимов TMOD;

·        регистры управления подсистемой прерываний: регистр приоритетов IP и регистр маски IE;

·        регистр управления машиной PCON.

В состав МК51 входит дуплексный последовательный канал связи с буферизацией,  который может быть запрограммирован для работы в одном из четырех режимов:

·        режим "0" - синхронный ввод/вывод с частотой OSC/12;

·        режим "1" - асинхронный с 8-бит. кадром, частота k*f;

·        режим "2" - асинхронный с 9-бит. кадром, частота k*OSC/32;

·        режим "3" - асинхронный с 9-бит. кадром, частота k*f; где k {1, 1/2}, f - частота переполнения T1 (FOV), деленная на 16.

 

Подсистема прерываний МК51

 

Архитектура МК51 поддерживает двухуровневую радиальную приоритетную подсистему прерываний (ПП) с шестью  источниками  запросов.

Для приема внешних прерываний служат входы INT0\,  INT1\.

Источниками внутренних запросов могут служить сигналы переполнения таймеров T0,  T1 и сигнал окончания работы последовательного канала.

 

Система команд МК51

 

Система команд включает 111 команд - однобайтовых (49), двухбайтовых  (45)  и трехбайтовых (17).  Все команды выполняются за 1 или 2 МЦ (16 тактов CLK в каждом), за исключением команд умножения и деления MUL и DIV,  для выполнения которых требуется 4 МЦ. Большинство двухбайтовых команд - одноцикловые,  а все трехбайтовые -двухцикловые. За  один  МЦ  в МК51 можно вводить до двух байтов программного кода.

МК51 работает с данными четырех основных типов - битами,  полубайтами (4 бита),  байтами и адресами (16 бит).  Наиболее  часто используемой единицей данных является байт: внутренние магистрали данных имеют 8-битный размер.  Программная память, внутренняя память и внешняя память данных запоминают и возвращают данные в виде байтов. Кроме этого, имеется много команд, которые работают с одиночными битами.  Бит может быть установлен, очищен, проинвертирован,  логически скомбинирован с флагом переноса и проверен для выполнения последующих переходов.  Полубайт (двоично-десятичная упакованная цифра) обычно мало применяется в МК51,  но  двоично-десятичная арифметика может выполняться без преобразования операндов в двоичное представление.

Команды, которые  используют  16-битные адреса,  имеют дело с указателем данных (16-битный регистр DPTR ) и с программным  счетчиком (переходы и вызовы подпрограммы).  Использование команд сложения с битом переноса (ADDC) и вычитание с заемом  (SUBB)  делает программирование 16-битной арифметики относительно простым.

Программно-доступными объектами в составе ОМЭВМ являются: аппаратные регистры, четыре банка по восемь регистров R0..R7,R0..R7 и 128 ячеек внутренней памяти данных - с адресами 00H..7FH.  Кроме того,  по  специальным  командам  MOVX  и MOVC может быть доступна внешняя память данных и программ. В МК51 возможна битовая адресация аппаратных регистров и части внутренней памяти.

При программировании следует иметь в виду, что в качестве регистров R0..R7 банка 0 используются ячейки внутренней памяти  данных с адресами 00H..07H,  банка 1 - 08Н..0FН, банка 2 - 10Н..17Н, банка 3 - 18Н..1FH.

В системе команд МК51 используются  регистровая, прямая, косвенная и непосредственная адресация.

При регистровой  адресации  операнды  находятся  в регистрах, имена которых определяются кодом операции команды.  Эта  адресация используется  для  обращения  к регистрам выбранного банка рабочих регистров,  к регистрам А,  В,  DPTR и к флагу переноса С.

По прямому  адресу  можно обращаться к аппаратным регистрам и внутренней памяти.  Используется также прямая  битовая  адресация.

Косвенно можно  адресоваться  к  ячейкам внутренней и внешней памяти данных через регистры R0,R1 текущего банка.

К любой ячейке внешней памяти (данных и программ) можно обратиться с использованием регистра DPTR.

По типу операций можно выделить следующие классы команд:  пересылки;  арифметические и логические; передачи управления; специальные команды.

 

Микроконтроллер PIC фирмы Parallax

 

Это особо малый микроконтроллер. Простейший микроконтроллер имеет 8 выводов. Микроконтроллер 8-ми разрядный с Гарвардской архитектурой, что повышает производительность. Одновременно считывается команда и происходит обращение за данными. В некоторых микроконтроллерах есть операции умножения, деления, операции с плавающей точкой. Система команд компактная – не более 51 команды (LOW, LITLE и HIGH – 51 команда). Есть банки регистров как МК51.

Есть ПЗУ разных типов и перифирийные устройства (АЦП, ЦАП). В составе перифирийных устройств имеется несколько выводов последовательного интерфейса – обычный RS232, интерфейс I2C фирмы Philips, SPI.  

Контроллеры PIC могут быть использованы как ²умные² перифирийные устройства, т.е. SLAVE – контроллер может быть подсоединен к управляющему контроллеру PIC как обычное перифирийное устройство через порт (или линю данных). Очень развиты перифирийные средства коммуникации (I2C, SPI, RS232, порты).

На основе PIC может быть организованна сеть микроконтроллеров (через шину I2C).

У SPI и I2C общая особенность: для передачи используется два провода.

Интерфейс SPI работает со стробиованием по фронту сигнала (клока), т.е. по одной линии передаются данные, по другой – клок.

В I2C стробирование осуществляется по уровню. В обоих интерфейсах Master обеспечивает выдачу сигналов тактирования.