МПС

МП В1801ВМ1, его структура и система команд (Реферат)

 
Структура микропроцессора В1801ВМ1

Однокристальный 16-разрядный микропроцессор К1801ВМ1 предназначен для выполнения следующих функций:

1)      вычисление адресов операндов и команд;

2)      обмен информацией с другими устройствами; подключенными к системной магистрали;

3)      обработка операндов;

4)      обработка прерываний от клавиатуры и уст­ройств пользователя, подключенных к разъ­ему порта ввода-вывода.

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

Микропроцессор К1801ВМ1 работает в БК с так­товой частотой 3 МГц и содержит следующие основные функциональные блоки :

1)      16-разрядный операционный блок, служащий для формирования адресов команд и операндов, выполнения логических и арифметических операций, хранения операндов и результатов;

2)      блок микропрограммного управления, вырабатывающий  последовательность микрокоманд, Соответствующую коду принятой  машинной команды. Этот блок построен на базе программируемой логической матрицы (ПЛМ) содержащей 250 логических произведений;

3)      блок прерываний, организующий приоритетную систему прерываний (прием и предварительная обработка внешних и внутренних запросов на прерывание);

4)      интерфейсный блок, обеспечивающий об­мен информацией между микропроцессором ром и прочими устройствами, подключен­ными к системной магистрали. Этот же,  блок осуществляет арбитраж при операциях  прямого доступа к памяти, формирует

5)      последовательность. управляющих сигналов:

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

7)      схема тактирования, обеспечивающая синхронизацию работы внутренних блоков микропроцессора.

Система команд, реализованная в ПЛМ блока микропрограммного управления микропроцессора К1801BM1, совпадает с системой команд наиболее распространенных отечественных мини- и микро­-ЭВМ типа «Электроника 60» (ДВК-2. 3, 4 и т.п.) и практически аналогична принятой для компьютеров серии DEC. Предусмотрен также ряд специальных команд, предназначенных для работы с системным ПЗУ К1801РЕ1.

Сигналы AD0-AD15 представляют собой адреса и данные, передаваемые по совмещенной системной магистрали. Передача адресов и данных по одним и тем же линиям связи обеспечивается путем разделе­ния этих операций во времени.

Группа сигналов SYNC, DIN, DOUT, WTBT, RPLY служит для управления передачей информа­ции по системной магистрали:

1)      SYNC- вырабатывается процессором как указание, что адрес находится на выводах системной магистрали, и сохраняет активный уровень до окончания текущего цикла обмена информацией;

2)      RPLY- вырабатывается пассивным устройством в ответ на сигналы DIN и DOUT. При отсутствии сигнала RPLAY (т. е. когда выбранное устройство- регистр или ячейка памяти - не отвечает) процессор отсчитывает 64 такта синхрогенератора и затем идет прерывание по зависанию (вектор 4);

3)      DIN- предназначен для организации ввода данных (когда микропроцессор во время действия сигнала SYNC готов принять данные от пассивного устройства) и ввода адреса вектора прерывания (DIN вырабатывается совместно с сигналом IAK0 при пассивном уровне SYNC);

4)      DOUT- означает, что данные, выдаваемые микропроцессором, установлены на выводах системной магистрали;

5)      WTBT- указывает на работу с отдельными байтами и вырабатывается при обращении по нечетному адресу (операнд - старший байт) или при отработке байтовых команд.

Сигнал VIRQ является запросом на прерывание от внешнего устройства, информирующим микропроцессор о готовности устройства передавать адрес вектора прерывания. Если прерывание разрешено, то в ответ на этот сигнал процессор вырабатывает сигналы DIN и IAK0.

Сигналы IRQ2 и IRQ3 вызывают прерывания по фиксирован­ным векторам 1008 и 2708 соответственно (при пере­ходе из высокого уровня в низкий) .

Сигнал предоставления прерывания IAK0 процессор вырабатывает в ответ на внешний сигнал VIRQ. Сигнал IAK0 передается по очереди, начиная с устройства с максимальным приоритетом, ретранслируясь  от одного устройства к другому в порядке уменьшения приоритетов. Устройство с наибольшим приоритетом из числа выставивших запрос на прерывание (сигнал VIRQ) запрещает дальнейшее распространение сигнала IAK0, таким образом запрещая на время обработки данного прерывания запросы от устройств с тем же или более низким приоритетом. Однако устройства с более высоким приоритетом могут прервать обработку повторным («вложенным») прерыванием.

Сигнал DMR вырабатывается внешним активным устройством, требующим передачи ему системной магистрали (режим прямого доступа к памяти). В ответ па него процессор устанавливает сигнал DMGO, предоставляющий системную магистраль внешнему устройству с наивысшим приоритетом из числа запросивших прямой доступ (механизм реализации приоритетов - тот же, что и для прерываний). Это устройство прекращает дальнейшее распространение сигнала DMGO и выставляет сигнал SACK, означающий, что устройство прямого доступа к памяти (ПДП) может производить обмен данными, независимо от процессора используя стандартные циклы обращения к системной магистрали.

