
К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 .