Сделай Сам Свою Работу на 5

СТРУКТУРА И СИСТЕМА КОМАНД ПРОЦЕССОРНОГО МОДУЛЯ К-580





Цель работы: изучение шинной структуры и программной организации микропроцессора серии К-580 и исследование механизма передачи информации при выполнении различных команд.

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

Структурная схема процессорного модуля приведена на рис 1. В Состав кристалла процессора ПР входит устройство синхронизации УС, устройство управления УУ, устройство обработки УО, блок регистров БР, буфер адреса БА и буфер данных БД.

В ходе выполнения программы процессор устанавливает адреса памяти на 16-разрядной шине адреса ША. По 8-разрядной двунаправленной шине данных из памяти принимаются коды команд и данные, по этой же шине данные записываются в память. Коды команд поступают по внутренней магистрали в регистр команд РК и дешифруются с помощью программируемой логической матрицы ПЛМ. Для каждой команды устройство управления УУ генерирует необходимую последовательность сигналов, управляющих обработкой и пересылкой информации в кристалле.

Устройство обработки УО с помощью АЛУ выполняет задаваемые кодом команды арифметические и логические операции. При этом один из операндов находится в аккумуляторе, а второй подается через внутреннюю магистраль из блока регистров БР или с шины данных ШД черед буфер данных БД. Результат операции фиксируется в аккумуляторе А, а признаки результата – в регистре F. Отдельные биты регистра F характеризуют результат операции следующим образом:



 

Разряд регистра F Обозначение признака Параметр результата, при котором признак = 1
S 7 (старший) разряд результата равен 1
Z Результат равен нулю
 
W Перенос из разряда 3 результата
 
Р Четный паритет (число единичных разрядов)
 
Y Перенос из 7 разряда результата

Примечание: биты 5 и 3 регистра F всегда равны нулю; бит 1 всегда равен 1.

16-разрядный счетчик команд PC находится в блоке регистров БР и после выборки каждого байта команды его значение увеличивается на 1. В случае программных переходов в PC заносится адрес перехода.

16-разрядный указатель стека SP используется для адресации находящейся в ОЗУ стековой области памяти. При записи информации в стек содержимое SP уменьшается на число переданных байт, а при выборке информации – увеличивается.



8-разрядные регистры H, L, D, F, B, C, W, Z используются для хранения промежуточных результатов. Заметим, что регистры W и Z, так же как регистр команд РК, не являются программно-управляемыми. Выдачей информации из регистров БР на шину адреса ША и обменом с шиной данных управляет УУ. В состав БР входит также не показанная на рис.1 схема инкремента – декремента, позволяющая увеличивать или уменьшать, содержимое регистров.

Рис. 2

 

Устройство синхронизации УС осуществляет тактирование работы кристалла и совместно с УУ – обработку и выдачу внешних управляющих сигналов.Функции управляющих сигналов рассмотрим на примере выполнения команды вывода OUT1CH, которая выдает байт информации из аккумулятора А в буферный регистр внешнего устройства с адресом 1С.Всечисла далее указываются в 16–ричном коде, при записи па ассемблере этот код заканчивается символом H (1СН).

Сама команда занимает в памяти 2 байта. В первом байте находится код команды D3, во втором – адрес внешнего устройства (1С). Будем для определенности полагать, что первый байт команды расположен в ячейке 007F, а содержимое аккумулятора перед выводом равно 3В.

Количество циклов, в течение которых выполняется каждая команда, равно числу необходимых обращений к памяти и/или внешним устройствам во время выполнения команды. Команда OUT выполняется в течение 3 циклов (рис. 2) – выборки кода операции, чтения адреса ВУ и вывода содержимого аккумулятора. Каждый цикл состоит из нескольких тактов. Тактирование осуществляется подачей внешних импульсов частотой 2 МГц на входы Ф1 и Ф2 с генератора тактовых импульсов ГТИ (рис. 1).



В первом такте Т1 каждого цикла на шине ША выставляется необходимый адрес, а на шину данных из УУ выдается байт состояния, который фиксируется во внешнем регистре состояния RS с помощью сигнала СХ. Байт состояния определяет тип выполняемого цикла и его отдельные биты S7 , ... , S0 имеет следующий смысл:

S0 = 1 цикл прерывания;

S1 = 0 выдача информации (в память или внешнее устройство);

S2 = 1 адрес стека (на ША выдано содержимое SP);

S3 = 1 цикл останова (после команды HLT);

S4 = 1 вывод информации на внешнее устройство;

S5 = 1 цикл выборки кода операции;

S6 = 1 ввод информации с внешнего устройства;

S7 = 1 чтение информации из памяти.

По схеме (рис.l) биты 4 и 6 регистра состояния RS используются для получения признака внешнего устройства – ПВУ/, а 0 бит – для получения сигнала подтверждения прерывания ПП/ (символ / отмечает, что сигнал активен по низкому уровню). В цикле выборки кода операции байт состояния равен А2 (активны биты 7 и 5).

Во втором такте Т2 процессор проверяет сигнал готовности ГОТ, который поступает с шины управления ШУ через ГТИ по цепи ГТ/– ГОТ. Если ГОТ = 0 (ГТ/=1), процессор переходит в фазу ожидания и выполнение программы приостанавливается до момента восстановления высокого уровня на входе ГОТ. В конце второго такта процессор выдает сигнал приема ПРМ или выдачи ВД/. Они определяют направление и момент передачи информации по шине данных (ШД). В цикле выборки кода операции выдается сигнал ПРМ, который используется для формирования системного сигнала прием ПР/ на шине управления. В цикле прерывания (S0 = 1) формируется системный сигнал подтверждения прерывания ПП/ – Sо ^ ПРМ. Если сигнал готовности ГОТ активен, процессор переходит к такту ТЗ, в котором завершается прием или выдача информации по шине данных.

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

Таким образом, в первом цикле – выборка кода операции – процессор считывает из PC и выдает на ША адрес первого байта команды 007F и принимает по ШД код операции DЗ (содержимое первого байта команды) в регистр команд РК. Во втором цикле – чтение памяти– процессор считывает из PC и выдает на ША адрес второго байта команды 0080 и принимает по ШД адрес внешнего устройства (ВУ) 1СH (содержимое второго байта команды, оно записывается в регистры W и Z). В третьем цикле –вывод информации на ВУ– процессор выдает на ША адрес ВУ (1С1С) из регистров W и Z, содержимое аккумулятора 3В по ШД выводится в буферный регистр ВУ. Так как адреса ВУ в отличие от адресов памяти восьмиразрядные, то при их выдаче по 16-разрядной шине адреса младший и старший байты дублируются.

В последнем такте последнего цикла каждой команды процессор анализирует состояние входа запроса прерывания ЗП (см. рис. 1), если триггер разрешения прерывания ТР установлен в 1. Состояние ТР выдается на выход разрешения прерывания РП. Если ТР = 1 и ЗП = 1, процессор переходит квыполнению цикла прерываний.

При нажатии кнопки сброса КС (рис. 1) на вход СБ через ГТИ подастся высокий логический уровень, что вызывает сброс счетчика команд PC. В результате при снятии сигнала сброса прoгpaмма всегда начинает выполняться с команды, записанной в нулевой ячейке памяти.

 



Рассмотрим теперь более подробно систему команд процессора K-580, которая приведена в табл.1. В графах 1 и 2 указывается содержание поля кода операции и поля операндов. При записи программ на ассемблере символы R1, R2, R в поле операндов заменяются обозначения регистров A, В, С, D, E, Н, L, а символ RP–обозначениями регистровых пар SP, В, D, Н (пары В-С, D-E, H-L обозначаются по старшему регистру).

Символы * и ** в поле операнда при записи на ассемблере заменяются однобайтными (*) и двухбайтными (**) выражениями, которые в простейшем случае могут быть числами или идентификаторами. В процессе трансляции определяются значения этих выражений и полученные числа размещаются во втором (*) или втором и третьем (**) байтах команды. Таким образом, символы * и ** в табл.1 являются признаком двухбайтной (*) или трехбайтной (* *) команды. Остальные команды – однобайтные. Код операции всегда находится в первом байте команды.

Символы && в поле кода операции (команды условной передачи управления) заменяются обозначениями условий, приведенными в нижней части табл.1.

В графе 3 табл.1 приводится краткое описание операции, в графе 4 отмечается формирование признаков, в графе 5 указывается количество тактов в каждом цикле команды. Формирование признаков в соответствии с обозначениями графы 4 поясняется в нижней части табл.1.

Команды, использующие символ М в поле операнда, работают с байтом памяти, адрес которого предварительно должен быть установлен в регистровой паре H-L (например, командой LXI Н, ADR ).

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

OUT * – информация из аккумулятора выводится на внешнее устройство *.

EI – разрешение прерывания.

DI – запрет прерывания.

HLT – останов до появления прерывания.

NOP – нет операции, переход к следующей команде.

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

MOV R1, R2 – информация из регистра R2 пересылается в регистр R1. Содержимое R2 не изменяется.

MOV R, M MOV M, R – пересылка из памяти в регистр и из регистра в память. Адрес памяти определяется содержимым регистровой пары H-L.

При записи команд вместо обозначения R1, R2, R следует использовать имена необходимых регистров А, В, С, D, Е, Н, L. Все возможные модификации команды MOV и их 16-ричные коды приведены в таблице 2.

MVI R, * MVI М, * – непосредственная засылка байта в регистр (R) или ячейку памяти (M). При записи программы символ * заменяется однобайтным выражением, которое размещается во втором байте команды. Кодировка первого байта приведена в таблице 2.

LXI RP, ** – непосредственная засылка двухбайтного числа ** в одну из регистровых пар В, D, Н, SP. Число ** при трансляции размещается во 2 и 3 байтах команды (младший байт числа – во втором байте команды). Кодировка первого байта приведена в таблице 2.

LDA ** – байт из памяти засылается в аккумулятор А. Вместо символов ** должен быть указан адрес памяти, он размешается во 2 и 3 байтах команды (младший байт адреса – во втором байте команды).

STA ** – содержимое аккумулятора загружается в память, адрес памяти указывается аналогично командеLDA.

LHLD ** – содержимое ячейки ** засылается в регистр L а следующей ячейки – в регистр Н. Вместо символов ** указывается адрес памяти, который размешается во 2 и 3 байтах команды.

SHLD ** – содержимое регистра L записывается по адресу **, а регистра H – в следующую ячейку.

LDAX RP – содержимое ячейки памяти, адрес которой находится в регистровой парс В-С или D-E (вместо RP подставляется B или D), записывается в аккумулятор.

STAX RP – содержимое аккумулятора записывается в ячейку памяти, адрес которой находится в регистровой паре В-С или D-E, коды команд LDAX и STAX приведены в таблице 2.

XCHG – обмен информацией между регистровыми парами H-L и D-E.

SPHL – содержимое пары H-L. засылается я указатель стека SP.

PCHL – содержимое пары H-L засылается в счетчик команд PC.

Арифметические команды.

При выполнении арифметических команд один из операндов находится в аккумуляторе, местонахождение другого указывается в команде; результат фиксируется в аккумуляторе, по значению результата формируются все признаки. При вычислении разности вычитаемое инвертируется и увеличивается на 1. Затем производится сложение с содержимым аккумулятора, однако, в отличие от обычного сложения признак переноса Y устанавливается инверсно (Y = 1 при отсутствии переноса из старшего (знакового) разряда, при возникновении переноса Y = 0).

ADD R ADD M ADI * – содержимое аккумулятора складывается с содержимым регистра (R). Ячейки памяти (М), адресуемой парой H-L, или со вторым байтом команды (символ * заменяется значением байта).

ADC R ADC M ACI * – эти команды действуют аналогично командам ADD, ADI, но при сложении учитывают значение бита переноса Y, установленное в регистре признаков до выполнения команды.

SUB R SUB M SUI * – из содержимого аккумулятора вычитается содержимое регистра (R), ячейки памяти (М) или непосредственно заданное значение байта (*).

SBB R SBB M SBI * – эти команды действуют аналогично командам SUB, SUI, но при вычитании учитывают ранее установленный бит переноса У.

Рассмотренные арифметические команды в процессе выполнения формируют все признаки в регистре признаков F.

INR R INR M – увеличение на 1 содержимого регистра или ячейки памяти.

DCR R DCR М – уменьшение на 1 содержимого регистра или ячейки памяти.

INR R(M) DCR R(M) – формируют все признаки кроме признака переноса Y.

INX RP DCX RP – увеличение (1NX) иди уменьшение (DCX) на 1 содержимого регистровой нары. Символы RP в поле операнда заменяются обозначениями регистровых пар В, D, Н, SP, Эти команды не формируют признаков (сохраняются ранее установленные значения).

DAD RP – содержимое указанной регистровой пары (RP=В, D, Н, SP) складывается с содержимым пары H-L. Результат сложения фиксируется в паре H-L. Формируется только бит переноса Y. Внимание! Команда DAD выполняется в течение трех машинных циклов, в течение двух последних машинных циклов на шинах ШД и ША информация не формируется.

DАА – корректируется находящийся в аккумуляторе результат сложения двух операндов, представленных а двоично-десятичном коде (каждый полубайт операндов не более 9). В результате коррекции сумма в аккумуляторе также преобразуется в двоично-десятичную форму.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.