Низкий уровень сигнала BSY означает, что микропроцессор начинает обмен по магистрали (т.е. что она занята для других устройств). Переход сигнала из низкого уровня в высокий указывает на окончание обмена.

Сигнал аварии источника питания DCLO вызывает установку микропроцессора в исходное состояние и появление сигнала INIT. Сигнал аварии сетевого питания ACLO вызывает переход микропроцессора на обработку прерывания по сбою питании (высокий уровень свидетельствует о нормальном сетевом напряжении).

Сигнал SEL1 инициализирует обращение к регистру управления системными внешними устройствами, а сигнал SEL2 - к регистру порта ввода-вывода. Направление обмена данными между микропроцессором и регистрами определяется сигналами DIN или DOUT соответственно. Выставление сигнала RPLY от этих регистров не требуется. Длительности сигналов SEL1 и SEL2 совпадают с длительностью сигнала BSY.

Сигнал INIT является ответом микропроцессора на сигнал DCLO и используется, как правило, для установки периферийной части системы в исходное состояние.

 

Общие характеристики микропроцессора К1801ВМ1

Представление чисел

В дополнительном коде с фиксированной запятой

Виды команд

Безадресные, одноадресные, двухадресные

Виды адресации

Регистровая, регистровая косвенная, автоинкрементная, автоинкрементная косвенная, автодекрементная, автодекрементная косвенная, индексная, индексная косвенная

Количество регистров общего значения

8

Количество уровней прерывания

4

Тип системной магистрали

Q-bus (МПИ, ОСТ 11.305.903-80)

Адресное пространство, Кб

64

Тактовая частота, МГц

До 5

Максимальное быстродействие при выполнении регистровых операций, оп./с

До 500000

Потребляемая мощность, Вт

Не более 1

Напряжение питания, В

+5 ( ±5%)

Уровни сигналов, В: «лог.0»(активный уровень)

Менее 0,5

«лог.1»

Более 2,4

Нагрузочная способность по току, мА

3,2

Емкость нагрузки, пФ

До 100

Технология изготовления

N-МОП

Конструкция

Плананарный металлокерамический корпус с 42 выводами

 

Система команд микропроцессора К1801ВМ1

Данный процессор содержит 8 регистров общего назначения (РОН, обозначение в описании команд RN, N=0..7)один внутренний регистр состояния процессора PSW в котором задействовано 5 битов, каждый из которых имеет свои имена:

·      C-бит переполнения

·      T-бит трассировки

·      V-бит арифметического переполнения

·      Z-бит равенства 0

·      N-бит отрицательного числа

Два регистра из РОН (R6 и R7) отвечают за следующие функции:

·      R6 (SP)-Указатель стека

·      R7 (PC)-Счетчик команд.

При описании команд, используются следующие обозначения:

·      «SS» - поле адресации операнда-источника

·      «DD» - поле адресации операнда-приемника

·      «XXX»- смещение (-128,...,+128; 8 бит)

·      «N» - число, 3 бита

·      «NN» - число, 6 бит

·      «(N)» -содержимое ячейки или регистра N

·      «s» - операнд -источник

·      «d» - операнд -приемник

·      «r» - содержимое регистра

·      «<=» - становится равным

·      «X» - относительный адрес

·      «%» - определение регистра

·      «/\» - логическое И

·      «\/» - логическое ИЛИ

·      «\\» - исключающее ИЛИ

·      «|» - НЕ

Операции над разрядами PSW

·      «*» - установка/сброс по результату

·      «-» - состояние разряда не меняется

·      «0» - сброс

·      «1» - установка

 

Методы адресации

 

МЕТОД

 

 

R

 

 

 

 

 

 

 

Метод                                                                           мнемоника   

0. регистровая                                                         R         

1. косвенная регистровая                          ( R) или           @R

2. автоинкрементная                                  ( R)+                           

3. косв. автоинкрементная                        @( R)+

4. автодекрементная                                  -( R)

5. косв. автодекрементная             @-( R)

6. индексная                                                            X( R)              

7. косв. индексная                                      @X( R)

 

Команды работы с программами

000000   HALT  останов

000001   WAIT  пауза - ожидания прерывания

000002   RTI                  возврат из прерывания ( PC <=(SP)+)

000003   BPT                 отладочное прерывание (-(SP) <=PSW <=(16))

000004   IOT                  вызов системы ввода вывода ( -(SP) <=PC <= (22))

000005   RESET сброс магистрали и процессора

000006   RTT                 возврат, с запретом прерывания по Т-разряду до исполнения следующей команды ( PC<=(SP)+      PSW<=(SP)+)

0001DD JMP                 безусловный переход  ( PC <= d)

