Структура процессорных модулей на базе МП i8086 существенно зависит от выбранного режима работы МП.
Процессорный модуль, представленный на рис. 9.8, работает аналогично процессорному модулю на базе i8080, но управляет памятью большего объема и может осуществлять обмен двухбайтовыми словами.
Рис.9.8. Процессорный модуль на базе 8086 в минимальном режиме
Максимальный режим предполагает наличие в системе нескольких равноправных задатчиков, работающих на общую шину. При этом возможны варианты организации системы с одной системной шиной или с системной шиной и шиной ввода/вывода. Управление шинами осуществляется специализированными БИС: контроллером шины и арбитром шины.
На Рис. 9.9 показана однопроцессорная конфигурация с системной шиной (СШ), представленной линиями адреса AB[15:0], линиями данных DB[19:0] и линиями управления: MRDC\, MWTC\, AMWTC\, IORC\, IOWC\, AIOWC\, INTA\.
Рис. 9.9. Однопроцессорная конфигурация для максимального режима
Однокристальные микро-эвм типа МК51
МК51 это серия с ядром 80С51В. странах СНГ МК51 выпускаются на базе n-МОП технологии (серия 1816) и КМОП технологии (серия 1830).
Структура МК51
Рис. 9.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] (к каждому биту в отдельности).
Рис. 9.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 (два МЦ) при условии что генератор запущен.