Калькулятор "Электроника Б3-34"
Процессор
Обработка данных производится последовательным процессором, состоящим из микросхем:
К145ИК1302 - диспетчер, контроллер дисплея и клавиатуры
К145ИК1303 - арифметический процессор
К145ИР2, две штуки - регистры динамической памяти.
Процессор оперирует 4-битными словами. За каждый такт выполняется одна микрокоманда, обрабатывающая одно слово.
Логически процессор содержит:
регистр памяти M размером 42 слова (системная магистраль)
регистр данных R размером 42 слова
регистр стека ST размером 42 слова
регистр общего назначения S размером 1 слово
регистр общего назначения S1 размером 1 слово
бит переноса L
два бита внешних сигналов H и T
Сумматор имеет три входа “альфа”, “бета” и “гамма” и выполняет операцию:
Σ = альфа + бета + гамма
П = бит переноса
Микрокоманды
Код микрокоманды имеет 27 бит и состоит из 11 полей:
| 000000 | 6 бит | селектор входа “альфа” сумматора |
| 00000 | 5 бит | селектор входа “бета” сумматора |
| 000 | 3 бита | селектор входа “гамма” сумматора |
| 000 | 3 бита | селектор выхода R[i] |
| 0 | 1 бит | селектор выхода R[i-1] |
| 0 | 1 бит | селектор выхода R[i-2] |
| 0 | 1 бит | селектор выхода L |
| 0 | 1 бит | селектор выхода M[i] |
| 00 | 2 бита | селектор выхода S |
| 00 | 2 бита | селектор выхода S1 |
| 00 | 2 бита | управление регистром ST |
Если установлены несколько битов селектора, варианты объединяются операцией логического побитового “или”.
Вход “альфа” сумматора имеет шесть вариантов:
100000: R[i]
010000: M[i]
001000: ST[i]
000100: ~R[i]
000010: 0xA * ~L
000001: S
Вход “бета” сумматора:
10000: S
01000: ~S
00100: S1
00010: константа 6
00001: константа 1
Вход “гамма” сумматора:
Благодаря объединению вариантов логическим побитовым “или” можно подать на вход “гамма” константу 1. Для этого используется селектор 110, соответствующий формуле L | ~L.
Выход R[i]:
Выход R[i-1]:
Выход R[i-2]:
Выход L:
Выход M[i]:
Выход S:
01: S := S1
10: S := Σ
11: S := S1 | Σ
Выход S1:
01: S1 := Σ
10: S1 := S1 | H
11: S1 := S1 | H | Σ
Управление регистром ST:
01: ST[i+2] := ST[i+1]; ST[i+1] := ST[i]; ST[i] := Σ
10: X := ST[i]; ST[i] := ST[i+1]; ST[i+1] := ST[i+2]; ST[i+2] := X;
11: X := ST[i]; Y := ST[i+1]; Z := ST[i+2]; ST[i] := Σ | Y; ST[i+1] := X | Z; ST[i+2] := Y | X;
Адреса микрокоманд
В постоянной памяти процессора хранится массив из 68 возможных микрокоманд. Для выбора нужного действия используется 6-битовый адрес микрокоманды (АМК). Микрокоманды с адресами 60...63 называются условными: на их выполнение влияет признак L процессора, в зависимости от которого выполняется одна из двух команд.
ИК1302
Микросхема К145ИК1302 (К745ИК1302) обеспечивает пересылку данных, управление клавиатурой и индикатором.
| Адрес МК | Код микрокоманды | Действие | Перенос |
| 0×00 | ~~~~~~ ~~~~~ ~~~ ~~~ ~ ~ ~ ~ ~~ ~~ ~~ | Нет операции |
| 0×01 | 1~~~~~ ~~~~~ ~~~ ~~~ ~ ~ ~ ~ 1~ ~~ ~~ | S := R[i] |
| 0×02 | ~~~~~1 ~~~~1 ~~~ ~~~ ~ ~ 1 ~ 1~ ~~ ~~ | S := S + 1 | L := П |
| 0×03 | ~~~~~1 ~~~~~ ~~~ ~~~ 1 ~ ~ ~ ~~ ~~ ~~ | R[i-1] := S |
| 0×04 | (и так далее) | S := 0 | L := 1 |
| 0×05 | (и так далее) | R[i] + S + 1 | L := П |
| 0×06 | (и так далее) | S := R[i] + 0xF | L := П |
| 0×07 | (и так далее) | S := 2 |
| 0×08 | (и так далее) | Σ := R[i]; R[i] := S; S := Σ |
| 0×09 | (и так далее) | S := 6 |
| 0x0a | (и так далее) | S := S + 0xF | L := П |
| 0x0b | (и так далее) | S := S + 8 | L := П |
| 0x0c | (и так далее) | S := S + 1 |
| 0x0d | (и так далее) | R[i-2] := S |
| 0x0e | (и так далее) | S := 0xF |
| 0x0f | (и так далее) | Σ := S; S := S1; S1 := Σ |
| 0×10 | (и так далее) | S := R[i] + S |
| 0×11 | (и так далее) | R[i] := R[i] + 1 | L := П |
| 0×12 | (и так далее) | R[i-1] := 0 |
| 0×13 | (и так далее) | R[i-1] := R[i]; R[i] := S |
| 0×14 | (и так далее) | S := R[i]; R[i] := R[i+3] |
| 0×15 | (и так далее) | S := R[i] + S + 1 | L := П |
| 0×16 | (и так далее) | S := R[i] + S + L | L := П |
| 0×17 | (и так далее) | S := R[i] + 0xF + L | L := П |
| 0×18 | (и так далее) | R[i-1] := S + 0xA * ~L |
| 0×19 | (и так далее) | S := R[i] + 6 |
| 0x1a | (и так далее) | S := R[i] + S | L := П |
| 0x1b | (и так далее) | R[i-1] := R[i] |
| 0x1c | (и так далее) | S := R[i] + 1 |
| 0x1d | (и так далее) | S1 := 0 |
| 0x1e | (и так далее) | S := ~S |
| 0x1f | (и так далее) | S1 := R[i] + 1 | L := П |
| 0×20 | (и так далее) | R[i] := R[i] + 8 |
| 0×21 | (и так далее) | S := ~R[i] |
| 0×22 | (и так далее) | S := R[i] + S | L := П |
| 0×23 | (и так далее) | R[i] := S1 |
| 0×24 | (и так далее) | S := 4 |
| 0×25 | (и так далее) | S := (~S | S1) + L |
| 0×26 | (и так далее) | S := S1+L; S1 := S |
| 0×27 | (и так далее) | S1 := ~R[i] + S1 |
| 0×28 | (и так далее) | R[i-2] := R[i] |
| 0×29 | (и так далее) | S := M[i] + S | L := П |
| 0x2a | (и так далее) | S := ~R[i] + L | L := П |
| 0x2b | (и так далее) | S1 := R[i] |
| 0x2c | (и так далее) | S := ~R[i] + 1 | L := П |
| 0x2d | (и так далее) | M[i] := S; S := R[i] |
| 0x2e | (и так далее) | R[i] := ST[i] |
| 0x2f | (и так далее) | R[i-2] := S+1 |
| 0×30 | (и так далее) | S := M[i] |
| 0×31 | (и так далее) | R[i-1] := M[i]; M[i] := S |
| 0×32 | (и так далее) | R[i] := R[i+3] |
| 0×33 | (и так далее) | S := S + 0xA * ~L | L := П |
| 0×34 | (и так далее) | S := S + S1 | L := П |
| 0×35 | (и так далее) | S := R[i] + L |
| 0×36 | (и так далее) | S1 := S1 + 1 | L := П |
| 0×37 | (и так далее) | S := R[i]; ST[i] := S |
| 0×38 | (и так далее) | R[i] := R[i] + 1 + L |
| 0×39 | (и так далее) | S := R[i]; S1 := S; R[i] := R[i+3] |
| 0x3a | (и так далее) | S := S + ~T | L := П |
| 0x3b | (и так далее) | S := R[i] + 1; ST[i] := S |
| 0x3c и L==1 | (и так далее) | S := R[i] + 1; R[i-1] := S |
| 0x3c и L==0 | (и так далее) | R[i-1] := S |
| 0x3d и L==1 | (и так далее) | S := R[i] + S + 1; R[i] := S |
| 0x3d и L==0 | (и так далее) | S := R[i] + 1; R[i] := S |
| 0x3e и L==1 | (и так далее) | S := 0xF; R[i] := S |
| 0x3e и L==0 | (и так далее) | S := 0xF |
| 0x3f и L==1 | (и так далее) | S := R[i] + S | L := П |
| 0x3f и L==0 | (и так далее) | S := R[i] |
ИК1303
Микросхема К145ИК1303 (К745ИК1303) обеспечивает интерпретацию операторов прикладной программы.
| Адрес МК | Код микрокоманды | Действие | Перенос |
| 0×00 | ~~~~~~ ~~~~~ ~~~ ~~~ ~ ~ ~ ~ ~~ ~~ ~~ | Нет операции |
| 0×01 | 1~~~~~ ~~~~~ ~~~ ~~~ ~ ~ ~ ~ 1~ ~~ ~~ | S := R[i] |
| 0×02 | ~~~~~1 ~~~~~ ~~~ ~~~ 1 ~ ~ ~ ~~ ~~ ~~ | R[i-1] := S |
| | (и так далее) | (недоделано) |
Синхропрограммы
Синхропрограмма представляет собой последовательность из 9 адресов микрокоманд. Память синхропрограмм (ПСП) содержит 128 таких последовательностей, адресуемых 7-битным адресом синхропрограммы (АСП).
Например, для ИК1302 синхропрограмма с АСП=5f выглядит как { 3b 3c 2f 37 3c 01 00 00 00 }.
Память команд
Память основной программы процессора содержит 256 команд. Каждая команда состоит из четырех полей:
Адрес синхропрограммы для обработки мантиссы (7 бит). Выполняется трижды на тактах 0...26.
Адрес синхропрограммы для обработки порядка (7 бит). Выполняется на тактах 27...35.
Адрес синхропрограммы для вычисления адреса следующей команды (8 бит). Выполняется на тактах 36...41.
Признак разрешения модификации регистра R[i] на тактах 0...35 (1 бит).