00020R  RTS                 возврат из подпрограммы ( PC <= R <=(SP)+

000240   NOP                нет операции

004RDD JSR                  вызов подпрограммы (-(SP) <= R <= PC <= d)

0064NN MARK            восстановление стека ( -(SP)<=PC +(2 x NN)        PC<=R5 <=(SP)+

077RNN            SOB                выч. 1 и ветвл., если (R#) не 0  ( R# <= R#-1          PC<=PC=( 2xNN))

104000-104277 EMT    вызов подпрограммы ПЗУ   (-(SP)<= PSW <= (32)           -(SP)<= PC <= (30))

1064SS  MTPS  запись PSW    ( PSW <= s)

1064Dd  MFPS  чтение PSW   ( d <= PSW)

Переходы по условию (ветвления)

Базовый КОП

±

XXX

15

 

 

 

 

 

 

8

7

 

 

 

 

 

 

0

 

Если условие выполняется, то (PC) <= (PC) + (2 x NN)

000400 + XXX  BR                   безусловный переход

001000 + XXX  BNE                нет равенства ( нулю)           Z=0

001400 + XXX  BEQ                равенство ( нулю)                 Z=1

102000 + XXX  BVC                арифм.переп. отсутствует     V=0

102400 + XXX  BVS                 произошло арифм.переп.      V=1

103000 + XXX  BCC                перенос отсутствует              C=0

103400 + XXX  BCS                 произошел перенос               С=1

Переход по знаку

100000 + XXX  BPL                 знак плюс                                           N=0    

100400 + XXX  BMI                 знак минус                             N=1

002000 + XXX  BGE                 больше или равно (нулю)     N\\V=0

002400 + XXX  BLT                 меньше (нуля)                                    N\\V=1

003000 + XXX  BGT                 больше (нуля)             Z\/(N\\V)=0

003400 + XXX  BLE                 меньше или равно(нулю) Z\/(N\\V)=1

Переход без знака

101000 + XXX  BHI                  больше                                                C\/Z=0

101400 + XXX  BLOS  меньше или равно                 C\/Z=1

103000 + XXX  BHIS               больше или равно                 C=0

103400 + XXX  BLO                меньше                                               C=1

 

Однооператорные команды

Код операции (КОП)

DD

15

 

 

 

 

 

 

 

 

6

5

 

 

 

 

0

Условные обозначения: «*»=0 операции над словами

1 операции над байтами

                                                               N Z C V

0003DD SWAB перестановка байтов                                     *  * 0  0

*050DD CLR(B)            очистка                       (d) <=0                                    0 1 0  0

*051DD COM(B)          побитная инверсия  (d) <= (|d)                     *  * 0  0

*052DD INC(B)            прибавление 1             (d) <=(d)+1               *  *  *-

*053DD DEC(B)           вычитание 1    (d) <=(d)+1               *  *  *-

*054DD NEG(B)           изменение знака  (d) <=-(d)              *  *  *  *

*055DD ADC(B)           прибавить перенос  (d)<=(d)+C       *  *  *  *

*056DD SBC(B)            вычесть перенос      (d)<=(d)-C        *  *  *  *

*057DD TST(B)            проверка                                 (d)<=(d)                       *  *  0 0

*060DD ROR(B)           циклич. сдвиг вправо    => C,d        *  *  *  *

*061DD ROL(B)           циклич. сдвиг влево    C,d <=                      *  *  *  *

*062DD ASR(B)            арифм. сдвиг вправо (d)<=(d)/2       *  *  *  *

*063DD ASL(B)            арифм. сдвиг влево   (d)<=(d)*2       *  *  *  *

*067DD SXT                 расширить знак  N=0 (d)<=0                        0 1 0-                                                                                          N=1 (d)<=177777 1 0 0-

 

Двухоператорные команды

КОП

SS

DD

15

 

 

12

11

 

 

 

 

6

5

 

 

 

 

0

                                                                                                                                 N S V C

*1SSDD MOV(B)          переслать                   (d)<=(s)                             *  *   0-

*2SSDD CMP(B)           сравнить                     (s)-(d)                    *  *   *  *

*3SSDD BIT(B) проверить разряды    (s)/\(d)        *  *  0 -

*4SSDD BIC(B) очистить разряды  (d)<=(|s)/\(d)    *  *  0 -

*5SSDD BIS(B) установить разряды (d)<=(s)\/(d)   *  *  0 -

06SSDD ADD                сложить                                  (d)<=(s)+(d)  *  *  *  *

074RSS  XOR                исключающее или    (s)<= (r)\\(s)  *  * 0 -

16SSDD SUB                 вычесть                                  (d)<=(d)-(s)   *  *  *  *

 

Операции с разрядами PSW

Базовый КОП =240

0/1

N

Z

V

C

15

 

 

 

 

 

 

6

7

 

 

4

3

2

1

0

Очистить

 

 

 

 

 

000241      CLC                    C

 

-

-

-

0

000242      CLV                   V

 

-

-

0

-

000244      CLZ                    Z

 

-

0

-

-

000250      CLN                   N

 

0

-

-

-

000257      CCC          N Z V C      

 

0

0

0

0

Установить

 

 

 

 

 

000261      SEC                   C

 

-

-

-

1

000262      SEV                   V

 

-

-

1

-

000264      SEZ                   Z

 

-

1

-

-

000270      SEN                  N

 

1

-

-

-

000277      SCC         N Z V C

 

1

1

1

1