К1801ВМ1

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Микропроцессор К1801ВМ1 в керамическом корпусе (производитель - завод "Ангстрем")

К1801ВМ1 — однокристальный 16-разрядный микропроцессор (ОМП).

Предназначен для обработки цифровой информации в системах управления техпроцессами в контрольно — измерительной аппаратуре и системах связи, а также решения в составе ЭВМ инженерно — технических и экономических задач. Система команд К1801ВМ1 весьма близка к архитектуре PDP-11 и в большинстве случаев совместима с ней, но не является её точной копией.

Состав микросхемы[править | править код]

Снимок кристалла К1801ВМ1

В состав микросхемы входят следующие основные функциональные блоки:

  • 16-разрядный операционный блок, выполняющий операции формирования адресов команд и операндов, логические и арифметические, хранения операндов и результатов.
  • Блок микропрограммного управления, вырабатывающий последовательность микрокоманд на основе кода принятой команды. В нём закодирован полный набор микрокоманд для всех типов команд.
  • Блок прерываний, организующий приоритетную систему прерываний ОМП. Выполняет приём и предварительную обработку внешних и внутренних запросов на прерывание вычислительного процесса.
  • Интерфейсный блок, выполняющий обмены информацией между ОМП и устройствами, расположенными на системной магистрали. Осуществляет арбитраж при операциях прямого доступа к памяти. В интерфейсном блоке формируется последовательность управляющих сигналов системной магистрали.
  • Блок системной магистрали, связывающей внутреннюю магистраль ОМП с внешней. В нём производится управление усилителями приёма и выдачи информации на совмещённые выводы адресов и данных.
  • Схема тактирования, обеспечивающая синхронизацию внутренних блоков.

См. Раздел: Структурная схема

Основные параметры[править | править код]

Разрядность 16 двоичных разрядов
Представление чисел: дополнительный код с фиксированной запятой
Система команд безадресная, одноадресная, двухадресная
Виды адресации регистровая, косвенно—регистровая, автоникрементная, косвенно-автоникрементная, косвенно-автодекрементная, индексная, косвенно-индексная
Число регистров общего назначения 8
Число линий запросов на прерывания 4
Системная магистраль МПИ с совмещёнными шинами для передачи адреса и данных
Адресное пространство 64К байт
Тактовая частота до 5 МГц[1]
Максимальное быстродействие выполнения команд сложения в составе ЭВМ при регистровом методе адресации до 500 тыс. операций/с
Потребляемая мощность до 1,2 Вт

Назначение выводов[2][править | править код]

Вывод Обозначение Тип вывода Функциональное назначение выводов
1 CLC Вход Синхронизация
2 SACK Вход/выход Подтверждение захвата ПДП
3 DMGI Вход Вход предоставления ПДП
4 DMGO Выход Выход предоставления ПДП
5 DMR Вход Требование ПДП
6 SP Вход Недокументированная функция — внешний источник частоты для таймера[3][неавторитетный источник]. Соединить с +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 представляют собой единственную команду изменения флагов в слове состояния процессора, в двоичном виде записываемую как 101PNZVC, где 101xxxxx — код команды, P — состояние, в которое должны быть переведены флаги (0 или 1), и N,Z,V,C — маска, указывающая, какие из флагов должны быть затронуты операцией (1) или проигнорированы (0). Так, команда с кодом 263 (10110011) установит в 1 одновременно флаги C и V. Таким образом, команда с мнемоникой NOP и кодом 240 является частным случаем данной команды и содержит маску флагов, согласно которой ни один из них не должен измениться. Соответственно, к такому же эффекту приводит и команда с кодом 260 (10110000)
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) *060DD Циклический сдвиг вправо
ROL(B) *061DD Циклический сдвиг влево
ASR(B) *062DD Арифметический сдвиг вправо
ASL(B) *063DD Арифметический сдвиг влево
MARK 0064NN Восстановление указателя стека (УС)
SXT 0067DD Расширение знака
MTPS 1064DD Запись слова состояния процессора (ССП)
MFPS 1067DD Чтение ССП
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
  •  — Старший разряд кода этих команд является признаком байтовой команды. Если он равен 0, то команда производит операции с 16-разрядными словами, находящимися по чётным адресам. Если же этот разряд установлен в 1, то команда работает с байтами, расположенными по произвольному адресу, при этом младший байт 16-разрядного слова имеет чётный адрес, а старший — нечётный.

Методы адресации[править | править код]

Операнд задаётся значениями SS (source — источник) и DD (destination — приёмник), при этом первая цифра задаёт режим адресации, а вторая — номер регистра общего назначения процессора. Например, если SS = 27, то 2 — это метод адресации, а 7 — номер регистра.

Процессор имеет 8 шестнадцатиразрядных регистров: R0, R1, R2…R7. При этом R0-R5 используются для хранения операндов команд. Регистры R6 и R7 имеют дополнительное специальное назначение, но все операции с ними происходят так же, как и с любым другим регистром

Регистр R6 выполняет роль указателя стека (SP, Stack Pointer) и содержит адрес вершины стека. Запись в стек обычно производится с применением автодекрементного способа адресации, а чтение — автоинкрементного. При выполнении ряда операций (обработке аппаратных и программных прерываний, а также вызове подпрограмм и возврате из них) процессор изменяет значение этого регистра определённым образом.

Регистр 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

См. также[править | править код]

Примечания[править | править код]

  1. Дшхунян В.Л., Борщенко Ю.И., Науменко В.Р., Рыжов А.А., Романец В.Ю., Бурмистров И.А., Соловьев К.М. Однокристальные микропроцессоры комплектов БИС серии К1801 // "Микропроцессорные средства и системы" : журнал. — 1984. — № 4. — С. 12.
  2. [https://web.archive.org/web/20140416182158/http://vak.ru/doku.php/proj/bk/1801vm-series Архивная копия от 16 апреля 2014 на Wayback Machine proj: bk:1801vm-series [vak.ru]]
  3. Speccy — наш выбор! — Показать сообщение отдельно — Цифровая археология: 1801 и все-все-все. Дата обращения: 22 августа 2015. Архивировано 4 октября 2015 года.

Ссылки[править | править код]