63325 (588928), страница 3
Текст из файла (страница 3)
Рисунок 1.10. Карта адресации ППИ
Нижним уровнем карты есть все адресное пространство в 256 байт. Три старших адресных разряда А7 - А5 делят пространство на 8 равных частей по 32 байта. В пространство адресов ВСН – А0Н вложен второй уровень адресов. Этот уровень разделён адресами А4 - А2 также на 8 частей, но уже по 4 байта. На этом уровне просто выделяются адреса адаптера. Третьим верхним вложенным уровнем адресов, являются физические адреса четырех адресуемых объектов адаптера. Сигнал CS адаптера выделяется двумя нижними уровнями карты, а логика его порождения совсем простая.
В соответствии с последним уравнением схема включения адресного дешифратора представлена на рисунке 1.11.
Оставшиеся свободные выводы выходов дешифратора могут использоваться для выборки других чипов ( Chip Select).
Рисунок 1.11 Схема включения адресного дешифратора
Ниже приводится пример простейшей микроконтроллерной системы управления с использованием PPI по рассчитанным адресам.
Рисунок 1.12 Микроконтроллерная система Рисунок 1.13 Алгоритм работы микроконтроллерной системы
Порт В должен быть запрограммирован на ввод, а младшая половина порта С - на вывод. При готовности объекта RDY=1 программно формируется строб STB, а затем пауза. После таких действий микроконтроллер снова сканирует готовность объекта.
Процедура управления достаточно проста. Директива РРI equ 098Н указывает программе на начальный адрес адаптера. В программе MS (Mode Select), BSR ( Bit Set Reset) - команды получаемые PPI со стороны микроконтроллера.
ORG 800H
OBJECT: MVI A, CW1 ; инициализация адаптера
OUT PPI+3
WAIT: IN PPI+1
ANI RDY :
JZ WAIT ; проверка готовности объекта
MVI A, CW2
OUT PPI+3 ; установка строба
CALL DELAY ; задержка
MVI A, CW3
OUT PPT+3 ; сброс строба
CALL DELAY ; выдержка паузы
JMP WAIT ; вернуться в начало
DELAY: PUSH PSW ; сохранить состояние
MVI A, TIME ; загрузить величину задержки
CYCL: DCR А ;уменьшить счётчик
JNZ CYCL ;если не 0 то повторить
POP PSW ; восстановить состояние
RET ; возврат
PPI equ 098H ; заданный физический адрес RDY equ 080Н ; маска готовности CW1 DB 82H ; MS = 82H – инициализация CW2 DB 01 Н ; ВSR = 01Н - установка РС0 CW3 DB 00Н ; BSR= 00Н - сброс РС0
1.3 Разработка алгоритма функционирования проектируемой системы
Алгоритм функционирования системы представлен на рисунке 1.14
Рисунок 1.14 Алгоритм работы микросистемы
1.4 Проектирование прикладного программного обеспечения проектируемой системы
На основании алгоритма функционирования проектируемой системы составляется программа управления устройством. Программа написана на языке низкого уровня Assembler. Листинг программы с комментариями и пояснениями приведен ниже.
masm
model small
.stack 100h ; Глубина стека 256 байт
.data ; Сегмент данных
cwd equ 82h ; Управляющее слово
portA equ 98h ; Aдрес порта А
portB equ 99h ; Адрес порта В
portC equ 9Ah ; Адрес порта С
ppiCR equ 9Bh ; Адрес регистра управления
start_1 equ 01h ; Управляющий уровень START_1
start_0 equ 00h ; Управляющий уровень START_0
; Основная программа
.code ; Сегмент кода программы
mov bx, 2E00h ; Загрузка начального адреса RAM в регистр BX
mov sp, 0F00h ; Загрузка указателя стека SP
mov cx, 00FFh ; Загрузка в регистр CX количества циклов
mov dx, ppiCR ; Формирование адреса РУС ППИ
mov al, cwd ; Формирование управляющего слова
out dx, al ; Загрузить в PPI управляющее слово
mov dx, portC ; Формирование адреса порта С
mov al, 00h ; AL00h
out dx, al ; Обнуление порта С
start: mov al, start_0 ; ALSTART_0
out dx, al ; Формирование START=0
call delay ; Вызов подпрограммы DELAY
wait: in al, portB ; Проверка готовности
cmp al, 00h ; Сравнение al с числом 00h
jnz wait ; Если не равно, то перейти на wait
in al, portA ; ALD0...D7
in ah, portB ; AHD8, D9
mov [bx], al ; Сохранить младшую часть результата в ОЗУ
inc bx ; Увеличить bx на 1
mov [bx], ah ; Сохранить старшую часть результата в ОЗУ
inc bx ; Увеличить bx на 1
mov al, start_1 ; ALSTART_1
out dx, al ; Формирование START=1
call delay ; Вызов подпрограммы DELAY
dec cx ; Уменьшить счетчик циклов на 1
jnz start ; Если не ноль, то перейти на start
hlt ; Остановка
; Подпрограмма временной задержки DELAY
delay: push f ; Сохранить в стеке содержимое регистра флагов
cycle: mov ax, ffffh ; Загрузка в AX расчетной величины FFFFh
dec ax ; Уменьшить АХ на 1
jnz cycle ; Если не ноль, то перейти на cycle
pop f ; Восстановить содержимое регистра флагов
ret ; Возврат в основную программу
end
1.5 Выбор и обоснование элементов микропроцессорного комплекса
1.5.1 Общие сведения
Микропроцессорный комплект серии К1810 включает в свой состав следующие БИС:
К1810ВМ86 – однокристальный 16-разрядный МП с быстродействием до 2,5 млн. оп./с, емкостью адресуемой памяти 1 Мбайт и системой команд, совместимой с системой команд КР580ВМ80А на ассемблере;
К1810ВМ87 – однокристальный 16-разрядный сопроцессор арифметики с плавающей точкой;
К1810ВМ88 – однокристальный 8-разрядный МП с быстродействием примерно в 2 раза большим, чем у К1812ВМ85А, и в 5 раз, чем у КР580ВМ80А, емкостью адресуемой памяти 1 Мбайт и системой команд, идентичной системе команд К1810ВМ86;
К1810ВМ89 – однокристальный 16-разрядный сопроцессор ввода/вывода;
К1810ГФ84 – генератор тактовых сигналов;
К1810ВН59А – программируемый контроллер прерываний;
К1810ВГ88 – системный контроллер;
К1810ВБ89 – арбитр шины;
БИС МП комплекта могут использоваться совместно с программируемыми периферийными БИС МП комплекта серии К580.
В составе семейства предусмотрены по два типа универсальных и специализированных однокристальных микропроцессоров. Универсальные микропроцессоры предназначены для построения центральных процессоров, выполняющих функции главного процессора микропроцессорной системы. Оба процессора 16-разрядные, адресуют память объемом 1 Мбайт и адресное пространство внешних устройств объемом 64 Кбайта, имеют совмещенную шину данных/адресов и отличаются разрядностью шины. Микропроцессор К1810ВМ86 имеет 16-разрядную совмещенную шину данных/адресов и отдельную 4-разрядную шину адресов, он предназначен для построения 16-разрядных систем. Микропроцессор К1810ВМ88 имеет 8-разрядную совмещенную шину данных/адресов и отдельную 12-разрядную шину адресов, он предназначен для построения 8-разрядных микропроцессорных систем. Специализированные микропроцессоры ориентированы для расширения функциональных возможностей центральных процессоров. Один из них 8-разрядный арифметический сопроцессор (АСП) К1810ВМ87 расширяет вычислительные возможности центральных процессоров (типы обрабатываемых данных и систему команд). Другой 16-разрядный процессор ввода/вывода (ПВВ) К1810ВМ89 предназначен для построения 8- и 16-разрядных каналов ввода/вывода. Процессор позволяет управлять двумя каналами ПДП.
1.5.2 Микропроцессор К1810ВМ86
К наиболее важным особенностям К1810ВМ86 относятся следующие: развитая регистровая структура, существенно уменьшающая число обращений к памяти; конвейерный принцип выполнения команд с предварительной выборкой, обеспечивающей максимальную пропускную способность системной магистрали; распределенное микропрограммное устройство управления; мультиплексированная шина адреса/данных; многофункциональное использование выводов, позволяющее адаптировать МП к уровню сложности разрабатываемой системы; способность координировать взаимодействие нескольких процессоров, что упрощает построение на его основе мультипроцессорных систем. В последних возможно применение процессоров двух типов: независимых, т.е. выполняющих собственный поток команд (К1810ВМ86), и вспомогательных – сопроцессоров (например, К1810ВМ87, К1810ВМ89). Сопроцессор анализирует команды, выбираемые главным (независимым) процессором, и выполняет те, на которые распространяется его специализация.
МП К1810ВМ86 ориентирован на параллельное выполнение выборки и команд, может быть условно разделен на две части, работающие асинхронно (рисунке 1.15): устройство сопряжения с магистралью (УС) и устройство обработки (УО).
Устройство сопряжения с магистралью обеспечивает формирование 20-разрядного физического адреса памяти, выборку команд и операндов из памяти, организацию очередности команд и запоминание результатов в памяти. В состав УС входит шесть 8-разрядных регистров очереди команд, четыре 16-разрядных сегментных регистра, 16-разрядный регистр адреса команд, 16-разрядный регистр обмена (РО) и 16-разрядный сумматор адреса (СМА), управление шиной (УШ).
Устройство сопряжения готово выполнить цикл выборки слова и памяти всякий раз, когда в очереди освобождаются по меньшей мере два байта, УО извлекает из нее коды команд по мере необходимости. Очередь организована по принципу FIFO (first in – first out) - «первым пришел – первого обслужили», а шесть ее уровней позволяют удовлетворять запросы УО в кодах команд достаточно эффективно, сокращая тем самым до минимума затраты времени МП на ожидание выборки команд из памяти. Выполнение команд происходит в логической последовательности, предписанной программой, поскольку в очереди находятся те команды, которые хранились в ячейках памяти, непосредственно следующих за текущей командой. При передаче управления в другую ячейку памяти ход выполнения программы нарушается. Устройство сопряжения очищает регистры очереди, выбирает команду по адресу перехода, передает ее в УО и начинает новое заполнение этих регистров. При возврате из подпрограммы или из прерывания происходит восстановление очереди команд, адреса которых автоматически вычисляются в СМА. Если МП необходимо выполнить цикл чтения или записи, то выборка команд приостанавливается на время цикла.
Сегментные регистры соответствуют четырем сегментам памяти: данных – DS, стека – SS, кода – CS, и промежуточных данных – ES. В каждом из этих регистров хранятся 16 старших разрядов кода адреса соответствующего сегмента памяти; 20-разрядный физический адрес, позволяющий работать с памятью емкостью до 1 Мбайт, образуется в СМА путем сдвига базового адреса сегмента на четыре разряда влево и сложения его с 16-разрядным адресом смещения. Адрес смещения находится в одном из регистров указателей или индексов УО и позволяет адресовать полученные байты или слова в пределах 64 Кбайт выбранного сегмента. Если полученное в СМА значение превышает значение самого старшего адреса сегмента, то физический адрес вновь отсчитывается от начала сегмента до значения превышения. При вычислении физического адреса операнда в качестве базового адреса используется содержимое регистров сегмента данных и сегмента промежуточных данных, а при вычислении физического адреса команды – содержимое регистра сегмента кода. Регистр адреса команд (указатель команд) IP соответствует счетчику команд микропроцессора К580ВМ80А и указывает следующую команду, которая будет выполняться после текущей команды. Устройство сопряжения записывает в него из УО смещение следующей команды от начала текущего сегмента кода. Если содержимое регистра адреса команд засылается в стек, то происходит автоматическая настройка его на адрес следующей команды.
Устройство обработки предназначено для выполнения операций по обработке данных и состоит из устройства микропрограммного управления (УМУ), 16-разрядного АЛУ, восьми 16-разрядных регистров общего назначения (РОН) и регистра признаков (РП). Команды, выбранные УС из памяти и записанные в регистры очереди команд (РОК), по запросам от УО поступают в УМУ. Это устройство, содержащее память микрокоманд, декодирует команды и вырабатывает последовательность микрокоманд, управляющую процессом обработки. В АЛУ выполняются арифметические и логические операции над 8- и 16-разрядными числами с фиксированной запятой. Для ускорения внутренних пересылок данных все регистры и магистрали данных в УО имеют 16 разрядов, прямой связи УО с внешней системной магистралью нет и оно обменивается данными с УС через регистр обмена (РО).
Программно-доступными функциональными частями МП являются регистры общего назначения (для хранения операндов и результатов выполнения команд), сегментные (для хранения базовых адресов текущих сегментов памяти), адреса команд и признаков. Регистры общего назначения разбиты на две группы по четыре регистра в каждой: данных, индексные и указатели. Старшие и младшие восемь разрядов группы регистров данных могут быть адресованы раздельно. В этом случае они образуют набор из восьми 8-разрядных регистров. Регистры данных можно использовать без ограничения в большинстве арифметических и логических операций. Другая группа регистров, включающая в себя два указателя (базы и стека) и два индексных регистра (источника и приемника), также может участвовать в большинстве арифметических и логических операций. Кроме того, в некоторых командах предполагается неявное использование РОН по следующему назначению: умножение, деление и ввод/вывод слов (АХ); умножение, деление и ввод/вывод байтов (АН); перекодирование (ВХ); операции со строками, циклы (СХ); сдвиги и циклические сдвиги на различное число разрядов (СL); умножение и деление слов, неявный ввод/вывод (DX); операции со стеком (SP); операции со строками (SI, DI).
В регистре признаков используются только девять разрядов. Шесть из них служат для регистрации особенностей результата арифметических и логических операций. Микропроцессор имеет группу команд, которые позволяют изменять порядок выполнения программы в зависимости от состояния этих шести разрядов, т.е. от результата предыдущей операции. Признак вспомогательного переноса AF используется командами десятичной арифметики. При переносе из третьего разряда в четвертый либо займе из четвертого разряда в третий младшего байта 16-разрядного числа признак AF устанавливается в 1. Признак переноса CF используется командами сложения и вычитания многобайтных чисел. При переносе или замене из старшего разряда результата признак CF устанавливается в 1. Команды циклического сдвига могут изолировать сдвигаемый разряд в памяти или регистре путем размещения его в разряде признака переноса.
Команда INTO вырабатывает программное прерывание при наличии признака переполнения OF. Если OF равен 1, значит произошло арифметическое переполнение (т.е. утеряна значащая цифра) и разрядность результата превышает разрядность приемника результата. В МП двоичные отрицательные числа представляются в дополнительном коде. Состояние 0 или 1 признака знака SF говорит о том, что результат соответственно положительный или отрицательный. Признак нечетности PF используется для обнаружения сбоев при передаче данных (1 говорит о четности результата). Если признак нуля ZF равен 1, значит результат операции равен 0.