b3-34-small.jpg

Калькулятор "Электроника Б3-34"

Статья в Википедии.

Книжка: "Программируемые микрокалькуляторы. Устройство и пользование" / Я. К. Трохименко, В. П. Захаров, Н. П. Ромашко и др.; М.: Радио и связь, 1990.

Эмулятор от Евгения Троицкого.

Принципиальная схема, чертеж платы.

Доработка своими силами, от Алексея Полушкина.

Процессор

Обработка данных производится последовательным процессором, состоящим из микросхем:

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

Вход “гамма” сумматора:

  • 100: L
  • 010: ~L
  • 001: ~T

Благодаря объединению вариантов логическим побитовым “или” можно подать на вход “гамма” константу 1. Для этого используется селектор 110, соответствующий формуле L | ~L.

Выход R[i]:

  • 000: R[i] := R[i] (содержимое остаётся неизменным)
  • 001: R[i] := R[i+3]
  • 010: R[i] := Σ
  • 011: R[i] := S
  • 100: R[i] := R[i] | S | Σ
  • 101: R[i] := S | Σ
  • 110: R[i] := R[i] | S
  • 111: R[i] := R[i] | Σ

Выход R[i-1]:

  • 1: R[i-1] := Σ

Выход R[i-2]:

  • 1: R[i-2] := Σ

Выход L:

  • 1: L := П (признак переноса)

Выход M[i]:

  • 1: M[i] := S

Выход 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 бит).
 
proj/calculator/b3-34.txt · Последние изменения: 2007/11/20 11:37
 
Copyright (C) 1996-2009 Serge Vakulenko
serge@vak.ru