Skip to the content
2 layers224.2 × 153.7 mmStand, the printed circuit board in 3D

DekatronPC - vacuum tube and cold-cathode tube based computer

Size
224.2 × 153.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
196
Nets
107
Pads
576
Tracks, vias
1,062, 14
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
16 Feb 2020
Updated
5 Nov 2026

Overview

Stand is an open-source printed circuit board by radiolok, from the radiolok/dekatronpc repository on GitHub. It is a 2-layer board of 224.2 × 153.7 mm with 196 parts on 107 nets, routed with 1,062 tracks and 14 vias.

It is built around the TL494, L7812ABV and LM317AT, with the LM337SP, HER108 and BC327 among its other parts. Its parts include 54 resistors, 48 diodes, 36 capacitors, 21 transistors and 15 connectors.

Main components

8

README

README.md

DekatronPC

Ламповый компьютер на декатронах А110 с системой команд Brainfuck. Счётчики машины — реверсивные декатроны: они умеют ровно то, что нужно Brainfuck, — прибавить и отнять единицу. Логика вокруг них — вакуумные лампы 6Н16Б и 6Ж2Б, без кремниевых полупроводников в вычислительном тракте.

A vacuum-tube Brainfuck computer built around A110 dekatron counting tubes. RTL in SystemVerilog, an FPGA emulator for blocks not yet built, requirements and microarchitecture docs in Russian.

Верхний уровень DekatronPC: пульт, терминал, автомат управления, линия выборки с памятью программ, линия данных с памятью данных, реле времени сброса

Машина

ПараметрЗначение
Архитектурагарвардская: отдельные память программ и память данных
Система командодин набор из 16 опкодов (ISA16): Brainfuck и шесть служебных, 4 бита на команду
Счётчик команд IP5 декатронов, 0…99999
Счётчик вложенности Loop2 декатрона, 0…99; переполнение — аппаратная ошибка, машина замирает до сброса
Указатель данных AP5 декатронов; в RTL счёт замыкается 0 ↔ 99999 (предел 29999 — открытый вопрос OPEN-001)
Значение ячейки Data3 декатрона, 0…255
Всего декатронов15
Память программ100 000 × 4 бит, верхняя декада 99990…99999 — ПЗУ загрузчика
Память данных100 000 ячеек × 10 бит (BCD: сотни, десятки, единицы); физически — ферритовые кубы КП128/17-М70, до их установки память играет эмулятор на ПЛИС
Тактовая частота100 кГц (сборка по умолчанию; статический анализ по SPICE-задержкам ламп даёт минимальный период ≈ 9 мкс; тайминги самого декатрона — OPEN-013/014)
Логика≈ 1070 ламп + 15 декатронов А110 по синтезу RTL в библиотеку спроектированных ламповых ячеек (среднее по четырём зёрнам ABC, ±10), без памяти; бюджет 1200, цель — меньше 1000

Адреса и данные хранятся в BCD прямо так, как их показывают декатроны: память адресуется тетрадами без перевода в двоичный код. Цикл просматривается самой линией выборки: при [ с нулевой ячейкой или ] с ненулевой IP проматывается до парной скобки, счётчик Loop считает вложенность.

Конфигурация счётчиков проверена на наборе из ста реальных программ с GitHub — Brainfuck-100 в сабмодуле bfutils: в 5 + 2 + 5 + 3 декатрона помещаются 97 программ из 100.

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

Один 4-битный набор, режимов нет (ISA16, doc/isa16.md). Коды 0x0…0xA — Brainfuck.

ОпкодСимволКоманда
0x0NNOP
0x1HHALT
0x2 / 0x3+ -INC / DEC ячейки
0x4 / 0x5> <AINC / ADEC
0x6 / 0x7[ ]цикл по нулю ячейки
0x8 / 0x9. ,COUT / CIN
0xA0[-] — ячейка ← 0 (ставит MemLock)
0xBS / ELD — начало загрузки; в потоке загрузки — её конец (EOT), в память не пишется
0xCACLRA — AP ← 0
0xDPMemLock — ставит флаг MemLock без загрузки: ячейка ← счётчик данных (копирование >P<)
0xE / 0xF{ }цикл по нулю AP (нужен загрузчику)

Промотка считает [ ] и { } вместе, поэтому вкладывать один вид в другой нельзя. Аппаратный сброс ставит IP = 99990 и запускает загрузчик 0<{0<} … LD из верхней декады памяти программ, защищённой от записи (очистка памяти данных и загрузка с адреса 0); программный сброс обнуляет все счётчики, в том числе IP. EOT запускает программный сброс. Полная семантика, MemLock и ленивое чтение памяти данных — в TRS.md, разделы 6–10.

Документы

ДокументЧто в нём
TRS.mdтребования: архитектура, ISA, память, декатроны, RTL, верификация, стенд, ламповые модули, открытые вопросы, чек-лист и план работ. Каждое требование имеет ID (REQ-*, OPEN-*) и статус
SCHEMES.mdструктурные схемы ядра в семи листах: декатрон, модуль, счётчик, IpLine, ApLine, MachineCtrl, верхний уровень
doc/dpcrun_golden_model.mdC++ golden model: семантика, расхождения RTL и TRS, найденные дефекты
tb/README.mdtestbench на cocotb и pyuvm
doc/isa16.mdсистема команд ISA16 и выбор между вариантами
doc/tube_count_below_1000.mdпуть подсчёта ламп: что сделано и что отвергнуто (ранее — doc/tube_count_reduction.md, doc/tube_count_1000.md)
sch/logic/README.mdбиблиотека ламповых ячеек: SPICE, схемы KiCad, страницы ячеек; метод — doc/cell_design_method.md
doc/vtube_sta.md, doc/synth_sim.mdстатический анализ времён и симуляция нетлиста с задержками ламп
doc/video_theses.mdчто сделано после опубликованных видео
rtl/DekatronPC/Dekatron/DekatronCounter.mdустройство декатронного счётчика
rtl/DekatronPC/emulator_inspection.mdразбор слоя эмулятора на ПЛИС
history.mdжурнал сессий работы над проектом

Репозиторий

ПутьСодержимое
rtl/DekatronPC/ядро: DekatronPC.sv, MachineCtrl.sv, IpLine.sv, ApLine.sv, IpMemory.sv, RAM.sv, верх для DE0-Nano De0Nano.sv
rtl/DekatronPC/Dekatron/декатрон: модель лампы DekatronTubeV2, модуль, счётчик, генератор фаз, формирователь импульсов
rtl/parameters.svразрядность счётчиков
rtl/Emulator/слой эмулятора на ПЛИС: клавиатура, индикатор МС6205, ИН-12, загрузчик прошивки
rtl/Logic/, rtl/Functions/примитивы и кодеры
sch/logic/ламповые логические ячейки, по папке на ячейку (схема, тестбенч, описание, картинки; перечень в sch/logic/README.md), и библиотека ячеек для синтеза vtube_cells.lib / vtube_cells.v / vtube_timing.json
rtl/programs/тестовые программы *.bfk и загрузчик
rtl/run/скрипты моделирования, синтеза и подсчёта ламп
rtl/quartus/проект Quartus
tb/testbench на cocotb и pyuvm
bfutils/сабмодуль radiolok/bfutils: компилятор, эмулятор, golden model dpcrun, набор Brainfuck-100
sch/схемы KiCad: эмулятор, экспериментальная декатронная ячейка, библиотеки ламп, ферритовая память (sch/fcore), блок питания стенда (sch/stand)
doc/отчёты и справочная литература
img/schemes/картинки для SCHEMES.md
web/симулятор в браузере: пульт, декатроны, загрузка по SOT/EOT, Brainfuck-100 (web/README.md)
tools/spice/ (расчёт ячеек), kicad/ (генераторы схем), digitize/ (оцифровка справочников), netview/ (схемы нетлиста), synth/, bf100/
tools/schemes/генератор SCHEMES.md и картинок схем: python3 tools/schemes/build.py

Блоки Dekatron.sv, DekatronPulseAllow, DekatronCarrySignal, InsnDecoder, BcdToBinEnc в тракте памяти и папка rtl/[DEPRECATED] — старый тракт, подлежит удалению (TRS, раздел 19.4).

Сборка и проверка

bash
git clone --recursive https://github.com/radiolok/dekatronpc.git
cd dekatronpc
git submodule update --init       # если клонировали без --recursive

docker build -t dekatron-pc .     # Verilator, Icarus, Yosys, cocotb — то же окружение, что в CI
# Quartus собирается отдельно: ./rtl/run/build_fpga.sh, CI — .github/workflows/fpga.yml
ЗадачаКоманда
один тест на Icaruscd tb && make test_compare SIM=icarus
регрессия cocotbcd tb && make regression
моделирование RTLcd rtl/run && ./run_tests.sh -t
то же с моделью задержек лампcd rtl/run && ./run_tests.sh -d
синтез в лампы (Yosys), подсчёт лампcd rtl/run && ./run_tests.sh -s
RTL-тесты на нетлисте (-t — с задержками ламп)cd rtl/run && ./synth_sim.sh [-t]

Полная сборка DekatronPC и эмулятора в Verilator и синтез — тяжёлые задачи; на слабой машине начинайте с одиночных целей на Icarus. CI: .github/workflows/ (docker-image.yml, fpga.yml, web.yml, pages.yml).

Состояние

Версия требований — TRS v0.53 (2026-11-04).

  • Готово в RTL: ISA16, модель декатрона и счётчик с завершением операции в такте приёма, IpLine / ApLine / MachineCtrl с предвыборкой и MemLock, банковая память, загрузчик в верхней декаде, терминал по UART.
  • Проверка: golden model bfutils/dpcrun совпадает с RTL шаг в шаг (pi.bfk — 221 386 шагов, вывод 3.141); cocotb, Icarus, Verilator, синтез и симуляция нетлиста (в том числе с задержками ламп из SPICE) идут в CI; есть симулятор в браузере.
  • Ламповые ячейки (NOR, NAND, AOI, защёлки, триггеры) рассчитаны в SPICE и нарисованы в KiCad; на железе подтверждены только отдельные измерения (ёмкость ламп, блок питания).
  • Открыто: OPEN-001 (предел AP), OPEN-007 (BELL), OPEN-011, OPEN-012, OPEN-013/014 (тайминги декатрона), OPEN-018. Следующие этапы: P&R-инструмент (REQ-PR-*), платы модуля декатрона, испытательный стенд, ферритовая память, первые ламповые модули.

Полный чек-лист — в TRS.md, разделы 19–22.

Parts

196
QtyValueFootprintReferences
241N4007Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD1, D2, D3, D12, D13, D14, D15, D23, D24, D25, D26, D34, D35, D36, D37, D39 +8
18HER108Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD6, D7, D10, D11, D17, D18, D19, D20, D21, D22, D28, D29, D30, D31, D32, D33 +2
141uFCapacitor_THT:C_Axial_L3.8mm_D2.6mm_P7.50mm_HorizontalC7, C8, C9, C12, C16, C17, C18, C20, C27, C30, C31, C33, C41, C43
91kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR11, R14, R20, R21, R26, R27, R37, R40, R41
610Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR18, R19, R28, R29, R42, R43
610kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR6, R10, R12, R15, R36, R38
618vDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD5, D16, D27, D38, D47, D48
6BC327PCM_Package_TO_SOT_THT_AKL:TO-92_Inline_Wide_CBEQ13, Q14, Q15, Q20, Q22, Q24
6BC337PCM_Package_TO_SOT_THT_AKL:TO-92_Inline_Wide_CBEQ16, Q17, Q18, Q19, Q21, Q23
6IRFBE30SPCM_Package_TO_SOT_SMD_AKL:TO-263-2Q4, Q5, Q6, Q7, Q8, Q9
5VoltageConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4, J5, J8, J14, J15
5VoutTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ2, J6, J9, J12, J13
3, ,
31Resistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P15.24mm_HorizontalR24, R35, R50
31.1kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR8, R34, R49
31.1nFCapacitor_THT:C_Axial_L3.8mm_D2.6mm_P7.50mm_HorizontalC5, C19, C32
3100Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR25, R32, R47
310kResistor_THT:R_Axial_DIN0918_L18.0mm_D9.0mm_P25.40mm_HorizontalR1, R2, R3
310nFCapacitor_THT:C_Rect_L7.0mm_W2.5mm_P5.00mmC15, C26, C39
310nF 630vCapacitor_THT:C_Rect_L11.5mm_W6.4mm_P10.00mm_MKTC3, C23, C36
310uF 160vCapacitor_THT:CP_Radial_D10.0mm_P3.50mmC2, C6, C29
3136V/80V/56V RMSTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ1, J3, J7
318kResistor_THT:R_Axial_DIN0516_L15.5mm_D5.0mm_P5.08mm_VerticalR9, R17, R46
32N3904PCM_Package_TO_SOT_THT_AKL:TO-92_Inline_Wide_EBCQ1, Q2, Q3
3330uF 315vCapacitor_THT:CP_Radial_D30.0mm_P10.00mm_SnapInC1, C4, C28
34.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR13, R16, R39
3470Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR51, R52, R53
347kResistor_THT:R_Axial_DIN0414_L11.9mm_D4.5mm_P15.24mm_HorizontalR22, R30, R44
382uF 315VCapacitor_THT:CP_Radial_D18.0mm_P7.50mmC14, C25, C38
391kResistor_THT:R_Axial_DIN0516_L15.5mm_D5.0mm_P5.08mm_VerticalR7, R33, R48
3L7812ABVPCM_Package_TO_SOT_THT_AKL:TO-220-3_VerticalU3, U4, U7
3PC817PCM_Package_DIP_AKL:DIP-4_W7.62mm_LongPadsOC1, OC2, OC3
3TL431LPPackage_TO_SOT_THT:TO-92_Inline_WideU2, U6, U9
3TL494Package_DIP:DIP-16_W7.62mmU1, U5, U8
3Transformer_SP_1SUser:EL33T1, T2, T3
210uF 50vCapacitor_THT:CP_Radial_D10.0mm_P3.50mmC44, C45
212kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR58, R60
2220Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR57, R62
22200uF 50vCapacitor_THT:CP_Radial_D18.0mm_P7.50mmC40, C42
224V RMSTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ10, J11
2680Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR59, R61
1LM317ATPCM_Package_TO_SOT_THT_AKL:TO-220-3_VerticalU10
1LM337SPPCM_Package_TO_SOT_THT_AKL:TO-220-3_VerticalU11
1~DekatronPC:Радиаторradiator1

The 195 most common of 196 parts.

More from radiolok/dekatronpc

2
  • 2 layersOpamp, the printed circuit board in 3D

    Opamp

    radiolok/dekatronpc

    DekatronPC - vacuum tube and cold-cathode tube based computer

    81 parts17
  • 2 layers83.8 × 114.3 mmStand v2, the printed circuit board in 3D

    Stand v2

    radiolok/dekatronpc

    DekatronPC - vacuum tube and cold-cathode tube based computer

    50 parts17

Similar boards

  • 2 layers100 × 100 mmBidirectional Power Converter 24V-12V with BMS, the printed circuit board in 3D

    Bidirectional Power Converter 24V-12V with BMS

    kwiecinski/BMS-and-offgrid-photovoltaic-management-system

    Project contains BMS for lead-acid batteries and ESP-based board used to pull information from EASUN offgrid inverter, energy meters and sensors.

    161 parts3MIT
  • 2 layers146.8 × 93.9 mmPower supply, the printed circuit board in 3D

    Power supply

    Ekstazaa/Symmetric-Linear-Power-Supply-30V

    Repositiry contains description of Linear power supply project. It is based on Trafo with own pcb board with rectifier, filtres and regulator LM3178 and LM337.

    47 parts1MIT
  • 2 layers213.6 × 127.5 mmZuendbox v3 32, the printed circuit board in 3D

    Zuendbox v3 32

    fixxl/el-fueradoro

    Open source ignition-system for audio-fireworks

    205 parts10
  • 2 layers120.1 × 120 mmMono amplifier, the printed circuit board in 3D

    Mono amplifier

    dario0603/AB-class-amplifier

    Design and simulation of a Class-AB audio power amplifier, focusing on output-stage linearity, crossover distortion reduction, and overcurrent protection.

    97 parts1
  • 2 layers50.5 × 42 mmAudio amplifier, the printed circuit board in 3D

    Audio amplifier

    DesignGraveyard/V007_LTspice_26_in_5_steps

    In this step-by-step tutorial, you will learn how to simulate electronic circuits in LTspice using a USB-powered audio amplifier as a practical example.

    39 parts
  • 2 layers160 × 95 mmPlaca Control Fuentes y Carga, the printed circuit board in 3D

    Placa Control Fuentes y Carga

    edgranzella/Placa-de-Corte-TX

    Circuito Impreso de la plaquetita de Corte TX que va apilada sobre el Arduino Nano de la placa Controladora de Fuentes y Carga.

    142 parts
  • 2 layers117.1 × 84.6 mmAmpli, the printed circuit board in 3D

    Ampli

    fpp3/ElectronicaAplicada2

    66 parts

Questions

How big is the Stand PCB?

It measures 224.2 × 153.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Stand use?

196 parts, built around the TL494, L7812ABV, LM317AT and LM337SP. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Stand KiCad files?

From the radiolok/dekatronpc repository on GitHub, at the commit this page was made from: the board is sch/stand/stand.kicad_pcb and its schematic sch/logic/A1OOI_N16J2/A1OOI_N16J2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Stand design in my own project?

Its repository states no licence, so its author keeps all rights: ask radiolok before reusing the design.