Мой маленький триод: ламповая эвм

Устройство и принцип действия

Анод (в центре), катоды и подкатоды декатрона

Принцип действия двухимпульсного декатрона. N, N+1 — индикаторные катоды. Ф1, Ф2 — шины первого и второго подкатодов.

Наиболее проста конструкция двухимпульсного реверсивного декатрона. Вокруг единственного дискового анода расположены десять изолированных штырьков — индикаторные катоды. Между каждой парой соседних индикаторных катодов расположены два так называемых подкатода — первый и второй. Все первые и все вторые подкатоды электрически объединены двумя подкатодными шинами. Выходное напряжение снимается с резисторов, включенных между катодами и «землёй». Таким образом, 10-разрядный счётчик-коммутатор имеет 13 электрических выводов (анод, 10 катодов и 2 группы подкатодов). Существуют также декатроны-делители, в которых только один из десяти катодов имеет внешний вывод.

В состоянии покоя на подкатоды подаётся относительно небольшое положительное смещение относительно индикаторных катодов (30—40 вольт). При подаче на анод постоянного положительного напряжения, достаточного для возникновения тлеющего разряда (130—150 В для медленных декатронов, заполненных смесью инертных газов, или 420—450 В для быстродействующих декатронов, заполненных водородом), разряд возникает между анодом и одним из индикаторных катодов. Разряд не может перейти ни на подкатоды (из-за положительного смещения), ни на соседние индикаторные катоды (подкатоды образуют эффективный барьер, а анодное сопротивление ограничивает ток разряда). Для того, чтобы счёт начинался именно с нулевого катода, а не с произвольно загоревшегося, на нулевой катод подаётся сбрасывающий импульс напряжением 100—150 В.

Для перемещения разряда на соседний катод следует вначале подать короткий отрицательный импульс на первый подкатод. Амплитуда импульса должна быть достаточна, чтобы потенциал подкатода опустился ниже потенциала катодов. Как только смещение на подкатоде становится отрицательным, разряд перемещается с катода на подкатод. Следующий отрицательный импульс подаётся на второй подкатод с небольшим перекрытием относительно первого, в результате разряд перескакивает на второй подкатод. При снятии второго импульса потенциал второго подкатода возрастает и разряд перескакивает на ближайший индикаторный катод. Хотя все катоды находятся под одним и тем же напряжением относительно общего подкатода, загорается только тот катод, который ближе всего к ионизированной зоне.

После подачи десяти пар управляющих импульсов разряд описывает полный круг. Если конструкция подкатодов симметрична, то лампа может сдвигать разряд между катодами как по часовой стрелке, так и против неё — для этого достаточно подавать первый импульс на второй подкатод, а второй импульс — на первый подкатод.

Язык программирования brainfuck

Рис.2: Инструкции языка brainfuckреальных парного

  • С помощью инструкций < и > мы можем перемещаться по памяти данных влево или вправо, выбирая ту или иную ячейку данных. При этом память закольцована, т.е. ячейки с номерами 29999 и 0 являются соседними
  • Инструкциями + и мы можем изменять значение в текущей ячейке данных на единицу вверх или вниз в диапазоне от 0 до 255.
  • С помощью инструкций . и , — реализуется интерактивность. С их помощью можно напечатать в консоли значение текущей ячейки данных, или ввести символ с терминала в ОЗУ.
  • Последние две инструкции и — используются для организации циклов. Всё что внутри скобок является телом цикла. Допускается вложенность циклов. На границах цикла проверяется состояние текущей ячейки данных. Если оно не равно нулю — необходимо выполнить тело цикла.

Архитектура ламповой машины

запрещено использование кремниевых полупроводниковАрхитектура ядра лампового компьютера

  1. Instruction Ptr Block — Отвечает за выборку очередной инструкции из памяти программ.
  2. Address Ptr Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом
  3. Блок логики, контролирующий работу машины

ЗАПРОС(Request)ЗАНЯТ(Busy) ГОТОВ(Ready)

▍ Instruction Ptr Block

+-<>.,

  1. Мы на инструкции и текущая ячейка не равна нулю — нужно выполнить тело цикла.
  2. Мы на инструкции и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.
  3. Мы на инструкции и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.
  4. Мы на инструкции и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше
  • При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.
  • Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.

НеПоиск начала цикла слева. Пошагово передвигаемся назад, изменяя значение счётчика вложенностей циклов

▍ Data Ptr Block

><+

  1. После выполнения пяти инструкций > AP Counter увеличится на 5
  2. Перед выполнением инструкции + Проверка флага занятости покажет, что он не взят. Значит, перед операцией инкремента данных нужно загрузить эти данные в счётчик
  3. После выполнения пяти инструкций + Data Counter увеличится на 5
  4. Перед выполнением инструкции < Проверка флага занятости покажет, что он взят. Значит, необходимо сначала выгрузить данные из счётчика Data в ОЗУ
  5. После выполнения пяти инструкций < AP Counter уменьшится на 5 до начального значения

▍ Какова цена счётчиков?

Примерная компоновка плат будущей машины. Слева плата декатронного счётчика, справа — модуль ламповой логикиНУЛЬНеобходимый, но недостаточный запас сверхминиатюрных лампПримерная компоновка блока будущей машины

▍ Система команд

  • +-<>[]., — базовые 8 инструкций языка brainfuck.
  • {} — инструкции работы с циклами, но за условие берётся сигнал AP_Counter->isZero.
  • N(NOP) — пустая операция. Можно использовать для выравнивания кэш-линеек.
  • H(HALT) — операция останова машины. Добавляется либо в конце программы, либо в любом другом месте в роли точки останова — машину можно пустить дальше кнопкой на панели оператора. Необязательна, но желательна — без неё ЭВМ будет бежать по памяти программ вперёд до посинения.
  • RILA0 — инструкции сброса всей машины (Reset) или отдельных её счётчиков в ноль — соответственно, для IP, Loop, AP и Data Counter. Последнее можно использовать для быстрой очистки ячейки памяти вместо выполнения инструкций — это самая базовая оптимизация в большинстве программных эмуляторов.
  • GS(Get/Set) инструкция явно копирует данные из памяти в счётчик и обратно, не изменяя флаг занятости.
  • DB(Debug/Brainfuck). Эти две инструкции переключают наборы команд из-за того, что перечисленные выше инструкции суммарно не влезут в 4 бит… Всего их при таком подходе может быть 30 штук.

Декатрон

Декатрон А103 со стеклянным баллоном и без него. Хорошо видны центральный анод и 30 катодов вокруг негоПеремещение тлеющего разряда в декатронепроблемыВо-первыхСверхминиатюрный коммутаторный декатрон А110 рядом с октальным декатроном А101. Скорость счёта до 1МГцВо-вторыхВ итоге на разряд схемы считывания требуется 8 сдвоенных диодов и 2 сдвоенных триода.Схема включения декатрона и схемы шифратора из позиционного кода в двоично-десятичный. На сдвоенных диодах реализовано многовходовое ИЛИ и катодный повторитель в роли усилителя сигналаНа то, чтобы записать нужное число в декатрон потребуется 29 сдвоенных триодовОчень малая часть схемы записи. Слева схема двойного инвертирования со смещением логических уровней до -100 -200В, далее — 4-х входовое И с сигналом разрешения записиОн и так непрост и требует как минимум 6 сдвоенных диодов и 2 сдвоенных триода на каждый разряд для своей реализации.3d-модель экспериментальной декатронной ячейки

  • Плата конвертера двоично-десятичного кода в позиционный,
  • Плата усилителей сигнала,
  • Плата декатрона, со схемой считывания и переноса разряда,
  • Плата стабилизаторов напряжения,
  • Блок трансформаторов питания.

Тёплая ламповая миниатюризация наглядно. Слева направо — октальные лампы 6Н13С и 6П9, пальчиковая лампа 6Н3П, сверхминиатюрная лампа 6Н17Б и стержневая лампа 1Ж17Б. Тут не хватает нувистора, он в два раза короче сверхминиатюрных ламп

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Электронная память
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: