К1801ВМ1 — однокристальный 16-разрядный микропроцессор (ОМП).
Предназначен для обработки цифровой информации в системах управления техпроцессами в контрольно — измерительной аппаратуре и системах связи, а также решения в составе ЭВМ инженерно — технических и экономических задач. Архитектура К1801ВМ1 очень близка к архитектуре PDP-11 и в большинстве случаев совместима с ней, но не является её точной копией.
В состав микросхемы входят следующие основные функциональные блоки:
См. Раздел: Структурная схема
Разрядность: 16 двоичных разрядов
Представление чисел: Доп. код с фиксированной запятой
Система команд: Безадресная, Одноадресная, Двухадресная
Виды адресации: Регистровая, Косвенно — регистровая, Автоникрементная, Косвенно Автоникрементная, Косвенно автодекрементная, Индексная, Косвенно индексная
Число регистров общего назначения (РОН): 8
Число линий запросов на прерывания: 4
Системная магистраль: Типа МПИ с совмещёнными шинами для передачи адреса и данных
Адресное пространство: 64К байт
Тактовая частота: От 100 кГц до 5 МГц
Максимальное быстродействие выполнения команд сложения в составе ЭВМ при регистровом методе адресации: До 500 тыс. операций/с
Потребляемая мощность: До 1,2 Вт
Вывод | Обозначение | Тип вывода | Функциональное назначение выводов |
---|---|---|---|
1 | CLC | Вход | Синхронизация |
2 | SACK | Вход/выход | Подтверждение захвата ПДП |
3 | DMGI | Вход | Вход предоставления ПДП |
4 | DMGO | Выход | Выход предоставления ПДП |
5 | DMR | Вход | Требование ПДП |
6 | SP | Вход | Недокументированная функция — внешний источник частоты для таймера[2]. Соединить с +5V |
7 | SEL1 | Выход | Выборка первого регистра ввода-вывода |
8 | SEL2 | Выход | Выборка второго регистра ввода-вывода |
9-20, 22-25 | AD0-AD15 | Вход/Выход | Разряды адреса данных |
21 | GND | - | Общий |
26 | PA1 | Вход | Номер процессора |
27 | PA0 | Вход | Номер процессора |
28 | BSY | Выход | Сигнал занятости канала |
29 | DCLO | Вход | Авария источника питания |
30 | ACLO | Вход | Авария сетевого питания |
31 | IRQ1 | Вход | Первый запрос радиального прерывания «Пульт» |
32 | IRQ2 | Вход | Второй запрос радиального прерывания (вектор 100) |
33 | IRQ3 | Вход | Третий запрос радиального прерывания (вектор 270) |
34 | INIT | Вход/Выход | Установка исходного состояния |
35 | VIRQ | Вход | Требование векторного прерывания |
36 | IAKO | Выход | Предоставление прерывания |
37 | DOUT | Выход | Вывод данных (запись данных) |
38 | DIN | Выход | Ввод данных (чтение данных) |
39 | RPLY | Вход/Выход | Синхронизация пассивного устройства (ответ) |
40 | WTBT | Выход | Вывод байта (запись/байт) |
41 | SYNC | Выход | Синхронизация активного устройства (обмен) |
42 | Ucc | - | Напряжение Питания |
Этот раздел статьи ещё не написан. |
1 34 30 29 35 31 32 33 | | | | | | | | CLC| | ACLO| DCLO| VIRQ| IRQ1| IRQ2| IRQ3| | INIT| | | | | | | \|/ | \|/ \|/ \|/ \|/ \|/ \|/ | \|/ | | | | | | |___|___| /|\ |_|_____|_____|_____|_____|_____|_| |схема | | | Блок | |такти- | | | Прерываний | |рования| | |_______________|_________________| |___|___| | | | | /|\ /|\ | | | | | |___________________________________|____________________________________ | | | | | \|/ \|/ | \|/ | | | | | |________|_______|________| |________|________| | |______|_____| | Блок микропрограммного | | Операционный | | | | IAKO | управления | | Блок | | | -->>>--36 |___________|_____________| |________|________| | | | | | | | | SP \|/ \|/ | | --<<<--27 /|\ /|\ | | | | | | | | SP |____________|____________| | | -->>>--26 | | | | \|/ | | | RPLY | | | --<<<--39 |_____________|_____________| | | | | | | | | SYNC | Системная ----<<<---| | -->>>--41 | магистраль | | | | ----<<<--------- | DOUT |_|_______|_______|_______|_| | бЛОК -->>>--37 | | | | | управления | \|/ \|/ \|/ \|/ | системной | DIN /|\ /|\ /|\ /|\ | магистралью-->>>--38 | | | | | и | AD0| AD11| AD12| AD15| | регистрами | WTBT |-------| |-------| | ввода\ -->>>--40 | | | | | вывода | | | DMR | --<<<--5 | | | | SACK | --<<<--2 | | | | DMGO | -->>>--4 | | | | SP | --<<<--3 | | | | SEL1 | -->>>--7 | | | | SEL2 | -->>>--8 | | | | BSY | -->>>--28 |____________|
Код команды указан восьмеричным числом. Именно такой вид удобен для наглядного восприятия команд данного процессора.
Обозначение команды | Код команды | Команда |
---|---|---|
HALT | 000000 | Остановка |
WAIT | 000001 | Ожидание |
RTI | 000002 | Возврат из прерывания |
BPT | 000003 | Командное прерывание для отладки |
IOT | 000004 | Командное прерывание для ввода-вывода |
RESET | 000005 | Сброс внешних устройств |
RTT | 000006 | Возврат из прерывания |
JMP | 0001DD | Безусловный переход по абсолютному адресу, закодированному в DD. Например последовательность
000137 JMP @#7000 007000 указывает процессору взять адрес из ячейки, следующей за командой перехода, и перейти по указанному адресу (в данном случае это восьмеричный адрес 7000). |
RTS | 00020R | Возврат из подпрограммы |
JSR | 004RDD | Обращение к подпрограмме |
EMT | 104000-104377 | Командное прерывание для системных программ. Например, EMT 16 имеет код 104016. Для всех EMT-команд прерывание имеет один и тот же вектор, по адресу которого должна находиться подпрограмма, выделяющая номер (в нашем примере это 16) из команды и находящая по зашитой в ПЗУ таблице адрес подпрограммы, обслуживающей конкретную EMT-команду. |
TRAP | 104400-104777 | Командное прерывание. Например, TRAP 4 имеет код 104404. Для всех TRAP-команд прерывание имеет один и тот же вектор, по адресу которого должна находиться подпрограмма, выделяющая номер (в нашем примере это 4) из команды и находящая по зашитой в ПЗУ таблице адрес подпрограммы, обслуживающей конкретную TRAP-команду.
Никакой принципиальной разницы между EMT и TRAP нет. Принято команду ЕМТ использовать в системных программах (для компьютера БК - это монитор и система диагностики), а команду TRAP - в программах пользователя. |
NOP | 000240 | (10100000) Нет операции |
CLC | 000241 | (10100001) Очистка флага С (carry = перенос) |
CLV | 000242 | (10100010) Очистка флага V (oVerflow = переполнение) |
CLZ | 000244 | (10100100) Очистка флага Z (zero = ноль) |
CLN | 000250 | (10101000) Очистка флага N (negative = отрицательное значение) |
CCC | 000257 | (10101111) Очистка всех разрядов |
SEC | 000261 | (10110001) Установка флага C (carry = перенос) |
SEV | 000262 | (10110010) Установка флага V (oVerflow = переполнение) |
SEZ | 000264 | (10110100) Установка флага Z (zero = ноль) |
SEN | 000270 | (10111000) Установка флага N (negative = отрицательное значение) |
SCC | 000277 | (10111111) Установка всех разрядов |
Фактически вышеприведённые команды с кодами от 240 до 277 это одна команда изменения флагов в слове состояния процессора:
где: Например:
| ||
SWAB | 0003DD | Перестановка байтов местами в 16-разрядном слове, на которое указывает значение DD. |
BR | 000400 | Безусловный переход по смещению относительно ячейки, следующей за командой. Например, код 000400 означает переход на ячейку, следующую за командой BR, код 000401 — перепрыгнуть через одну 16-разрядную ячейку, 000402 — через две и т. д. Строго говоря, эту команду и все команды перехода по смещению, лучше рассматривать в двоичном или шестнадцатиричном виде. Тогда она будет иметь вид 1NNNNNNNN(bin) или 1NN(hex), где N — значение смещения. То есть команда записывается в старшем байте слова, а смещение — в младшем. Отрицательные значения смещения записываются в дополнительном коде. Это значит, что смещение −1 будет закодировано как FF (hex), и команда будет иметь вид 1FF (hex) или, что то же самое, 777 (oct). При коде 777 будет произведён переход на одну 16-разрядную ячейку назад, то есть на саму команду BR, и произойдёт зацикливание. При коде 776 — на 2 ячейки назад, 775 — на три. и т. д. |
BNE | 001000 | Переход по смещению, если не равно. Код команды — 2NN (hex) — см. описание команды BR. Переход срабатывает, если флаг Z процессора равен 0.
Адрес Команда Текст программы на ассемблере 1000: 020104 CMP R1,R4 1002: 001001 BNE MET 1004: 010102 MOV R1,R2 1006: 010103 MET: MOV R1,R3 Здесь команда сравнения CMP производит сравнение содержимого регистров общего назначения R1 и R4 и устанавливает флаги процессора C, V, Z, N согласно результатам сравнения, а команда BNE осуществляет переход на +1 шестнадцатиразрядное слово вперёд, если флаг Z=0. |
CLR(B) | *050DD | Очистка битов слова, на которое указывает DD. Команда 0050DD имеет мнемонику CLR, а 1050DD мнемонику CLRB. |
COM(B) | *051DD | Инвертирование битов слова, на которое указывает DD. |
INC(B) | *052DD | Прибавление 1 в слове, на которое указывает DD. |
DEC(B) | *053DD | Вычитание 1 из слова, на которое указывает DD. |
NEG(B) | *054DD | Изменение знака |
ADC(B) | *055DD | Прибавление переноса |
SBC(B) | *056DD | Вычитание переноса |
TST(B) | *057DD | Проверка слова и установка флагов процессора C, V, Z, N по результатам такой проверки. |
ROR(B) | *058DD | Циклический сдвиг вправо |
ROL(B) | *059DD | Циклический сдвиг влево |
ASR(B) | *060DD | Арифметический сдвиг вправо |
ASL(B) | *061DD | Арифметический сдвиг влево |
MARK | *062DD | Восстановление указателя стека (УС) |
SXT | *063DD | Расширение знака |
MTPS | 0061NN | Запись слова состояния процессора (ССП) |
MFPS | 0067DD | Чтение ССП |
MOV(B) | *1SSDD | Пересылка |
CMP(B) | *2SSDD | Сравнение |
BIT(B) | *3SSDD | Проверка разрядов |
BIC(B) | *4SSDD | Очистка разрядов |
BIS | *5SSDD | Логическое сложение |
XOR | 074RDD | Исключающее ИЛИ |
ADD | 06SSDD | Сложение |
SUB | 16SSDD | Вычитание |
BR | 0004XXX | Ветвление безусловное |
BNE | 0010XXX | Ветвление, если не равно 0 |
BEQ | 0014XXX | Ветвление, если равно 0 |
Операнд задаётся значениями SS (source — источник) и DD (destination — приёмник), при этом первая цифра задаёт режим адресации, а вторая — номер регистра общего назначения (РОН) у процессора. Например, если SS=27, то здесь 2 это метод адресации, а 7 — номер регистра.
Процессор имеет 8 шестнадцатиразрядных РОН: R0, R1, R2….R7. При этом R0-R5 используются для хранения операндов команд.
R6 является указателем стека (SP, Stack Pointer) и содержит адрес вершины стека. При каждой записи в стек, значение SP уменьшается, при затребовании значения из стека SP увеличивается. На использование SP рассчитаны специальные команды, такие как RTI.
Регистр R7 обозначается «PC» (Program Counter — счётчик команд) содержит адрес следующей команды, котроую должен выполнить процессор. Запись числа в регистр R7 равносильна переходу по указанному адресу.
Методы адресации:
Цифра | Метод | Пояснение | Примеры |
---|---|---|---|
0 | Регистровый | Операндом является содержимое регистра. Например, команда 10304 (1SSDD) копирует содержимое регистра R3 в регистр R4 и записывается как MOV R3, R4 . | 10102 MOV R1, R2 |
1 | Косвенно-регистровый | Регистр содержит адрес операнда | 005011 CLR (R1)
005011 CLR @R1 |
2 | Автоинкрементный | регистр содержит адрес операнда. Содержимое регистра после его использования в качестве адреса увеличивается на 2 (для команд над словами) или на 1 (для байтовых команд) | 005022 CLR (R2)+ |
3 | Косвенно-автоинкрементный | регистр содержит адрес адреса операнда. Содержимое регистра после его использования в качестве адреса увеличивается на 2 | 005032 CLR @(R2)+ |
4 | Автодекрементный | содержимое регистра уменьшается на 2 (для команд над словами) или на 1 (для байтовых команд) и используется как адрес операнда | 005042 CLR -(R2) |
5 | Косвенно-автодекрементный | содержимое регистра уменьшается на 2 и используется как адрес адреса операнда. | 005052 CLR @-(R2) |
6 | Индексный | содержимое регистра складывается с числом, записанным после команды, и полученная сумма используется в качестве адреса операнда | 005062 CLR 2(R2) 000002 |
7 | Косвенно-индексный | содержимое регистра складывается с числом, записанным после команды и полученная сумма используется в качестве адреса адреса операнда | 005072 CLR @22(R2) 000022 |
При адресации через регистр РС данные способы адресации называются специальным образом:
Способ адресации | Код | Пояснение | Примеры |
---|---|---|---|
непосредственный | 27 | Операнд хранится в слове, следующем за командой. Фактически это автоинкрементный способ адресации с использованием регистра PC, т.е. PC содержит адрес операнда, а это всегда адрес ячейки, следующей за командой. После происходит инкремент регистра на 2, что в случае использования PC равносильно "перепрыгиванию" на следующий адрес, через ячейку с данными, и число, хранящееся в ней, не исполняется как команда. | 012703 MOV #21, R3 000021 012700 MOV #IN,R0 xxxxxx IN: |
абсолютный | 37 | адрес операнда хранится в слове, следующем за командой | CLR @#7000 JMP @#BEN |
относительный | 67 | содержимое РС складывается со словом, записанным в памяти за командой, и полученная сумма используется как адрес операнда. | JMP TV CLR 5554 |
косвенно-относительный | 77 | содержимое РС складывается со словом, следующим за командой, полученная сумма используется как адрес адреса операнда. | CLR @MET INC @15342 |
В этой статье не хватает ссылок на источники информации. |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .