

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://dekatronpc.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Radiolok</id>
	<title>DekatronPC - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://dekatronpc.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Radiolok"/>
	<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Radiolok"/>
	<updated>2026-04-29T15:02:12Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.36.0</generator>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1689</id>
		<title>Категория:Проекты</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1689"/>
		<updated>2025-10-09T18:40:00Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: Обновление данных по проектам&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание == &lt;br /&gt;
&lt;br /&gt;
Представлен неполный список моих проектов, различной степени реализации: от идеи, до завершенного&lt;br /&gt;
&lt;br /&gt;
Каждый проект имеет свой номер формата ГГГГХХХХ, где:&lt;br /&gt;
&lt;br /&gt;
* ГГГГ - год создания проекта, &lt;br /&gt;
* ХХХХ - сквозной порядковый номер&lt;br /&gt;
&lt;br /&gt;
Под каждым проектом может скрываться:&lt;br /&gt;
&lt;br /&gt;
* Интересная идея, которую можно бы было реализовать&lt;br /&gt;
* Создание некоторого устройства, которое было начало хоть в какой-то степени - разработан дизайн-проект, имеются комплектующие и т.п.&lt;br /&gt;
* Завершенные коммерческие заказы на изготовление печатной платы, электронного устройства и т.п. В общей сводной таблице практически не представлены.&lt;br /&gt;
&lt;br /&gt;
=== Идеи вне времени и пространства ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Эти идеи возникают спонтанно в процессе общения с людьми. Часть из них вряд ли когда-то будут мной воссозданы, но их обязательно нужно зафиксировать. Другая часть - интересные внешние проекты, которые захотелось повторить, но под полноценную страничку они еще не готовы &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Семисегментный индикатор, где в качестве сегментов выступают 500Вт керамические стержни для гриля. На этом 3,5кВт-ном дисплее вполне можно будет жарить шашлык. А отображаемая цифра будет показывать сколько времени осталось до готовности.&lt;br /&gt;
* Тетрис, где в качестве элементов поля 20*10 используются миниатюрные лампы накаливания&lt;br /&gt;
* Осциллограф с механической разверткой на базе диска Нипкова (http://rfanat.ru/s3/izm-mk.html)&lt;br /&gt;
* Версия стабилизатора частоты вращения проигрывателя [[Стабилизатор_ВЕГА-109Стерео|ВЕГА 109 Стерео]] на лампах&lt;br /&gt;
* Индукционная паяльная станция с жалом на эффекте Кюри. Можно купить за 60к, а можно собрать ([https://habr.com/ru/post/412607/ Статья]) ([https://github.com/SergeyMax/SolderingStation github])&lt;br /&gt;
* Умное зеркало (большой дисплей за полупрозрачным зеркалом) (https://magicmirror.builders/ https://www.buildxyz.xyz/magicmirror-builders-guide/)&lt;br /&gt;
* Портативный измеритель АЧХ (http://www.sdr-deluxe.com/publ/nwt200_achkh_metr_i_ne_tolko/1-1-0-13)&lt;br /&gt;
* Крутой 3D-печатный 6-осевой риг для камеры. https://www.youtube.com/watch?v=WNtC9EkYCYQ https://www.thingiverse.com/thing:4652484 - и еще один https://www.youtube.com/watch?v=1FfB7cLkUyQ&amp;amp;ab_channel=isaac879&amp;lt;nowiki/&amp;gt;https://github.com/isaac879/Pan-Tilt-Mount&lt;br /&gt;
&lt;br /&gt;
=== 2023 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
|20230333&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230333-diy-self-made-ic-chip/ OP]&lt;br /&gt;
|[[DIY-IC]]&lt;br /&gt;
|Изготовление самодельных микросхем в гараже&lt;br /&gt;
|Идет концептуальная игра по установке напыления и фотолитографу&lt;br /&gt;
|-&lt;br /&gt;
| 20230332 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230332-ozhivlieniie-scara-robota-srx-611 OP]||[[SRX-611]] || Оживление Scara робота Sony SRX-611 || В расписании на Q4,25-Q2,26&lt;br /&gt;
|-&lt;br /&gt;
| 20230331 &lt;br /&gt;
| || [[Neon]] || Изготовление неоновых вывесок и других газонаполненных и вакуумных приборов || Максимум - отдельные попытки сделать неоновую вывеску&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20230330&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Glass Lathe|&amp;lt;s&amp;gt;Glass Lathe&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Стеклодувный станок&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отказ от стеклодувной мастерской в пользу самодельных микросхем&amp;lt;/s&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2022 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20220328&amp;lt;/s&amp;gt;&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20220328-knizhnyi-skanier/ &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[Книжный сканер|&amp;lt;s&amp;gt;Книжный сканер&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Книжный разворотный сканер&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;ОТказано. Неактуально&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20220329 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20220329-hitachi-sp14q002/ OP]|| [[Hitachi SP14Q002]] || Оживление индикатора Hitachi SP14Q002 || У индикатора нет фрейм-буффера, ему требуется доп. плата для выдачи картинки. Микросхема есть, заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2021 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20210323&amp;lt;/s&amp;gt;&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210323-16-kanalnyi-draivier-iel-na-optosimistorakh/ &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[Драйвер ИЭЛ|&amp;lt;s&amp;gt;Драйвер ИЭЛ&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Универсальный драйвер для Электролюминесцентных индикаторов&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Версия на оптосимисторах в эксплуатации&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20210324&amp;lt;/s&amp;gt;&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210324-mietieostantsiia-na-blinkiernom-tablo/ &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[Метеостанция|&amp;lt;s&amp;gt;Метеостанция&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Метеостанция на RPi3B и флажковом табло&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Проект завершен&amp;lt;/s&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2020 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200322&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Аналоговое телевещание|&amp;lt;s&amp;gt;Аналоговое телевещание&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект телевизионной вещательной станции на частоте 77,25МГц на базе лампового генератора с видиконной камерой [[КТП-82]]&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Идея и нафиг ее&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200321&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Перцептрон|&amp;lt;s&amp;gt;Перцептрон&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект электронно-вакуумного перцептрона с механизированными весами&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Перцептрон будем собирать на пневмонике&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20200311 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200311-chasy-na-in18-i-poliatronakh-a201/ OP]|| [[Часы на А201]] || Часы на полиатронах [[А201]] и Индикаторах [[ИН18]]|| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200310&amp;lt;/s&amp;gt;&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200310-gip-over-10000-na-stieroidakh &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[ГИП over 10000 на стероидах|&amp;lt;s&amp;gt;ГИП over 10000 на стероидах&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Огромная индикаторная панель 256*192 точки на базе 48 плиток [[ИГПП-32/32]] и [[ИГПП2-32/32]]&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отказ от проекта ввиду его чрезмерных ресурсов.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20200309 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200309-eliektroliuminiestsientnyie-chasy OP]|| [[Электролюминесцентные часы]] || Часы на электролюминесцентных индикаторах [[ЖВ3.012.000]] и [[И-205]] || &lt;br /&gt;
|-&lt;br /&gt;
| 20200308 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/eliektroliuminiestsientnyie-indikatory OP]|| [[Электролюминесцентные индикаторы]] || Создание самодельных электролюминесцентных индикаторов || Первая фаза завершена&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200307&amp;lt;/s&amp;gt;&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200307-10gb-lan/ &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[10GB_LAN|&amp;lt;s&amp;gt;10GB_LAN&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Апгрейд домашней сети до 10Гбит&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;[Завершен] 10Гбит достигнуты&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200306&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Паяльная печь|&amp;lt;s&amp;gt;Паяльная печь&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Сборка самодельной печаи для пайки SMD на базе бытовой мини-печи и программируемого термоконтроллера&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;[Завершен] В эксплуатации&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200305&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Тестер У3-Л (Черный ящик)|&amp;lt;s&amp;gt;Тестер У3-Л (Черный ящик)&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект по оживлению черного ящика&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Не будет такого&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200304&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Драйвер ЭЛТ|&amp;lt;s&amp;gt;Драйвер ЭЛТ&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Универсальная плата для запуска осциллографических ЭЛТ&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;концепт&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200303&amp;lt;/s&amp;gt;&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200303-gip10000-na-stieroidakh &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[ГИП10000 на стероидах|&amp;lt;s&amp;gt;ГИП10000 на стероидах&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Драйвер газоразрядного индикатора&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;[Завершен] Проект завершен, да здравствует проект!&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200302&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Тестер конденсаторов|&amp;lt;s&amp;gt;Тестер конденсаторов&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Тестер токов утечки конденсаторов по мотивам измерителя Mr Carlson&amp;#039;s Lab&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Приобретены комплектующие&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20200301 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/ispytatiel-eliektronnykh-lamp OP]|| [[Испытатель электронных ламп]] || Проект современного портативного испытателя вакуумных и газоразряных ламп || Сборка прототипа&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200300&amp;lt;/s&amp;gt;&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200300-proghramma-upravlieniia-ms6205/ &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[МС6205|&amp;lt;s&amp;gt;МС6205&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Программный драйвер для индикатора МС6205&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;[Завершен] Простейший драйвер запилен за 10 минут в Arduino&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200299&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Насосная станция|&amp;lt;s&amp;gt;Насосная станция&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Шкаф управления насосной станцией для дачного участка&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;[Завершен] Введен в эксплуатацию&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200298&amp;lt;/s&amp;gt;&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200298-dekatronpc-emuliator &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[DekatronPC эмулятор|&amp;lt;s&amp;gt;DekatronPC эмулятор&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Verilog-модель лампового компьютера на ПЛИС&amp;lt;/s&amp;gt;||  &amp;lt;s&amp;gt;В работе&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20200297 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200297-lampovaia-loghika OP]|| [[Ламповая логика]] || Проектирование быстродействующих ламповых логических элементов || Ведутся эксперименты&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20200296&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[СИ-1|&amp;lt;s&amp;gt;Ремонт СИ-1&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Восстановление осциллографа СИ-1&amp;lt;/s&amp;gt;||&amp;lt;s&amp;gt;Избавился от прибора&amp;lt;/s&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2019 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190295&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Электроника С5-12|&amp;lt;s&amp;gt;Электроника С5-12&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект по оживлению одноплатной многокристальной ЭВМ&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен по причине невозможности найти другие части ЭВМ&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190292&amp;lt;/s&amp;gt;&lt;br /&gt;
| || &amp;lt;s&amp;gt;[[PSU2-170]]&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Проект четырехканального источника питания 0-300В, 0-300мА&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190291&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Светодиодная панель 8х8|&amp;lt;s&amp;gt;Светодиодная панель 8х8&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Светодиодная панель 8х8пикс и 10х10см&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Платы готовы, светодиоды есть, необходимости - нет&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190290 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190290-robotron-s6130 OP]|| [[Robotron S6130]] || Проект по оживлению печатной машинки Robotron || Перерисована схема. Создана новая плата. Прошивка машинки сдамплена. Новая плата изготовлена. машинка ожила&lt;br /&gt;
|-&lt;br /&gt;
| 20190289 &lt;br /&gt;
| || [[GPS Disciplined OCXOs]] || Термостатированный опорный генератор с GPS-подстройкой || Имеются комплектующие, заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20190288 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190288-ozhivlieniie-nml-cm5300 OP]|| [[CM5300]] || Проект приставки для накопителя на магнитных лентах || Ожидает завершения работ по эмулятору лампового компьютера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190286 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190286-zapusk-displieia-igpv1-256-slash-256/ OP]|| [[ИГПВ1-256/256]] || Драйвер плазменного индикатора переменного тока || Ведется разработка высоковольтных ключей. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190285&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Anet A6|&amp;lt;s&amp;gt;Anet A6&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Вялотекущая бесконечная модернизация 3D принтера Anet A6&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен. Принтер уничтожен.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190284&lt;br /&gt;
| || [[DIY CNC]] || Проект самодельного фрезерного станка с ЧПУ ||&lt;br /&gt;
|-&lt;br /&gt;
| 20190283&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190283-rdmd573204/ OP]|| [[RDMD573204]] || Драйвер плазменного индикатора постоянного тока 4х30 символов || Схема частично перерисована. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190282&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[3D стабилизатор |&amp;lt;s&amp;gt;3D стабилизатор&amp;lt;/s&amp;gt;]]|| &amp;lt;s&amp;gt;Изготовление 3D стабилизатора для основной камеры&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен в связи с приобретением Fyutech G6 и DJI&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190281&amp;lt;/s&amp;gt;&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190281-igps1-111-slash-7/ &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[ИГПС1-111/7|&amp;lt;s&amp;gt;ИГПС1-111/7&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Драйвер газоразрядного индикатора 111*7 точек с самосканированием&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Прототип работает. Индикатор показывает. когда-нибудь сделаю аккуратную плату драйвера.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190279&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Стенд для испытания шаговых двигателей|&amp;lt;s&amp;gt;Стенд для испытания шаговых двигателей&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект лабораторного стенда для снятия характеристик с шаговых двигателей&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Создавался для проведения экспериментов по кандидатской диссертации. От диссертации я отказался, проект отменен.&amp;lt;/s&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2018 === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20180275 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180275-esp-clock OP]|| [[ESP Clock]] || Миниатюрные часы на базе ESP8266 и индикаторов ИВ-6|| Собран. Ждет прошивки. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180274 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180274-vakuumoskop OP]|| [[Вакуумоскоп]] || 8-канальный осциллоскоп с датчиками давления || Разработана плата датчиков. Есть датчики. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180272 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/fluidicpc OP]|| [[FluidicPC]] || Проект вычислителя на базе логических элементов с эффектом прилипания струи ||Первая фаза проекта завершена. Создан сумматор на пневмонике&lt;br /&gt;
|-&lt;br /&gt;
| 20180271 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/dekatronpc OP]|| [[DekatronPC]] || Ламповый компьютер на базе ваккумных и газоразрядных ламп. Набор инструкций - [https://ru.wikipedia.org/wiki/Brainfuck Brainfuck] || Разработка Verilog-эмулятора. Сборка экспериментальной ячейки&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2016 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 075&lt;br /&gt;
|[https://op.dekatronpc.com/projects/brainfuckpc OP]|| [[BrainfuckPC]] || Релейный компьютер на базе 600 герконовых реле с набором инструкций Brainfuck++ || Основной этап проекта завершен. ЭВМ способна выполнять программы Hello world.&lt;br /&gt;
Дальшейшая сборка под вопросом&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2015 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150259&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Игровое табло|&amp;lt;s&amp;gt;Игровое табло&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Спортивный комплект для боя на имитации ножей. Игровое табло, судейский пульт, ножи&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Завершен, Передан заказчику.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150256&amp;lt;/s&amp;gt;&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20150256-stabilizator-viega-109stierieo/ &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[Стабилизатор ВЕГА-109Стерео|&amp;lt;s&amp;gt;Стабилизатор ВЕГА-109Стерео&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Кварцевый стабилизатор для проигрывателя ВЕГА-109 Стерео&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Плата собрана. Нужна прошивка. не будет собираться.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20150254&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150254-miekhanichieskiie-chasy OP]|| [[Механические часы]] || Часы на базе механических Flip-flop индикаторов и релейным блоком управления || Заморожен. релюшек полно, но вряд ли блок управления будет собран.&lt;br /&gt;
|-&lt;br /&gt;
| 20150253&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150253-nixie-clock OP]|| [[Nixie clock]] || Часы с индикаторами ИН-8 или ИН-12 || Плата собрана. Нужна прошивка и корпус. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150250&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[релейный автополив|&amp;lt;s&amp;gt;релейный автополив&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Автоматизированный контроллер полива растений на больших советских реле&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Завершен. Уничтожен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150249&amp;lt;/s&amp;gt;&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20150249-tiermienvoks-koroliova/ &amp;lt;s&amp;gt;OP&amp;lt;/s&amp;gt;]|| [[Терменвокс|&amp;lt;s&amp;gt;Терменвокс&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Терменвокс Королёва (Журнал Радио 2005, №8, №9)&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Изготовлены и собраны платы, требуется корпус. Заморожен&amp;lt;/s&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20120062&amp;lt;/s&amp;gt;|| [[РЛН-Электро (Отладочная плата)|&amp;lt;s&amp;gt;РЛН-Электро (Отладочная плата)&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Отладочная плата на базе Atmega1280 с множеством элементов на борту&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;завершен&amp;lt;/s&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20090041&amp;lt;/s&amp;gt;|| [[Автомат управления освещением|&amp;lt;s&amp;gt;Автомат управления освещением&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Первый проект разработанный на заказ&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Завершен, Передан заказчику.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20090020|| [[РЦВМ-1]] || Релейная цифровая вычислительная машина №1|| Завершен. Требует оформления во что-то аккуратное&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%98%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B&amp;diff=1688</id>
		<title>Категория:Индикаторы</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%98%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B&amp;diff=1688"/>
		<updated>2025-10-09T15:14:14Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
==== Газоразрядные графические ====&lt;br /&gt;
&lt;br /&gt;
Газоразрядные индикаторы постоянного и переменного тока, использующие тлеющий разряд для отображения информации&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Внешний вид индикатора !! Название !! Описание !! Внешний вид индикатора !! Название !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Igpv-256-256.jpg|30%|frameless|ИГПВ1-256/256|link=ИГПВ1-256/256]] || [[ИГПВ1-256/256]] || style=&amp;quot;width: 30%;&amp;quot; |Матричный индикатор переменного тока с разрешением 256х256 пикс || [[Файл:Rdmd1.jpg|30%|frameless|link=RDMD573204]] || [[RDMD573204]] || style=&amp;quot;width: 30%;&amp;quot; |Плазменный индикатор постоянного тока 160*32 точек, разбитых в группы 32*4 символа размером 5*7 точек с символом подчеркивания&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Гип10000_верх.jpg|30%|frameless|link=ГИП10000]] || [[ГИП10000]] || Матричный индикатор постоянного тока, разрешением 100х100пикс || [[Файл:Mc6205_view.jpg|30%|frameless|link=МС6205]]  || [[МС6205]] || Устройство индикации для отображения текстовой информации на базе панели [[ГИП10000]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:имг1-03_view.jpg|30%|frameless|link=ИМГ1-03]]  || [[ИМГ1-03]] || Устройство индикации для отображения текстовой информации на базе панели [[ГИП10000]]. Впоследствии, с некоторыми изменениями стало известно как [[МС6205]] || [[Файл:Igps2-222-7.jpg|30%|frameless|ИГПС2-222/7|link=ИГПС2-222/7]] || [[ИГПС2-222/7]] || Мактричный индикатор постоянного тока с самосканированием, оранжево-красного свечения. Разрешение 222х7 пикс &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Газоразрядные символьные =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Внешний вид индикатора  !! Название  !! Примечание !! Внешний вид индикатора !! Название  !! Примечание&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:In1.jpg |30%|frameless|link=ИН1]] || [[ИН1]]  || 1 ||[[Файл:in2.jpg |30%|frameless|link=ИН2]] || [[ИН2]]  || 14  4 панельки&lt;br /&gt;
|-&lt;br /&gt;
| || [[ИН4]]  || 5  || [[Файл:In12a.jpg |30%|frameless|link=ИН12А]]|| [[ИН12А]]  || 28  (без запятой)&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:ИН12Б.jpeg |30%|frameless|link=ИН12Б]] || [[ИН12Б]]  || 34  (с запятой)|| [[Файл:ТРУП_ИН14.jpeg|30%|frameless|link=ИН14]] || [[ИН14]]  || 3 &lt;br /&gt;
|-&lt;br /&gt;
| || [[ИН15А]]  || 3 (спецсимволы, µ,P,-,+,m,М,К,П,%,n)|| || [[ИН15Б]]  || 10  (спецсимволы, W,F,Hz,H,V,S,Ω,A)&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:in16.jpg|30%|frameless|link=ИН16]] || [[ИН16]]  || 9 || [[Файл:IN17.jpg|30%|frameless|link=ИН17]]|| [[ИН17]]  || 4 &lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:ин18.jpg|30%|frameless|link=ИН18]] || [[ИН18]]  || 6  Самые большие советские индикаторы. Высота символа - 40мм.||[[Файл:in28.jpg|30%|frameless|link=ИН28]] || [[ИН28]]  || 4  Единичная точка. Светится вся сетка&lt;br /&gt;
|-&lt;br /&gt;
| || [[Z560M]]  || 3  (без запятой)|| || [[Z5610M]]  || 3  спецсимволы A, V, Ω, +, –, ~, %, W&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:IGP17.jpg|30%|frameless|link=ИГП-17]] || [[ИГП-17]]  || 1  Газоразрядный сегментный индикатор, 16 разрядов с точкой&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Плазменные индикаторы =====&lt;br /&gt;
&lt;br /&gt;
В плазменных индикаторах тлеющий разряд используется для генерации излучения, возбуждающего люминофор&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Внешний вид индикатора !! Название !! Описание !! Внешний вид индикатора !! Название !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Igps1-111-7.jpg|30%|frameless|ИГПС1-111/7|link=ИГПС1-111/7]] || [[ИГПС1-111/7]] || style=&amp;quot;width: 30%;&amp;quot; |Плазменный индикатор постоянного тока, зеленого свечения, с самосканированием. Разрешение 111х7 пикс || [[Файл:Rdmd1.jpg|30%|frameless|link=RDMD573204]] || [[RDMD573204]] || style=&amp;quot;width: 30%;&amp;quot; |Плазменный индикатор постоянного тока 160*32 точек, разбитых в группы 32*4 символа размером 5*7 точек с символом подчеркивания&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Igpp3232.jpg|30%|frameless|link=ИГПП-32/32]] || [[ИГПП-32/32]] || Плазменная панель постоянного тока зеленого свечения разрешением 32х32 пикс || [[Файл:Igg-16-48.jpg|30%|frameless|link=ИГГ3-48х16]] || [[ИГГ3-48х16]] || Цветная RGB плазменная панель постоянного тока разрешением 16х48 пикс с драйверами&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Igg-32-96.jpg|30%|frameless|link=ИГГ-32х96]] || [[ИГГ-32х96]] || Цветная RGB плазменная панель постоянного тока разрешением 32х96 пикс || [[Файл:Igg1-64-64_m.jpg|30%|frameless|link=ИГГ1-64х64М]] || [[ИГГ1-64х64М]] || Двухцветная зелено-оранжевая плазменная панель постоянного тока разрешением 64х64 пикс&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Igg4-64-64_m2.jpg|30%|frameless|link=ИГГ4-64х64М2]] || [[ИГГ4-64х64М2]] || Цветная RGB плазменная панель постоянного тока разрешением 64х64 пикс || [[Файл:Igg5-64-64_m2_(3).jpg|30%|frameless|link=ИГГ5-64х64М2]] || [[ИГГ5-64х64М2]] || Цветная RGBW плазменная панель постоянного тока разрешением 64х64 пикс&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:ИМГ-3-01.jpg|30%|frameless|link=ИМГ-3-01]] || [[ИМГ-3-01]] || Плазменная панель заводского изготовления 64х64пикс на базе 4 панелей [[ИГПП2-32/32]] || [[Файл:Igpp_pups.JPG|30%|frameless|link=ГИП10000 на стероидах]] || [[ГИП10000 на стероидах]] || Плазменная панель 96х96пикс на базе 9 панелей [[ИГПП-32/32]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Мега-дисплей1.jpg|30%|frameless|link=ГИП over 10000 на стероидах]] || [[ГИП over 10000 на стероидах]] || Проект: Плазменная панель 256х192пикс на базе 48 панелей [[ИГПП-32/32]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Вакуумные люминесцентные графические ====&lt;br /&gt;
&lt;br /&gt;
В данных индикаторах светится люминофор под воздействием электронного потока от горячего катода в вакууме. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Внешний вид индикатора !! Название !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:futaba_GP1160A02A.jpeg|200px|frameless|link=Futaba GP1160A02A]] || [[Futaba GP1160A02A]] || Матричный графический индикатор 256х64 точки.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Вакуумные люминесцентные символьные =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Внешний вид !! название !! Количество!! Примечание&lt;br /&gt;
|-&lt;br /&gt;
| || [[ИВ1]]  || 1 || &lt;br /&gt;
|-&lt;br /&gt;
| || [[ИВ3]]  || 3 || 9-сегментов&lt;br /&gt;
|-&lt;br /&gt;
| || [[ИВ3А]]  || 1 || 7-сегментов&lt;br /&gt;
|-&lt;br /&gt;
| || [[ИВ6]]  || 80 || Новые&lt;br /&gt;
|-&lt;br /&gt;
| || [[ИВ12]]  || 11 || &lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:iv27.jpg|200px|frameless|link=ИВ27]]|| [[ИВ27]]  || 1 || Калькуляторный, 13 символов, 8мм, сбитый сегмент внутри&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:ИЛЦ1-1-7 вид.jpg|200px|link=ИЛЦ1-1/7_(ВЛИ)]] || [[ИЛЦ1-1/7_(ВЛИ)]]  || 4 || Самый большой семисегментный индикатор&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:ИЛЦ1-1_9.jpg|200px|link=ИЛЦ1-1/9]] || [[ИЛЦ1-1/9]]  || 1 || В виде модуля с печатной платой и разъемом 1+1/2 (18)&lt;br /&gt;
|-&lt;br /&gt;
| || [[ИВЛ2-7/5]]  || 1 || Часовой, высота 10 мм &lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Ilc16_8.jpg|200px|link=ИЛЦ-16/8]]|| [[ИЛЦ-16/8]]  || 1 || 16 цифр, высота 8 мм&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:RSL0276-F.jpg|200px|link=RSL0276-F]]|| [[RSL0276-F]]  || 1 || Дисплей для муз. центра&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:ИЛЦ1-8-7Л.jpg|200px|link=ИЛЦ1-8/7Л]]|| [[ИЛЦ1-8/7Л]]  || 1 || Дисплей часового типа для авиационного хронометра ХАЭ-85М&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Категория:ЭЛИ}}&lt;br /&gt;
&lt;br /&gt;
==== Накальные индикаторы ====&lt;br /&gt;
&lt;br /&gt;
В данных индикаторах светится нить накала&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Внешний вид индикатора !! Название !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:ив13.jpg|200px|frameless|link=ИВ-13]] || [[ИВ-13]] || Накальный семисегментный индикатор &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Прочие индикаторы ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Внешний вид индикатора !! Название !! Описание&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:ИЦП-ИН12.jpg|200px|frameless|link=Индикатор_ИЦП]] || [[Индикатор_ИЦП]] || Индикаторный модуль на базе [[ИН-12]] со встроенным управлением&lt;br /&gt;
|-&lt;br /&gt;
|  [[Файл:Механический_индикатор.jpg|200px|frameless|link=Механические_часы]]  || [[Механические_часы]]  || Механический индикатор флажкового типа&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:ПТ-5Е4.jpg|200px|frameless|link=ПТ-5Е4]] || [[ПТ-5Е4]]  || Проекционный индикатор с отображением чисел от 0 до 10 и красной подсветкой&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Sklyt_116_112_front.jpg|200px|frameless|link=SKYLT_16х112-10mm]] || [[SKYLT_16х112-10mm]]  || Огромное блинкерное табло 16х112 точек&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ссылки ===&lt;br /&gt;
* http://www.tube-tester.com/sites/nixie/dat_arch.htm - большой архив датащитов&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=Howto:%D0%9E%D1%81%D1%86%D0%B8%D0%BB%D0%BB%D0%BE%D0%B3%D1%80%D0%B0%D1%84_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%B0&amp;diff=1687</id>
		<title>Howto:Осциллограф для новичка</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=Howto:%D0%9E%D1%81%D1%86%D0%B8%D0%BB%D0%BB%D0%BE%D0%B3%D1%80%D0%B0%D1%84_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%B0&amp;diff=1687"/>
		<updated>2025-03-24T10:14:07Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Дисклеймер ==&lt;br /&gt;
Все сказанное ниже - мое личное мнение, которое я сформировал в ответ на многочисленные запросы из разряда &amp;quot;какой осциллограф лучше всего купить новичку&amp;quot;. Кто-то в интернете решил что я эксперт в этом вопросе. Что ж, наденем маску эксперта и сформируем ряд тезисов на эту тему.&lt;br /&gt;
&lt;br /&gt;
Осциллограф это второй по важности измерительный прибор любого электронщика. Первый - мультиметр. В 99% случаев нерабочей или глючной схемы достаточно глянуть сигналы осциллографом и все станет на свои места но нет, форумы завалены гаданием на кофейной гуще..&lt;br /&gt;
&lt;br /&gt;
# Для выбора осциллографа есть несколько простых правил:&lt;br /&gt;
# даже самый плохой осциллограф лучше чем без осциллографа.&lt;br /&gt;
# с помощью одного осциллографа можно ремонтировать любой прибор, кроме самого осциллографа. А вот с двумя осциллографами можно отремонтировать все что угодно. Так вот. если советский осциллограф будет единственным - пусть он будет полностью рабочим.&lt;br /&gt;
# Два канала лучше чем один. А четыре - лучше чем два. Одноканальный осциллограф сковывает движения в 90% случаев. Два канала - оптимально для 99% задач.&lt;br /&gt;
# У аналоговых приборов свои плюсы, у цифры свои. Цифровые и импульсные схемы лучше дебажить цифровыми осциллографами. Функция запоминания сигнала бесценна, а найти рабочий аналоговый ослик за запоминающей трубкой - то еще приключение.&lt;br /&gt;
# Важно чтобы полоса пропускания прибора удовлетворяла потребностям. В большинстве случаев хватит и 10мгц. Кому-то надо 100. Кому-то больше.&lt;br /&gt;
&lt;br /&gt;
== Модели аналоговых осциллографов ==&lt;br /&gt;
&lt;br /&gt;
Ценообразование советских осциллографов напрямую зависит от содержания драг. металлов в приборах - в первую очередь золота и металлов платиновой группы. Если вбить в поиск &amp;quot;осциллограф __марка__  содержание драгметаллов&amp;quot; и посчитать по текущему курсу стоимость драгов в нем - то полученная цифра будет триггером для вас - дешево продают осла, или нет. дешево можно купить по знакомству. С авито - нереально. аффинажники скупают быстрее пули.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Правило простое - для повседневного использования брать только исправный прибор. Ламповые приборы не брать!&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;С1-94&amp;#039;&amp;#039;&amp;#039; - отличный одноканальный осциллограф для начинающего. Маленький, легкий, простой в обращении. Внутри почти нет драг. металлов и потому на авито их вагон по приятным ценам 3-5тыс рублей.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;С1-55&amp;#039;&amp;#039;&amp;#039; - хороший вариант дешевого двухканального осциллографа. Часто барахлит синхронизация как на моем экземпляре. Говорят чинится ремонтом лавинообразных диодов. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;С1-114/1&amp;#039;&amp;#039;&amp;#039; - это мой первый осциллограф. Тяжеловат. Если сломается - будет плохо - там микросборки, которые заменить нечем. Но работает и в жару и холод. версия С1-114 - с мультиметром и возможностью подключить приставку логического анализатора. драг.металлов много поэтому и просят за него прилично.&lt;br /&gt;
&lt;br /&gt;
Еще одноканальные варианты  - &amp;#039;&amp;#039;&amp;#039;С1-101&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;С1-112&amp;#039;&amp;#039;&amp;#039;, и т.п. У всех советских осциллографов есть свои приколы и болячки.&lt;br /&gt;
&lt;br /&gt;
Осциллографы &amp;#039;&amp;#039;&amp;#039;ОМЛ-3&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Н313&amp;#039;&amp;#039;&amp;#039; я не рекомендую - это малополезные показометры. Да и в отличном состоянии их найти сложно.&lt;br /&gt;
&lt;br /&gt;
== Модели цифровых осциллографов ==&lt;br /&gt;
&lt;br /&gt;
Цифра дешевой не бывает. Нормальный бюджет - порядка 200 долларов за ручной прибор и 400 долларов - за настольный.&lt;br /&gt;
&lt;br /&gt;
Не надо тратить деньги на игрушечные карманные осциллографы типа &amp;#039;&amp;#039;&amp;#039;DSO128 mini&amp;#039;&amp;#039;&amp;#039; и ему подобных. Цена им 25 басков. Полосы пропускания в 200кгц достаточно только для ремонта усилителей ЗЧ. И то с большой натяжкой.&lt;br /&gt;
&lt;br /&gt;
Если хочется за недорого - можно взять небольшие ручные осциллографы с частотой сэмлирования хотя бы 100Мегавыборок в секунду. Цена от 70 баксов. Например &amp;#039;&amp;#039;&amp;#039;DSO2512G&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;ZT703S&amp;#039;&amp;#039;&amp;#039; и подобные. Сам таким не пользовался. Читайте отзывы и тесты. Отдельно замечу FNIRSI  2C23T - полный шлак. &lt;br /&gt;
&lt;br /&gt;
Из персональных рекомендаций - Осциллограф+генератор+мультиметр &amp;#039;&amp;#039;&amp;#039;Hantek 2D72&amp;#039;&amp;#039;&amp;#039; - очень приятный и понятный прибор. Такой я разыгрывал, таким пользуюсь сам. Управление не очень удобное, но можно приноровиться.&lt;br /&gt;
&lt;br /&gt;
Из настольных - Народный двухканальный &amp;#039;&amp;#039;&amp;#039;Rigol ds1102e&amp;#039;&amp;#039;&amp;#039; - такая модель как раз у меня. Двухканальные hantek, owon тоже пойдут - читайте форумы с болячками.&lt;br /&gt;
&lt;br /&gt;
Народный четырехканальный &amp;#039;&amp;#039;&amp;#039;Rigol 1054Z&amp;#039;&amp;#039;&amp;#039; - такую модель хочу себе следующей ибо двух каналов мало.&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=Howto:%D0%9E%D1%81%D1%86%D0%B8%D0%BB%D0%BB%D0%BE%D0%B3%D1%80%D0%B0%D1%84_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%B0&amp;diff=1686</id>
		<title>Howto:Осциллограф для новичка</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=Howto:%D0%9E%D1%81%D1%86%D0%B8%D0%BB%D0%BB%D0%BE%D0%B3%D1%80%D0%B0%D1%84_%D0%B4%D0%BB%D1%8F_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%B0&amp;diff=1686"/>
		<updated>2025-03-24T10:11:59Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Модели цифровых осциллографов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Дисклеймер ==&lt;br /&gt;
Все сказанное ниже - мое личное мнение, которое я сформировал в ответ на многочисленные запросы из разряда &amp;quot;какой осциллограф лучше всего купить новичку&amp;quot;. Кто-то в интернете решил что я эксперт в этом вопросе. Что ж, наденем маску эксперта и сформируем ряд тезисов на эту тему.&lt;br /&gt;
&lt;br /&gt;
Осциллограф это второй по важности измерительный прибор любого электронщика. Первый - мультиметр. В 99% случаев нерабочей или глючной схемы достаточно глянуть сигналы осциллографом и все станет на свои места но нет, форумы завалены гаданием на кофейной гуще..&lt;br /&gt;
&lt;br /&gt;
# Для выбора осциллографа есть несколько простых правил:&lt;br /&gt;
# даже самый плохой осциллограф лучше чем без осциллографа.&lt;br /&gt;
# с помощью одного осциллографа можно ремонтировать любой прибор, кроме самого осциллографа. А вот с двумя осциллографами можно отремонтировать все что угодно. Так вот. если советский осциллограф будет единственным - пусть он будет полностью рабочим.&lt;br /&gt;
# Два канала лучше чем один. А четыре - лучше чем два. Одноканальный осциллограф сковывает движения в 90% случаев. Два канала - оптимально для 99% задач.&lt;br /&gt;
# У аналоговых приборов свои плюсы, у цифры свои. Цифровые и импульсные схемы лучше дебажить цифровыми осциллографами. Функция запоминания сигнала бесценна, а найти рабочий аналоговый ослик за запоминающей трубкой - то еще приключение.&lt;br /&gt;
# Важно чтобы полоса пропускания прибора удовлетворяла потребностям. В большинстве случаев хватит и 10мгц. Кому-то надо 100. Кому-то больше.&lt;br /&gt;
&lt;br /&gt;
== Модели аналоговых осциллографов ==&lt;br /&gt;
&lt;br /&gt;
Ценообразование советских осциллографов напрямую зависит от содержания драг. металлов в приборах - в первую очередь золота и металлов платиновой группы. Если вбить в поиск &amp;quot;осциллограф __марка__  содержание драгметаллов&amp;quot; и посчитать по текущему курсу стоимость драгов в нем - то полученная цифра будет триггером для вас - дешево продают осла, или нет. дешево можно купить по знакомству. С авито - нереально. аффинажники скупают быстрее пули.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Правило простое - для повседневного использования брать только исправный прибор. Ламповые приборы не брать!&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;С1-94&amp;#039;&amp;#039;&amp;#039; - отличный одноканальный осциллограф для начинающего. Маленький, легкий, простой в обращении. Внутри почти нет драг. металлов и потому на авито их вагон по приятным ценам 3-5тыс рублей.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;С1-55&amp;#039;&amp;#039;&amp;#039; - хороший вариант дешевого двухканального осциллографа. Часто барахлит синхронизация как на моем экземпляре. Говорят чинится ремонтом лавинообразных диодов. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;С1-114/1&amp;#039;&amp;#039;&amp;#039; - это мой первый осциллограф. Тяжеловат. Если сломается - будет плохо - там микросборки, которые заменить нечем. Но работает и в жару и холод. версия С1-114 - с мультиметром и возможностью подключить приставку логического анализатора. драг.металлов много поэтому и просят за него прилично.&lt;br /&gt;
&lt;br /&gt;
Еще одноканальные варианты  - &amp;#039;&amp;#039;&amp;#039;С1-101&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;С1-112&amp;#039;&amp;#039;&amp;#039;, и т.п. У всех советских осциллографов есть свои приколы и болячки.&lt;br /&gt;
&lt;br /&gt;
Осциллографы &amp;#039;&amp;#039;&amp;#039;ОМЛ-3&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Н313&amp;#039;&amp;#039;&amp;#039; я не рекомендую - это малополезные показометры. Да и в отличном состоянии их найти сложно.&lt;br /&gt;
&lt;br /&gt;
== Модели цифровых осциллографов ==&lt;br /&gt;
&lt;br /&gt;
Цифра дешевой не бывает. Нормальный бюджет - порядка 200 долларов за ручной прибор и 400 долларов - за настольный.&lt;br /&gt;
&lt;br /&gt;
Не надо тратить деньги на игрушечные карманные осциллографы типа &amp;#039;&amp;#039;&amp;#039;DSO128 mini&amp;#039;&amp;#039;&amp;#039; и ему подобных. Цена им 25 басков. Полосы пропускания в 200кгц достаточно только для ремонта усилителей ЗЧ. И то с большой натяжкой.&lt;br /&gt;
&lt;br /&gt;
Если хочется за недорого - можно взять небольшие ручные осциллографы с частотой сэмлирования хотя бы 100Мегавыборок в секунду. Цена от 70 баксов. Например &amp;#039;&amp;#039;&amp;#039;DSO2512G&amp;#039;&amp;#039;&amp;#039;  и подобные. Сам таким не пользовался. Читайте отзывы и тесты. Отдельно замечу FNIRSI  2C23T - полный шлак. &lt;br /&gt;
&lt;br /&gt;
Из персональных рекомендаций - Осциллограф+генератор+мультиметр &amp;#039;&amp;#039;&amp;#039;Hantek 2D72&amp;#039;&amp;#039;&amp;#039; - очень приятный и понятный прибор. Такой я разыгрывал, таким пользуюсь сам. Управление не очень удобное, но можно приноровиться.&lt;br /&gt;
&lt;br /&gt;
Из настольных - Народный двухканальный &amp;#039;&amp;#039;&amp;#039;Rigol ds1102e&amp;#039;&amp;#039;&amp;#039; - такая модель как раз у меня. Двухканальные hantek, owon тоже пойдут - читайте форумы с болячками.&lt;br /&gt;
&lt;br /&gt;
Народный четырехканальный &amp;#039;&amp;#039;&amp;#039;Rigol 1054Z&amp;#039;&amp;#039;&amp;#039; - такую модель хочу себе следующей ибо двух каналов мало.&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9F%D0%9B20-2&amp;diff=1685</id>
		<title>ПЛ20-2</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9F%D0%9B20-2&amp;diff=1685"/>
		<updated>2025-03-12T06:10:25Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Музей]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Пл20-2.jpg|мини|справа]]&lt;br /&gt;
&lt;br /&gt;
Перфоратор ленточный типа ПЛ-20-2 предназначен для записи алфавитно-цифровой информации на бумажную ленту в виде круглых отверстий в выбранном коде.&lt;br /&gt;
&lt;br /&gt;
Перфоратор служит для совместной работы с электронной вычислительной машитной в качестве выводного устройства, а также может применяться в контрольных программирующих устройствах и устройствах перезапики&lt;br /&gt;
&lt;br /&gt;
Перфоратор состоит из трез узлой: механизма перфорации, блока электроаппаратуры, механизма подачи ленты&lt;br /&gt;
&lt;br /&gt;
Принцип действия перфоратора состоит в механической пробивке пуансонами круглых отверстий на бумажной ленте&lt;br /&gt;
&lt;br /&gt;
Управление работой перфоратора осуществляется электрическими сигналами постоянного тока отрицательной полярности&lt;br /&gt;
&lt;br /&gt;
Для синхронизации работы предусмотрено устройство для выдачи сигнала конца перфорации&lt;br /&gt;
&lt;br /&gt;
== Характеристики ==&lt;br /&gt;
&lt;br /&gt;
* Носитель информациии - 5-8канальная бумажная лента&lt;br /&gt;
* Режим движения ленты - старт-стопный&lt;br /&gt;
* Скорость перфорирования 20 зн/сек+-10%&lt;br /&gt;
* Шаг перфорации 2.5 мм+-0,025мм&lt;br /&gt;
* Диаметр кодовых отверстий 1.8мм&lt;br /&gt;
* Диаметр для транспортировки ленты 1.2мм&lt;br /&gt;
* Длина ленты в приемной бобине 180+-15м&lt;br /&gt;
* Питание от сети переменного тока напряжением 220в, Частотой 50Гц.&lt;br /&gt;
* Потребляемоая мощность 110Вт&lt;br /&gt;
* Габаритные размеры 336х334х226мм&lt;br /&gt;
* Масса 22,5кг&lt;br /&gt;
* ГОСТ 15817-70&lt;br /&gt;
* ГОСТ 10860-68&lt;br /&gt;
* Цена 920 руб&lt;br /&gt;
* Изготовитель Завод САМ г. Рязань&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* Средства вычислительной техники и оргтехника. Номенклатурный справочник. М 1973г.&lt;br /&gt;
https://www.youtube.com/watch?v=37dB1spA26E&amp;amp;ab_channel=ArtemKashkanov&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=Robotron_S6130&amp;diff=1684</id>
		<title>Robotron S6130</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=Robotron_S6130&amp;diff=1684"/>
		<updated>2025-02-06T06:13:38Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Техническое состояние */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Музей]]&lt;br /&gt;
[[Категория:Печатные машинки]]&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Robotron s6130.jpg|700px]]&lt;br /&gt;
&lt;br /&gt;
Электронная печатная машинка Robotron S6130 Ромашкового типа. Формат бумаги - рулонный А3. Но и меньший формат тоже пойдет.&lt;br /&gt;
&lt;br /&gt;
Язык и шрифт определяется установленной ромашкой. Имеется ромашка с русским алфавитом&lt;br /&gt;
&lt;br /&gt;
== Техническое состояние ==&lt;br /&gt;
&lt;br /&gt;
* Механика в отличном состоянии. Попробовал вручную управлять драйверами - все работает. &lt;br /&gt;
* На плате процессора протекли аккумуляторы, что привело к заметной порче платы.&lt;br /&gt;
* Почти все микросхемы ОЗУ вышли из строя&lt;br /&gt;
* Разработал плату ОЗУ+ПЗУ, которая призвана заменить вышедшие из строя микросхемы. Плата спаяна, ее необходимо установить на место&lt;br /&gt;
* Прошивка выгружена с микросхем ПЗУ. Проанализирована. на первый взгляд с ней все в порядке.&lt;br /&gt;
*UPD: Февраль 2025. Спаяна и установлена новая мат. плата. Машинка оживает, ведется техническое обслуживание до полной исправности&lt;br /&gt;
&lt;br /&gt;
== Обзоры ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;Bmlq4-TQYF0&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки == &lt;br /&gt;
&lt;br /&gt;
* https://github.com/radiolok/robotron_s6130 - Схемы, документация есть в репозитории&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1683</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1683"/>
		<updated>2024-08-21T17:22:32Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Бюджет проекта (UPD: 17.01.2024) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 19.08.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
**Поправочка - скорость пересчета декатрона А110 - 1МГц, однако согласно Яблонскому, импульс сброса (в данном случае - записи в декатрон) - в среднем на порядок больше импульса пересчета. Поэтому можно смело ронять тактовую частоту до 100кгц...&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов&amp;lt;ref&amp;gt;В.М. Липкин декатроны и их применение. госэнергоатомиздат.  1960&amp;lt;/ref&amp;gt;. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
[[Файл:Exp DPC 2.png|центр|мини|450x450пкс|&lt;br /&gt;
Схема стабилизатора анодного напряжения +150В, 200мА. Питается от трансформатора ТСШ170, выводы 7-8+9-10]]&lt;br /&gt;
[[Файл:ExpDPC cell 1.png|центр|мини|450x450пкс|&lt;br /&gt;
Финальная схема стабилизатора анодного напряжения декатрона +500В (работает со смещением +150В от земли)Питается от трансформатора ТА48, выводы 11-12+17-8]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Exp DPC cell +20v.png|центр|мини|450x450пкс|Схема стабилизатора напряжения +20В, 30мА. Питается от трансформатора ТА7, выводы 19-20+21-22]]&lt;br /&gt;
[[Файл:Exp DPC cell -50v.png|центр|мини|450x450пкс|Схема стабилизатора отрицательного напряжения +50В, 30мА. Питается от трансформатора ТА48, выводы 21-22+19-20]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
[[Файл:IpLine full.png|центр|безрамки|535x535пкс]]&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
[[Файл:ApLine full.png|центр|безрамки|445x445пкс]]&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA1|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA1 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х140мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png|300пкс]]||[[Файл:Dekatronpc module 140x200.png|300пкс]]&lt;br /&gt;
|-&lt;br /&gt;
| Модуль 140х140мм с краевым разъемом 2х36пин. || Первое поколение плат. Модуль 140х200мм с разъемами ГРПМШ-31&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Блок представляет собой полноценный узел машины - IpLine, ApLine или MachineCtrl. Возможно в дальнейшем понадобится увеличить количество блоков.&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
За передней панелью блока скрывается источник питания, на базе одного торроидального трансформатора и выпрямителей вокруг него. Далее идет ряд вентиляторов, затем - три ряда плат модулей, стоящих с шагом 24мм для логики или 36мм для плат с декатронами. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Платы располагаются ближе к задней стороне чтобы все провода между модулями а также к задним разъемам были минимальной длины. На самом блоке располагаются разъемы для модулей, а в подвале сформирована область для соединения модулей между собой. Подобная схема использовалась в ЭВМ [[wikipedia:Bendix_G-15|Bendix G15]]А посмотреть ее воочию, можно у [https://www.youtube.com/watch?v=-RGp-bsYf34&amp;amp;ab_channel=UsagiElectric Usagi в видеоролике]Скорее всего все соединения будут производиться пайкой, А схема подключения - браться их yosys&lt;br /&gt;
[[Файл:DPC Back wiring.png|центр|безрамки|771x771пкс]]&lt;br /&gt;
&lt;br /&gt;
=== Питание ===&lt;br /&gt;
Каждый блок питает себя сам. Изначально идея была поместить в каждый блок только накальные трансформаторы типа ТН61. Однако для полной загрузки блока нужно 4-5 трансформаторов и в ряд они не лезут, а в иной компоновке - съедают слишком много места.  Таким образом требуются заказные торроидальные многообмоточные трансформаторы - которые будут выдавать все необходимые напряжения питания.  При этом если накала на весь блок нужно порядка 300А. Лучшим вариантом на данный момент я считаю сделать 6 накальных обмоток по 50А каждая - по две обмотки на ряд.&lt;br /&gt;
&lt;br /&gt;
В РФ изготовлением трансформаторов занимаются [http://www.torel.ru/ ТОРЭЛ] и [https://tula-transformator.ru/trans_t.html Тульский завод трансформаторов]. ТОРЭЛ запросил 33к за трансформатор, в тульский завод я ТЗ еще не отправлял - нужно окончательно определиться с начинкой блоков и количеством ламп в каждом из них, а также по необходимым напряжениям питания. &lt;br /&gt;
&lt;br /&gt;
Считается, что входное напряжение стабильно по ГОСТ (+-10%). Анодное напряжение не стабилизируется, накальное не стабилизируется. Маломощные напряжения смещения снабжаются линейными стабилизаторами на базе 6С19П&amp;lt;ref&amp;gt;К.Б. Мазель  Стабилизаторы напряжения и тока. госэнергоатомиздат 1955&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==Дорожная карта проекта==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. &lt;br /&gt;
&lt;br /&gt;
Последующие стадии сильно зависят от предыдущих, при этом все стадии можно делать одновременно, но основные силы брошены на последовательную реализацию.&lt;br /&gt;
&lt;br /&gt;
Теперь о главном - &lt;br /&gt;
&lt;br /&gt;
Два мелких ребенка сильно замедляют продвижение по проекту.&lt;br /&gt;
&lt;br /&gt;
=== Стадия 1: Проектирование (UPD: 25.06.2023) &amp;lt;= Вы находитесь здесь ===&lt;br /&gt;
Самая важная стадия проекта - разработка принципиальной схемы машины. Необходимо закрыть все этапы прежде чем двигаться дальше.&lt;br /&gt;
&lt;br /&gt;
====Этап 1.1: Верификационная программная модель C++ (UPD: 25.06.2023)====&lt;br /&gt;
Описание: При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках.  .&lt;br /&gt;
&lt;br /&gt;
Задачи: &lt;br /&gt;
&lt;br /&gt;
* Высокоуровневая программная симуляция поведения мышины&lt;br /&gt;
* Верификационная модель для эмулятора&lt;br /&gt;
&lt;br /&gt;
Прогресс:&lt;br /&gt;
&lt;br /&gt;
* Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++] Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует незначительной доработки для дополнения остальными инструкциями.&lt;br /&gt;
* На данный момент модель подключена  к Verilator&amp;lt;ref&amp;gt;https://www.veripool.org/verilator/&amp;lt;/ref&amp;gt; и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью&lt;br /&gt;
&lt;br /&gt;
==== Этап 1.2: Виртуальный эмулятор лампового компьютера (UPD: 25.06.2023)&amp;lt;ref&amp;gt;Д. Томас. Логическое проектирование и верификация систем в SystemVerilog&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;А.Ю. Романов. Ю.В.Панчул. Цифровой синтез. Практический курс. ДМК 2020&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Харрис и Харрис. Цифровая схемотехника и архитектура компьютера. ДМК.  2017&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Й. Янсен. Курс цифровой электроники в 4-х частях. изд Мир.  1987&amp;lt;/ref&amp;gt; ====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog.&lt;br /&gt;
&lt;br /&gt;
Задачи:   &lt;br /&gt;
&lt;br /&gt;
* Программная эмуляция схемотехники будущей машины  &lt;br /&gt;
* Синтез принципиальной логической схемы лампового компьютера - с помощью yosys и библиотеки элементов  &lt;br /&gt;
* Временной анализ (на основании экспериментальных данных со второй стадии проекта)  &lt;br /&gt;
* Анализ энергопотребления   &lt;br /&gt;
&lt;br /&gt;
Прогресс:  &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает все 8 инструкций brainfuck, а также несколько других.  &lt;br /&gt;
* Виртуальный эмулятор доступный для запуска кем угодно  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
&lt;br /&gt;
* Ведется в среде Verilator и позволяет провести функциональную эмуляцию схемотехники будущей машины &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Стадия 2: Прототипирование(UPD: 25.06.2023) ===&lt;br /&gt;
Следующая стадия - изготовление отдельных элементов компьютера - для проверки корректности работы схем, измерения режимов работы и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.1: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
[[Файл:DPC FPGA EMULATOR.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
[[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. имеет две основные задачи&lt;br /&gt;
&lt;br /&gt;
* Физическая визуализация эмулятора&lt;br /&gt;
* Эмуляция (Замещение) еще несуществующих/несобранных блоков будуей ЭВМ&lt;br /&gt;
&lt;br /&gt;
На данный момент сам эмулятор собран, в нем находится старая демонстрационная прошивка. По завершении этапа 1.2 - прошивка обновится и эмулятор будет вести себя как настоящий ламповый компьютер.&lt;br /&gt;
&lt;br /&gt;
Сзади компьютер оснащен разъемами для подключения блоков. Проектно поддерживается 128 входов и 128 выходов. Практически число может быть другим.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.2: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. Ее описание - выше. &lt;br /&gt;
&lt;br /&gt;
==== Этап 2.3: Разработка модулей ламповой логики ====&lt;br /&gt;
Результатом данного этапа будут платы - прототипы модулей ламповой логики. &amp;lt;ref&amp;gt;А.М. Бонч-Бруевич. Применение электронных ламп в экспериментальной физике. изд-е 4. М. 1956&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Handbook of electronic control circuits. By Jonh Markus. London 1959&amp;lt;/ref&amp;gt;С них можно будет снять мерки для временного анализа и анализа энергопотребления.&lt;br /&gt;
&lt;br /&gt;
==== Этап 2.4: Разработка источников питания ====&lt;br /&gt;
&lt;br /&gt;
=== Стадия 3: Сборка блоков машины ===&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.1 Разработка корпуса ====&lt;br /&gt;
На данном этапе необходимо будет довести разработку корпуса машины до стадии отправки чертежей на производство.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.2. Изготовление корпуса ====&lt;br /&gt;
Корпус сам по себе будет состоять из сотни частей, требуется изготовить их все и &lt;br /&gt;
&lt;br /&gt;
==== Этап 3.3 Сборка модулей ====&lt;br /&gt;
Изготовление и распайка модулей ламповой логики с проверкой тестеров всех ламп, с проверкой модулей на тестере модулей и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 3.4: Монтаж схемотехники машины====&lt;br /&gt;
Совершается одновременно с этапом 3.3 - по мере сборки модулей производится ошиновка разъемов вкупе с эмулятором производится верификация корректной работы прибора&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 17.01.2024)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|93&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;198&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1682</id>
		<title>Категория:Проекты</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1682"/>
		<updated>2024-05-09T12:35:30Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Идеи вне времени и пространства */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание == &lt;br /&gt;
&lt;br /&gt;
Представлен неполный список моих проектов, различной степени реализации: от идеи, до завершенного&lt;br /&gt;
&lt;br /&gt;
Каждый проект имеет свой номер формата ГГГГХХХХ, где:&lt;br /&gt;
&lt;br /&gt;
* ГГГГ - год создания проекта, &lt;br /&gt;
* ХХХХ - сквозной порядковый номер&lt;br /&gt;
&lt;br /&gt;
Под каждым проектом может скрываться:&lt;br /&gt;
&lt;br /&gt;
* Интересная идея, которую можно бы было реализовать&lt;br /&gt;
* Создание некоторого устройства, которое было начало хоть в какой-то степени - разработан дизайн-проект, имеются комплектующие и т.п.&lt;br /&gt;
* Завершенные коммерческие заказы на изготовление печатной платы, электронного устройства и т.п. В общей сводной таблице практически не представлены.&lt;br /&gt;
&lt;br /&gt;
=== Идеи вне времени и пространства ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Эти идеи возникают спонтанно в процессе общения с людьми. Часть из них вряд ли когда-то будут мной воссозданы, но их обязательно нужно зафиксировать. Другая часть - интересные внешние проекты, которые захотелось повторить, но под полноценную страничку они еще не готовы &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Семисегментный индикатор, где в качестве сегментов выступают 500Вт керамические стержни для гриля. На этом 3,5кВт-ном дисплее вполне можно будет жарить шашлык. А отображаемая цифра будет показывать сколько времени осталось до готовности.&lt;br /&gt;
* Тетрис, где в качестве элементов поля 20*10 используются миниатюрные лампы накаливания&lt;br /&gt;
* Осциллограф с механической разверткой на базе диска Нипкова (http://rfanat.ru/s3/izm-mk.html)&lt;br /&gt;
* Версия стабилизатора частоты вращения проигрывателя [[Стабилизатор_ВЕГА-109Стерео|ВЕГА 109 Стерео]] на лампах&lt;br /&gt;
* Индукционная паяльная станция с жалом на эффекте Кюри. Можно купить за 60к, а можно собрать ([https://habr.com/ru/post/412607/ Статья]) ([https://github.com/SergeyMax/SolderingStation github])&lt;br /&gt;
* Умное зеркало (большой дисплей за полупрозрачным зеркалом) (https://magicmirror.builders/ https://www.buildxyz.xyz/magicmirror-builders-guide/)&lt;br /&gt;
* Портативный измеритель АЧХ (http://www.sdr-deluxe.com/publ/nwt200_achkh_metr_i_ne_tolko/1-1-0-13)&lt;br /&gt;
* Крутой 3D-печатный 6-осевой риг для камеры. https://www.youtube.com/watch?v=WNtC9EkYCYQ https://www.thingiverse.com/thing:4652484 - и еще один https://www.youtube.com/watch?v=1FfB7cLkUyQ&amp;amp;ab_channel=isaac879&amp;lt;nowiki/&amp;gt;https://github.com/isaac879/Pan-Tilt-Mount&lt;br /&gt;
&lt;br /&gt;
=== 2023 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
|20230333&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230333-diy-self-made-ic-chip/ OP]&lt;br /&gt;
|[[DIY-IC]]&lt;br /&gt;
|Изготовление самодельных микросхем в гараже&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 20230332 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230332-ozhivlieniie-scara-robota-srx-611 OP]||[[SRX-611]] || Оживление Scara робота Sony SRX-611 || &lt;br /&gt;
|-&lt;br /&gt;
| 20230331 &lt;br /&gt;
| || [[Neon]] || Изготовление неоновых вывесок и других газонаполненных и вакуумных приборов || &lt;br /&gt;
|-&lt;br /&gt;
| 20230330 &lt;br /&gt;
| || [[Glass Lathe]] || Стеклодувный станок || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2022 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20220328 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20220328-knizhnyi-skanier/ OP]|| [[Книжный сканер]] || Книжный разворотный сканер || &lt;br /&gt;
|-&lt;br /&gt;
| 20220329 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20220329-hitachi-sp14q002/ OP]|| [[Hitachi SP14Q002]] || Оживление индикатора Hitachi SP14Q002 || У индикатора нет фрейм-буффера, ему требуется доп. плата для выдачи картинки. Микросхема есть, заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2021 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20210323 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210323-16-kanalnyi-draivier-iel-na-optosimistorakh/ OP]|| [[Драйвер ИЭЛ]] || Универсальный драйвер для Электролюминесцентных индикаторов || Версия на оптосимисторах в эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20210324 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210324-mietieostantsiia-na-blinkiernom-tablo/ OP]|| [[Метеостанция]] || Метеостанция на RPi3B и флажковом табло || Проект завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2020 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20200322 &lt;br /&gt;
| || [[Аналоговое телевещание]] || Проект телевизионной вещательной станции на частоте 77,25МГц на базе лампового генератора с видиконной камерой [[КТП-82]] || Идея&lt;br /&gt;
|-&lt;br /&gt;
| 20200321 &lt;br /&gt;
| || [[Перцептрон]] || Проект электронно-вакуумного перцептрона с механизированными весами || Концепция&lt;br /&gt;
|-&lt;br /&gt;
| 20200311 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200311-chasy-na-in18-i-poliatronakh-a201/ OP]|| [[Часы на А201]] || Часы на полиатронах [[А201]] и Индикаторах [[ИН18]]|| &lt;br /&gt;
|-&lt;br /&gt;
| 20200310 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200310-gip-over-10000-na-stieroidakh OP]|| [[ГИП over 10000 на стероидах]] || Огромная индикаторная панель 256*192 точки на базе 48 плиток [[ИГПП-32/32]] и [[ИГПП2-32/32]]|| Эскизный проект&lt;br /&gt;
|-&lt;br /&gt;
| 20200309 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200309-eliektroliuminiestsientnyie-chasy OP]|| [[Электролюминесцентные часы]] || Часы на электролюминесцентных индикаторах [[ЖВ3.012.000]] и [[И-205]] || &lt;br /&gt;
|-&lt;br /&gt;
| 20200308 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/eliektroliuminiestsientnyie-indikatory OP]|| [[Электролюминесцентные индикаторы]] || Создание самодельных электролюминесцентных индикаторов || Первая фаза завершена&lt;br /&gt;
|-&lt;br /&gt;
| 20200307 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200307-10gb-lan/ OP]|| [[10GB_LAN]] || Апгрейд домашней сети до 10Гбит || [Завершен] 10Гбит достигнуты&lt;br /&gt;
|-&lt;br /&gt;
| 20200306 &lt;br /&gt;
| || [[Паяльная печь]] || Сборка самодельной печаи для пайки SMD на базе бытовой мини-печи и программируемого термоконтроллера || [Завершен] В эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20200305 &lt;br /&gt;
| || [[Тестер У3-Л (Черный ящик)]] || Проект по оживлению черного ящика || &lt;br /&gt;
|-&lt;br /&gt;
| 20200304 &lt;br /&gt;
| || [[Драйвер ЭЛТ]] || Универсальная плата для запуска осциллографических ЭЛТ || концепт&lt;br /&gt;
|-&lt;br /&gt;
| 20200303 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200303-gip10000-na-stieroidakh OP]|| [[ГИП10000 на стероидах]] || Драйвер газоразрядного индикатора || [Завершен] Проект завершен, да здравствует проект!&lt;br /&gt;
|-&lt;br /&gt;
| 20200302 &lt;br /&gt;
| || [[Тестер конденсаторов]] || Тестер токов утечки конденсаторов по мотивам измерителя Mr Carlson&amp;#039;s Lab || Приобретены комплектующие&lt;br /&gt;
|-&lt;br /&gt;
| 20200301 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/ispytatiel-eliektronnykh-lamp OP]|| [[Испытатель электронных ламп]] || Проект современного портативного испытателя вакуумных и газоразряных ламп || Сборка прототипа&lt;br /&gt;
|-&lt;br /&gt;
| 20200300 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200300-proghramma-upravlieniia-ms6205/ OP]|| [[МС6205]] || Программный драйвер для индикатора МС6205 || [Завершен] Простейший драйвер запилен за 10 минут в Arduino&lt;br /&gt;
|-&lt;br /&gt;
| 20200299 &lt;br /&gt;
| || [[Насосная станция]] || Шкаф управления насосной станцией для дачного участка || [Завершен] Введен в эксплуатацию&lt;br /&gt;
|-&lt;br /&gt;
| 20200298 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200298-dekatronpc-emuliator OP]|| [[DekatronPC эмулятор]] || Verilog-модель лампового компьютера на ПЛИС ||  В работе&lt;br /&gt;
|-&lt;br /&gt;
| 20200297 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200297-lampovaia-loghika OP]|| [[Ламповая логика]] || Проектирование быстродействующих ламповых логических элементов || Ведутся эксперименты&lt;br /&gt;
|-&lt;br /&gt;
| 20200296 &lt;br /&gt;
| || [[СИ-1|Ремонт СИ-1]] || Восстановление осциллографа СИ-1 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2019 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190295&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Электроника С5-12|&amp;lt;s&amp;gt;Электроника С5-12&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект по оживлению одноплатной многокристальной ЭВМ&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен по причине невозможности найти другие части ЭВМ&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190292&amp;lt;/s&amp;gt;&lt;br /&gt;
| || &amp;lt;s&amp;gt;[[PSU2-170]]&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Проект четырехканального источника питания 0-300В, 0-300мА&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190291&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Светодиодная панель 8х8|&amp;lt;s&amp;gt;Светодиодная панель 8х8&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Светодиодная панель 8х8пикс и 10х10см&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Платы готовы, светодиоды есть, необходимости - нет&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190290 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190290-robotron-s6130 OP]|| [[Robotron S6130]] || Проект по оживлению печатной машинки Robotron || Перерисована схема. Создана новая плата. Прошивка машинки сдамплена&lt;br /&gt;
|-&lt;br /&gt;
| 20190289 &lt;br /&gt;
| || [[GPS Disciplined OCXOs]] || Термостатированный опорный генератор с GPS-подстройкой || Имеются комплектующие, заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20190288 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190288-ozhivlieniie-nml-cm5300 OP]|| [[CM5300]] || Проект приставки для накопителя на магнитных лентах || Ожидает завершения работ по эмулятору лампового компьютера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190286 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190286-zapusk-displieia-igpv1-256-slash-256/ OP]|| [[ИГПВ1-256/256]] || Драйвер плазменного индикатора переменного тока || Ведется разработка высоковольтных ключей. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190285&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Anet A6|&amp;lt;s&amp;gt;Anet A6&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Вялотекущая бесконечная модернизация 3D принтера Anet A6&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен. Принтер уничтожен.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190284&lt;br /&gt;
| || [[DIY CNC]] || Проект самодельного фрезерного станка с ЧПУ || Поставлен на 2024 год&lt;br /&gt;
|-&lt;br /&gt;
| 20190283&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190283-rdmd573204/ OP]|| [[RDMD573204]] || Драйвер плазменного индикатора постоянного тока 4х30 символов || Схема частично перерисована. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190282&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[3D стабилизатор |&amp;lt;s&amp;gt;3D стабилизатор&amp;lt;/s&amp;gt;]]|| &amp;lt;s&amp;gt;Изготовление 3D стабилизатора для основной камеры&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен в связи с приобретением Fyutech G6 и DJI&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190281 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190281-igps1-111-slash-7/ OP]|| [[ИГПС1-111/7]] || Драйвер газоразрядного индикатора 111*7 точек с самосканированием  || Прототип работает. Индикатор показывает. когда-нибудь сделаю аккуратную плату драйвера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190279 &lt;br /&gt;
| || [[Стенд для испытания шаговых двигателей]] || Проект лабораторного стенда для снятия характеристик с шаговых двигателей || Создавался для проведения экспериментов по кандидатской диссертации. От диссертации я отказался, проект отменен.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2018 === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20180275 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180275-esp-clock OP]|| [[ESP Clock]] || Миниатюрные часы на базе ESP8266 и индикаторов ИВ-6|| Собран. Ждет прошивки. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180274 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180274-vakuumoskop OP]|| [[Вакуумоскоп]] || 8-канальный осциллоскоп с датчиками давления || Разработана плата датчиков. Есть датчики. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180272 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/fluidicpc OP]|| [[FluidicPC]] || Проект вычислителя на базе логических элементов с эффектом прилипания струи ||Первая фаза проекта завершена. Создан сумматор на пневмонике&lt;br /&gt;
|-&lt;br /&gt;
| 20180271 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/dekatronpc OP]|| [[DekatronPC]] || Ламповый компьютер на базе ваккумных и газоразрядных ламп. Набор инструкций - [https://ru.wikipedia.org/wiki/Brainfuck Brainfuck] || Разработка Verilog-эмулятора. Сборка экспериментальной ячейки&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2016 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 075&lt;br /&gt;
|[https://op.dekatronpc.com/projects/brainfuckpc OP]|| [[BrainfuckPC]] || Релейный компьютер на базе 600 герконовых реле с набором инструкций Brainfuck++ || Основной этап проекта завершен. ЭВМ способна выполнять программы Hello world.&lt;br /&gt;
Дальшейшая сборка под вопросом&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2015 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20150259&lt;br /&gt;
| || [[Игровое табло]] || Спортивный комплект для боя на имитации ножей. Игровое табло, судейский пульт, ножи || Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20150256&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20150256-stabilizator-viega-109stierieo/ OP]|| [[Стабилизатор ВЕГА-109Стерео]] || Кварцевый стабилизатор для проигрывателя ВЕГА-109 Стерео || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150254&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150254-miekhanichieskiie-chasy OP]|| [[Механические часы]] || Часы на базе механических Flip-flop индикаторов и релейным блоком управления || Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150253&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150253-nixie-clock OP]|| [[Nixie clock]] || Часы с индикаторами ИН-8 или ИН-12 || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150250&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[релейный автополив|&amp;lt;s&amp;gt;релейный автополив&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Автоматизированный контроллер полива растений на больших советских реле&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Завершен. Уничтожен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20150249&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20150249-tiermienvoks-koroliova/ OP]|| [[Терменвокс]] || Терменвокс Королёва (Журнал Радио 2005, №8, №9) || Изготовлены и собраны платы, требуется корпус. Заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20120062|| [[РЛН-Электро (Отладочная плата)]] || Отладочная плата на базе Atmega1280 с множеством элементов на борту || завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20090041|| [[Автомат управления освещением]] || Первый проект разработанный на заказ|| Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20090020|| [[РЦВМ-1]] || Релейная цифровая вычислительная машина №1|| Завершен&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9B%D0%9E-70&amp;diff=1679</id>
		<title>ЛО-70</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9B%D0%9E-70&amp;diff=1679"/>
		<updated>2024-03-04T17:53:17Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Техническое состояние */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Осциллографы]]&lt;br /&gt;
[[Категория:Музей]]&lt;br /&gt;
{{Oscilloscope Sidebar|&lt;br /&gt;
title=ЛО-70|&lt;br /&gt;
image=ЛО-70.jpg |&lt;br /&gt;
caption=ЛО-70 |&lt;br /&gt;
introduced= 1967|&lt;br /&gt;
discontinued=|&lt;br /&gt;
summary=Малогабаритный осциллграф ЛО-70|&lt;br /&gt;
manuals=&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Характеристики ==&lt;br /&gt;
&lt;br /&gt;
* Диаметр экрана - 50-70 мм. &lt;br /&gt;
* Усилитель У: &lt;br /&gt;
** Чувствительность (Е) на частоте 1 КГц - 40 мВ. &lt;br /&gt;
** Коэффициент нелинейных искажений 5%. &lt;br /&gt;
** Полоса пропускания при неравномерности частотной характеристики: &lt;br /&gt;
*** от 25 Гц (а) ±3 дБ до 500 КГц. &lt;br /&gt;
*** От 25 Гц (б) ±5 дб до 1000 КГц. &lt;br /&gt;
** Ёмкость входа 25 пф. &lt;br /&gt;
** Входное сопротивление 100 кОм. &lt;br /&gt;
* Генератор развертки: &lt;br /&gt;
** Диапазон входных частот в девяти поддиапазонах от 10 Гц и до 20 КГц. &lt;br /&gt;
** Нелинейные искажения: &lt;br /&gt;
*** (а) в поддиапазонах 3...7 не более 15%. &lt;br /&gt;
*** (б) в поддиапазонах 2 и 8 не более 25%. &lt;br /&gt;
** Длина развертки по оси &amp;#039;&amp;#039;X&amp;#039;&amp;#039; в поддиапазонах 1...8 - 55 мм. &lt;br /&gt;
* Минимальная амплитуда сигнала на экране электронно-лучевой трубки, обеспечивающая устойчивую синхронизацию около 15 мм. &lt;br /&gt;
* Минимальная амплитуда внешней синхронизации 10 В. &lt;br /&gt;
* Прибор питается от электрической сети переменного тока напряжением 110, 127 или 220 вольт при частоте 50 Гц. &lt;br /&gt;
* Потребляемая прибором мощность 50 Вт. &lt;br /&gt;
* Прибор может работать при температурах от +15° до +35°С. &lt;br /&gt;
* Габариты прибора 275х185х120 мм. &lt;br /&gt;
* Его масса 5,5 кг.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Lo70_atten.jpg&lt;br /&gt;
Lo70_atten1.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
== Техническое состояние == &lt;br /&gt;
&lt;br /&gt;
Удовлетворительное. Луч есть, синхронизация есть, все ручки работают. Требуется косметический ремонт передней панели - осыпается краска.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;-9_04mgNZiA&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки == &lt;br /&gt;
&lt;br /&gt;
http://www.rw6ase.narod.ru/00/prib/lo70.html&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lo70_atten1.jpg&amp;diff=1678</id>
		<title>Файл:Lo70 atten1.jpg</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lo70_atten1.jpg&amp;diff=1678"/>
		<updated>2024-03-04T17:52:50Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lo70_atten.jpg&amp;diff=1677</id>
		<title>Файл:Lo70 atten.jpg</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lo70_atten.jpg&amp;diff=1677"/>
		<updated>2024-03-04T17:52:43Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1676</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1676"/>
		<updated>2024-01-17T07:17:17Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Бюджет проекта (UPD: 08.06.2023) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 19.08.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
**Поправочка - скорость пересчета декатрона А110 - 1МГц, однако согласно Яблонскому, импульс сброса (в данном случае - записи в декатрон) - в среднем на порядок больше импульса пересчета. Поэтому можно смело ронять тактовую частоту до 100кгц...&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов&amp;lt;ref&amp;gt;В.М. Липкин декатроны и их применение. госэнергоатомиздат.  1960&amp;lt;/ref&amp;gt;. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
[[Файл:Exp DPC 2.png|центр|мини|450x450пкс|&lt;br /&gt;
Схема стабилизатора анодного напряжения +150В, 200мА. Питается от трансформатора ТСШ170, выводы 7-8+9-10]]&lt;br /&gt;
[[Файл:ExpDPC cell 1.png|центр|мини|450x450пкс|&lt;br /&gt;
Финальная схема стабилизатора анодного напряжения декатрона +500В (работает со смещением +150В от земли)Питается от трансформатора ТА48, выводы 11-12+17-8]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Exp DPC cell +20v.png|центр|мини|450x450пкс|Схема стабилизатора напряжения +20В, 30мА. Питается от трансформатора ТА7, выводы 19-20+21-22]]&lt;br /&gt;
[[Файл:Exp DPC cell -50v.png|центр|мини|450x450пкс|Схема стабилизатора отрицательного напряжения +50В, 30мА. Питается от трансформатора ТА48, выводы 21-22+19-20]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
[[Файл:IpLine full.png|центр|безрамки|535x535пкс]]&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
[[Файл:ApLine full.png|центр|безрамки|445x445пкс]]&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA1|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA1 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х140мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png|300пкс]]||[[Файл:Dekatronpc module 140x200.png|300пкс]]&lt;br /&gt;
|-&lt;br /&gt;
| Модуль 140х140мм с краевым разъемом 2х36пин. || Первое поколение плат. Модуль 140х200мм с разъемами ГРПМШ-31&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Блок представляет собой полноценный узел машины - IpLine, ApLine или MachineCtrl. Возможно в дальнейшем понадобится увеличить количество блоков.&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
За передней панелью блока скрывается источник питания, на базе одного торроидального трансформатора и выпрямителей вокруг него. Далее идет ряд вентиляторов, затем - три ряда плат модулей, стоящих с шагом 24мм для логики или 36мм для плат с декатронами. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Платы располагаются ближе к задней стороне чтобы все провода между модулями а также к задним разъемам были минимальной длины. На самом блоке располагаются разъемы для модулей, а в подвале сформирована область для соединения модулей между собой. Подобная схема использовалась в ЭВМ [[wikipedia:Bendix_G-15|Bendix G15]]А посмотреть ее воочию, можно у [https://www.youtube.com/watch?v=-RGp-bsYf34&amp;amp;ab_channel=UsagiElectric Usagi в видеоролике]Скорее всего все соединения будут производиться пайкой, А схема подключения - браться их yosys&lt;br /&gt;
[[Файл:DPC Back wiring.png|центр|безрамки|771x771пкс]]&lt;br /&gt;
&lt;br /&gt;
=== Питание ===&lt;br /&gt;
Каждый блок питает себя сам. Изначально идея была поместить в каждый блок только накальные трансформаторы типа ТН61. Однако для полной загрузки блока нужно 4-5 трансформаторов и в ряд они не лезут, а в иной компоновке - съедают слишком много места.  Таким образом требуются заказные торроидальные многообмоточные трансформаторы - которые будут выдавать все необходимые напряжения питания.  При этом если накала на весь блок нужно порядка 300А. Лучшим вариантом на данный момент я считаю сделать 6 накальных обмоток по 50А каждая - по две обмотки на ряд.&lt;br /&gt;
&lt;br /&gt;
В РФ изготовлением трансформаторов занимаются [http://www.torel.ru/ ТОРЭЛ] и [https://tula-transformator.ru/trans_t.html Тульский завод трансформаторов]. ТОРЭЛ запросил 33к за трансформатор, в тульский завод я ТЗ еще не отправлял - нужно окончательно определиться с начинкой блоков и количеством ламп в каждом из них, а также по необходимым напряжениям питания. &lt;br /&gt;
&lt;br /&gt;
Считается, что входное напряжение стабильно по ГОСТ (+-10%). Анодное напряжение не стабилизируется, накальное не стабилизируется. Маломощные напряжения смещения снабжаются линейными стабилизаторами на базе 6С19П&amp;lt;ref&amp;gt;К.Б. Мазель  Стабилизаторы напряжения и тока. госэнергоатомиздат 1955&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==Дорожная карта проекта==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. &lt;br /&gt;
&lt;br /&gt;
Последующие стадии сильно зависят от предыдущих, при этом все стадии можно делать одновременно, но основные силы брошены на последовательную реализацию.&lt;br /&gt;
&lt;br /&gt;
Теперь о главном - &lt;br /&gt;
&lt;br /&gt;
Два мелких ребенка сильно замедляют продвижение по проекту.&lt;br /&gt;
&lt;br /&gt;
=== Стадия 1: Проектирование (UPD: 25.06.2023) &amp;lt;= Вы находитесь здесь ===&lt;br /&gt;
Самая важная стадия проекта - разработка принципиальной схемы машины. Необходимо закрыть все этапы прежде чем двигаться дальше.&lt;br /&gt;
&lt;br /&gt;
====Этап 1.1: Верификационная программная модель C++ (UPD: 25.06.2023)====&lt;br /&gt;
Описание: При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках.  .&lt;br /&gt;
&lt;br /&gt;
Задачи: &lt;br /&gt;
&lt;br /&gt;
* Высокоуровневая программная симуляция поведения мышины&lt;br /&gt;
* Верификационная модель для эмулятора&lt;br /&gt;
&lt;br /&gt;
Прогресс:&lt;br /&gt;
&lt;br /&gt;
* Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++] Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует незначительной доработки для дополнения остальными инструкциями.&lt;br /&gt;
* На данный момент модель подключена  к Verilator&amp;lt;ref&amp;gt;https://www.veripool.org/verilator/&amp;lt;/ref&amp;gt; и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью&lt;br /&gt;
&lt;br /&gt;
==== Этап 1.2: Виртуальный эмулятор лампового компьютера (UPD: 25.06.2023)&amp;lt;ref&amp;gt;Д. Томас. Логическое проектирование и верификация систем в SystemVerilog&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;А.Ю. Романов. Ю.В.Панчул. Цифровой синтез. Практический курс. ДМК 2020&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Харрис и Харрис. Цифровая схемотехника и архитектура компьютера. ДМК.  2017&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Й. Янсен. Курс цифровой электроники в 4-х частях. изд Мир.  1987&amp;lt;/ref&amp;gt; ====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog.&lt;br /&gt;
&lt;br /&gt;
Задачи:   &lt;br /&gt;
&lt;br /&gt;
* Программная эмуляция схемотехники будущей машины  &lt;br /&gt;
* Синтез принципиальной логической схемы лампового компьютера - с помощью yosys и библиотеки элементов  &lt;br /&gt;
* Временной анализ (на основании экспериментальных данных со второй стадии проекта)  &lt;br /&gt;
* Анализ энергопотребления   &lt;br /&gt;
&lt;br /&gt;
Прогресс:  &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает все 8 инструкций brainfuck, а также несколько других.  &lt;br /&gt;
* Виртуальный эмулятор доступный для запуска кем угодно  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
&lt;br /&gt;
* Ведется в среде Verilator и позволяет провести функциональную эмуляцию схемотехники будущей машины &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Стадия 2: Прототипирование(UPD: 25.06.2023) ===&lt;br /&gt;
Следующая стадия - изготовление отдельных элементов компьютера - для проверки корректности работы схем, измерения режимов работы и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.1: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
[[Файл:DPC FPGA EMULATOR.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
[[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. имеет две основные задачи&lt;br /&gt;
&lt;br /&gt;
* Физическая визуализация эмулятора&lt;br /&gt;
* Эмуляция (Замещение) еще несуществующих/несобранных блоков будуей ЭВМ&lt;br /&gt;
&lt;br /&gt;
На данный момент сам эмулятор собран, в нем находится старая демонстрационная прошивка. По завершении этапа 1.2 - прошивка обновится и эмулятор будет вести себя как настоящий ламповый компьютер.&lt;br /&gt;
&lt;br /&gt;
Сзади компьютер оснащен разъемами для подключения блоков. Проектно поддерживается 128 входов и 128 выходов. Практически число может быть другим.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.2: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. Ее описание - выше. &lt;br /&gt;
&lt;br /&gt;
==== Этап 2.3: Разработка модулей ламповой логики ====&lt;br /&gt;
Результатом данного этапа будут платы - прототипы модулей ламповой логики. &amp;lt;ref&amp;gt;А.М. Бонч-Бруевич. Применение электронных ламп в экспериментальной физике. изд-е 4. М. 1956&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Handbook of electronic control circuits. By Jonh Markus. London 1959&amp;lt;/ref&amp;gt;С них можно будет снять мерки для временного анализа и анализа энергопотребления.&lt;br /&gt;
&lt;br /&gt;
==== Этап 2.4: Разработка источников питания ====&lt;br /&gt;
&lt;br /&gt;
=== Стадия 3: Сборка блоков машины ===&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.1 Разработка корпуса ====&lt;br /&gt;
На данном этапе необходимо будет довести разработку корпуса машины до стадии отправки чертежей на производство.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.2. Изготовление корпуса ====&lt;br /&gt;
Корпус сам по себе будет состоять из сотни частей, требуется изготовить их все и &lt;br /&gt;
&lt;br /&gt;
==== Этап 3.3 Сборка модулей ====&lt;br /&gt;
Изготовление и распайка модулей ламповой логики с проверкой тестеров всех ламп, с проверкой модулей на тестере модулей и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 3.4: Монтаж схемотехники машины====&lt;br /&gt;
Совершается одновременно с этапом 3.3 - по мере сборки модулей производится ошиновка разъемов вкупе с эмулятором производится верификация корректной работы прибора&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 17.01.2024)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|93&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;183&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%98%D1%81%D0%BF%D1%8B%D1%82%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B0%D0%BC%D0%BF&amp;diff=1675</id>
		<title>Испытатель электронных ламп</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%98%D1%81%D0%BF%D1%8B%D1%82%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D1%8B%D1%85_%D0%BB%D0%B0%D0%BC%D0%BF&amp;diff=1675"/>
		<updated>2024-01-10T08:55:38Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Прогресс */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Файл:Avt5229.jpg|мини|справа|Польский ламповый тестер AVT5229 как прототип]]&lt;br /&gt;
== Идея ==&lt;br /&gt;
&lt;br /&gt;
Не смотря на то, что кремниевый мир победил, электронно-вакуумные приборы еще не забыты. На базе вакуумных ламп создают в первую очередь аудио-усилители, гитарные комбики, фонокорректоры и т.д. на газоразрядных индикаторах во всю делают часы и прочие индикаторные устройства.&lt;br /&gt;
&lt;br /&gt;
Однако, электронные лампы, можно сказать, более не выпускаются и в руки самодельщиков попадают экземпляры полувековой свежести неизвестной степени наработки. &lt;br /&gt;
&lt;br /&gt;
Для лампового компьютера использовать лампу, не отвечающую требованиям ЧТУ тем более недопустимо, так как &amp;quot;плывущая&amp;quot; лампа будет создавать &amp;quot;плывущие&amp;quot; проблемы. &lt;br /&gt;
&lt;br /&gt;
== Прототипы ==&lt;br /&gt;
&lt;br /&gt;
* [[Измеритель_электронных_ламп_Л1-3]] - один из наиболее функциональных советских испытателей ламп&lt;br /&gt;
* [https://sklep.avt.pl/miernik-lamp-elektronowych-plytka-drukowana-i-zaprogramowany-uklad.html AVT5229] Польский микроконтроллерный испытатель с открытой прошивкой&lt;br /&gt;
* [https://www.dos4ever.com/uTracer3/uTracer3_pag0.html utracer] - миниатюрный испытатель с закрытой прошивкой&lt;br /&gt;
* http://www.klausmobile.narod.ru/projects/pr_02_kmtt_r.htm - ламптестер клаусмобиля. ПОдключается к компьютеру через плату АЦП&lt;br /&gt;
&lt;br /&gt;
== План работ == &lt;br /&gt;
&lt;br /&gt;
# Оцифровать схему AVT5229 в САПР, например DipTrace или [https://kicad-pcb.org/ KiCAD]&amp;lt;ref&amp;gt;Наилучшее решение - openSource САПР. Категорическое нет онлайн-сервисам&amp;lt;/ref&amp;gt;;&lt;br /&gt;
# Модифицировать схему исходя из данного ТЗ&lt;br /&gt;
# Переписать исходную прошивку под новый микроконтроллер, дисплей и управление&lt;br /&gt;
# Разработать способ хранения информации о лампах, с возможностью добавлять новые лампы без перепрошивки устройства&lt;br /&gt;
# Оцифровать информацию о наиболее часто используемых лампах&lt;br /&gt;
&lt;br /&gt;
== Прогресс ==&lt;br /&gt;
&lt;br /&gt;
* Собирается польский референс AVT5229. Спасибо тов. [https://www.youtube.com/channel/UCkn7leLr9uEQrvSbn89HUpQ Дмитрию] за подгон в виде платы референса. &lt;br /&gt;
[[Файл:AVT5229.jpg|мини|справа|Испытатель ламп AVT5229. Промежуточный этап сборки]]&lt;br /&gt;
&lt;br /&gt;
== Техническое задание ==&lt;br /&gt;
&lt;br /&gt;
Разработать портативный автономный испытатель, позволяющий снимать характеристи вакуумных приемно-усилительных ламп, газонаполненных ламп, газоразрядных и вакуумных индикаторов с открытой схемой и прошивкой, позволяющий добавлять любую лампу, для которой прибором будет возможно создать необходимые уровни тока и напряжения.&lt;br /&gt;
&lt;br /&gt;
Испытатель предполагается поставлять в виде набора для сборки - плата + комплектующие, прошитый МК, отдельная плата.&lt;br /&gt;
&lt;br /&gt;
=== Основные комплектующие ===&lt;br /&gt;
&lt;br /&gt;
* Микроконтроллер - предположительно MSP430F5510 - LQFP48, Стоимость 2,3$. 2 SPI канала. 10 бит АЦП USB-интерфейс.&lt;br /&gt;
* А лучше если MSP430FG6625IPZR - 25 MHz MCU with 64KB FLASH, 10KB SRAM, 16-bit Sigma-Delta ADC, Dual DAC, DMA, 2 OpAmp, 160 Seg LCD, USB, LQFP100&lt;br /&gt;
* Дисплей. Графический. не менее 128*64.&lt;br /&gt;
&lt;br /&gt;
=== Краткое описание прибора ===&lt;br /&gt;
&lt;br /&gt;
В сборе - портативное устройство, Внешне похожее на AVT5229. На передней панели по центру располагается дисплей не менее 128*64 точек, энкодер, кнопки управления.&lt;br /&gt;
&lt;br /&gt;
В верхней части передней панели прибора - расположены панельки для подключения ламп. Все панельки подключены в параллель.&lt;br /&gt;
&lt;br /&gt;
Внутри прибора находятся:&lt;br /&gt;
&lt;br /&gt;
* Плата испытателя, с управляющим микроконтроллером, преобразователями напряжения, датчиками тока и напряжения. На плате присутствуют клеммы катода, анода, сетки 1,2,3,4, накал 1 и накал 2. также на плате есть два реле для автоматической коммутации сдвоенных приборов. При наличии платы коммутации эти реле не нужны.&lt;br /&gt;
* Плата источника питания. на выходе платы имеется напряжение +5В для питания микроконтроллера, +12В для питания цепей драйверов, +400В для питания анодного и сеточного напряжений, +150В - для подачи отрицательного напряжения на сетку; 0-12в для питания накала ламп. &lt;br /&gt;
* Плата коммутаций. С массивом малогабаритных реле (например [https://datasheet.lcsc.com/szlcsc/1809191818_HF-Xiamen-Hongfa-Electroacoustic-HFD4-5-SR_C64399.pdf Omron HFD4]), которые позволяют производить автоматическую коммутацию нужной цоколевки лампы. Без платы, на задней панели выводится два рада разъемов  и проводами собирается нужная цоколевка. Либо, используются многопозиционные переключатели. Коммутация с помощью реле осуществляется без напряжения - для предотвращения дугообразования и повышения срока службы&lt;br /&gt;
&lt;br /&gt;
=== Функции прибора ===&lt;br /&gt;
&lt;br /&gt;
Для вакуумных приемно-усилительных ламп:&lt;br /&gt;
&lt;br /&gt;
* Автоматическая проверка ламп на КЗ - перебором всех контактов с помощью релейной матрицы, с подачей небольшого напряжения;&lt;br /&gt;
* Проверка лампы на наличие вакуума - подачей высокого напряжения с токовым ограничением;&lt;br /&gt;
* Измерение анодного тока, крутизны, тока сеток лампы - по методикам, применяемым в иных ламповых тестерах;&lt;br /&gt;
* Автоматическая тренировка лампы - подачей накала и пониженного анодного напряжения длительный период времени по таймеру;&lt;br /&gt;
* Снятие ВАХ;&lt;br /&gt;
&lt;br /&gt;
Для газоразрядных приборов (стабилитронов, тиратронов, индикаторов):&lt;br /&gt;
&lt;br /&gt;
* Напряжение пробоя, напряжение погасания;&lt;br /&gt;
* Рабочий ток;&lt;br /&gt;
* Рабочее напряжение;&lt;br /&gt;
* Время срабатывания;&lt;br /&gt;
&lt;br /&gt;
Проверяемые лампы могут быть добавлены в прибор вручную, без перепрошивки. для этого должен быть предусмотрен способ хранения параметров ламп&lt;br /&gt;
&lt;br /&gt;
=== Требования к электропитанию ===&lt;br /&gt;
&lt;br /&gt;
* Питание от сети 110-220В;&lt;br /&gt;
* Встроенный аккумулятор 18-24В. например - от шуруповерта;&lt;br /&gt;
&lt;br /&gt;
=== Конструктивные требования ===&lt;br /&gt;
&lt;br /&gt;
* Масса - не более 3 кг&lt;br /&gt;
* Габариты прибора - не более 300*200*100мм&lt;br /&gt;
* габариты платы - не более 200*150мм&lt;br /&gt;
&lt;br /&gt;
=== Требования к программному обеспечению ===&lt;br /&gt;
&lt;br /&gt;
* Открытый исходный код. Прошивка на языке С/С++&lt;br /&gt;
&lt;br /&gt;
=== Технико-экономические требования ===&lt;br /&gt;
&lt;br /&gt;
* Использовать наиболее дешевые, широко-выпускаемые комплектующие, с большим количеством аналогов. Минимизировать влияние параметров аналоговых компонентов за счет автокалибровки прибора.&lt;br /&gt;
&lt;br /&gt;
=== Прочие требования ===&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/radiolok/lamptest - репозиторий проекта&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%90201&amp;diff=1674</id>
		<title>А201</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%90201&amp;diff=1674"/>
		<updated>2023-11-27T07:56:09Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Декатроны]]&lt;br /&gt;
[[Категория:Музей]]&lt;br /&gt;
[[Категория:Электронные_лампы]]&lt;br /&gt;
[[Файл:А201.jpg|мини|справа]]&lt;br /&gt;
Декатрон-полиатрон счетно-коммутаторный многоанодный для управления знаковыми и цифровыми индикаторами тлеющего разряда и для работы в счетных и счетно-решающих устройствах.&lt;br /&gt;
&lt;br /&gt;
Цвет счечения - фиолетовый (по справочнику).  Индикация через купол баллона Оформление стеклянное, безцокольное (РШ31).&lt;br /&gt;
&lt;br /&gt;
[[Файл:А201-1.jpg|мини]]&lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
* Цоколевка:&lt;br /&gt;
** 1 - поданод 1й, 2 - анод нулевой, 3 - анод 9й, 4 - анод 8й, 5 - поданод 2й, 6 анод 7й, 7 - анод 6й, 8 - анод 5й, 9 - экран, 10 - анод 4й, 11 - анод 3й, 12 - анод 2й, 13 - катод, 14 - анод 1й.&lt;br /&gt;
* Коэффициент пересчета	10&lt;br /&gt;
* Напряжение источника питания анода ≥450В&lt;br /&gt;
* Напряжение возникновения разряда ≤425В&lt;br /&gt;
* Напряжение поддержания разряда 160-210В&lt;br /&gt;
* Напряжение смещения на поданодах:&lt;br /&gt;
** в счетной схеме 40-50В&lt;br /&gt;
** в схеме управления цифровыми индикаторами 160-190В&lt;br /&gt;
* Амплитуда импульса напряжения сброса ≥190В&lt;br /&gt;
* Рабочий ток:&lt;br /&gt;
** в счетной схеме 2-2,5мА&lt;br /&gt;
** в схеме управления цифровыми индикаторами 2,5-3,5мА&lt;br /&gt;
* Данные управляющих импульсов&lt;br /&gt;
** скорость счета в счетной схеме 10кГц&lt;br /&gt;
** скорость счета в схеме управления цифровыми индикаторами 5кГц&lt;br /&gt;
** амплитуда импульса 135-150В&lt;br /&gt;
** длительность импульса в счетной схеме ≥170мкс&lt;br /&gt;
** длительность импульса в схеме управления цифровыми индикаторами ≥70мкс&lt;br /&gt;
* Наработка ≥3000ч&lt;br /&gt;
[[Файл:A201 connection example.png|центр|мини|450x450пкс|Кусок схемы профилографа-профилометра]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;slideshow&amp;quot;&amp;gt;&lt;br /&gt;
Yablonsky A201 p1.png&lt;br /&gt;
Yablonsky A201 p2.png&lt;br /&gt;
Yablonsky A201 p3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
*  Кацнельсон. Калугин. Электровакуумные электронные и газоразрядные приборы. Справочник. стр.501 - технические характеристики&lt;br /&gt;
* Яблонский Ф.М. , Янкин Г.М. , Декатроны , изд-во &amp;quot;Энергия&amp;quot;, 1967 г Глава 2.6 Многоанодный декатрон. стр. 88. - описание принципа работы и схема подключения декатрона и газоразрядного индикатора&lt;br /&gt;
* Лернер М.И., Рыжевский А.Г., Шляндин В.М. Цифровая индикация. 1970г. стр. 46 - та же схема, со ссылкой на Яблонского&lt;br /&gt;
* http://rt20.mybb2.ru/viewtopic.php?f=2&amp;amp;t=7362 - тема по сопряжению. не изучал глубоко. может накопали&lt;br /&gt;
* [https://dekatronpc.com/images/d/d5/%D0%A2%D0%A3_11-%D0%9E%D0%940.339.032-85_%28%D0%9F%D0%BE%D0%BB%D0%B8%D0%B0%D1%82%D1%80%D0%BE%D0%BD_%D0%90-201%29.zip ТУ 11-ОД0.339.032-85_(Полиатрон А-201).zip] - ТУ на прибор. Скан с микропленки&lt;br /&gt;
* https://radiokot.ru/forum/viewtopic.php?p=3298971#p3298971 - тут wallawr выложил ТУ на него&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%90201&amp;diff=1673</id>
		<title>А201</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%90201&amp;diff=1673"/>
		<updated>2023-11-27T07:55:50Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Декатроны]]&lt;br /&gt;
[[Категория:Музей]]&lt;br /&gt;
[[Категория:Электронные_лампы]]&lt;br /&gt;
[[Файл:А201.jpg|мини|справа]]&lt;br /&gt;
Декатрон-полиатрон счетно-коммутаторный многоанодный для управления знаковыми и цифровыми индикаторами тлеющего разряда и для работы в счетных и счетно-решающих устройствах.&lt;br /&gt;
&lt;br /&gt;
Цвет счечения - фиолетовый (по справочнику).  Индикация через купол баллона Оформление стеклянное, безцокольное (РШ31).&lt;br /&gt;
&lt;br /&gt;
[[Файл:А201-1.jpg|мини]]&lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
* Цоколевка:&lt;br /&gt;
** 1 - поданод 1й, 2 - анод нулевой, 3 - анод 9й, 4 - анод 8й, 5 - поданод 2й, 6 анод 7й, 7 - анод 6й, 8 - анод 5й, 9 - экран, 10 - анод 4й, 11 - анод 3й, 12 - анод 2й, 13 - катод, 14 - анод 1й.&lt;br /&gt;
* Коэффициент пересчета	10&lt;br /&gt;
* Напряжение источника питания анода ≥450В&lt;br /&gt;
* Напряжение возникновения разряда ≤425В&lt;br /&gt;
* Напряжение поддержания разряда 160-210В&lt;br /&gt;
* Напряжение смещения на поданодах:&lt;br /&gt;
** в счетной схеме 40-50В&lt;br /&gt;
** в схеме управления цифровыми индикаторами 160-190В&lt;br /&gt;
* Амплитуда импульса напряжения сброса ≥190В&lt;br /&gt;
* Рабочий ток:&lt;br /&gt;
** в счетной схеме 2-2,5мА&lt;br /&gt;
** в схеме управления цифровыми индикаторами 2,5-3,5мА&lt;br /&gt;
* Данные управляющих импульсов&lt;br /&gt;
** скорость счета в счетной схеме 10кГц&lt;br /&gt;
** скорость счета в схеме управления цифровыми индикаторами 5кГц&lt;br /&gt;
** амплитуда импульса 135-150В&lt;br /&gt;
** длительность импульса в счетной схеме ≥170мкс&lt;br /&gt;
** длительность импульса в схеме управления цифровыми индикаторами ≥70мкс&lt;br /&gt;
* Наработка ≥3000ч&lt;br /&gt;
[[Файл:A201 connection example.png|центр|мини|450x450пкс|Кусок схемы профилографа-профилометра]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:А201-2.gif|мини|Схема включения по Яблонскому]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;slideshow&amp;quot;&amp;gt;&lt;br /&gt;
Yablonsky A201 p1.png&lt;br /&gt;
Yablonsky A201 p2.png&lt;br /&gt;
Yablonsky A201 p3.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
*  Кацнельсон. Калугин. Электровакуумные электронные и газоразрядные приборы. Справочник. стр.501 - технические характеристики&lt;br /&gt;
* Яблонский Ф.М. , Янкин Г.М. , Декатроны , изд-во &amp;quot;Энергия&amp;quot;, 1967 г Глава 2.6 Многоанодный декатрон. стр. 88. - описание принципа работы и схема подключения декатрона и газоразрядного индикатора&lt;br /&gt;
* Лернер М.И., Рыжевский А.Г., Шляндин В.М. Цифровая индикация. 1970г. стр. 46 - та же схема, со ссылкой на Яблонского&lt;br /&gt;
* http://rt20.mybb2.ru/viewtopic.php?f=2&amp;amp;t=7362 - тема по сопряжению. не изучал глубоко. может накопали&lt;br /&gt;
* [https://dekatronpc.com/images/d/d5/%D0%A2%D0%A3_11-%D0%9E%D0%940.339.032-85_%28%D0%9F%D0%BE%D0%BB%D0%B8%D0%B0%D1%82%D1%80%D0%BE%D0%BD_%D0%90-201%29.zip ТУ 11-ОД0.339.032-85_(Полиатрон А-201).zip] - ТУ на прибор. Скан с микропленки&lt;br /&gt;
* https://radiokot.ru/forum/viewtopic.php?p=3298971#p3298971 - тут wallawr выложил ТУ на него&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Yablonsky_A201_p3.png&amp;diff=1672</id>
		<title>Файл:Yablonsky A201 p3.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Yablonsky_A201_p3.png&amp;diff=1672"/>
		<updated>2023-11-27T07:54:40Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Яблонский. Декатроны А201&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Yablonsky_A201_p2.png&amp;diff=1671</id>
		<title>Файл:Yablonsky A201 p2.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Yablonsky_A201_p2.png&amp;diff=1671"/>
		<updated>2023-11-27T07:54:08Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Яблонский. декатроны А201&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Yablonsky_A201_p1.png&amp;diff=1670</id>
		<title>Файл:Yablonsky A201 p1.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Yablonsky_A201_p1.png&amp;diff=1670"/>
		<updated>2023-11-27T07:53:33Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Яблонский. декатроны. А201&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:A201_connection_example.png&amp;diff=1669</id>
		<title>Файл:A201 connection example.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:A201_connection_example.png&amp;diff=1669"/>
		<updated>2023-11-27T07:51:49Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Кусок схемы профилографа-профилометра&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%93%D0%98%D0%9F_over_10000_%D0%BD%D0%B0_%D1%81%D1%82%D0%B5%D1%80%D0%BE%D0%B8%D0%B4%D0%B0%D1%85&amp;diff=1668</id>
		<title>ГИП over 10000 на стероидах</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%93%D0%98%D0%9F_over_10000_%D0%BD%D0%B0_%D1%81%D1%82%D0%B5%D1%80%D0%BE%D0%B8%D0%B4%D0%B0%D1%85&amp;diff=1668"/>
		<updated>2023-10-20T10:54:41Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Прогресс */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:Индикаторы]]&lt;br /&gt;
&lt;br /&gt;
Продолженние проекта [[ГИП10000 на стероидах]]. Исправление всех ошибок, увеличение масштаба, унификация и упрощение процесса сборки.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Мега-дисплей1.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
== Технические характеристики ==&lt;br /&gt;
* Конфигурация панелей - 8х6&lt;br /&gt;
* Разрешение панели - 256х192пикс.&lt;br /&gt;
* Количество плиток - 48, в тайлах 2х2 (итого 12 тайлов).&lt;br /&gt;
* Размер рабочего поля 1600х1200мм.&lt;br /&gt;
* Вес одного тайла (проектный): 7кг&lt;br /&gt;
* Вес индикатора: 100кг (из них 84кг - тайлы)&lt;br /&gt;
&lt;br /&gt;
== Тезисы ==&lt;br /&gt;
* Весь дисплей представляет собой сборную констркцию, состоящую из основной рамы, на которой клепятся индикаторные тайлы.&lt;br /&gt;
* Каждый тайл - это самостоятельная единица индикации, из четырех панелей [[ИГПП-32/32]] или [[ИГПП2-32/32]], в конфигурации 2х2&lt;br /&gt;
** Индикаторы [[ИГПП2-32/32]] снабжены разъемами. Ответные разъемы должны быть на драйверных платах&lt;br /&gt;
** Индикаторы  [[ИГПП-32/32]] подразумевают площадки под пайку, следовательно требуется переходная плата, которая полуотверстиями подпаивается к индикатору и на которой - располагается разъем для подключения панели к драйверам&lt;br /&gt;
** На тайле находятся - драйверные платы - на 64 анодных и 64 катодных ключа, 512 байт ОЗУ и ПЛИС, в которой реализована логика сканирования.&lt;br /&gt;
** Тайл имеет параллельный интерфейс обмена данными. В тайл достаточно залить массив данных, далее - он будет отображать его независимо.&lt;br /&gt;
&lt;br /&gt;
== Прогресс ==&lt;br /&gt;
* (1/11/2020) Первые мысли о нечто большем чем 3х3&lt;br /&gt;
&lt;br /&gt;
[[Файл:Игпп2.jpg|400px|без|15 панелей ИГПП и ИГПП2 в конфигурации 5х3. Почему бы и нет?]]&lt;br /&gt;
&lt;br /&gt;
* (12/11/2020) Приехали 10 панелей ИГПП32-32. Общий счет - 25.&lt;br /&gt;
* (25/11/2020) Прибыли еще 12 панелей - ИГПП32-32 5 штук и ИГГ1-32-32Л - 7 штук. Общий счет - 37.&lt;br /&gt;
* (01/12/2020) Прибыла посылка от Виктора Боева. Еще 12 плиток ИГПП2-32-32. Итоговый счет - 49 плиток. ИГПП2 в общей сложности - 18 штук, на 4 цело не делится. Небольшая проблема. Получится 4 тайла из ИГПП2 целиком и в еще один тайл есть только две штуки.&lt;br /&gt;
* При восстановлении ИМГ3-01 обнаружилось 6 дохлых плиток, так что есть дефицит&lt;br /&gt;
*2022 Приобрел еще 10 плиток ИГПП32*32. Вроде бы теперь вновь имеется достаточное количество панелей для проекта.&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%98%D0%93%D0%9F%D0%A11-111/7&amp;diff=1667</id>
		<title>ИГПС1-111/7</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%98%D0%93%D0%9F%D0%A11-111/7&amp;diff=1667"/>
		<updated>2023-10-05T15:22:17Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Индикаторы]]&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Igps1-111-7.jpg|центр]]&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
Газоразрядный индикатор зеленого свечения 111*7 точек с самосканированием&lt;br /&gt;
&lt;br /&gt;
Помимо этого индикатора, аналогичную схему управления имеют:&lt;br /&gt;
&lt;br /&gt;
* ГИПС-16 (ГИПС-16-1) - аналогичной конфигурации 111 столбцов по 7 точек, но без люминофора. Цвет свечения - оранжево-красный&lt;br /&gt;
* ИГПС1-111/7 - свечение зеленого цвета благодаря люминофору&lt;br /&gt;
* ИГПС1-222/7 - длинный индикатор, на 222 столбца по 7 точек без люминофора. Цвет свечения - оранжево-красный&lt;br /&gt;
* ИГПС2-222/7 - такой же по характеристикам как ИГПС1-222/7, но 30мм выотой вместо 36. вроде бы все отличия&lt;br /&gt;
&lt;br /&gt;
Внутри индикаторов дваойная система анодов. Внутренняя система самосканирования - где разряд создается на нужном столбце во всех точках - создает еле уловимое свечение индикатора. Внешняя система - уже аноды индикации. на том столбце, где сейчас горяд точки анодов сканирования - там и будет гореть индикация&lt;br /&gt;
&lt;br /&gt;
[[Файл:Игпс111-7-1 общая.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
На аноды сканирования подается постоянное положительное смещение в +355В.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Схема анодного ключа || Схема катодного ключа&lt;br /&gt;
|-&lt;br /&gt;
| [[Файл:Игпс111-7-1-анодный.jpg|мини]] || [[Файл:Игпс111-7-1-катодный.jpg|мини]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Анодный ключ позволяет подать на анод напряжение покоя в 100В. при подаче сигнала - подается полное напряжение в 295в&lt;br /&gt;
* Катодный ключ в покое подает 105В на индикатор (можно подавать и 100В). В активном - притягивает к земле. &lt;br /&gt;
** Перебирать катоды в порядке 1-2-3-4 по таймингам, описанным в справочнике на индикатор&lt;br /&gt;
&lt;br /&gt;
[https://radiokot.ru/forum/viewtopic.php?f=3&amp;amp;t=3210&amp;amp;p=1671623&amp;amp;hilit=%D0%B3%D0%B8%D0%BF%D1%81#p1671623 Вот еще одна схема управления с радиокота - авто запустил от нее ГИПС16] &lt;br /&gt;
&lt;br /&gt;
[[Файл:Igps schema.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Обзор ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;qEY88VbfwqY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки == &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radiolok/igps1-111_7 Репозиторий на github]&lt;br /&gt;
* Вуколов, Михайлов. Знакосинтезирующие индикаторы&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9B%D0%B0%D0%BC%D0%BF%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0&amp;diff=1666</id>
		<title>Ламповая логика</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9B%D0%B0%D0%BC%D0%BF%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0&amp;diff=1666"/>
		<updated>2023-10-02T13:19:33Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[категория:Проекты]]&lt;br /&gt;
&lt;br /&gt;
Вариации схем для лампового компьютера&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Схема&lt;br /&gt;
!6Ж2Б&lt;br /&gt;
!6Н16Б&lt;br /&gt;
!6Х7Б&lt;br /&gt;
!Накал на элемент&amp;lt;ref&amp;gt;Расчет мощности накала на логическую ячейку. Если число ламп нецелое число - то мощность накала на лампу также берется только частично&amp;lt;/ref&amp;gt;, Вт&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |BUF&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1.25 &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Катодный повторитель Позволяет согласовать цепь с высоким сопротивлением с цепью с низким. Увеличивает нагрузочную способность линии.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |NOT&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1,25 &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Вероятно что для утилизации имеющегося количества 6Ж2Б часть плат инверторов будет собрана именно на этих лампах.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2NOR &lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2,5&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Предположительно, на разъеме платы можно будет осуществить внешнюю коммутацию и превратить два инвертора в один элемент 2ИЛИ-НЕ.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2OR&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2,5 &lt;br /&gt;
|Два буфера катодных повторителя.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|1,9&lt;br /&gt;
|Пассивный элемент,, Но не во всех цепочках его можно реализовать.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |2AND&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Элемент реализуется на сдвоенном диоде 6Х7Б работающий в комбинации с катодным повторителем. Может быть реализован как в паре 6Х7Б+6Ж2Б, так и 6Х7Б+6Н16Б.  На два элемента потребуется в первом случае 4 лампы, во втором - три. По накалу - одинаково.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| 1,9&lt;br /&gt;
|Пассивная реализация. Будет работать только в составе прочих схем, например RS-защелок&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2-2AOI&lt;br /&gt;
|&lt;br /&gt;
|3&lt;br /&gt;
|&lt;br /&gt;
|7,5&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |And-Or_invert. ~(AB+CD).  реализация может быть различной. Из аналогов кремниевого мира - два ИЛИ(пассивных?) и NAND.  Реализации&lt;br /&gt;
&lt;br /&gt;
# на трех лампах элементах 6Н16Б&lt;br /&gt;
# пассивные ИЛИ, активный НЕ&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2NAND&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| 3,15&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Элемент реализуется на сдвоенном диоде 6Х7Б работающий в комбинации с инвертором. Может быть реализован как в паре 6Х7Б+6Ж2Б, так и 6Х7Б+6Н16Б.  На два элемента потребуется в первом случае 4 лампы, во втором - три. По накалу - одинаково.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
|-&lt;br /&gt;
|RSLATCH&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2,5&lt;br /&gt;
|реализуется на одной лампе 6Н16Б. Возможно реализация на двух 6Ж2Б даст какие-то дополнительные возможности по сеткам.  Но это требует исследования&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |DLATCH&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|6,9&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Технически это RS-защелка, два элемента И, скорее всего пассивных, плюс инвертор. Последний может быть как на 6Ж2Б, так и на половине 6Н16Б. По накалу опять же разницы нет.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|1,5&lt;br /&gt;
|2&lt;br /&gt;
|6,9&lt;br /&gt;
|-&lt;br /&gt;
|DFF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Предполагается, что D-триггер будет иметь аналогичную DLATCH схемотехнику, с конденсатором на линии C. Но это не точно. Также нужен сигнал для асинхронного сброса - потребуется доп. схема.&lt;br /&gt;
|-&lt;br /&gt;
|DFFSR&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Триггер с синхронным сбросом&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BUF===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:BUF 2J2P.png|мини|центр]]||[[Файл:BUF_x2_6N16B.png|мини|центр]]&lt;br /&gt;
|-&lt;br /&gt;
|Буфер на пентоде. Схема упрощенная||два буфера на сдвоенном триоде. Схема упрощенная&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===INV===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:INV_6J2B.png|мини|центр]]||[[Файл:INV_x2_6N16B.png|мини|центр]]&lt;br /&gt;
|-&lt;br /&gt;
|инвертор на пентоде. Схема упрощенная||два инвертора на сдвоенном триоде. Схема упрощенная&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1665</id>
		<title>Категория:Проекты</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1665"/>
		<updated>2023-09-08T08:37:17Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* 2022 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание == &lt;br /&gt;
&lt;br /&gt;
Представлен неполный список моих проектов, различной степени реализации: от идеи, до завершенного&lt;br /&gt;
&lt;br /&gt;
Каждый проект имеет свой номер формата ГГГГХХХХ, где:&lt;br /&gt;
&lt;br /&gt;
* ГГГГ - год создания проекта, &lt;br /&gt;
* ХХХХ - сквозной порядковый номер&lt;br /&gt;
&lt;br /&gt;
Под каждым проектом может скрываться:&lt;br /&gt;
&lt;br /&gt;
* Интересная идея, которую можно бы было реализовать&lt;br /&gt;
* Создание некоторого устройства, которое было начало хоть в какой-то степени - разработан дизайн-проект, имеются комплектующие и т.п.&lt;br /&gt;
* Завершенные коммерческие заказы на изготовление печатной платы, электронного устройства и т.п. В общей сводной таблице практически не представлены.&lt;br /&gt;
&lt;br /&gt;
=== Идеи вне времени и пространства ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Эти идеи возникают спонтанно в процессе общения с людьми. Часть из них вряд ли когда-то будут мной воссозданы, но их обязательно нужно зафиксировать. Другая часть - интересные внешние проекты, которые захотелось повторить, но под полноценную страничку они еще не готовы &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Семисегментный индикатор, где в качестве сегментов выступают 500Вт керамические стержни для гриля. На этом 3,5кВт-ном дисплее вполне можно будет жарить шашлык. А отображаемая цифра будет показывать сколько времени осталось до готовности.&lt;br /&gt;
* Тетрис, где в качестве элементов поля 20*10 используются миниатюрные лампы накаливания&lt;br /&gt;
* Осциллограф с механической разверткой на базе диска Нипкова (http://rfanat.ru/s3/izm-mk.html)&lt;br /&gt;
* Версия стабилизатора частоты вращения проигрывателя [[Стабилизатор_ВЕГА-109Стерео|ВЕГА 109 Стерео]] на лампах&lt;br /&gt;
* Индукционная паяльная станция с жалом на эффекте Кюри. Можно купить за 60к, а можно собрать ([https://habr.com/ru/post/412607/ Статья]) ([https://github.com/SergeyMax/SolderingStation github])&lt;br /&gt;
* Умное зеркало (большой дисплей за полупрозрачным зеркалом) (https://magicmirror.builders/ https://www.buildxyz.xyz/magicmirror-builders-guide/)&lt;br /&gt;
* Портативный измеритель АЧХ (http://www.sdr-deluxe.com/publ/nwt200_achkh_metr_i_ne_tolko/1-1-0-13)&lt;br /&gt;
* Крутой 3D-печатный 6-осевой риг для камеры. https://www.youtube.com/watch?v=WNtC9EkYCYQ https://www.thingiverse.com/thing:4652484 - и еще один https://www.youtube.com/watch?v=1FfB7cLkUyQ&amp;amp;ab_channel=isaac879&lt;br /&gt;
&lt;br /&gt;
=== 2023 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
|20230333&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230333-diy-self-made-ic-chip/ OP]&lt;br /&gt;
|[[DIY-IC]]&lt;br /&gt;
|Изготовление самодельных микросхем в гараже&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 20230332 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230332-ozhivlieniie-scara-robota-srx-611 OP]||[[SRX-611]] || Оживление Scara робота Sony SRX-611 || &lt;br /&gt;
|-&lt;br /&gt;
| 20230331 &lt;br /&gt;
| || [[Neon]] || Изготовление неоновых вывесок и других газонаполненных и вакуумных приборов || &lt;br /&gt;
|-&lt;br /&gt;
| 20230330 &lt;br /&gt;
| || [[Glass Lathe]] || Стеклодувный станок || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2022 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20220328 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20220328-knizhnyi-skanier/ OP]|| [[Книжный сканер]] || Книжный разворотный сканер || &lt;br /&gt;
|-&lt;br /&gt;
| 20220329 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20220329-hitachi-sp14q002/ OP]|| [[Hitachi SP14Q002]] || Оживление индикатора Hitachi SP14Q002 || У индикатора нет фрейм-буффера, ему требуется доп. плата для выдачи картинки. Микросхема есть, заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2021 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20210323 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210323-16-kanalnyi-draivier-iel-na-optosimistorakh/ OP]|| [[Драйвер ИЭЛ]] || Универсальный драйвер для Электролюминесцентных индикаторов || Версия на оптосимисторах в эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20210324 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210324-mietieostantsiia-na-blinkiernom-tablo/ OP]|| [[Метеостанция]] || Метеостанция на RPi3B и флажковом табло || Проект завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2020 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20200322 &lt;br /&gt;
| || [[Аналоговое телевещание]] || Проект телевизионной вещательной станции на частоте 77,25МГц на базе лампового генератора с видиконной камерой [[КТП-82]] || Идея&lt;br /&gt;
|-&lt;br /&gt;
| 20200321 &lt;br /&gt;
| || [[Перцептрон]] || Проект электронно-вакуумного перцептрона с механизированными весами || Концепция&lt;br /&gt;
|-&lt;br /&gt;
| 20200311 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200311-chasy-na-in18-i-poliatronakh-a201/ OP]|| [[Часы на А201]] || Часы на полиатронах [[А201]] и Индикаторах [[ИН18]]|| &lt;br /&gt;
|-&lt;br /&gt;
| 20200310 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200310-gip-over-10000-na-stieroidakh OP]|| [[ГИП over 10000 на стероидах]] || Огромная индикаторная панель 256*192 точки на базе 48 плиток [[ИГПП-32/32]] и [[ИГПП2-32/32]]|| Эскизный проект&lt;br /&gt;
|-&lt;br /&gt;
| 20200309 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200309-eliektroliuminiestsientnyie-chasy OP]|| [[Электролюминесцентные часы]] || Часы на электролюминесцентных индикаторах [[ЖВ3.012.000]] и [[И-205]] || &lt;br /&gt;
|-&lt;br /&gt;
| 20200308 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/eliektroliuminiestsientnyie-indikatory OP]|| [[Электролюминесцентные индикаторы]] || Создание самодельных электролюминесцентных индикаторов || Первая фаза завершена&lt;br /&gt;
|-&lt;br /&gt;
| 20200307 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200307-10gb-lan/ OP]|| [[10GB_LAN]] || Апгрейд домашней сети до 10Гбит || [Завершен] 10Гбит достигнуты&lt;br /&gt;
|-&lt;br /&gt;
| 20200306 &lt;br /&gt;
| || [[Паяльная печь]] || Сборка самодельной печаи для пайки SMD на базе бытовой мини-печи и программируемого термоконтроллера || [Завершен] В эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20200305 &lt;br /&gt;
| || [[Тестер У3-Л (Черный ящик)]] || Проект по оживлению черного ящика || &lt;br /&gt;
|-&lt;br /&gt;
| 20200304 &lt;br /&gt;
| || [[Драйвер ЭЛТ]] || Универсальная плата для запуска осциллографических ЭЛТ || концепт&lt;br /&gt;
|-&lt;br /&gt;
| 20200303 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200303-gip10000-na-stieroidakh OP]|| [[ГИП10000 на стероидах]] || Драйвер газоразрядного индикатора || [Завершен] Проект завершен, да здравствует проект!&lt;br /&gt;
|-&lt;br /&gt;
| 20200302 &lt;br /&gt;
| || [[Тестер конденсаторов]] || Тестер токов утечки конденсаторов по мотивам измерителя Mr Carlson&amp;#039;s Lab || Приобретены комплектующие&lt;br /&gt;
|-&lt;br /&gt;
| 20200301 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/ispytatiel-eliektronnykh-lamp OP]|| [[Испытатель электронных ламп]] || Проект современного портативного испытателя вакуумных и газоразряных ламп || Сборка прототипа&lt;br /&gt;
|-&lt;br /&gt;
| 20200300 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200300-proghramma-upravlieniia-ms6205/ OP]|| [[МС6205]] || Программный драйвер для индикатора МС6205 || [Завершен] Простейший драйвер запилен за 10 минут в Arduino&lt;br /&gt;
|-&lt;br /&gt;
| 20200299 &lt;br /&gt;
| || [[Насосная станция]] || Шкаф управления насосной станцией для дачного участка || [Завершен] Введен в эксплуатацию&lt;br /&gt;
|-&lt;br /&gt;
| 20200298 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200298-dekatronpc-emuliator OP]|| [[DekatronPC эмулятор]] || Verilog-модель лампового компьютера на ПЛИС ||  В работе&lt;br /&gt;
|-&lt;br /&gt;
| 20200297 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200297-lampovaia-loghika OP]|| [[Ламповая логика]] || Проектирование быстродействующих ламповых логических элементов || Ведутся эксперименты&lt;br /&gt;
|-&lt;br /&gt;
| 20200296 &lt;br /&gt;
| || [[СИ-1|Ремонт СИ-1]] || Восстановление осциллографа СИ-1 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2019 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190295&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Электроника С5-12|&amp;lt;s&amp;gt;Электроника С5-12&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект по оживлению одноплатной многокристальной ЭВМ&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен по причине невозможности найти другие части ЭВМ&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190292&amp;lt;/s&amp;gt;&lt;br /&gt;
| || &amp;lt;s&amp;gt;[[PSU2-170]]&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Проект четырехканального источника питания 0-300В, 0-300мА&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190291&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Светодиодная панель 8х8|&amp;lt;s&amp;gt;Светодиодная панель 8х8&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Светодиодная панель 8х8пикс и 10х10см&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Платы готовы, светодиоды есть, необходимости - нет&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190290 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190290-robotron-s6130 OP]|| [[Robotron S6130]] || Проект по оживлению печатной машинки Robotron || Перерисована схема. Создана новая плата. Прошивка машинки сдамплена&lt;br /&gt;
|-&lt;br /&gt;
| 20190289 &lt;br /&gt;
| || [[GPS Disciplined OCXOs]] || Термостатированный опорный генератор с GPS-подстройкой || Имеются комплектующие, заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20190288 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190288-ozhivlieniie-nml-cm5300 OP]|| [[CM5300]] || Проект приставки для накопителя на магнитных лентах || Ожидает завершения работ по эмулятору лампового компьютера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190286 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190286-zapusk-displieia-igpv1-256-slash-256/ OP]|| [[ИГПВ1-256/256]] || Драйвер плазменного индикатора переменного тока || Ведется разработка высоковольтных ключей. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190285&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Anet A6|&amp;lt;s&amp;gt;Anet A6&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Вялотекущая бесконечная модернизация 3D принтера Anet A6&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен. Принтер уничтожен.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190284&lt;br /&gt;
| || [[DIY CNC]] || Проект самодельного фрезерного станка с ЧПУ || Поставлен на 2024 год&lt;br /&gt;
|-&lt;br /&gt;
| 20190283&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190283-rdmd573204/ OP]|| [[RDMD573204]] || Драйвер плазменного индикатора постоянного тока 4х30 символов || Схема частично перерисована. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190282&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[3D стабилизатор |&amp;lt;s&amp;gt;3D стабилизатор&amp;lt;/s&amp;gt;]]|| &amp;lt;s&amp;gt;Изготовление 3D стабилизатора для основной камеры&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен в связи с приобретением Fyutech G6 и DJI&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190281 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190281-igps1-111-slash-7/ OP]|| [[ИГПС1-111/7]] || Драйвер газоразрядного индикатора 111*7 точек с самосканированием  || Прототип работает. Индикатор показывает. когда-нибудь сделаю аккуратную плату драйвера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190279 &lt;br /&gt;
| || [[Стенд для испытания шаговых двигателей]] || Проект лабораторного стенда для снятия характеристик с шаговых двигателей || Создавался для проведения экспериментов по кандидатской диссертации. От диссертации я отказался, проект отменен.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2018 === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20180275 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180275-esp-clock OP]|| [[ESP Clock]] || Миниатюрные часы на базе ESP8266 и индикаторов ИВ-6|| Собран. Ждет прошивки. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180274 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180274-vakuumoskop OP]|| [[Вакуумоскоп]] || 8-канальный осциллоскоп с датчиками давления || Разработана плата датчиков. Есть датчики. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180272 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/fluidicpc OP]|| [[FluidicPC]] || Проект вычислителя на базе логических элементов с эффектом прилипания струи ||Первая фаза проекта завершена. Создан сумматор на пневмонике&lt;br /&gt;
|-&lt;br /&gt;
| 20180271 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/dekatronpc OP]|| [[DekatronPC]] || Ламповый компьютер на базе ваккумных и газоразрядных ламп. Набор инструкций - [https://ru.wikipedia.org/wiki/Brainfuck Brainfuck] || Разработка Verilog-эмулятора. Сборка экспериментальной ячейки&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2016 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 075&lt;br /&gt;
|[https://op.dekatronpc.com/projects/brainfuckpc OP]|| [[BrainfuckPC]] || Релейный компьютер на базе 600 герконовых реле с набором инструкций Brainfuck++ || Основной этап проекта завершен. ЭВМ способна выполнять программы Hello world.&lt;br /&gt;
Дальшейшая сборка под вопросом&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2015 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20150259&lt;br /&gt;
| || [[Игровое табло]] || Спортивный комплект для боя на имитации ножей. Игровое табло, судейский пульт, ножи || Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20150256&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20150256-stabilizator-viega-109stierieo/ OP]|| [[Стабилизатор ВЕГА-109Стерео]] || Кварцевый стабилизатор для проигрывателя ВЕГА-109 Стерео || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150254&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150254-miekhanichieskiie-chasy OP]|| [[Механические часы]] || Часы на базе механических Flip-flop индикаторов и релейным блоком управления || Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150253&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150253-nixie-clock OP]|| [[Nixie clock]] || Часы с индикаторами ИН-8 или ИН-12 || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150250&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[релейный автополив|&amp;lt;s&amp;gt;релейный автополив&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Автоматизированный контроллер полива растений на больших советских реле&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Завершен. Уничтожен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20150249&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20150249-tiermienvoks-koroliova/ OP]|| [[Терменвокс]] || Терменвокс Королёва (Журнал Радио 2005, №8, №9) || Изготовлены и собраны платы, требуется корпус. Заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20120062|| [[РЛН-Электро (Отладочная плата)]] || Отладочная плата на базе Atmega1280 с множеством элементов на борту || завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20090041|| [[Автомат управления освещением]] || Первый проект разработанный на заказ|| Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20090020|| [[РЦВМ-1]] || Релейная цифровая вычислительная машина №1|| Завершен&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1664</id>
		<title>Категория:Проекты</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1664"/>
		<updated>2023-09-01T07:34:30Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* 2020 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание == &lt;br /&gt;
&lt;br /&gt;
Представлен неполный список моих проектов, различной степени реализации: от идеи, до завершенного&lt;br /&gt;
&lt;br /&gt;
Каждый проект имеет свой номер формата ГГГГХХХХ, где:&lt;br /&gt;
&lt;br /&gt;
* ГГГГ - год создания проекта, &lt;br /&gt;
* ХХХХ - сквозной порядковый номер&lt;br /&gt;
&lt;br /&gt;
Под каждым проектом может скрываться:&lt;br /&gt;
&lt;br /&gt;
* Интересная идея, которую можно бы было реализовать&lt;br /&gt;
* Создание некоторого устройства, которое было начало хоть в какой-то степени - разработан дизайн-проект, имеются комплектующие и т.п.&lt;br /&gt;
* Завершенные коммерческие заказы на изготовление печатной платы, электронного устройства и т.п. В общей сводной таблице практически не представлены.&lt;br /&gt;
&lt;br /&gt;
=== Идеи вне времени и пространства ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Эти идеи возникают спонтанно в процессе общения с людьми. Часть из них вряд ли когда-то будут мной воссозданы, но их обязательно нужно зафиксировать. Другая часть - интересные внешние проекты, которые захотелось повторить, но под полноценную страничку они еще не готовы &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Семисегментный индикатор, где в качестве сегментов выступают 500Вт керамические стержни для гриля. На этом 3,5кВт-ном дисплее вполне можно будет жарить шашлык. А отображаемая цифра будет показывать сколько времени осталось до готовности.&lt;br /&gt;
* Тетрис, где в качестве элементов поля 20*10 используются миниатюрные лампы накаливания&lt;br /&gt;
* Осциллограф с механической разверткой на базе диска Нипкова (http://rfanat.ru/s3/izm-mk.html)&lt;br /&gt;
* Версия стабилизатора частоты вращения проигрывателя [[Стабилизатор_ВЕГА-109Стерео|ВЕГА 109 Стерео]] на лампах&lt;br /&gt;
* Индукционная паяльная станция с жалом на эффекте Кюри. Можно купить за 60к, а можно собрать ([https://habr.com/ru/post/412607/ Статья]) ([https://github.com/SergeyMax/SolderingStation github])&lt;br /&gt;
* Умное зеркало (большой дисплей за полупрозрачным зеркалом) (https://magicmirror.builders/ https://www.buildxyz.xyz/magicmirror-builders-guide/)&lt;br /&gt;
* Портативный измеритель АЧХ (http://www.sdr-deluxe.com/publ/nwt200_achkh_metr_i_ne_tolko/1-1-0-13)&lt;br /&gt;
* Крутой 3D-печатный 6-осевой риг для камеры. https://www.youtube.com/watch?v=WNtC9EkYCYQ https://www.thingiverse.com/thing:4652484 - и еще один https://www.youtube.com/watch?v=1FfB7cLkUyQ&amp;amp;ab_channel=isaac879&lt;br /&gt;
&lt;br /&gt;
=== 2023 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
|20230333&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230333-diy-self-made-ic-chip/ OP]&lt;br /&gt;
|[[DIY-IC]]&lt;br /&gt;
|Изготовление самодельных микросхем в гараже&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 20230332 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230332-ozhivlieniie-scara-robota-srx-611 OP]||[[SRX-611]] || Оживление Scara робота Sony SRX-611 || &lt;br /&gt;
|-&lt;br /&gt;
| 20230331 &lt;br /&gt;
| || [[Neon]] || Изготовление неоновых вывесок и других газонаполненных и вакуумных приборов || &lt;br /&gt;
|-&lt;br /&gt;
| 20230330 &lt;br /&gt;
| || [[Glass Lathe]] || Стеклодувный станок || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2022 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20220328 || [[Книжный сканер]] || Книжный разворотный сканер || &lt;br /&gt;
|-&lt;br /&gt;
| 20220329 || [[Hitachi SP14Q002]] || Оживление индикатора Hitachi SP14Q002 || У индикатора нет фрейм-буффера, ему требуется доп. плата для выдачи картинки. Микросхема есть, заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2021 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20210323 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210323-16-kanalnyi-draivier-iel-na-optosimistorakh/ OP]|| [[Драйвер ИЭЛ]] || Универсальный драйвер для Электролюминесцентных индикаторов || Версия на оптосимисторах в эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20210324 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210324-mietieostantsiia-na-blinkiernom-tablo/ OP]|| [[Метеостанция]] || Метеостанция на RPi3B и флажковом табло || Проект завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2020 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20200322 &lt;br /&gt;
| || [[Аналоговое телевещание]] || Проект телевизионной вещательной станции на частоте 77,25МГц на базе лампового генератора с видиконной камерой [[КТП-82]] || Идея&lt;br /&gt;
|-&lt;br /&gt;
| 20200321 &lt;br /&gt;
| || [[Перцептрон]] || Проект электронно-вакуумного перцептрона с механизированными весами || Концепция&lt;br /&gt;
|-&lt;br /&gt;
| 20200311 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200311-chasy-na-in18-i-poliatronakh-a201/ OP]|| [[Часы на А201]] || Часы на полиатронах [[А201]] и Индикаторах [[ИН18]]|| &lt;br /&gt;
|-&lt;br /&gt;
| 20200310 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200310-gip-over-10000-na-stieroidakh OP]|| [[ГИП over 10000 на стероидах]] || Огромная индикаторная панель 256*192 точки на базе 48 плиток [[ИГПП-32/32]] и [[ИГПП2-32/32]]|| Эскизный проект&lt;br /&gt;
|-&lt;br /&gt;
| 20200309 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200309-eliektroliuminiestsientnyie-chasy OP]|| [[Электролюминесцентные часы]] || Часы на электролюминесцентных индикаторах [[ЖВ3.012.000]] и [[И-205]] || &lt;br /&gt;
|-&lt;br /&gt;
| 20200308 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/eliektroliuminiestsientnyie-indikatory OP]|| [[Электролюминесцентные индикаторы]] || Создание самодельных электролюминесцентных индикаторов || Первая фаза завершена&lt;br /&gt;
|-&lt;br /&gt;
| 20200307 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200307-10gb-lan/ OP]|| [[10GB_LAN]] || Апгрейд домашней сети до 10Гбит || [Завершен] 10Гбит достигнуты&lt;br /&gt;
|-&lt;br /&gt;
| 20200306 &lt;br /&gt;
| || [[Паяльная печь]] || Сборка самодельной печаи для пайки SMD на базе бытовой мини-печи и программируемого термоконтроллера || [Завершен] В эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20200305 &lt;br /&gt;
| || [[Тестер У3-Л (Черный ящик)]] || Проект по оживлению черного ящика || &lt;br /&gt;
|-&lt;br /&gt;
| 20200304 &lt;br /&gt;
| || [[Драйвер ЭЛТ]] || Универсальная плата для запуска осциллографических ЭЛТ || концепт&lt;br /&gt;
|-&lt;br /&gt;
| 20200303 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200303-gip10000-na-stieroidakh OP]|| [[ГИП10000 на стероидах]] || Драйвер газоразрядного индикатора || [Завершен] Проект завершен, да здравствует проект!&lt;br /&gt;
|-&lt;br /&gt;
| 20200302 &lt;br /&gt;
| || [[Тестер конденсаторов]] || Тестер токов утечки конденсаторов по мотивам измерителя Mr Carlson&amp;#039;s Lab || Приобретены комплектующие&lt;br /&gt;
|-&lt;br /&gt;
| 20200301 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/ispytatiel-eliektronnykh-lamp OP]|| [[Испытатель электронных ламп]] || Проект современного портативного испытателя вакуумных и газоразряных ламп || Сборка прототипа&lt;br /&gt;
|-&lt;br /&gt;
| 20200300 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200300-proghramma-upravlieniia-ms6205/ OP]|| [[МС6205]] || Программный драйвер для индикатора МС6205 || [Завершен] Простейший драйвер запилен за 10 минут в Arduino&lt;br /&gt;
|-&lt;br /&gt;
| 20200299 &lt;br /&gt;
| || [[Насосная станция]] || Шкаф управления насосной станцией для дачного участка || [Завершен] Введен в эксплуатацию&lt;br /&gt;
|-&lt;br /&gt;
| 20200298 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200298-dekatronpc-emuliator OP]|| [[DekatronPC эмулятор]] || Verilog-модель лампового компьютера на ПЛИС ||  В работе&lt;br /&gt;
|-&lt;br /&gt;
| 20200297 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200297-lampovaia-loghika OP]|| [[Ламповая логика]] || Проектирование быстродействующих ламповых логических элементов || Ведутся эксперименты&lt;br /&gt;
|-&lt;br /&gt;
| 20200296 &lt;br /&gt;
| || [[СИ-1|Ремонт СИ-1]] || Восстановление осциллографа СИ-1 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2019 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190295&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Электроника С5-12|&amp;lt;s&amp;gt;Электроника С5-12&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект по оживлению одноплатной многокристальной ЭВМ&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен по причине невозможности найти другие части ЭВМ&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190292&amp;lt;/s&amp;gt;&lt;br /&gt;
| || &amp;lt;s&amp;gt;[[PSU2-170]]&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Проект четырехканального источника питания 0-300В, 0-300мА&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190291&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Светодиодная панель 8х8|&amp;lt;s&amp;gt;Светодиодная панель 8х8&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Светодиодная панель 8х8пикс и 10х10см&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Платы готовы, светодиоды есть, необходимости - нет&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190290 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190290-robotron-s6130 OP]|| [[Robotron S6130]] || Проект по оживлению печатной машинки Robotron || Перерисована схема. Создана новая плата. Прошивка машинки сдамплена&lt;br /&gt;
|-&lt;br /&gt;
| 20190289 &lt;br /&gt;
| || [[GPS Disciplined OCXOs]] || Термостатированный опорный генератор с GPS-подстройкой || Имеются комплектующие, заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20190288 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190288-ozhivlieniie-nml-cm5300 OP]|| [[CM5300]] || Проект приставки для накопителя на магнитных лентах || Ожидает завершения работ по эмулятору лампового компьютера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190286 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190286-zapusk-displieia-igpv1-256-slash-256/ OP]|| [[ИГПВ1-256/256]] || Драйвер плазменного индикатора переменного тока || Ведется разработка высоковольтных ключей. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190285&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Anet A6|&amp;lt;s&amp;gt;Anet A6&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Вялотекущая бесконечная модернизация 3D принтера Anet A6&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен. Принтер уничтожен.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190284&lt;br /&gt;
| || [[DIY CNC]] || Проект самодельного фрезерного станка с ЧПУ || Поставлен на 2024 год&lt;br /&gt;
|-&lt;br /&gt;
| 20190283&lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190283-rdmd573204/ OP]|| [[RDMD573204]] || Драйвер плазменного индикатора постоянного тока 4х30 символов || Схема частично перерисована. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190282&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[3D стабилизатор |&amp;lt;s&amp;gt;3D стабилизатор&amp;lt;/s&amp;gt;]]|| &amp;lt;s&amp;gt;Изготовление 3D стабилизатора для основной камеры&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен в связи с приобретением Fyutech G6 и DJI&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190281 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20190281-igps1-111-slash-7/ OP]|| [[ИГПС1-111/7]] || Драйвер газоразрядного индикатора 111*7 точек с самосканированием  || Прототип работает. Индикатор показывает. когда-нибудь сделаю аккуратную плату драйвера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190279 &lt;br /&gt;
| || [[Стенд для испытания шаговых двигателей]] || Проект лабораторного стенда для снятия характеристик с шаговых двигателей || Создавался для проведения экспериментов по кандидатской диссертации. От диссертации я отказался, проект отменен.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2018 === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20180275 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180275-esp-clock OP]|| [[ESP Clock]] || Миниатюрные часы на базе ESP8266 и индикаторов ИВ-6|| Собран. Ждет прошивки. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180274 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180274-vakuumoskop OP]|| [[Вакуумоскоп]] || 8-канальный осциллоскоп с датчиками давления || Разработана плата датчиков. Есть датчики. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180272 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/fluidicpc OP]|| [[FluidicPC]] || Проект вычислителя на базе логических элементов с эффектом прилипания струи ||Первая фаза проекта завершена. Создан сумматор на пневмонике&lt;br /&gt;
|-&lt;br /&gt;
| 20180271 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/dekatronpc OP]|| [[DekatronPC]] || Ламповый компьютер на базе ваккумных и газоразрядных ламп. Набор инструкций - [https://ru.wikipedia.org/wiki/Brainfuck Brainfuck] || Разработка Verilog-эмулятора. Сборка экспериментальной ячейки&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2016 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 075&lt;br /&gt;
|[https://op.dekatronpc.com/projects/brainfuckpc OP]|| [[BrainfuckPC]] || Релейный компьютер на базе 600 герконовых реле с набором инструкций Brainfuck++ || Основной этап проекта завершен. ЭВМ способна выполнять программы Hello world.&lt;br /&gt;
Дальшейшая сборка под вопросом&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2015 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20150259&lt;br /&gt;
| || [[Игровое табло]] || Спортивный комплект для боя на имитации ножей. Игровое табло, судейский пульт, ножи || Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20150256&lt;br /&gt;
| || [[Стабилизатор ВЕГА-109Стерео]] || Кварцевый стабилизатор для проигрывателя ВЕГА-109 Стерео || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150254&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150254-miekhanichieskiie-chasy OP]|| [[Механические часы]] || Часы на базе механических Flip-flop индикаторов и релейным блоком управления || Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150253&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150253-nixie-clock OP]|| [[Nixie clock]] || Часы с индикаторами ИН-8 или ИН-12 || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150250&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[релейный автополив|&amp;lt;s&amp;gt;релейный автополив&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Автоматизированный контроллер полива растений на больших советских реле&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Завершен. Уничтожен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20150249&lt;br /&gt;
| || [[Терменвокс]] || Терменвокс Королёва (Журнал Радио 2005, №8, №9) || Изготовлены и собраны платы, требуется корпус. Заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20120062|| [[РЛН-Электро (Отладочная плата)]] || Отладочная плата на базе Atmega1280 с множеством элементов на борту || завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20090041|| [[Автомат управления освещением]] || Первый проект разработанный на заказ|| Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20090020|| [[РЦВМ-1]] || Релейная цифровая вычислительная машина №1|| Завершен&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1663</id>
		<title>Категория:Проекты</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1663"/>
		<updated>2023-08-29T11:50:10Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* 2020 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание == &lt;br /&gt;
&lt;br /&gt;
Представлен неполный список моих проектов, различной степени реализации: от идеи, до завершенного&lt;br /&gt;
&lt;br /&gt;
Каждый проект имеет свой номер формата ГГГГХХХХ, где:&lt;br /&gt;
&lt;br /&gt;
* ГГГГ - год создания проекта, &lt;br /&gt;
* ХХХХ - сквозной порядковый номер&lt;br /&gt;
&lt;br /&gt;
Под каждым проектом может скрываться:&lt;br /&gt;
&lt;br /&gt;
* Интересная идея, которую можно бы было реализовать&lt;br /&gt;
* Создание некоторого устройства, которое было начало хоть в какой-то степени - разработан дизайн-проект, имеются комплектующие и т.п.&lt;br /&gt;
* Завершенные коммерческие заказы на изготовление печатной платы, электронного устройства и т.п. В общей сводной таблице практически не представлены.&lt;br /&gt;
&lt;br /&gt;
=== Идеи вне времени и пространства ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Эти идеи возникают спонтанно в процессе общения с людьми. Часть из них вряд ли когда-то будут мной воссозданы, но их обязательно нужно зафиксировать. Другая часть - интересные внешние проекты, которые захотелось повторить, но под полноценную страничку они еще не готовы &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Семисегментный индикатор, где в качестве сегментов выступают 500Вт керамические стержни для гриля. На этом 3,5кВт-ном дисплее вполне можно будет жарить шашлык. А отображаемая цифра будет показывать сколько времени осталось до готовности.&lt;br /&gt;
* Тетрис, где в качестве элементов поля 20*10 используются миниатюрные лампы накаливания&lt;br /&gt;
* Осциллограф с механической разверткой на базе диска Нипкова (http://rfanat.ru/s3/izm-mk.html)&lt;br /&gt;
* Версия стабилизатора частоты вращения проигрывателя [[Стабилизатор_ВЕГА-109Стерео|ВЕГА 109 Стерео]] на лампах&lt;br /&gt;
* Индукционная паяльная станция с жалом на эффекте Кюри. Можно купить за 60к, а можно собрать ([https://habr.com/ru/post/412607/ Статья]) ([https://github.com/SergeyMax/SolderingStation github])&lt;br /&gt;
* Умное зеркало (большой дисплей за полупрозрачным зеркалом) (https://magicmirror.builders/ https://www.buildxyz.xyz/magicmirror-builders-guide/)&lt;br /&gt;
* Портативный измеритель АЧХ (http://www.sdr-deluxe.com/publ/nwt200_achkh_metr_i_ne_tolko/1-1-0-13)&lt;br /&gt;
* Крутой 3D-печатный 6-осевой риг для камеры. https://www.youtube.com/watch?v=WNtC9EkYCYQ https://www.thingiverse.com/thing:4652484 - и еще один https://www.youtube.com/watch?v=1FfB7cLkUyQ&amp;amp;ab_channel=isaac879&lt;br /&gt;
&lt;br /&gt;
=== 2023 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
|20230333&lt;br /&gt;
|&lt;br /&gt;
|[[DIY-IC]]&lt;br /&gt;
|Изготовление самодельных микросхем в гараже&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 20230332 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230332-ozhivlieniie-scara-robota-srx-611 OP]||[[SRX-611]] || Оживление Scara робота Sony SRX-611 || &lt;br /&gt;
|-&lt;br /&gt;
| 20230331 &lt;br /&gt;
| || [[Neon]] || Изготовление неоновых вывесок и других газонаполненных и вакуумных приборов || &lt;br /&gt;
|-&lt;br /&gt;
| 20230330 &lt;br /&gt;
| || [[Glass Lathe]] || Стеклодувный станок || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2022 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20220328 || [[Книжный сканер]] || Книжный разворотный сканер || &lt;br /&gt;
|-&lt;br /&gt;
| 20220329 || [[Hitachi SP14Q002]] || Оживление индикатора Hitachi SP14Q002 || У индикатора нет фрейм-буффера, ему требуется доп. плата для выдачи картинки. Микросхема есть, заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2021 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20210323 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210323-16-kanalnyi-draivier-iel-na-optosimistorakh/ OP]|| [[Драйвер ИЭЛ]] || Универсальный драйвер для Электролюминесцентных индикаторов || Версия на оптосимисторах в эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20210324 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210324-mietieostantsiia-na-blinkiernom-tablo/ OP]|| [[Метеостанция]] || Метеостанция на RPi3B и флажковом табло || Проект завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2020 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20200322 &lt;br /&gt;
| || [[Аналоговое телевещание]] || Проект телевизионной вещательной станции на частоте 77,25МГц на базе лампового генератора с видиконной камерой [[КТП-82]] || Идея&lt;br /&gt;
|-&lt;br /&gt;
| 20200321 &lt;br /&gt;
| || [[Перцептрон]] || Проект электронно-вакуумного перцептрона с механизированными весами || Концепция&lt;br /&gt;
|-&lt;br /&gt;
| 20200311 &lt;br /&gt;
| [https://op.dekatronpc.com/projects/20200311-chasy-na-in18-i-poliatronakh-a201/ OP]|| [[Часы на А201]] || Часы на полиатронах [[А201]] и Индикаторах [[ИН18]]|| &lt;br /&gt;
|-&lt;br /&gt;
| 20200310 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200310-gip-over-10000-na-stieroidakh OP]|| [[ГИП over 10000 на стероидах]] || Огромная индикаторная панель 256*192 точки на базе 48 плиток [[ИГПП-32/32]] и [[ИГПП2-32/32]]|| Эскизный проект&lt;br /&gt;
|-&lt;br /&gt;
| 20200309 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200309-eliektroliuminiestsientnyie-chasy OP]|| [[Электролюминесцентные часы]] || Часы на электролюминесцентных индикаторах [[ЖВ3.012.000]] и [[И-205]] || &lt;br /&gt;
|-&lt;br /&gt;
| 20200308 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/eliektroliuminiestsientnyie-indikatory OP]|| [[Электролюминесцентные индикаторы]] || Создание самодельных электролюминесцентных индикаторов || Первая фаза завершена&lt;br /&gt;
|-&lt;br /&gt;
| 20200307 &lt;br /&gt;
| || [[10GB_LAN]] || Апгрейд домашней сети до 10Гбит || [Завершен] 10Гбит достигнуты&lt;br /&gt;
|-&lt;br /&gt;
| 20200306 &lt;br /&gt;
| || [[Паяльная печь]] || Сборка самодельной печаи для пайки SMD на базе бытовой мини-печи и программируемого термоконтроллера || [Завершен] В эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20200305 &lt;br /&gt;
| || [[Тестер У3-Л (Черный ящик)]] || Проект по оживлению черного ящика || &lt;br /&gt;
|-&lt;br /&gt;
| 20200304 &lt;br /&gt;
| || [[Драйвер ЭЛТ]] || Универсальная плата для запуска осциллографических ЭЛТ || концепт&lt;br /&gt;
|-&lt;br /&gt;
| 20200303 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200303-gip10000-na-stieroidakh OP]|| [[ГИП10000 на стероидах]] || Драйвер газоразрядного индикатора || [Завершен] Проект завершен, да здравствует проект!&lt;br /&gt;
|-&lt;br /&gt;
| 20200302 &lt;br /&gt;
| || [[Тестер конденсаторов]] || Тестер токов утечки конденсаторов по мотивам измерителя Mr Carlson&amp;#039;s Lab || Приобретены комплектующие&lt;br /&gt;
|-&lt;br /&gt;
| 20200301 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/ispytatiel-eliektronnykh-lamp OP]|| [[Испытатель электронных ламп]] || Проект современного портативного испытателя вакуумных и газоразряных ламп || Сборка прототипа&lt;br /&gt;
|-&lt;br /&gt;
| 20200300 &lt;br /&gt;
| || [[МС6205]] || Программный драйвер для индикатора МС6205 || [Завершен] Простейший драйвер запилен за 10 минут в Arduino&lt;br /&gt;
|-&lt;br /&gt;
| 20200299 &lt;br /&gt;
| || [[Насосная станция]] || Шкаф управления насосной станцией для дачного участка || [Завершен] Введен в эксплуатацию&lt;br /&gt;
|-&lt;br /&gt;
| 20200298 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200298-dekatronpc-emuliator OP]|| [[DekatronPC эмулятор]] || Verilog-модель лампового компьютера на ПЛИС ||  В работе&lt;br /&gt;
|-&lt;br /&gt;
| 20200297 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200297-lampovaia-loghika OP]|| [[Ламповая логика]] || Проектирование быстродействующих ламповых логических элементов || Ведутся эксперименты&lt;br /&gt;
|-&lt;br /&gt;
| 20200296 &lt;br /&gt;
| || [[СИ-1|Ремонт СИ-1]] || Восстановление осциллографа СИ-1 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2019 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190295&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Электроника С5-12|&amp;lt;s&amp;gt;Электроника С5-12&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект по оживлению одноплатной многокристальной ЭВМ&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен по причине невозможности найти другие части ЭВМ&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190292&amp;lt;/s&amp;gt;&lt;br /&gt;
| || &amp;lt;s&amp;gt;[[PSU2-170]]&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Проект четырехканального источника питания 0-300В, 0-300мА&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190291&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Светодиодная панель 8х8|&amp;lt;s&amp;gt;Светодиодная панель 8х8&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Светодиодная панель 8х8пикс и 10х10см&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Платы готовы, светодиоды есть, необходимости - нет&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190290 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190290-robotron-s6130 OP]|| [[Robotron S6130]] || Проект по оживлению печатной машинки Robotron || Перерисована схема. Создана новая плата. Прошивка машинки сдамплена&lt;br /&gt;
|-&lt;br /&gt;
| 20190289 &lt;br /&gt;
| || [[GPS Disciplined OCXOs]] || Термостатированный опорный генератор с GPS-подстройкой || Имеются комплектующие, заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20190288 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190288-ozhivlieniie-nml-cm5300 OP]|| [[CM5300]] || Проект приставки для накопителя на магнитных лентах || Ожидает завершения работ по эмулятору лампового компьютера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190286 &lt;br /&gt;
| || [[ИГПВ1-256/256]] || Драйвер плазменного индикатора переменного тока || Ведется разработка высоковольтных ключей. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190285&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Anet A6|&amp;lt;s&amp;gt;Anet A6&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Вялотекущая бесконечная модернизация 3D принтера Anet A6&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен. Принтер уничтожен.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190284&lt;br /&gt;
| || [[DIY CNC]] || Проект самодельного фрезерного станка с ЧПУ || Поставлен на 2024 год&lt;br /&gt;
|-&lt;br /&gt;
| 20190283&lt;br /&gt;
| || [[RDMD573204]] || Драйвер плазменного индикатора постоянного тока 4х30 символов || Схема частично перерисована. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190282&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[3D стабилизатор |&amp;lt;s&amp;gt;3D стабилизатор&amp;lt;/s&amp;gt;]]|| &amp;lt;s&amp;gt;Изготовление 3D стабилизатора для основной камеры&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен в связи с приобретением Fyutech G6 и DJI&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190281 &lt;br /&gt;
| || [[ИГПС1-111/7]] || Драйвер газоразрядного индикатора 111*7 точек с самосканированием  || Прототип работает. Индикатор показывает. когда-нибудь сделаю аккуратную плату драйвера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190279 &lt;br /&gt;
| || [[Стенд для испытания шаговых двигателей]] || Проект лабораторного стенда для снятия характеристик с шаговых двигателей || Создавался для проведения экспериментов по кандидатской диссертации. От диссертации я отказался, проект отменен.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2018 === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20180275 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180275-esp-clock OP]|| [[ESP Clock]] || Миниатюрные часы на базе ESP8266 и индикаторов ИВ-6|| Собран. Ждет прошивки. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180274 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180274-vakuumoskop OP]|| [[Вакуумоскоп]] || 8-канальный осциллоскоп с датчиками давления || Разработана плата датчиков. Есть датчики. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180272 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/fluidicpc OP]|| [[FluidicPC]] || Проект вычислителя на базе логических элементов с эффектом прилипания струи ||Первая фаза проекта завершена. Создан сумматор на пневмонике&lt;br /&gt;
|-&lt;br /&gt;
| 20180271 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/dekatronpc OP]|| [[DekatronPC]] || Ламповый компьютер на базе ваккумных и газоразрядных ламп. Набор инструкций - [https://ru.wikipedia.org/wiki/Brainfuck Brainfuck] || Разработка Verilog-эмулятора. Сборка экспериментальной ячейки&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2016 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 075&lt;br /&gt;
|[https://op.dekatronpc.com/projects/brainfuckpc OP]|| [[BrainfuckPC]] || Релейный компьютер на базе 600 герконовых реле с набором инструкций Brainfuck++ || Основной этап проекта завершен. ЭВМ способна выполнять программы Hello world.&lt;br /&gt;
Дальшейшая сборка под вопросом&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2015 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20150259&lt;br /&gt;
| || [[Игровое табло]] || Спортивный комплект для боя на имитации ножей. Игровое табло, судейский пульт, ножи || Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20150256&lt;br /&gt;
| || [[Стабилизатор ВЕГА-109Стерео]] || Кварцевый стабилизатор для проигрывателя ВЕГА-109 Стерео || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150254&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150254-miekhanichieskiie-chasy OP]|| [[Механические часы]] || Часы на базе механических Flip-flop индикаторов и релейным блоком управления || Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150253&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150253-nixie-clock OP]|| [[Nixie clock]] || Часы с индикаторами ИН-8 или ИН-12 || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150250&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[релейный автополив|&amp;lt;s&amp;gt;релейный автополив&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Автоматизированный контроллер полива растений на больших советских реле&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Завершен. Уничтожен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20150249&lt;br /&gt;
| || [[Терменвокс]] || Терменвокс Королёва (Журнал Радио 2005, №8, №9) || Изготовлены и собраны платы, требуется корпус. Заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20120062|| [[РЛН-Электро (Отладочная плата)]] || Отладочная плата на базе Atmega1280 с множеством элементов на борту || завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20090041|| [[Автомат управления освещением]] || Первый проект разработанный на заказ|| Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20090020|| [[РЦВМ-1]] || Релейная цифровая вычислительная машина №1|| Завершен&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1662</id>
		<title>Категория:Проекты</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=1662"/>
		<updated>2023-08-29T11:45:22Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: Добавил ссылки на OpenProject&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Описание == &lt;br /&gt;
&lt;br /&gt;
Представлен неполный список моих проектов, различной степени реализации: от идеи, до завершенного&lt;br /&gt;
&lt;br /&gt;
Каждый проект имеет свой номер формата ГГГГХХХХ, где:&lt;br /&gt;
&lt;br /&gt;
* ГГГГ - год создания проекта, &lt;br /&gt;
* ХХХХ - сквозной порядковый номер&lt;br /&gt;
&lt;br /&gt;
Под каждым проектом может скрываться:&lt;br /&gt;
&lt;br /&gt;
* Интересная идея, которую можно бы было реализовать&lt;br /&gt;
* Создание некоторого устройства, которое было начало хоть в какой-то степени - разработан дизайн-проект, имеются комплектующие и т.п.&lt;br /&gt;
* Завершенные коммерческие заказы на изготовление печатной платы, электронного устройства и т.п. В общей сводной таблице практически не представлены.&lt;br /&gt;
&lt;br /&gt;
=== Идеи вне времени и пространства ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Эти идеи возникают спонтанно в процессе общения с людьми. Часть из них вряд ли когда-то будут мной воссозданы, но их обязательно нужно зафиксировать. Другая часть - интересные внешние проекты, которые захотелось повторить, но под полноценную страничку они еще не готовы &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Семисегментный индикатор, где в качестве сегментов выступают 500Вт керамические стержни для гриля. На этом 3,5кВт-ном дисплее вполне можно будет жарить шашлык. А отображаемая цифра будет показывать сколько времени осталось до готовности.&lt;br /&gt;
* Тетрис, где в качестве элементов поля 20*10 используются миниатюрные лампы накаливания&lt;br /&gt;
* Осциллограф с механической разверткой на базе диска Нипкова (http://rfanat.ru/s3/izm-mk.html)&lt;br /&gt;
* Версия стабилизатора частоты вращения проигрывателя [[Стабилизатор_ВЕГА-109Стерео|ВЕГА 109 Стерео]] на лампах&lt;br /&gt;
* Индукционная паяльная станция с жалом на эффекте Кюри. Можно купить за 60к, а можно собрать ([https://habr.com/ru/post/412607/ Статья]) ([https://github.com/SergeyMax/SolderingStation github])&lt;br /&gt;
* Умное зеркало (большой дисплей за полупрозрачным зеркалом) (https://magicmirror.builders/ https://www.buildxyz.xyz/magicmirror-builders-guide/)&lt;br /&gt;
* Портативный измеритель АЧХ (http://www.sdr-deluxe.com/publ/nwt200_achkh_metr_i_ne_tolko/1-1-0-13)&lt;br /&gt;
* Крутой 3D-печатный 6-осевой риг для камеры. https://www.youtube.com/watch?v=WNtC9EkYCYQ https://www.thingiverse.com/thing:4652484 - и еще один https://www.youtube.com/watch?v=1FfB7cLkUyQ&amp;amp;ab_channel=isaac879&lt;br /&gt;
&lt;br /&gt;
=== 2023 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
|20230333&lt;br /&gt;
|&lt;br /&gt;
|[[DIY-IC]]&lt;br /&gt;
|Изготовление самодельных микросхем в гараже&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 20230332 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20230332-ozhivlieniie-scara-robota-srx-611 OP]||[[SRX-611]] || Оживление Scara робота Sony SRX-611 || &lt;br /&gt;
|-&lt;br /&gt;
| 20230331 &lt;br /&gt;
| || [[Neon]] || Изготовление неоновых вывесок и других газонаполненных и вакуумных приборов || &lt;br /&gt;
|-&lt;br /&gt;
| 20230330 &lt;br /&gt;
| || [[Glass Lathe]] || Стеклодувный станок || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2022 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20220328 || [[Книжный сканер]] || Книжный разворотный сканер || &lt;br /&gt;
|-&lt;br /&gt;
| 20220329 || [[Hitachi SP14Q002]] || Оживление индикатора Hitachi SP14Q002 || У индикатора нет фрейм-буффера, ему требуется доп. плата для выдачи картинки. Микросхема есть, заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2021 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
!OP!! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20210323 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210323-16-kanalnyi-draivier-iel-na-optosimistorakh/ OP]|| [[Драйвер ИЭЛ]] || Универсальный драйвер для Электролюминесцентных индикаторов || Версия на оптосимисторах в эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20210324 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20210324-mietieostantsiia-na-blinkiernom-tablo/ OP]|| [[Метеостанция]] || Метеостанция на RPi3B и флажковом табло || Проект завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2020 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20200322 &lt;br /&gt;
| || [[Аналоговое телевещание]] || Проект телевизионной вещательной станции на частоте 77,25МГц на базе лампового генератора с видиконной камерой [[КТП-82]] || Идея&lt;br /&gt;
|-&lt;br /&gt;
| 20200321 &lt;br /&gt;
| || [[Перцептрон]] || Проект электронно-вакуумного перцептрона с механизированными весами || Концепция&lt;br /&gt;
|-&lt;br /&gt;
| 20200311 &lt;br /&gt;
| || [[Часы на А201]] || Часы на полиатронах [[А201]] и Индикаторах [[ИН18]]|| &lt;br /&gt;
|-&lt;br /&gt;
| 20200310 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200310-gip-over-10000-na-stieroidakh OP]|| [[ГИП over 10000 на стероидах]] || Огромная индикаторная панель 256*192 точки на базе 48 плиток [[ИГПП-32/32]] и [[ИГПП2-32/32]]|| Эскизный проект&lt;br /&gt;
|-&lt;br /&gt;
| 20200309 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200309-eliektroliuminiestsientnyie-chasy OP]|| [[Электролюминесцентные часы]] || Часы на электролюминесцентных индикаторах [[ЖВ3.012.000]] и [[И-205]] || &lt;br /&gt;
|-&lt;br /&gt;
| 20200308 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/eliektroliuminiestsientnyie-indikatory OP]|| [[Электролюминесцентные индикаторы]] || Создание самодельных электролюминесцентных индикаторов || Первая фаза завершена&lt;br /&gt;
|-&lt;br /&gt;
| 20200307 &lt;br /&gt;
| || [[10GB_LAN]] || Апгрейд домашней сети до 10Гбит || [Завершен] 10Гбит достигнуты&lt;br /&gt;
|-&lt;br /&gt;
| 20200306 &lt;br /&gt;
| || [[Паяльная печь]] || Сборка самодельной печаи для пайки SMD на базе бытовой мини-печи и программируемого термоконтроллера || [Завершен] В эксплуатации&lt;br /&gt;
|-&lt;br /&gt;
| 20200305 &lt;br /&gt;
| || [[Тестер У3-Л (Черный ящик)]] || Проект по оживлению черного ящика || &lt;br /&gt;
|-&lt;br /&gt;
| 20200304 &lt;br /&gt;
| || [[Драйвер ЭЛТ]] || Универсальная плата для запуска осциллографических ЭЛТ || концепт&lt;br /&gt;
|-&lt;br /&gt;
| 20200303 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200303-gip10000-na-stieroidakh OP]|| [[ГИП10000 на стероидах]] || Драйвер газоразрядного индикатора || [Завершен] Проект завершен, да здравствует проект!&lt;br /&gt;
|-&lt;br /&gt;
| 20200302 &lt;br /&gt;
| || [[Тестер конденсаторов]] || Тестер токов утечки конденсаторов по мотивам измерителя Mr Carlson&amp;#039;s Lab || Приобретены комплектующие&lt;br /&gt;
|-&lt;br /&gt;
| 20200301 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/ispytatiel-eliektronnykh-lamp OP]|| [[Испытатель электронных ламп]] || Проект современного портативного испытателя вакуумных и газоразряных ламп || Сборка прототипа&lt;br /&gt;
|-&lt;br /&gt;
| 20200300 &lt;br /&gt;
| || [[МС6205]] || Программный драйвер для индикатора МС6205 || [Завершен] Простейший драйвер запилен за 10 минут в Arduino&lt;br /&gt;
|-&lt;br /&gt;
| 20200299 &lt;br /&gt;
| || [[Насосная станция]] || Шкаф управления насосной станцией для дачного участка || [Завершен] Введен в эксплуатацию&lt;br /&gt;
|-&lt;br /&gt;
| 20200298 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200298-dekatronpc-emuliator OP]|| [[DekatronPC эмулятор]] || Verilog-модель лампового компьютера на ПЛИС ||  В работе&lt;br /&gt;
|-&lt;br /&gt;
| 20200297 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20200297-lampovaia-loghika OP]|| [[Ламповая логика]] || Проектирование быстродействующих ламповых логических элементов || Ведутся эксперименты&lt;br /&gt;
|-&lt;br /&gt;
| 20200296 &lt;br /&gt;
| || [[СИ-1|Ремонт СИ-1]] || Восстановление осциллографа СИ-1 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2019 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190295&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Электроника С5-12|&amp;lt;s&amp;gt;Электроника С5-12&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Проект по оживлению одноплатной многокристальной ЭВМ&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен по причине невозможности найти другие части ЭВМ&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190292&amp;lt;/s&amp;gt;&lt;br /&gt;
| || &amp;lt;s&amp;gt;[[PSU2-170]]&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Проект четырехканального источника питания 0-300В, 0-300мА&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190291&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Светодиодная панель 8х8|&amp;lt;s&amp;gt;Светодиодная панель 8х8&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Светодиодная панель 8х8пикс и 10х10см&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Платы готовы, светодиоды есть, необходимости - нет&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190290 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190290-robotron-s6130 OP]|| [[Robotron S6130]] || Проект по оживлению печатной машинки Robotron || Перерисована схема. Создана новая плата. Прошивка машинки сдамплена&lt;br /&gt;
|-&lt;br /&gt;
| 20190289 &lt;br /&gt;
| || [[GPS Disciplined OCXOs]] || Термостатированный опорный генератор с GPS-подстройкой || Имеются комплектующие, заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20190288 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20190288-ozhivlieniie-nml-cm5300 OP]|| [[CM5300]] || Проект приставки для накопителя на магнитных лентах || Ожидает завершения работ по эмулятору лампового компьютера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190286 &lt;br /&gt;
| || [[ИГПВ1-256/256]] || Драйвер плазменного индикатора переменного тока || Ведется разработка высоковольтных ключей. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190285&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[Anet A6|&amp;lt;s&amp;gt;Anet A6&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Вялотекущая бесконечная модернизация 3D принтера Anet A6&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен. Принтер уничтожен.&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190284&lt;br /&gt;
| || [[DIY CNC]] || Проект самодельного фрезерного станка с ЧПУ || Поставлен на 2024 год&lt;br /&gt;
|-&lt;br /&gt;
| 20190283&lt;br /&gt;
| || [[RDMD573204]] || Драйвер плазменного индикатора постоянного тока 4х30 символов || Схема частично перерисована. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20190282&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[3D стабилизатор |&amp;lt;s&amp;gt;3D стабилизатор&amp;lt;/s&amp;gt;]]|| &amp;lt;s&amp;gt;Изготовление 3D стабилизатора для основной камеры&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Отменен в связи с приобретением Fyutech G6 и DJI&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20190281 &lt;br /&gt;
| || [[ИГПС1-111/7]] || Драйвер газоразрядного индикатора 111*7 точек с самосканированием  || Прототип работает. Индикатор показывает. когда-нибудь сделаю аккуратную плату драйвера.&lt;br /&gt;
|-&lt;br /&gt;
| 20190279 &lt;br /&gt;
| || [[Стенд для испытания шаговых двигателей]] || Проект лабораторного стенда для снятия характеристик с шаговых двигателей || Создавался для проведения экспериментов по кандидатской диссертации. От диссертации я отказался, проект отменен.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2018 === &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20180275 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180275-esp-clock OP]|| [[ESP Clock]] || Миниатюрные часы на базе ESP8266 и индикаторов ИВ-6|| Собран. Ждет прошивки. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180274 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/20180274-vakuumoskop OP]|| [[Вакуумоскоп]] || 8-канальный осциллоскоп с датчиками давления || Разработана плата датчиков. Есть датчики. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20180272 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/fluidicpc OP]|| [[FluidicPC]] || Проект вычислителя на базе логических элементов с эффектом прилипания струи ||Первая фаза проекта завершена. Создан сумматор на пневмонике&lt;br /&gt;
|-&lt;br /&gt;
| 20180271 &lt;br /&gt;
|[https://op.dekatronpc.com/projects/dekatronpc OP]|| [[DekatronPC]] || Ламповый компьютер на базе ваккумных и газоразрядных ламп. Набор инструкций - [https://ru.wikipedia.org/wiki/Brainfuck Brainfuck] || Разработка Verilog-эмулятора. Сборка экспериментальной ячейки&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2016 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 075&lt;br /&gt;
|[https://op.dekatronpc.com/projects/brainfuckpc OP]|| [[BrainfuckPC]] || Релейный компьютер на базе 600 герконовых реле с набором инструкций Brainfuck++ || Основной этап проекта завершен. ЭВМ способна выполнять программы Hello world.&lt;br /&gt;
Дальшейшая сборка под вопросом&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2015 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер &lt;br /&gt;
! !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20150259&lt;br /&gt;
| || [[Игровое табло]] || Спортивный комплект для боя на имитации ножей. Игровое табло, судейский пульт, ножи || Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20150256&lt;br /&gt;
| || [[Стабилизатор ВЕГА-109Стерео]] || Кварцевый стабилизатор для проигрывателя ВЕГА-109 Стерео || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150254&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150254-miekhanichieskiie-chasy OP]|| [[Механические часы]] || Часы на базе механических Flip-flop индикаторов и релейным блоком управления || Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| 20150253&lt;br /&gt;
|[https://op.dekatronpc.com/projects/20150253-nixie-clock OP]|| [[Nixie clock]] || Часы с индикаторами ИН-8 или ИН-12 || Плата собрана. Нужна прошивка. Заморожен&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;s&amp;gt;20150250&amp;lt;/s&amp;gt;&lt;br /&gt;
| || [[релейный автополив|&amp;lt;s&amp;gt;релейный автополив&amp;lt;/s&amp;gt;]] || &amp;lt;s&amp;gt;Автоматизированный контроллер полива растений на больших советских реле&amp;lt;/s&amp;gt;|| &amp;lt;s&amp;gt;Завершен. Уничтожен&amp;lt;/s&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 20150249&lt;br /&gt;
| || [[Терменвокс]] || Терменвокс Королёва (Журнал Радио 2005, №8, №9) || Изготовлены и собраны платы, требуется корпус. Заморожен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20120062|| [[РЛН-Электро (Отладочная плата)]] || Отладочная плата на базе Atmega1280 с множеством элементов на борту || завершен&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Номер !! Название !! Описание !! Статус&lt;br /&gt;
|-&lt;br /&gt;
| 20090041|| [[Автомат управления освещением]] || Первый проект разработанный на заказ|| Завершен, Передан заказчику.&lt;br /&gt;
|-&lt;br /&gt;
| 20090020|| [[РЦВМ-1]] || Релейная цифровая вычислительная машина №1|| Завершен&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1661</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1661"/>
		<updated>2023-08-19T00:42:36Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Технические характеристики (проектные) - UPD: 07.06.2023 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 19.08.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
**Поправочка - скорость пересчета декатрона А110 - 1МГц, однако согласно Яблонскому, импульс сброса (в данном случае - записи в декатрон) - в среднем на порядок больше импульса пересчета. Поэтому можно смело ронять тактовую частоту до 100кгц...&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов&amp;lt;ref&amp;gt;В.М. Липкин декатроны и их применение. госэнергоатомиздат.  1960&amp;lt;/ref&amp;gt;. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
[[Файл:Exp DPC 2.png|центр|мини|450x450пкс|&lt;br /&gt;
Схема стабилизатора анодного напряжения +150В, 200мА. Питается от трансформатора ТСШ170, выводы 7-8+9-10]]&lt;br /&gt;
[[Файл:ExpDPC cell 1.png|центр|мини|450x450пкс|&lt;br /&gt;
Финальная схема стабилизатора анодного напряжения декатрона +500В (работает со смещением +150В от земли)Питается от трансформатора ТА48, выводы 11-12+17-8]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Exp DPC cell +20v.png|центр|мини|450x450пкс|Схема стабилизатора напряжения +20В, 30мА. Питается от трансформатора ТА7, выводы 19-20+21-22]]&lt;br /&gt;
[[Файл:Exp DPC cell -50v.png|центр|мини|450x450пкс|Схема стабилизатора отрицательного напряжения +50В, 30мА. Питается от трансформатора ТА48, выводы 21-22+19-20]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
[[Файл:IpLine full.png|центр|безрамки|535x535пкс]]&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
[[Файл:ApLine full.png|центр|безрамки|445x445пкс]]&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA1|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA1 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х140мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png|300пкс]]||[[Файл:Dekatronpc module 140x200.png|300пкс]]&lt;br /&gt;
|-&lt;br /&gt;
| Модуль 140х140мм с краевым разъемом 2х36пин. || Первое поколение плат. Модуль 140х200мм с разъемами ГРПМШ-31&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Блок представляет собой полноценный узел машины - IpLine, ApLine или MachineCtrl. Возможно в дальнейшем понадобится увеличить количество блоков.&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
За передней панелью блока скрывается источник питания, на базе одного торроидального трансформатора и выпрямителей вокруг него. Далее идет ряд вентиляторов, затем - три ряда плат модулей, стоящих с шагом 24мм для логики или 36мм для плат с декатронами. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Платы располагаются ближе к задней стороне чтобы все провода между модулями а также к задним разъемам были минимальной длины. На самом блоке располагаются разъемы для модулей, а в подвале сформирована область для соединения модулей между собой. Подобная схема использовалась в ЭВМ [[wikipedia:Bendix_G-15|Bendix G15]]А посмотреть ее воочию, можно у [https://www.youtube.com/watch?v=-RGp-bsYf34&amp;amp;ab_channel=UsagiElectric Usagi в видеоролике]Скорее всего все соединения будут производиться пайкой, А схема подключения - браться их yosys&lt;br /&gt;
[[Файл:DPC Back wiring.png|центр|безрамки|771x771пкс]]&lt;br /&gt;
&lt;br /&gt;
=== Питание ===&lt;br /&gt;
Каждый блок питает себя сам. Изначально идея была поместить в каждый блок только накальные трансформаторы типа ТН61. Однако для полной загрузки блока нужно 4-5 трансформаторов и в ряд они не лезут, а в иной компоновке - съедают слишком много места.  Таким образом требуются заказные торроидальные многообмоточные трансформаторы - которые будут выдавать все необходимые напряжения питания.  При этом если накала на весь блок нужно порядка 300А. Лучшим вариантом на данный момент я считаю сделать 6 накальных обмоток по 50А каждая - по две обмотки на ряд.&lt;br /&gt;
&lt;br /&gt;
В РФ изготовлением трансформаторов занимаются [http://www.torel.ru/ ТОРЭЛ] и [https://tula-transformator.ru/trans_t.html Тульский завод трансформаторов]. ТОРЭЛ запросил 33к за трансформатор, в тульский завод я ТЗ еще не отправлял - нужно окончательно определиться с начинкой блоков и количеством ламп в каждом из них, а также по необходимым напряжениям питания. &lt;br /&gt;
&lt;br /&gt;
Считается, что входное напряжение стабильно по ГОСТ (+-10%). Анодное напряжение не стабилизируется, накальное не стабилизируется. Маломощные напряжения смещения снабжаются линейными стабилизаторами на базе 6С19П&amp;lt;ref&amp;gt;К.Б. Мазель  Стабилизаторы напряжения и тока. госэнергоатомиздат 1955&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==Дорожная карта проекта==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. &lt;br /&gt;
&lt;br /&gt;
Последующие стадии сильно зависят от предыдущих, при этом все стадии можно делать одновременно, но основные силы брошены на последовательную реализацию.&lt;br /&gt;
&lt;br /&gt;
Теперь о главном - &lt;br /&gt;
&lt;br /&gt;
Два мелких ребенка сильно замедляют продвижение по проекту.&lt;br /&gt;
&lt;br /&gt;
=== Стадия 1: Проектирование (UPD: 25.06.2023) &amp;lt;= Вы находитесь здесь ===&lt;br /&gt;
Самая важная стадия проекта - разработка принципиальной схемы машины. Необходимо закрыть все этапы прежде чем двигаться дальше.&lt;br /&gt;
&lt;br /&gt;
====Этап 1.1: Верификационная программная модель C++ (UPD: 25.06.2023)====&lt;br /&gt;
Описание: При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках.  .&lt;br /&gt;
&lt;br /&gt;
Задачи: &lt;br /&gt;
&lt;br /&gt;
* Высокоуровневая программная симуляция поведения мышины&lt;br /&gt;
* Верификационная модель для эмулятора&lt;br /&gt;
&lt;br /&gt;
Прогресс:&lt;br /&gt;
&lt;br /&gt;
* Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++] Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует незначительной доработки для дополнения остальными инструкциями.&lt;br /&gt;
* На данный момент модель подключена  к Verilator&amp;lt;ref&amp;gt;https://www.veripool.org/verilator/&amp;lt;/ref&amp;gt; и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью&lt;br /&gt;
&lt;br /&gt;
==== Этап 1.2: Виртуальный эмулятор лампового компьютера (UPD: 25.06.2023)&amp;lt;ref&amp;gt;Д. Томас. Логическое проектирование и верификация систем в SystemVerilog&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;А.Ю. Романов. Ю.В.Панчул. Цифровой синтез. Практический курс. ДМК 2020&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Харрис и Харрис. Цифровая схемотехника и архитектура компьютера. ДМК.  2017&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Й. Янсен. Курс цифровой электроники в 4-х частях. изд Мир.  1987&amp;lt;/ref&amp;gt; ====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog.&lt;br /&gt;
&lt;br /&gt;
Задачи:   &lt;br /&gt;
&lt;br /&gt;
* Программная эмуляция схемотехники будущей машины  &lt;br /&gt;
* Синтез принципиальной логической схемы лампового компьютера - с помощью yosys и библиотеки элементов  &lt;br /&gt;
* Временной анализ (на основании экспериментальных данных со второй стадии проекта)  &lt;br /&gt;
* Анализ энергопотребления   &lt;br /&gt;
&lt;br /&gt;
Прогресс:  &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает все 8 инструкций brainfuck, а также несколько других.  &lt;br /&gt;
* Виртуальный эмулятор доступный для запуска кем угодно  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
&lt;br /&gt;
* Ведется в среде Verilator и позволяет провести функциональную эмуляцию схемотехники будущей машины &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Стадия 2: Прототипирование(UPD: 25.06.2023) ===&lt;br /&gt;
Следующая стадия - изготовление отдельных элементов компьютера - для проверки корректности работы схем, измерения режимов работы и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.1: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
[[Файл:DPC FPGA EMULATOR.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
[[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. имеет две основные задачи&lt;br /&gt;
&lt;br /&gt;
* Физическая визуализация эмулятора&lt;br /&gt;
* Эмуляция (Замещение) еще несуществующих/несобранных блоков будуей ЭВМ&lt;br /&gt;
&lt;br /&gt;
На данный момент сам эмулятор собран, в нем находится старая демонстрационная прошивка. По завершении этапа 1.2 - прошивка обновится и эмулятор будет вести себя как настоящий ламповый компьютер.&lt;br /&gt;
&lt;br /&gt;
Сзади компьютер оснащен разъемами для подключения блоков. Проектно поддерживается 128 входов и 128 выходов. Практически число может быть другим.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.2: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. Ее описание - выше. &lt;br /&gt;
&lt;br /&gt;
==== Этап 2.3: Разработка модулей ламповой логики ====&lt;br /&gt;
Результатом данного этапа будут платы - прототипы модулей ламповой логики. &amp;lt;ref&amp;gt;А.М. Бонч-Бруевич. Применение электронных ламп в экспериментальной физике. изд-е 4. М. 1956&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Handbook of electronic control circuits. By Jonh Markus. London 1959&amp;lt;/ref&amp;gt;С них можно будет снять мерки для временного анализа и анализа энергопотребления.&lt;br /&gt;
&lt;br /&gt;
==== Этап 2.4: Разработка источников питания ====&lt;br /&gt;
&lt;br /&gt;
=== Стадия 3: Сборка блоков машины ===&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.1 Разработка корпуса ====&lt;br /&gt;
На данном этапе необходимо будет довести разработку корпуса машины до стадии отправки чертежей на производство.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.2. Изготовление корпуса ====&lt;br /&gt;
Корпус сам по себе будет состоять из сотни частей, требуется изготовить их все и &lt;br /&gt;
&lt;br /&gt;
==== Этап 3.3 Сборка модулей ====&lt;br /&gt;
Изготовление и распайка модулей ламповой логики с проверкой тестеров всех ламп, с проверкой модулей на тестере модулей и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 3.4: Монтаж схемотехники машины====&lt;br /&gt;
Совершается одновременно с этапом 3.3 - по мере сборки модулей производится ошиновка разъемов вкупе с эмулятором производится верификация корректной работы прибора&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 08.06.2023)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|87&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;177&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1660</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1660"/>
		<updated>2023-08-13T18:57:07Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Источники питания ячейки: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 07.06.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов&amp;lt;ref&amp;gt;В.М. Липкин декатроны и их применение. госэнергоатомиздат.  1960&amp;lt;/ref&amp;gt;. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
[[Файл:Exp DPC 2.png|центр|мини|450x450пкс|&lt;br /&gt;
Схема стабилизатора анодного напряжения +150В, 200мА. Питается от трансформатора ТСШ170, выводы 7-8+9-10]]&lt;br /&gt;
[[Файл:ExpDPC cell 1.png|центр|мини|450x450пкс|&lt;br /&gt;
Финальная схема стабилизатора анодного напряжения декатрона +500В (работает со смещением +150В от земли)Питается от трансформатора ТА48, выводы 11-12+17-8]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Exp DPC cell +20v.png|центр|мини|450x450пкс|Схема стабилизатора напряжения +20В, 30мА. Питается от трансформатора ТА7, выводы 19-20+21-22]]&lt;br /&gt;
[[Файл:Exp DPC cell -50v.png|центр|мини|450x450пкс|Схема стабилизатора отрицательного напряжения +50В, 30мА. Питается от трансформатора ТА48, выводы 21-22+19-20]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
[[Файл:IpLine full.png|центр|безрамки|535x535пкс]]&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
[[Файл:ApLine full.png|центр|безрамки|445x445пкс]]&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA1|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA1 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х140мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png|300пкс]]||[[Файл:Dekatronpc module 140x200.png|300пкс]]&lt;br /&gt;
|-&lt;br /&gt;
| Модуль 140х140мм с краевым разъемом 2х36пин. || Первое поколение плат. Модуль 140х200мм с разъемами ГРПМШ-31&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Блок представляет собой полноценный узел машины - IpLine, ApLine или MachineCtrl. Возможно в дальнейшем понадобится увеличить количество блоков.&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
За передней панелью блока скрывается источник питания, на базе одного торроидального трансформатора и выпрямителей вокруг него. Далее идет ряд вентиляторов, затем - три ряда плат модулей, стоящих с шагом 24мм для логики или 36мм для плат с декатронами. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Платы располагаются ближе к задней стороне чтобы все провода между модулями а также к задним разъемам были минимальной длины. На самом блоке располагаются разъемы для модулей, а в подвале сформирована область для соединения модулей между собой. Подобная схема использовалась в ЭВМ [[wikipedia:Bendix_G-15|Bendix G15]]А посмотреть ее воочию, можно у [https://www.youtube.com/watch?v=-RGp-bsYf34&amp;amp;ab_channel=UsagiElectric Usagi в видеоролике]Скорее всего все соединения будут производиться пайкой, А схема подключения - браться их yosys&lt;br /&gt;
[[Файл:DPC Back wiring.png|центр|безрамки|771x771пкс]]&lt;br /&gt;
&lt;br /&gt;
=== Питание ===&lt;br /&gt;
Каждый блок питает себя сам. Изначально идея была поместить в каждый блок только накальные трансформаторы типа ТН61. Однако для полной загрузки блока нужно 4-5 трансформаторов и в ряд они не лезут, а в иной компоновке - съедают слишком много места.  Таким образом требуются заказные торроидальные многообмоточные трансформаторы - которые будут выдавать все необходимые напряжения питания.  При этом если накала на весь блок нужно порядка 300А. Лучшим вариантом на данный момент я считаю сделать 6 накальных обмоток по 50А каждая - по две обмотки на ряд.&lt;br /&gt;
&lt;br /&gt;
В РФ изготовлением трансформаторов занимаются [http://www.torel.ru/ ТОРЭЛ] и [https://tula-transformator.ru/trans_t.html Тульский завод трансформаторов]. ТОРЭЛ запросил 33к за трансформатор, в тульский завод я ТЗ еще не отправлял - нужно окончательно определиться с начинкой блоков и количеством ламп в каждом из них, а также по необходимым напряжениям питания. &lt;br /&gt;
&lt;br /&gt;
Считается, что входное напряжение стабильно по ГОСТ (+-10%). Анодное напряжение не стабилизируется, накальное не стабилизируется. Маломощные напряжения смещения снабжаются линейными стабилизаторами на базе 6С19П&amp;lt;ref&amp;gt;К.Б. Мазель  Стабилизаторы напряжения и тока. госэнергоатомиздат 1955&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==Дорожная карта проекта==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. &lt;br /&gt;
&lt;br /&gt;
Последующие стадии сильно зависят от предыдущих, при этом все стадии можно делать одновременно, но основные силы брошены на последовательную реализацию.&lt;br /&gt;
&lt;br /&gt;
Теперь о главном - &lt;br /&gt;
&lt;br /&gt;
Два мелких ребенка сильно замедляют продвижение по проекту.&lt;br /&gt;
&lt;br /&gt;
=== Стадия 1: Проектирование (UPD: 25.06.2023) &amp;lt;= Вы находитесь здесь ===&lt;br /&gt;
Самая важная стадия проекта - разработка принципиальной схемы машины. Необходимо закрыть все этапы прежде чем двигаться дальше.&lt;br /&gt;
&lt;br /&gt;
====Этап 1.1: Верификационная программная модель C++ (UPD: 25.06.2023)====&lt;br /&gt;
Описание: При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках.  .&lt;br /&gt;
&lt;br /&gt;
Задачи: &lt;br /&gt;
&lt;br /&gt;
* Высокоуровневая программная симуляция поведения мышины&lt;br /&gt;
* Верификационная модель для эмулятора&lt;br /&gt;
&lt;br /&gt;
Прогресс:&lt;br /&gt;
&lt;br /&gt;
* Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++] Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует незначительной доработки для дополнения остальными инструкциями.&lt;br /&gt;
* На данный момент модель подключена  к Verilator&amp;lt;ref&amp;gt;https://www.veripool.org/verilator/&amp;lt;/ref&amp;gt; и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью&lt;br /&gt;
&lt;br /&gt;
==== Этап 1.2: Виртуальный эмулятор лампового компьютера (UPD: 25.06.2023)&amp;lt;ref&amp;gt;Д. Томас. Логическое проектирование и верификация систем в SystemVerilog&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;А.Ю. Романов. Ю.В.Панчул. Цифровой синтез. Практический курс. ДМК 2020&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Харрис и Харрис. Цифровая схемотехника и архитектура компьютера. ДМК.  2017&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Й. Янсен. Курс цифровой электроники в 4-х частях. изд Мир.  1987&amp;lt;/ref&amp;gt; ====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog.&lt;br /&gt;
&lt;br /&gt;
Задачи:   &lt;br /&gt;
&lt;br /&gt;
* Программная эмуляция схемотехники будущей машины  &lt;br /&gt;
* Синтез принципиальной логической схемы лампового компьютера - с помощью yosys и библиотеки элементов  &lt;br /&gt;
* Временной анализ (на основании экспериментальных данных со второй стадии проекта)  &lt;br /&gt;
* Анализ энергопотребления   &lt;br /&gt;
&lt;br /&gt;
Прогресс:  &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает все 8 инструкций brainfuck, а также несколько других.  &lt;br /&gt;
* Виртуальный эмулятор доступный для запуска кем угодно  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
&lt;br /&gt;
* Ведется в среде Verilator и позволяет провести функциональную эмуляцию схемотехники будущей машины &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Стадия 2: Прототипирование(UPD: 25.06.2023) ===&lt;br /&gt;
Следующая стадия - изготовление отдельных элементов компьютера - для проверки корректности работы схем, измерения режимов работы и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.1: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
[[Файл:DPC FPGA EMULATOR.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
[[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. имеет две основные задачи&lt;br /&gt;
&lt;br /&gt;
* Физическая визуализация эмулятора&lt;br /&gt;
* Эмуляция (Замещение) еще несуществующих/несобранных блоков будуей ЭВМ&lt;br /&gt;
&lt;br /&gt;
На данный момент сам эмулятор собран, в нем находится старая демонстрационная прошивка. По завершении этапа 1.2 - прошивка обновится и эмулятор будет вести себя как настоящий ламповый компьютер.&lt;br /&gt;
&lt;br /&gt;
Сзади компьютер оснащен разъемами для подключения блоков. Проектно поддерживается 128 входов и 128 выходов. Практически число может быть другим.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.2: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. Ее описание - выше. &lt;br /&gt;
&lt;br /&gt;
==== Этап 2.3: Разработка модулей ламповой логики ====&lt;br /&gt;
Результатом данного этапа будут платы - прототипы модулей ламповой логики. &amp;lt;ref&amp;gt;А.М. Бонч-Бруевич. Применение электронных ламп в экспериментальной физике. изд-е 4. М. 1956&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Handbook of electronic control circuits. By Jonh Markus. London 1959&amp;lt;/ref&amp;gt;С них можно будет снять мерки для временного анализа и анализа энергопотребления.&lt;br /&gt;
&lt;br /&gt;
==== Этап 2.4: Разработка источников питания ====&lt;br /&gt;
&lt;br /&gt;
=== Стадия 3: Сборка блоков машины ===&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.1 Разработка корпуса ====&lt;br /&gt;
На данном этапе необходимо будет довести разработку корпуса машины до стадии отправки чертежей на производство.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.2. Изготовление корпуса ====&lt;br /&gt;
Корпус сам по себе будет состоять из сотни частей, требуется изготовить их все и &lt;br /&gt;
&lt;br /&gt;
==== Этап 3.3 Сборка модулей ====&lt;br /&gt;
Изготовление и распайка модулей ламповой логики с проверкой тестеров всех ламп, с проверкой модулей на тестере модулей и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 3.4: Монтаж схемотехники машины====&lt;br /&gt;
Совершается одновременно с этапом 3.3 - по мере сборки модулей производится ошиновка разъемов вкупе с эмулятором производится верификация корректной работы прибора&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 08.06.2023)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|87&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;177&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1659</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1659"/>
		<updated>2023-08-13T18:56:33Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Источники питания ячейки: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 07.06.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов&amp;lt;ref&amp;gt;В.М. Липкин декатроны и их применение. госэнергоатомиздат.  1960&amp;lt;/ref&amp;gt;. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
[[Файл:Exp DPC 2.png|центр|мини|450x450пкс|&lt;br /&gt;
Схема стабилизатора анодного напряжения +150В, 200мА. Питается от трансформатора ТСШ170, выводы 7-8+9-10]]&lt;br /&gt;
[[Файл:ExpDPC cell 1.png|центр|мини|450x450пкс|&lt;br /&gt;
Финальная схема стабилизатора анодного напряжения декатрона +500В (работает со смещением +150В от земли)]]&lt;br /&gt;
&lt;br /&gt;
Питается от трансформатора ТА48, выводы 11-12+17-8&lt;br /&gt;
[[Файл:Exp DPC cell +20v.png|центр|мини|450x450пкс|Схема стабилизатора напряжения +20В, 30мА. Питается от трансформатора ТА7, выводы 19-20+21-22]]&lt;br /&gt;
[[Файл:Exp DPC cell -50v.png|центр|мини|450x450пкс|Схема стабилизатора отрицательного напряжения +50В, 30мА. Питается от трансформатора ТА48, выводы 21-22+19-20]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
[[Файл:IpLine full.png|центр|безрамки|535x535пкс]]&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
[[Файл:ApLine full.png|центр|безрамки|445x445пкс]]&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA1|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA1 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х140мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png|300пкс]]||[[Файл:Dekatronpc module 140x200.png|300пкс]]&lt;br /&gt;
|-&lt;br /&gt;
| Модуль 140х140мм с краевым разъемом 2х36пин. || Первое поколение плат. Модуль 140х200мм с разъемами ГРПМШ-31&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Блок представляет собой полноценный узел машины - IpLine, ApLine или MachineCtrl. Возможно в дальнейшем понадобится увеличить количество блоков.&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
За передней панелью блока скрывается источник питания, на базе одного торроидального трансформатора и выпрямителей вокруг него. Далее идет ряд вентиляторов, затем - три ряда плат модулей, стоящих с шагом 24мм для логики или 36мм для плат с декатронами. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Платы располагаются ближе к задней стороне чтобы все провода между модулями а также к задним разъемам были минимальной длины. На самом блоке располагаются разъемы для модулей, а в подвале сформирована область для соединения модулей между собой. Подобная схема использовалась в ЭВМ [[wikipedia:Bendix_G-15|Bendix G15]]А посмотреть ее воочию, можно у [https://www.youtube.com/watch?v=-RGp-bsYf34&amp;amp;ab_channel=UsagiElectric Usagi в видеоролике]Скорее всего все соединения будут производиться пайкой, А схема подключения - браться их yosys&lt;br /&gt;
[[Файл:DPC Back wiring.png|центр|безрамки|771x771пкс]]&lt;br /&gt;
&lt;br /&gt;
=== Питание ===&lt;br /&gt;
Каждый блок питает себя сам. Изначально идея была поместить в каждый блок только накальные трансформаторы типа ТН61. Однако для полной загрузки блока нужно 4-5 трансформаторов и в ряд они не лезут, а в иной компоновке - съедают слишком много места.  Таким образом требуются заказные торроидальные многообмоточные трансформаторы - которые будут выдавать все необходимые напряжения питания.  При этом если накала на весь блок нужно порядка 300А. Лучшим вариантом на данный момент я считаю сделать 6 накальных обмоток по 50А каждая - по две обмотки на ряд.&lt;br /&gt;
&lt;br /&gt;
В РФ изготовлением трансформаторов занимаются [http://www.torel.ru/ ТОРЭЛ] и [https://tula-transformator.ru/trans_t.html Тульский завод трансформаторов]. ТОРЭЛ запросил 33к за трансформатор, в тульский завод я ТЗ еще не отправлял - нужно окончательно определиться с начинкой блоков и количеством ламп в каждом из них, а также по необходимым напряжениям питания. &lt;br /&gt;
&lt;br /&gt;
Считается, что входное напряжение стабильно по ГОСТ (+-10%). Анодное напряжение не стабилизируется, накальное не стабилизируется. Маломощные напряжения смещения снабжаются линейными стабилизаторами на базе 6С19П&amp;lt;ref&amp;gt;К.Б. Мазель  Стабилизаторы напряжения и тока. госэнергоатомиздат 1955&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==Дорожная карта проекта==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. &lt;br /&gt;
&lt;br /&gt;
Последующие стадии сильно зависят от предыдущих, при этом все стадии можно делать одновременно, но основные силы брошены на последовательную реализацию.&lt;br /&gt;
&lt;br /&gt;
Теперь о главном - &lt;br /&gt;
&lt;br /&gt;
Два мелких ребенка сильно замедляют продвижение по проекту.&lt;br /&gt;
&lt;br /&gt;
=== Стадия 1: Проектирование (UPD: 25.06.2023) &amp;lt;= Вы находитесь здесь ===&lt;br /&gt;
Самая важная стадия проекта - разработка принципиальной схемы машины. Необходимо закрыть все этапы прежде чем двигаться дальше.&lt;br /&gt;
&lt;br /&gt;
====Этап 1.1: Верификационная программная модель C++ (UPD: 25.06.2023)====&lt;br /&gt;
Описание: При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках.  .&lt;br /&gt;
&lt;br /&gt;
Задачи: &lt;br /&gt;
&lt;br /&gt;
* Высокоуровневая программная симуляция поведения мышины&lt;br /&gt;
* Верификационная модель для эмулятора&lt;br /&gt;
&lt;br /&gt;
Прогресс:&lt;br /&gt;
&lt;br /&gt;
* Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++] Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует незначительной доработки для дополнения остальными инструкциями.&lt;br /&gt;
* На данный момент модель подключена  к Verilator&amp;lt;ref&amp;gt;https://www.veripool.org/verilator/&amp;lt;/ref&amp;gt; и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью&lt;br /&gt;
&lt;br /&gt;
==== Этап 1.2: Виртуальный эмулятор лампового компьютера (UPD: 25.06.2023)&amp;lt;ref&amp;gt;Д. Томас. Логическое проектирование и верификация систем в SystemVerilog&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;А.Ю. Романов. Ю.В.Панчул. Цифровой синтез. Практический курс. ДМК 2020&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Харрис и Харрис. Цифровая схемотехника и архитектура компьютера. ДМК.  2017&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Й. Янсен. Курс цифровой электроники в 4-х частях. изд Мир.  1987&amp;lt;/ref&amp;gt; ====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog.&lt;br /&gt;
&lt;br /&gt;
Задачи:   &lt;br /&gt;
&lt;br /&gt;
* Программная эмуляция схемотехники будущей машины  &lt;br /&gt;
* Синтез принципиальной логической схемы лампового компьютера - с помощью yosys и библиотеки элементов  &lt;br /&gt;
* Временной анализ (на основании экспериментальных данных со второй стадии проекта)  &lt;br /&gt;
* Анализ энергопотребления   &lt;br /&gt;
&lt;br /&gt;
Прогресс:  &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает все 8 инструкций brainfuck, а также несколько других.  &lt;br /&gt;
* Виртуальный эмулятор доступный для запуска кем угодно  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
&lt;br /&gt;
* Ведется в среде Verilator и позволяет провести функциональную эмуляцию схемотехники будущей машины &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Стадия 2: Прототипирование(UPD: 25.06.2023) ===&lt;br /&gt;
Следующая стадия - изготовление отдельных элементов компьютера - для проверки корректности работы схем, измерения режимов работы и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.1: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
[[Файл:DPC FPGA EMULATOR.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
[[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. имеет две основные задачи&lt;br /&gt;
&lt;br /&gt;
* Физическая визуализация эмулятора&lt;br /&gt;
* Эмуляция (Замещение) еще несуществующих/несобранных блоков будуей ЭВМ&lt;br /&gt;
&lt;br /&gt;
На данный момент сам эмулятор собран, в нем находится старая демонстрационная прошивка. По завершении этапа 1.2 - прошивка обновится и эмулятор будет вести себя как настоящий ламповый компьютер.&lt;br /&gt;
&lt;br /&gt;
Сзади компьютер оснащен разъемами для подключения блоков. Проектно поддерживается 128 входов и 128 выходов. Практически число может быть другим.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.2: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. Ее описание - выше. &lt;br /&gt;
&lt;br /&gt;
==== Этап 2.3: Разработка модулей ламповой логики ====&lt;br /&gt;
Результатом данного этапа будут платы - прототипы модулей ламповой логики. &amp;lt;ref&amp;gt;А.М. Бонч-Бруевич. Применение электронных ламп в экспериментальной физике. изд-е 4. М. 1956&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Handbook of electronic control circuits. By Jonh Markus. London 1959&amp;lt;/ref&amp;gt;С них можно будет снять мерки для временного анализа и анализа энергопотребления.&lt;br /&gt;
&lt;br /&gt;
==== Этап 2.4: Разработка источников питания ====&lt;br /&gt;
&lt;br /&gt;
=== Стадия 3: Сборка блоков машины ===&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.1 Разработка корпуса ====&lt;br /&gt;
На данном этапе необходимо будет довести разработку корпуса машины до стадии отправки чертежей на производство.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.2. Изготовление корпуса ====&lt;br /&gt;
Корпус сам по себе будет состоять из сотни частей, требуется изготовить их все и &lt;br /&gt;
&lt;br /&gt;
==== Этап 3.3 Сборка модулей ====&lt;br /&gt;
Изготовление и распайка модулей ламповой логики с проверкой тестеров всех ламп, с проверкой модулей на тестере модулей и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 3.4: Монтаж схемотехники машины====&lt;br /&gt;
Совершается одновременно с этапом 3.3 - по мере сборки модулей производится ошиновка разъемов вкупе с эмулятором производится верификация корректной работы прибора&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 08.06.2023)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|87&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;177&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Exp_DPC_cell_-50v.png&amp;diff=1658</id>
		<title>Файл:Exp DPC cell -50v.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Exp_DPC_cell_-50v.png&amp;diff=1658"/>
		<updated>2023-08-13T18:55:07Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Стабилизатор -50В&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Exp_DPC_cell_%2B20v.png&amp;diff=1657</id>
		<title>Файл:Exp DPC cell +20v.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Exp_DPC_cell_%2B20v.png&amp;diff=1657"/>
		<updated>2023-08-13T18:52:51Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Схема стабилизатора +20В 30мА&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Exp_DPC_2.png&amp;diff=1656</id>
		<title>Файл:Exp DPC 2.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Exp_DPC_2.png&amp;diff=1656"/>
		<updated>2023-08-13T18:50:54Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Схема стабилизатора +150В 200мА&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:ExpDPC_cell_1.png&amp;diff=1655</id>
		<title>Файл:ExpDPC cell 1.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:ExpDPC_cell_1.png&amp;diff=1655"/>
		<updated>2023-08-13T18:49:30Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Финальная схема стабилизатора +500В&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC_%D1%8D%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80&amp;diff=1653</id>
		<title>DekatronPC эмулятор</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC_%D1%8D%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80&amp;diff=1653"/>
		<updated>2023-07-07T11:21:07Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Установка окружения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[категория:Проекты]]&lt;br /&gt;
[[категория:DekatronPC]]&lt;br /&gt;
[[категория:ПЛИС]]&lt;br /&gt;
[[категория:Verilog]]&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
Проект по созданию эмулятора лампового компьютера на ПЛИС. Аппаратная часть сделана на базе отладочной платы Altera De0 Nano и дисплея [[МС6205]]&lt;br /&gt;
&lt;br /&gt;
== Работа панели эмулятора ==&lt;br /&gt;
&lt;br /&gt;
Панель эмулятора представляет собой блок индикации и управления. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Dpc dmulator.pdf|1000px]]&lt;br /&gt;
&lt;br /&gt;
К ПЛИС подключается плата демультиплексора, на которой располагаются сделающие каналы:&lt;br /&gt;
&lt;br /&gt;
* 4-бит катодный регистр. В нем хранится номер текущего отображаемого столбца на блоке ИН12.&lt;br /&gt;
* Объединенный 8-бит анодный регистр. Старший и младший и младший октеты соотверствуют верхнему и нижнему индикатору в отображаемом столбце. Значение кодируется в формате 8-4-2-1.&lt;br /&gt;
* 8-бит регистр опроса клавиатуры. Клавиатура является матрицей 9х4 кнопок, их назначение описано в таблице ниже.&lt;br /&gt;
** Информация о нажатых кнопках поступает непосредственно на вход ПЛИС через параллельную 7-бит интерфейсную шину.&lt;br /&gt;
&lt;br /&gt;
== Цель проекта ==&lt;br /&gt;
&lt;br /&gt;
* На ПЛИС создается полная копия будущей ламповой машины. которая позволяет упростить процесс разработки микроархитектуры лампового компьютера, а также отладить взяимодействие всех ключевых элементов.&lt;br /&gt;
* Укрупненные блоки:&lt;br /&gt;
** Блок счетчика IP - 6 декатронов, работающих в восьмеричной системе. Счетчик умеет делать +1 и -1, а также, &lt;br /&gt;
*** При сигнале IP_READY=1 - на выходе счетчика его текущее значение. &lt;br /&gt;
*** Можно сбросить счетчики в нуль. &lt;br /&gt;
*** Максимальное число 0777777 - или 263143. для 7 декатронов - 07777777 или 2097151&lt;br /&gt;
** Блок памяти программ&lt;br /&gt;
** Блок декодера инструкций&lt;br /&gt;
** Блок счетчика Loop на базе двух декатронов умеет считать +1 и -1 от 0 до 99 в десятичном режиме. &lt;br /&gt;
*** При сигнале LOOP_READY=1 разрешается считать состояние сигнала LOOP_ZERO&lt;br /&gt;
*** Сигнал LOOP_ZERO=1 показывает что счетчик пуст&lt;br /&gt;
*** Сигнал LOOP_OVERFLOW=1 показывает, что счетчик переполнился - критическое состояние, вызывает SYSTEM_HALT&lt;br /&gt;
** Блок счетчика AP - 5 декатронов, работающих в восьмеричной системе. Счетчик умеет делать +1 и -1&lt;br /&gt;
*** При сигнале AP_READY=1 - на выходе счетчика его текущее значение&lt;br /&gt;
*** Сигнал MEMORY_LOCK=1 - означает, что данные по данному адресу выгружены в счетчик данных и перед изменением состояния счетчика их необходимо записать обратно. Запрещает операции +1 и -1.&lt;br /&gt;
*** Максимальное число 077777 - или 32767.&lt;br /&gt;
** Блок памяти данных&lt;br /&gt;
** Блок счетчика данных - 3 декатрона в восьмеричной системе. Счетчик умеет делать +1 и -1, а также в него можно записать новые данные извне&lt;br /&gt;
*** При сигнале DATA_READY=1 - декатроны находятся в устойчивом состоянии&lt;br /&gt;
*** Сигнал MEMORY_LOCK=0 означает, что данных в счетчике еще нет и перед операциями +1 и -1 необходимо прочитать данные из ОЗУ&lt;br /&gt;
** Блок ввода/вывода&lt;br /&gt;
* Впоследствии, программные блоки реализуются физически и замещают программные блоки. В итоге при наличии эмулятора компьютер всегда работает.&lt;br /&gt;
* Данный подход позволяет своевременно находить аппаратные проблемы и устранять их.&lt;br /&gt;
&lt;br /&gt;
== Блок индикации ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:Эмулятор лицевая 1.jpg|600px|без]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Прогресс ==&lt;br /&gt;
&lt;br /&gt;
* С апреля потихоньку пилится модель компьютера с помощью System Verilog.&lt;br /&gt;
** Реализована модель декатронного счетчика&lt;br /&gt;
* (15/11/2020) Заказал корпус 5U 360мм глубиной.&lt;br /&gt;
* Рисую схему блока индикации. Представляет собой дисплей мс6205, блок индикаторов ИН12 и клавиатуру.&lt;br /&gt;
&lt;br /&gt;
== Виртуальный эмулятор ==&lt;br /&gt;
[[Файл:VirtualDekatronPCEmulator.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;qlBzE27at6M&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Установка окружения ==&lt;br /&gt;
&lt;br /&gt;
Установка [https://verilator.org/guide/latest/install.html Verilator]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install git perl python3 gperf make autoconf g++ flex bison ccache&lt;br /&gt;
sudo apt-get install python-is-python3 python3-pip&lt;br /&gt;
sudo apt-get install libgoogle-perftools-dev numactl perl-doc help2man&lt;br /&gt;
sudo apt-get install libfl2  # Ubuntu only (ignore if gives error)&lt;br /&gt;
sudo apt-get install libfl-dev  # Ubuntu only (ignore if gives error)&lt;br /&gt;
sudo apt-get install zlibc zlib1g zlib1g-dev  # Ubuntu only (ignore if gives error)&lt;br /&gt;
&lt;br /&gt;
git clone https://github.com/verilator/verilator   # Only first time&lt;br /&gt;
&lt;br /&gt;
# Every time you need to build:&lt;br /&gt;
unsetenv VERILATOR_ROOT  # For csh; ignore error if on bash&lt;br /&gt;
unset VERILATOR_ROOT  # For bash&lt;br /&gt;
cd verilator&lt;br /&gt;
git pull         # Make sure git repository is up-to-date&lt;br /&gt;
git tag          # See what versions exist&lt;br /&gt;
git checkout v{version}  # Switch to specified release version&lt;br /&gt;
&lt;br /&gt;
autoconf         # Create ./configure script&lt;br /&gt;
./configure      # Configure and create Makefile&lt;br /&gt;
make -j `nproc`  # Build Verilator itself (if error, try just &amp;#039;make&amp;#039;)&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка Icarus Verilog&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install gtkwave&lt;br /&gt;
git clone https://github.com/steveicarus/iverilog.git&lt;br /&gt;
cd iverilog&lt;br /&gt;
sh autoconf.sh&lt;br /&gt;
./configure&lt;br /&gt;
make -j`nproc`&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка Yosys&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential clang flex \&lt;br /&gt;
	libreadline-dev gawk tcl-dev libffi-dev \&lt;br /&gt;
	graphviz xdot pkg-config python3 libboost-system-dev \&lt;br /&gt;
	libboost-python-dev libboost-filesystem-dev&lt;br /&gt;
git clone https://github.com/YosysHQ/yosys.git&lt;br /&gt;
pip install liberty-parser&lt;br /&gt;
make config-clang&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* https://github.com/radiolok/dekatronpc - Общий репозиторий проекта&lt;br /&gt;
* http://www.construc-tiv.ru/19-rack-box.html - тут достаточно бюджетные корпуса 19&amp;quot;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9F%D0%BB%D0%B0%D0%BD%D1%8B:2023&amp;diff=1652</id>
		<title>Планы:2023</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9F%D0%BB%D0%B0%D0%BD%D1%8B:2023&amp;diff=1652"/>
		<updated>2023-06-26T18:41:37Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: Новая страница: «  # Дочь, сын и остатки ремонта. # Оживление scara робота # &amp;lt;s&amp;gt;Видеообзор на тепловизор. Возможн...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
# Дочь, сын и остатки ремонта.&lt;br /&gt;
# Оживление scara робота&lt;br /&gt;
# &amp;lt;s&amp;gt;Видеообзор на тепловизор. Возможно и на микроскоп&amp;lt;/s&amp;gt;&lt;br /&gt;
# Собрать и запустить декатронную ячейку&lt;br /&gt;
## Основная проблема - левел-шифтер. Схема принимает на вход сигналы +10 -20В, и она  должна тянуть катод и управляющий электрод от +20В к -200В.&lt;br /&gt;
## Схема стабилизаторов напряжения&lt;br /&gt;
## Сесть и спаять все воедино.&lt;br /&gt;
# Запрограммировать до конца эмулятор лампового компьютера&lt;br /&gt;
## Сесть и сделать&lt;br /&gt;
## Платы ввода/вывода надо сделать новые&lt;br /&gt;
# ГИП10000 на стероидах - отремонтировать.&lt;br /&gt;
## Заменить процессорную плату&lt;br /&gt;
## Докинуть конденсаторов в схему&lt;br /&gt;
## По мотивам ИМГ-3 запилить 64х64 канальную плату управления.&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1651</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1651"/>
		<updated>2023-06-25T11:06:33Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Блок */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 07.06.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов&amp;lt;ref&amp;gt;В.М. Липкин декатроны и их применение. госэнергоатомиздат.  1960&amp;lt;/ref&amp;gt;. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
[[Файл:IpLine full.png|центр|безрамки|535x535пкс]]&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
[[Файл:ApLine full.png|центр|безрамки|445x445пкс]]&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA1|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA1 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х140мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png|300пкс]]||[[Файл:Dekatronpc module 140x200.png|300пкс]]&lt;br /&gt;
|-&lt;br /&gt;
| Модуль 140х140мм с краевым разъемом 2х36пин. || Первое поколение плат. Модуль 140х200мм с разъемами ГРПМШ-31&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Блок представляет собой полноценный узел машины - IpLine, ApLine или MachineCtrl. Возможно в дальнейшем понадобится увеличить количество блоков.&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
За передней панелью блока скрывается источник питания, на базе одного торроидального трансформатора и выпрямителей вокруг него. Далее идет ряд вентиляторов, затем - три ряда плат модулей, стоящих с шагом 24мм для логики или 36мм для плат с декатронами. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Платы располагаются ближе к задней стороне чтобы все провода между модулями а также к задним разъемам были минимальной длины. На самом блоке располагаются разъемы для модулей, а в подвале сформирована область для соединения модулей между собой. Подобная схема использовалась в ЭВМ [[wikipedia:Bendix_G-15|Bendix G15]]А посмотреть ее воочию, можно у [https://www.youtube.com/watch?v=-RGp-bsYf34&amp;amp;ab_channel=UsagiElectric Usagi в видеоролике]Скорее всего все соединения будут производиться пайкой, А схема подключения - браться их yosys&lt;br /&gt;
[[Файл:DPC Back wiring.png|центр|безрамки|771x771пкс]]&lt;br /&gt;
&lt;br /&gt;
=== Питание ===&lt;br /&gt;
Каждый блок питает себя сам. Изначально идея была поместить в каждый блок только накальные трансформаторы типа ТН61. Однако для полной загрузки блока нужно 4-5 трансформаторов и в ряд они не лезут, а в иной компоновке - съедают слишком много места.  Таким образом требуются заказные торроидальные многообмоточные трансформаторы - которые будут выдавать все необходимые напряжения питания.  При этом если накала на весь блок нужно порядка 300А. Лучшим вариантом на данный момент я считаю сделать 6 накальных обмоток по 50А каждая - по две обмотки на ряд.&lt;br /&gt;
&lt;br /&gt;
В РФ изготовлением трансформаторов занимаются [http://www.torel.ru/ ТОРЭЛ] и [https://tula-transformator.ru/trans_t.html Тульский завод трансформаторов]. ТОРЭЛ запросил 33к за трансформатор, в тульский завод я ТЗ еще не отправлял - нужно окончательно определиться с начинкой блоков и количеством ламп в каждом из них, а также по необходимым напряжениям питания. &lt;br /&gt;
&lt;br /&gt;
Считается, что входное напряжение стабильно по ГОСТ (+-10%). Анодное напряжение не стабилизируется, накальное не стабилизируется. Маломощные напряжения смещения снабжаются линейными стабилизаторами на базе 6С19П&amp;lt;ref&amp;gt;К.Б. Мазель  Стабилизаторы напряжения и тока. госэнергоатомиздат 1955&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==Дорожная карта проекта==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. &lt;br /&gt;
&lt;br /&gt;
Последующие стадии сильно зависят от предыдущих, при этом все стадии можно делать одновременно, но основные силы брошены на последовательную реализацию.&lt;br /&gt;
&lt;br /&gt;
Теперь о главном - &lt;br /&gt;
&lt;br /&gt;
Два мелких ребенка сильно замедляют продвижение по проекту.&lt;br /&gt;
&lt;br /&gt;
=== Стадия 1: Проектирование (UPD: 25.06.2023) &amp;lt;= Вы находитесь здесь ===&lt;br /&gt;
Самая важная стадия проекта - разработка принципиальной схемы машины. Необходимо закрыть все этапы прежде чем двигаться дальше.&lt;br /&gt;
&lt;br /&gt;
====Этап 1.1: Верификационная программная модель C++ (UPD: 25.06.2023)====&lt;br /&gt;
Описание: При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках.  .&lt;br /&gt;
&lt;br /&gt;
Задачи: &lt;br /&gt;
&lt;br /&gt;
* Высокоуровневая программная симуляция поведения мышины&lt;br /&gt;
* Верификационная модель для эмулятора&lt;br /&gt;
&lt;br /&gt;
Прогресс:&lt;br /&gt;
&lt;br /&gt;
* Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++] Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует незначительной доработки для дополнения остальными инструкциями.&lt;br /&gt;
* На данный момент модель подключена  к Verilator&amp;lt;ref&amp;gt;https://www.veripool.org/verilator/&amp;lt;/ref&amp;gt; и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью&lt;br /&gt;
&lt;br /&gt;
==== Этап 1.2: Виртуальный эмулятор лампового компьютера (UPD: 25.06.2023)&amp;lt;ref&amp;gt;Д. Томас. Логическое проектирование и верификация систем в SystemVerilog&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;А.Ю. Романов. Ю.В.Панчул. Цифровой синтез. Практический курс. ДМК 2020&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Харрис и Харрис. Цифровая схемотехника и архитектура компьютера. ДМК.  2017&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Й. Янсен. Курс цифровой электроники в 4-х частях. изд Мир.  1987&amp;lt;/ref&amp;gt; ====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog.&lt;br /&gt;
&lt;br /&gt;
Задачи:   &lt;br /&gt;
&lt;br /&gt;
* Программная эмуляция схемотехники будущей машины  &lt;br /&gt;
* Синтез принципиальной логической схемы лампового компьютера - с помощью yosys и библиотеки элементов  &lt;br /&gt;
* Временной анализ (на основании экспериментальных данных со второй стадии проекта)  &lt;br /&gt;
* Анализ энергопотребления   &lt;br /&gt;
&lt;br /&gt;
Прогресс:  &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает все 8 инструкций brainfuck, а также несколько других.  &lt;br /&gt;
* Виртуальный эмулятор доступный для запуска кем угодно  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
&lt;br /&gt;
* Ведется в среде Verilator и позволяет провести функциональную эмуляцию схемотехники будущей машины &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Стадия 2: Прототипирование(UPD: 25.06.2023) ===&lt;br /&gt;
Следующая стадия - изготовление отдельных элементов компьютера - для проверки корректности работы схем, измерения режимов работы и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.1: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
[[Файл:DPC FPGA EMULATOR.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
[[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. имеет две основные задачи&lt;br /&gt;
&lt;br /&gt;
* Физическая визуализация эмулятора&lt;br /&gt;
* Эмуляция (Замещение) еще несуществующих/несобранных блоков будуей ЭВМ&lt;br /&gt;
&lt;br /&gt;
На данный момент сам эмулятор собран, в нем находится старая демонстрационная прошивка. По завершении этапа 1.2 - прошивка обновится и эмулятор будет вести себя как настоящий ламповый компьютер.&lt;br /&gt;
&lt;br /&gt;
Сзади компьютер оснащен разъемами для подключения блоков. Проектно поддерживается 128 входов и 128 выходов. Практически число может быть другим.&lt;br /&gt;
&lt;br /&gt;
====Этап 2.2: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. Ее описание - выше. &lt;br /&gt;
&lt;br /&gt;
==== Этап 2.3: Разработка модулей ламповой логики ====&lt;br /&gt;
Результатом данного этапа будут платы - прототипы модулей ламповой логики. &amp;lt;ref&amp;gt;А.М. Бонч-Бруевич. Применение электронных ламп в экспериментальной физике. изд-е 4. М. 1956&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Handbook of electronic control circuits. By Jonh Markus. London 1959&amp;lt;/ref&amp;gt;С них можно будет снять мерки для временного анализа и анализа энергопотребления.&lt;br /&gt;
&lt;br /&gt;
==== Этап 2.4: Разработка источников питания ====&lt;br /&gt;
&lt;br /&gt;
=== Стадия 3: Сборка блоков машины ===&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.1 Разработка корпуса ====&lt;br /&gt;
На данном этапе необходимо будет довести разработку корпуса машины до стадии отправки чертежей на производство.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3.2. Изготовление корпуса ====&lt;br /&gt;
Корпус сам по себе будет состоять из сотни частей, требуется изготовить их все и &lt;br /&gt;
&lt;br /&gt;
==== Этап 3.3 Сборка модулей ====&lt;br /&gt;
Изготовление и распайка модулей ламповой логики с проверкой тестеров всех ламп, с проверкой модулей на тестере модулей и т.п.&lt;br /&gt;
&lt;br /&gt;
====Этап 3.4: Монтаж схемотехники машины====&lt;br /&gt;
Совершается одновременно с этапом 3.3 - по мере сборки модулей производится ошиновка разъемов вкупе с эмулятором производится верификация корректной работы прибора&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 08.06.2023)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|87&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;177&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DPC_FPGA_EMULATOR.png&amp;diff=1650</id>
		<title>Файл:DPC FPGA EMULATOR.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DPC_FPGA_EMULATOR.png&amp;diff=1650"/>
		<updated>2023-06-25T10:12:07Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DPC_FPGA_EMULATOR&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DPC_Back_wiring.png&amp;diff=1649</id>
		<title>Файл:DPC Back wiring.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DPC_Back_wiring.png&amp;diff=1649"/>
		<updated>2023-06-25T08:52:44Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DPC_Back_wiring&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DekatronPC_block.png&amp;diff=1648</id>
		<title>Файл:DekatronPC block.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DekatronPC_block.png&amp;diff=1648"/>
		<updated>2023-06-25T08:43:59Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: Radiolok загрузил новую версию Файл:DekatronPC block.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;3D модель блока лампового компьютера&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1647</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1647"/>
		<updated>2023-06-25T08:43:29Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* IpLine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 07.06.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
[[Файл:IpLine full.png|центр|безрамки|535x535пкс]]&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
[[Файл:ApLine full.png|центр|безрамки|445x445пкс]]&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA1|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA1 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х140мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png|300пкс]]||[[Файл:Dekatronpc module 140x200.png|300пкс]]&lt;br /&gt;
|-&lt;br /&gt;
| Модуль 140х140мм с краевым разъемом 2х36пин. || Первое поколение плат. Модуль 140х200мм с разъемами ГРПМШ-31&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Каждый их трех блоков должен уместиться в 4U стоечном корпусе:&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Логические элементы располагаются на модулях, до 16 ламп на каждом модуле, с краевым разъемом 31 или 72пин. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Каждый блок содержит собственный трансформатор питания мощностью 1.7-2.5 кВт. При этом трансформатор находится ближе к лицевой стороне. Платы располагаются ближе к задней стороне чтобы все провода были минимальной длины.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==DekatronPC Challenge==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. В отличие от релейного компьютера с его монолитной конструкцией, здесь конструкция блочная.&lt;br /&gt;
&lt;br /&gt;
====Этап 1: Верификационная программная модель C++ (UPD: 19.05.2023)====&lt;br /&gt;
Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++]. При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках. Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует доработки для дополнения остальными инструкциями.На данный момент модель подключена  к Verilator и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью.&lt;br /&gt;
&lt;br /&gt;
Завершением этапа будет программный код, поддерживающий расширенный набор инструкций описанный выше.&lt;br /&gt;
&lt;br /&gt;
====Этап 2: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. А также изготавливается [[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog. &lt;br /&gt;
&lt;br /&gt;
Прогресс: [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает 7 инструкций brainfuck - кроме CIN.  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
В завершении этапа будет синтезируемый код на языке Verilog, работающий на FPGA-эмуляторе и позволяюющий запускать любые программы языка brainfuck&lt;br /&gt;
&lt;br /&gt;
====Этап 3: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется третий этап - изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. &lt;br /&gt;
&lt;br /&gt;
====Этап 4: Сборка в железе====&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 08.06.2023)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|87&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;177&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Часто-задаваемые вопросы и ответы== &lt;br /&gt;
*&amp;#039;&amp;#039;Зачем?&amp;#039;&amp;#039;  &lt;br /&gt;
**Затем.&lt;br /&gt;
*&amp;#039;&amp;#039;Почему brainfuck? Может быть лучше взять более практичный урезанный ассемблер?&amp;#039;&amp;#039; &lt;br /&gt;
**brainfuck - и есть урезанный ассемблер. Ламповая машина в любом случае будет в миллион раз медленнее современных компьютеров и проект является видом инженерного искусства. А раз так - то реализовывать надо наиболее безумный вариант. Тем более что декатрон - основа машины - позволяет реализовать&lt;br /&gt;
*Книги&lt;br /&gt;
*Схемотехника&lt;br /&gt;
*Температурная стабильность, охлаждение&lt;br /&gt;
*Укладка кабелей&lt;br /&gt;
*Интерфейс ввода-вывода&lt;br /&gt;
*Надежность машины&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:ApLine_full.png&amp;diff=1646</id>
		<title>Файл:ApLine full.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:ApLine_full.png&amp;diff=1646"/>
		<updated>2023-06-25T08:40:23Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IpLine_full&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:IpLine_full.png&amp;diff=1645</id>
		<title>Файл:IpLine full.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:IpLine_full.png&amp;diff=1645"/>
		<updated>2023-06-25T08:38:54Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IpLine_full&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1644</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1644"/>
		<updated>2023-06-25T08:34:49Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 07.06.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA3|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA2||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA3 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х140мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png|300пкс]]||[[Файл:Dekatronpc module 140x200.png|300пкс]]&lt;br /&gt;
|-&lt;br /&gt;
| Модуль 140х140мм с краевым разъемом 2х36пин. || Первое поколение плат. Модуль 140х200мм с разъемами ГРПМШ-31&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Каждый их трех блоков должен уместиться в 4U стоечном корпусе:&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Логические элементы располагаются на модулях, до 16 ламп на каждом модуле, с краевым разъемом 31 или 72пин. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Каждый блок содержит собственный трансформатор питания мощностью 1.7-2.5 кВт. При этом трансформатор находится ближе к лицевой стороне. Платы располагаются ближе к задней стороне чтобы все провода были минимальной длины.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==DekatronPC Challenge==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. В отличие от релейного компьютера с его монолитной конструкцией, здесь конструкция блочная.&lt;br /&gt;
&lt;br /&gt;
====Этап 1: Верификационная программная модель C++ (UPD: 19.05.2023)====&lt;br /&gt;
Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++]. При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках. Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует доработки для дополнения остальными инструкциями.На данный момент модель подключена  к Verilator и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью.&lt;br /&gt;
&lt;br /&gt;
Завершением этапа будет программный код, поддерживающий расширенный набор инструкций описанный выше.&lt;br /&gt;
&lt;br /&gt;
====Этап 2: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. А также изготавливается [[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog. &lt;br /&gt;
&lt;br /&gt;
Прогресс: [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает 7 инструкций brainfuck - кроме CIN.  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
В завершении этапа будет синтезируемый код на языке Verilog, работающий на FPGA-эмуляторе и позволяюющий запускать любые программы языка brainfuck&lt;br /&gt;
&lt;br /&gt;
====Этап 3: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется третий этап - изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. &lt;br /&gt;
&lt;br /&gt;
====Этап 4: Сборка в железе====&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 08.06.2023)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|87&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;177&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Часто-задаваемые вопросы и ответы== &lt;br /&gt;
*&amp;#039;&amp;#039;Зачем?&amp;#039;&amp;#039;  &lt;br /&gt;
**Затем.&lt;br /&gt;
*&amp;#039;&amp;#039;Почему brainfuck? Может быть лучше взять более практичный урезанный ассемблер?&amp;#039;&amp;#039; &lt;br /&gt;
**brainfuck - и есть урезанный ассемблер. Ламповая машина в любом случае будет в миллион раз медленнее современных компьютеров и проект является видом инженерного искусства. А раз так - то реализовывать надо наиболее безумный вариант. Тем более что декатрон - основа машины - позволяет реализовать&lt;br /&gt;
*Книги&lt;br /&gt;
*Схемотехника&lt;br /&gt;
*Температурная стабильность, охлаждение&lt;br /&gt;
*Укладка кабелей&lt;br /&gt;
*Интерфейс ввода-вывода&lt;br /&gt;
*Надежность машины&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1643</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1643"/>
		<updated>2023-06-25T08:29:15Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Модуль */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 07.06.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA3|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA2||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA3 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х100мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:DekatronPC module.png]]||[[Файл:Dekatronpc module 140x200.png]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Каждый их трех блоков должен уместиться в 4U стоечном корпусе:&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Логические элементы располагаются на модулях, до 16 ламп на каждом модуле, с краевым разъемом 31 или 72пин. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Каждый блок содержит собственный трансформатор питания мощностью 1.7-2.5 кВт. При этом трансформатор находится ближе к лицевой стороне. Платы располагаются ближе к задней стороне чтобы все провода были минимальной длины.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==DekatronPC Challenge==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. В отличие от релейного компьютера с его монолитной конструкцией, здесь конструкция блочная.&lt;br /&gt;
&lt;br /&gt;
====Этап 1: Верификационная программная модель C++ (UPD: 19.05.2023)====&lt;br /&gt;
Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++]. При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках. Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует доработки для дополнения остальными инструкциями.На данный момент модель подключена  к Verilator и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью.&lt;br /&gt;
&lt;br /&gt;
Завершением этапа будет программный код, поддерживающий расширенный набор инструкций описанный выше.&lt;br /&gt;
&lt;br /&gt;
====Этап 2: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. А также изготавливается [[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog. &lt;br /&gt;
&lt;br /&gt;
Прогресс: [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает 7 инструкций brainfuck - кроме CIN.  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
В завершении этапа будет синтезируемый код на языке Verilog, работающий на FPGA-эмуляторе и позволяюющий запускать любые программы языка brainfuck&lt;br /&gt;
&lt;br /&gt;
====Этап 3: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется третий этап - изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. &lt;br /&gt;
&lt;br /&gt;
====Этап 4: Сборка в железе====&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 08.06.2023)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|87&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;177&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Часто-задаваемые вопросы и ответы== &lt;br /&gt;
*&amp;#039;&amp;#039;Зачем?&amp;#039;&amp;#039;  &lt;br /&gt;
**Затем.&lt;br /&gt;
*&amp;#039;&amp;#039;Почему brainfuck? Может быть лучше взять более практичный урезанный ассемблер?&amp;#039;&amp;#039; &lt;br /&gt;
**brainfuck - и есть урезанный ассемблер. Ламповая машина в любом случае будет в миллион раз медленнее современных компьютеров и проект является видом инженерного искусства. А раз так - то реализовывать надо наиболее безумный вариант. Тем более что декатрон - основа машины - позволяет реализовать&lt;br /&gt;
*Книги&lt;br /&gt;
*Схемотехника&lt;br /&gt;
*Температурная стабильность, охлаждение&lt;br /&gt;
*Укладка кабелей&lt;br /&gt;
*Интерфейс ввода-вывода&lt;br /&gt;
*Надежность машины&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1642</id>
		<title>DekatronPC</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=DekatronPC&amp;diff=1642"/>
		<updated>2023-06-25T08:28:31Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: /* Модуль */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Проекты]]&lt;br /&gt;
[[Категория:ЭВМ]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dekatronpc logo.jpg|справа|355px]]&lt;br /&gt;
&lt;br /&gt;
==Описание== &lt;br /&gt;
&lt;br /&gt;
Компьютер на базе сверхминиатюрных вакуумных и газоразрядных ламп, процессор которого не содержит кремниевых полупроводниковых элементов. &lt;br /&gt;
&lt;br /&gt;
Ламповый компьютер DekatronPC предназначен для выполнения программ, написанных яна языке программирования brainfuck. Это значит, что основу набора инструкций составляет восемь инструкций языка brainfuck: &amp;#039;&amp;#039;&amp;#039;+-&amp;lt;&amp;gt;.,[]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Основное требование к ламповому компьютеру — чтобы инструкции в нем в точности соответствовали языку Brainfuck. Во-вторых — 99% существующих восьмибитных программ на Brainfuck должны исполняться исключительно на ламповой логике. Оставшийся 1% банально может не умещаться в ОЗУ. Максимум того, что допускается использовать в аутентичной части машины, — это германиевые диоды, да и то лишь в выпрямителях питания в схемах обвязки кубов памяти.&lt;br /&gt;
&lt;br /&gt;
==Подпроекты== &lt;br /&gt;
&lt;br /&gt;
*[[Ламповая логика]] - Проектирование быстродействующих ламповых логических элементов&lt;br /&gt;
*[[Испытатель электронных ламп]] - Проект современного портативного испытателя вакуумных и газоразряных ламп&lt;br /&gt;
*[[DekatronPC эмулятор]] - Verilog-модель лампового компьютера на ПЛИС&lt;br /&gt;
&lt;br /&gt;
==Технические характеристики (проектные) - UPD: 07.06.2023==&lt;br /&gt;
&lt;br /&gt;
*Архитектура - Гарвардская, с раздельной памятью данных и кода.&lt;br /&gt;
*Адресация памяти программ - 1 000 000 ячеек шириной 4 бит&lt;br /&gt;
*Адресация памяти данных - 100 000 ячеек данных шириной 10 бит&lt;br /&gt;
*Разрядность: &lt;br /&gt;
**Шины данных - 10 бит октетами в формате 8-4-2-1. диапазон счета - 0-255 (3 декатрона)&lt;br /&gt;
**Шина адреса данных - 20 бит, октетами в формате 8-4-2-1. диапазон счета - 0-99999 (5 декатронов)&lt;br /&gt;
**Шина адреса программ - 24 бит, октетами в формате 8-4-2-1. диапазон счета  - 0-999999 (6 декатронов)&lt;br /&gt;
*Тактовая частота - не более 1МГц - ограничение со стороны декатрона [[А110]]&lt;br /&gt;
*Быстродействие - до 500тыс операций в секунду. Доступна конвейеризация - пока выполняется текущая инструкция, допускается выборка новой.&lt;br /&gt;
**Время выборки новой инструкции, время исполнения инструкции - уникально.&lt;br /&gt;
**Выборка новой инструкции - не быстрее 2 тактов. (в текущей версии кода 3)&lt;br /&gt;
**Исполнение инструкций - от 1 такта - зависит от предыдущего состояния. В серии команд ++++ первый инкремент займет два такта, второй и последующие - 1 такт, но так как время выборки новой инструкции не менее 2 тактов и может производиться параллельно, то частота инкрементов будет не выше 500 тысяч в секунду на частоте 1МГц.&lt;br /&gt;
*Текущее Быстродействие в модели:&lt;br /&gt;
**Пиковое: 200тысяч операций в секунду.&lt;br /&gt;
**Среднее 45 тысяч операций в секунду.&lt;br /&gt;
*Количество ламп  ~1000шт (07.06.2023 - по результатам синтеза Verilog-модели 1244шт)&lt;br /&gt;
*Используемые лампы:&lt;br /&gt;
**[[6Н16Б]] - сверхминиатюрный сдвоенный триод для работы в импульсных устройствах.&lt;br /&gt;
**[[6Ж2Б]] - сверхминиатюрный пентод для работы в импульсных устройствах. Утверждается&amp;lt;ref&amp;gt;И.Г.Бергельсон, Н.К.дадерко, Н.В.Пароль, В.М. Петухов. Приемно-усилительные лампы повышенной надежности. Справочник. изд. &amp;quot;Советское радио&amp;quot;. М. 1962&amp;lt;/ref&amp;gt;, что может работать в режиме с двумя управляющими сетками.&lt;br /&gt;
**[[6Х7Б]] - сврехминиатюрный сдвоенный диод.&lt;br /&gt;
**[[А110]] - сверхминиатюрный коммутаторный декатрон со скоростью счета до 1млн имп. в секунду.&lt;br /&gt;
*Потребляемая мощность, общая - не хуже 5кВт. Для тысячи ламп 6Н16Б расчет составляет: &lt;br /&gt;
**на накал ламп 6.3В 0,4А/лампа (400А) - 2.5кВт&lt;br /&gt;
**анодное 150В 5мА/триод (10А)- 1,5 кВт&lt;br /&gt;
*Общие габариты процессора : три 4U серверных блока размерами 920*420*178мм.&lt;br /&gt;
*Масса  60кг.&lt;br /&gt;
&lt;br /&gt;
==Декатрон==&lt;br /&gt;
[[Файл:Dekatron.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Декатрон — это многоэлектродная газоразрядная лампа, предназначенная для реверсивного счета импульсов. В центре находится диск анода, а вокруг него расположены тридцать электродов. Из них десять катодов и две группы подкатодов — по два подкатода между каждым катодом. После подачи напряжения на декатрон между анодом и одним из катодов загорается тлеющий разряд. Подавая импульсы определенной последовательности на подкатоды и соседний катод, мы можем перемещать разряд между катодами, обеспечивая операцию инкремента или декремента. У коммутаторного декатрона все выводы катодов выведены наружу, следовательно можно считывать текущее значение, а также - устанавливать разряд на необходимом катоде. Да эта лампа просто создана для языка Brainfuck!&lt;br /&gt;
&amp;#039;&amp;#039;Тут нужно сделать ремарку, что нет ни одной схемы записи данных в декатрон по катоду. Однако схема сброса декатрона в исходное состояние есть подача импульса отрицательной полярности на нулевой катод. По образу и подобию можно подать такой импульс на любой катод и получить запись информации в декатрон. В ламповом компьютере Harwell Dekatron используется следующая схема записи данных - на схему сравнения подается сигнал с декатрона и требуемое число. После этого подается серия импульсов инкремента на декатрон до тех пор, пока на нем не окажется необходимое число. Эта схема может быть также реализована, если исходный эксперимент окажется неудачным. Благо что схема записи требуется только для счетчика данных - а это 3 декатрона из 255.&amp;#039;&amp;#039;&lt;br /&gt;
[[Файл:Decatron reverse control.png|центр|безрамки|650x650пкс]]&lt;br /&gt;
Пример схемы реверсивного управление декатроном по цепи подкатодов показан в книге Яблонского Декатроны &amp;lt;ref&amp;gt;Ф.М. Яблонский, Г.М. Янкин Декатроны. 1967г&amp;lt;/ref&amp;gt;. Имеется два входа - для инкремента и декремента, на которые подается импульс напряжения необходимой длительности. Так как конденсаторы C3 и C4 в обычном состоянии заряжены до 260В, при подаче сигнала на одну из ламп Л1 или Л2 левый вывод конденсатора притягивается к земле, тем самым на правом выводе формируется сигнал с уровнем порядка -200В, что является достаточным для переключения декатрона. Цепь задержки обеспечивает подачу второго импульса после первого. Схема нарисована с использованием германиевых диодов. В экспериментальной ячейке точно будут использоваться Д7Ж. В итоговом монтаже - использование допустимо, но пока под вопросом.&lt;br /&gt;
&lt;br /&gt;
==Декатронные счетчики ==&lt;br /&gt;
Декатронный счетчик представляет собой реверсивный многоразрядный счетчик на базе нескольких декатронных ячеек. &amp;lt;u&amp;gt;В декатронную ячейку входят - сам декатрон, усилители чтения, преобразователь позиционного кода в двоично-десятичный, училители записи, преобразователи двоично-десятичного кода в позиционный, а также усилители сигналов подкатодов и схема выдачи сигналов переноса на следующий разряд.&amp;lt;/u&amp;gt;[[Файл:DekatronCounter.png|центр|безрамки|900x900пкс]]&lt;br /&gt;
&lt;br /&gt;
На данной схеме показан наибольший функционал декатронного счетчика данных - с возможностью записи любого числа, чтения, органичения сверху (для реализации счета от 0 до 255). Схема переноса реализована таким образом, что количество декатронов в цепочке не влияет на время счета - все разряды переносятся одновременно если выполняется необходимое условие. В большинстве счетчиков не будет схемы записи - это самая дорогая часть по лампам. &lt;br /&gt;
&lt;br /&gt;
Схема декатронного счетчика содержит две большие группы элементов- обязательная для любого из декатронов и необходимая схемотехнически.&lt;br /&gt;
&lt;br /&gt;
Обязательной является: &lt;br /&gt;
&lt;br /&gt;
#обвязка самого декатрона,&lt;br /&gt;
#усилители-формирователи управляющих импульсов, 1 лампа(?)&lt;br /&gt;
#трех-позиционная защелка схемы переноса 8 ламп(?)&lt;br /&gt;
#усилители-формирователи линии сброса в 0 и в Х (например в 5 для счетчика до 255), 1 лампа(?)  - можно вынести на отдельную плату&lt;br /&gt;
&lt;br /&gt;
Желательно уместить всю эту обвязку на одной плате.&lt;br /&gt;
&lt;br /&gt;
Необходимая обвязка:&lt;br /&gt;
&lt;br /&gt;
# Схема преобразователя позиционного кода в двоично-десятичный - 11 ламп&lt;br /&gt;
#Схема усилителей-формирователей позиционных линий для любого из катодов. Два усилителя находятся в обязательной секции, поэтому остается оп 8 линий на декатрон.  Для счетчика данных требуется в общей сложности 17 линий. Можно округлить до 18 линий и разместить на 1-2 платах. Если в одну плату обязательная обвязка влезать не будет - то для счетчика данных требуется 23 линии, а для любого счетчика - от 6 до 10 линий. Исходя из этих данных нужно определиться с числом линий - однако нужно окончательно определиться со схемотехникой и определить требуемое количество ламп на одну линию.&lt;br /&gt;
#Схема декодера из двоично-десятичного в позиционный код. Требует по две лампы на линию. Вероятно собираться будет на базе элементов И.&lt;br /&gt;
&lt;br /&gt;
В ламповом компьютере требуется 4 реверсивных счетчика с общим количеством декатронов в 17 штук.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по счетчикам&lt;br /&gt;
!Счетчик&lt;br /&gt;
!Функционал&lt;br /&gt;
!Чтение&lt;br /&gt;
!Запись&lt;br /&gt;
!Управление&lt;br /&gt;
!Декатроны&lt;br /&gt;
!Диоды&lt;br /&gt;
!Триоды&lt;br /&gt;
|-&lt;br /&gt;
|IP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|6&lt;br /&gt;
|0&lt;br /&gt;
|6&lt;br /&gt;
|6&lt;br /&gt;
|84&lt;br /&gt;
|42&lt;br /&gt;
|-&lt;br /&gt;
|AP Counter&lt;br /&gt;
|Сброс в нуль, Чтение данных, Сигнал Zero&lt;br /&gt;
|5&lt;br /&gt;
|0&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|70&lt;br /&gt;
|35&lt;br /&gt;
|-&lt;br /&gt;
|Data Counter&lt;br /&gt;
|Сброс в нуль, Запись данных, чтение данных, Верхний лимит, Сигнал Zero&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
| 3&lt;br /&gt;
|3&lt;br /&gt;
|42&lt;br /&gt;
|108&lt;br /&gt;
|-&lt;br /&gt;
|Loop Counter &lt;br /&gt;
|Сброс в нуль, Сигнал Zero&lt;br /&gt;
|0&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|3&lt;br /&gt;
|18&lt;br /&gt;
|15&lt;br /&gt;
|-&lt;br /&gt;
|Всего&lt;br /&gt;
|&lt;br /&gt;
| 14&lt;br /&gt;
|3&lt;br /&gt;
|17&lt;br /&gt;
|17&lt;br /&gt;
|214&lt;br /&gt;
|200&lt;br /&gt;
|}&lt;br /&gt;
Функционал счетчика:&lt;br /&gt;
*Инкремент и декремент текущего числа счетчика &lt;br /&gt;
** Для работы в режиме счета от 0 до 255 необходимо выставить TOP_LIMIT_MODE=1. Тогда по достижении счетчиком числа TOP_VALUE  вместо инкремента будет происходить запись 0 в счетчик. По достижении 0 и при декременте - в счетчик будет записано TOP_VALUE.&lt;br /&gt;
*Запись числа в счетчик со входа In, заданного в формате 8-4-2-1&lt;br /&gt;
*Чтение числа из счетчика на выход Out, в формате 8-4-2-1&lt;br /&gt;
&lt;br /&gt;
Все счетчики работают синхронно от сигнала тактирования и имеют следующие входы управления&lt;br /&gt;
&lt;br /&gt;
*Request - наличие этого сигнала по нарастающему фронту запускает счетчик. При отсутствии сигналов Set или SetZero будет происходить счет&lt;br /&gt;
*Dec - выбор направления счета - в прямую сторону (лог.0) и обратную сторону (лог.1)&lt;br /&gt;
*SetZero - при наличии этого сигнала по нарастающему фронту Clk совершается запись нуля в счетчик&lt;br /&gt;
*Set - при наличии этого сигнала по нарастающему фронту Clk производится запись числа со входа In  в счетчика&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Лампы по платам работы с декатроном&lt;br /&gt;
!Платы&lt;br /&gt;
!Триоды&lt;br /&gt;
!Диоды&lt;br /&gt;
|-&lt;br /&gt;
|Схема чтения&lt;br /&gt;
|2&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Схема записи&lt;br /&gt;
|29&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Управление, перенос&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
===Экспериментальная декатронная ячейка===&lt;br /&gt;
[[Файл:ExperimentalDekatronModule.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Ячейка представляет собой блок 3U-блок на 4 платы, и реализует полную схемотехнику управления декатроном, включая чтение, запись и пересчет с переносом.&lt;br /&gt;
&lt;br /&gt;
Блок необходим для отладки схемотехники управления декатроном, особенно схемы записи числа в счетчик.&lt;br /&gt;
&lt;br /&gt;
Основная плата - плата декатрона. На ней располагаются непосредственно сам декатрон, схема чтения, включающая в себя преобразователь двоичного-кода в двоично десятичный на диодах и катодные повторители-усилители. Отдельно идет катодный повторитель для сигнала нуля.&lt;br /&gt;
&lt;br /&gt;
Также есть схема переноса. Технически это тройная защелка, имеющая два выхода, которые подсвечивают крайние положения - 0 и 9 до момента полного переключения лампы. т.е. этот блок помнит последнее состояние лампы пока идут процессы переключения.&lt;br /&gt;
&lt;br /&gt;
Выход - 30-контактный. На нем есть все линии декатрона на запись, напряжения питания. накал, а также - двоично-десятичный выход 8-4-2-1&lt;br /&gt;
[[Файл:Dekatron up down unit.png|центр|безрамки|952x952пкс]]&lt;br /&gt;
Еще две платы примерно одинаковые, их задача - преобразовать двоично-десятичный вход 8-4-2-1 в двоичный с сигналом записи - для этого требуется 4 инвертора, и 5-входовый И - на двух сдвоенных триодах, где анод-катод - это 4 линии и пятая линия - сетка. Схема, вероятно, будет изменяться - с переходом на импульсную логику.&lt;br /&gt;
[[Файл:Dekatron cell up down WSU.png|центр|безрамки|758x758пкс]]&lt;br /&gt;
К этим двум платам пока вопросы. На две платы следующие задачи:&lt;br /&gt;
&lt;br /&gt;
# Инверторы входных сигналов 8-4-2-1. Итого имеем 8 сигналов - прямые и инверсные, которыми можем набрать нужную комбинацию сигналов для следующего этапа:&lt;br /&gt;
#Пятивходовые И на двух сдвоенных триодах, где сетка - это пятый сигнал записи. Им на вход подаются сигналы набранные в нужной комбинации на первом этапе.&lt;br /&gt;
#Усилители записи - 10 штук. По одному на каждый катод. И тут вопрос - либо они будут работать в статическом режиме, либо в импульсном. Первый вариант требует переход в отрицательные уровни напряжения. Второй позволяет обойтись без них, с помощью развязывающих конденсаторов формировать импульсы нужной длительности и амплитуды.&lt;br /&gt;
#Усилители сигналов управления подкатодами. тут опять вопрос к режиму работы. Скорее всего я приду к импульсному варианту - он проще и по нему есть все необходимые схемы.&lt;br /&gt;
&lt;br /&gt;
====Источники питания ячейки:====&lt;br /&gt;
[[Файл:DekaronCellPSU.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
Используется четыре трансформатора - выбор из того что было в наличии. Все трансформаторы проверены на сопротивление изоляции мегаомметром на 1кВ.&lt;br /&gt;
*ТСШ-170 - 170Вт. предназначен для выработки основного питания +150В, а также пары накальных линий для 6С19П.&lt;br /&gt;
*ТН61 - общей мощностью 190Вт. Имеет 4 линии 6.3В  - 3 по 8А и 1 машина - 6.1А.  Будет обеспечивать основное питание накалов ламп, разбитых на группы по платам&lt;br /&gt;
*ТА48, мощностью 36Вт - питание декатрона +450В (технически сам источник будет на +350В), а также напряжение смещения -50В.&lt;br /&gt;
*ТА7, мощностью 15Вт - напряжение +20В.&lt;br /&gt;
Схемы питания берем из блоков питания осциллографов [[С1-54 (Осциллограф)|С1-54]] и [[EMG TR-4401|TR4401]]&lt;br /&gt;
&lt;br /&gt;
==Архитектура компьютера==&lt;br /&gt;
Машина проектируется на базе четырех реверсивных многоразрядных счетчиков. &lt;br /&gt;
&lt;br /&gt;
#IpCounter - (шесть декатронов) будет определять номер текущей исполняемой инструкции.&lt;br /&gt;
#LoopCounter - (три декатрона) для корректной перемотки циклов. сумматора в будущем компьютере нет, а значит, начало текущего цикла придется искать вручную, банально перематывая счетчик инструкции назад до тех пор, пока начало нашего цикла не будет найдено. Счетчик вложенных циклов поможет корректно искать нужное начало, даже если внутри нашего цикла множество вложенных. Счетчика от 0 до 999 будет более чем достаточно: в программах на Brainfuck, написанных людьми, даже больше 20–30 уровней вложенности циклов — редкость.&lt;br /&gt;
#ApCounter - (пять декатронов) Третий счетчик от 0 до 99 999 будет определять номер текущей ячейки данных. В исходном языке Brainfuck число ячеек 30000 - этот режим реализовать можно, но это будет ограничением функционала машины.&lt;br /&gt;
#DataCounter (три декатрона) По адресу счетчика ApCounter происходит выборка данных из ОЗУ. Данные помещаются в четвертый счетчик, который умеет считать от 0 до 255. То есть мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память.&lt;br /&gt;
&lt;br /&gt;
Структурно машину можно разбить на три больших блока:&lt;br /&gt;
&lt;br /&gt;
#IpLine Block — Отвечает за выборку очередной инструкции из памяти программ.&lt;br /&gt;
# ApLine Block — Отвечает за исполнение инструкций касаемо данных — прогулки по памяти, изменение значения в ячейке, работа с терминалом&lt;br /&gt;
#MachineCtrl — Блок логики, объединяющий блоки работы с программой и данными, контролирующий работу машины и обеспечивающий связь с внешним миром.&lt;br /&gt;
&lt;br /&gt;
Сами блоки состоят из модулей: многоразрядных реверсивных счётчиков, модулей памяти, буферов и т.п. Все эти базовые кирпичики имеют три линии управления: сигнал ЗАПРОС(Request) и флаг ГОТОВ(Ready). По сигналу ЗАПРОС, модуль счётчика, например, начнёт считать адрес новой инструкции. По сигналу ЗАПРОС, модуль памяти, например, начинает выгружать данные по новому адресу.[[Файл:DekatronPC.png|центр|безрамки|600x600пкс]]&lt;br /&gt;
&lt;br /&gt;
====IpLine====&lt;br /&gt;
Этот блок содержит два счётчика, модуль памяти программ и логику работы с циклами. Первый счётчик (IP Counter) на базе 6 декатронов определяет номер инструкции, которая считывается из памяти программ.&lt;br /&gt;
&lt;br /&gt;
В дополнение к нему идёт счётчик глубины вложенности циклов (Loop Counter) — сумматора в будущем компьютере нет, а значит, начало или конец тела текущего цикла придётся искать вручную, банально шагая счётчиком инструкций назад (или вперёд) до тех пор, пока не будет найдено начало именно нашего цикла. Трёхразрядного счётчика будет более чем достаточно — в brainfuck-программах, написанных людьми, даже больше 20-30 уровней вложенности циклов — редкость.&lt;br /&gt;
&lt;br /&gt;
Блок выборки инструкций, получив от блока логики сигнал ЗАПРОС, должен выдать следующую инструкцию на выходе. Дальнейшие действия блока зависят от текущей исполняемой инструкции. Если она не является условной — т.е. одна из +-&amp;lt;&amp;gt;., — то счётчику инструкций достаточно сделать +1, зачитать новую инструкцию из памяти программ и выдать её на выходной буфер. Делать это, кстати, можно одновременно с исполнением текущей инструкции в блоке данных. Да, тёплый ламповый конвейер — к моменту завершения текущей операции мы сможем сразу начать новую.&lt;br /&gt;
&lt;br /&gt;
Сложности начинаются с инструкциями границ цикла. Надо обработать условную операцию и либо выполнить инструкции в теле цикла, либо нет. Вариантов тут четыре. Допустим, есть следующий код цикла, реализующий операцию MOV — Мы будем делать +1 в ячейке n+1, и -1 в ячейке n до тех пор, пока ячейка n не равна нулю.&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;gt;+&amp;lt;-]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;При выполнении этого цикла может быть четыре варианта действий:&lt;br /&gt;
&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка не равна нулю — нужно выполнить тело цикла.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка не равна нулю — нужно вернуться в начало цикла, чтобы выполнить его ещё раз.&lt;br /&gt;
#Мы на инструкции [ и текущая ячейка равна нулю — нужно промотать тело цикла, не выполняя его.&lt;br /&gt;
#Мы на инструкции ] и текущая ячейка равна нулю — выполнение цикла завершено просто идём дальше&lt;br /&gt;
&lt;br /&gt;
Их можно обобщить в два варианта развития событий:&lt;br /&gt;
&lt;br /&gt;
*При вариантах 1 и 4 компьютер просто продолжает выполнять инструкции друг за другом.&lt;br /&gt;
*Варианты 2 и 3 требуют промотать тело цикла. Счётчик будет считать либо назад(для варианта 2) либо вперёд(3) в поисках ответной скобки цикла.&lt;br /&gt;
&lt;br /&gt;
Чтобы промотать тело цикла, нужно пошагово изменять значение счётчика инструкций, делать выборку инструкции по этому адресу и Не подавая её на выходной буфер, смотреть, что же за инструкция сидит по этому адресу. Например, если мы начали с открывающей скобки [, и идём вперёд — то при нахождении закрывающей скобки] промотку можно считать завершённой. Но вот в процессе промотки мы наткнулись на ещё одну открывающую скобку [ — от вложенного цикла. Тут-то и пригодится счётчик глубины вложенностей. В самом начале промотки на нашей оригинальной открывающей скобе [ делаем ему +1 и потом будем делать +1 всякий раз, встречая открывающую скобку [, и -1 встречая закрывающую скобку ]. Как только после очередной закрывающей скобки ] значение счётчика станет равным нулю — поиск можно останавливать — цикл мы промотали. Точно так же это работает и в обратную сторону, разве что скобки меняются местами.&lt;br /&gt;
[[Файл:LoopLookupLogic.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Технически этот подход реализуется довольно просто, поэтому отсутствие сумматора и возможности одним махом перепрыгивать тело цикла, как это было в релейном компьютере — совершенно не проблема. По крайней мере, эмуляция такой логики как на C++ так и на SystemVerilog работает прекрасно.[[Файл:IpLine FSM.png|центр|мини|IpLine FSM]]&lt;br /&gt;
Конечный автомат линии Ip Line объединяет в себе все основные стадии работы.&lt;br /&gt;
&lt;br /&gt;
Так как блок состоит из двух счетчиков - IP Counter и Loop Counter, основной алгоритм работы конечного автомата - работа по внешнему кольцу состояний - &lt;br /&gt;
&lt;br /&gt;
Готов -&amp;gt; Запрос нового адреса -&amp;gt; Запрос новой инструкции. &lt;br /&gt;
&lt;br /&gt;
Однако, есть особые случаи: &lt;br /&gt;
&lt;br /&gt;
#Сразу после сброса машины, на выходе счетчика уже находится адрес 0. Нужно сразу зачитывать инструкцию по этому адресу без инкремента счетчика.&lt;br /&gt;
#Если текущие инструкции - условные переходы [ ] и { } и условие перемотки инструкций выполняется - то одновременно поднимается CountRequest на оба счетчика.&lt;br /&gt;
#Если после выгрузки очередной инструкции оказывается: &lt;br /&gt;
##что значение LoopCounter == 0 - то перемотка завершена.&lt;br /&gt;
##что значение LoopCounter != 0 - то выдается новый IpCounterRequest сигнал&lt;br /&gt;
##что выставлен сигнал HaltRq - Система останавливается до снятия сигнала. в этом случае машина либо продолжит счет, либо перейдет в состояние IDLE&lt;br /&gt;
&lt;br /&gt;
====ApLine====&lt;br /&gt;
Блок работы с данными также содержит два счётчика и память данных. Кроме того, тут присутствуют модули ввода и вывода данных.&lt;br /&gt;
&lt;br /&gt;
Один счётчик(AP Counter) считающий от 0 до 29999, будет определять номер текущей ячейки данных. Для чистого brainfuck необходимо будет сделать сброс старшего счётчика в нуль после 2 и наоборот. Один декатрон легко установить в нужное значение. Сложно прогнать сигналы переноса через все разряды.&lt;br /&gt;
&lt;br /&gt;
По адресу этого счётчика происходит выборка данных из ОЗУ в четвёртый счётчик — Data Counter. Он умеет считать от 0 до 255. т.е. мы загружаем в декатрон наше старое значение, делаем инкремент или декремент и выгружаем данные обратно в память. Или же — мы можем напечатать текущее значение в терминале, или, минуя декатронный счётчик — занести число из терминала сразу в ОЗУ. Так как в программах на brainfuck инструкции инкремента/декремента ячейки ОЗУ и значения, как правило, идут группами, то это не значит, что потребуется постоянно загружать/выгружать данные в счётчик и обратно. Этого можно избежать, добавив флаг занятости ОЗУ&lt;br /&gt;
&lt;br /&gt;
====MachineCtrl====&lt;br /&gt;
Блок соединяет вместе блоки ApLine и IpLine, содержит в себе основную машину состояний, а также декодер инструкций. Предоставляет пользовательский интерфейс с оператором и внешними устройствами.&lt;br /&gt;
&lt;br /&gt;
==Набор инструкций (UPD: 13.06.2023г.)==&lt;br /&gt;
Основной набор инструкций - 8 инструкций языка brainfuck. Остальные инструкции служебные, используются для управления состоянием машины. &lt;br /&gt;
&lt;br /&gt;
Каждая инструкция представлена в памяти 4-х разрядным значением, соответствующим тому или иному опкоду. Чтобы увеличить количество инструкций используется специальный регистр ISAREG, определяющий текущий набор команд - Debug ISA и Brainfuck ISA.  &lt;br /&gt;
&lt;br /&gt;
#ISAREG=0 - Debug ISA - режим, в котором машина находится после включения. в нем доступны инструкции очистки ОЗУ, сброса состояния машины, команды загрузки данных с перфоленты. Предполагается, что первоначальный загрузчик, после чтения программы с перфоленты переключит набор команд в Brainfuck ISA и машина начнет исполнять инструкции загруженной программы&lt;br /&gt;
#ISAREG=1 - Brainfuck ISA - основной режим, в котором доступны 8 инструкций языка brainfuck плюс несколько дополнительных.&lt;br /&gt;
&lt;br /&gt;
Часть инструкций присутствует в обоих наборах - NOP, HALT, ISA0, ISA1&lt;br /&gt;
&lt;br /&gt;
===Debug ISA (ISAREG=0)===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ !!Опкод!!Brainfuck!! название!!описание&lt;br /&gt;
|-&lt;br /&gt;
| N||0x0|| || NOP||No operation - Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1|| ||HALT||Must be in both ISA set&lt;br /&gt;
|-&lt;br /&gt;
|\a ||0x2|| ||BELL||Ring the bell &lt;br /&gt;
|-&lt;br /&gt;
| || 0x3|| || ||UNDEFINED&lt;br /&gt;
|-&lt;br /&gt;
| E||0x4 || || EOT|| End Of Transmission&lt;br /&gt;
|-&lt;br /&gt;
| S||0x5 || ||SOT||Start Of Transmission - To load Data from Punch/Mangetic Tape&lt;br /&gt;
|-&lt;br /&gt;
|{||0x6|| || LABEG ||Если текущий адрес равен нулю - пропустить тело цикла &lt;br /&gt;
|-&lt;br /&gt;
| }||0x7|| || LAEND||Если текущий адрес не равен нулю - выполнить итерацию цикла&lt;br /&gt;
|-&lt;br /&gt;
|L||0x8|| ||CLRL||Сбросить счетчик глубины вложенностей циклов &lt;br /&gt;
|-&lt;br /&gt;
|I||0x9 || ||CLRI||Сбросить счетчик инструкций &lt;br /&gt;
|-&lt;br /&gt;
|0||0xA || || CLRD || Сбросить счетчик данных&lt;br /&gt;
|-&lt;br /&gt;
|A|| 0xB|| ||CLRA||Сбросить счетчик адреса (Что делать с флагом захвата?)&lt;br /&gt;
|-&lt;br /&gt;
|R||0xC|| ||HRST||Hard Reset &lt;br /&gt;
|-&lt;br /&gt;
| r||0xD || ||SRST||Soft reset&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA0||Set ISAREG=0 - Debug ISA &lt;br /&gt;
|-&lt;br /&gt;
|B|| 0xF|| ||ISA3|| Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Brainfuck ISA (ISAREG=1)===&lt;br /&gt;
&lt;br /&gt;
Помимо восьми основных brainfuck-инструкций имеет еще 6 дополнительных. Особое внимание стоит уделить инструкциям CLRML, LOAD, STORE&lt;br /&gt;
&lt;br /&gt;
Они могут быть использованы для копирования данных в памяти. Счетчик данных может быть использован как временный регистр.&lt;br /&gt;
&lt;br /&gt;
Допустим, нужно скопировать данные из ячейки А в ячейку Б.&lt;br /&gt;
&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку А&lt;br /&gt;
#Дается команда LOAD - данные загружаются из памяти в счетчик данных. MemLock не изменяется. &lt;br /&gt;
##Если далее идут команды +-  - произойдет повторная загрузка данных с учтановкой MemLock плюс выполнится инструкция +-&lt;br /&gt;
##Если далее идут команды .,  -обмен данными будет осуществляться непосредственно с ОЗУ&lt;br /&gt;
#Счетчик адреса устанавливается на ячейку Б&lt;br /&gt;
#Дается команда STORE. Значение из счетчика данных выгружается в ячейку памяти Б&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Символ!!Опкод!!Brainfuck!!название!!описание&lt;br /&gt;
|-&lt;br /&gt;
|N||0x0|| ||NOP ||Пустая инструкция&lt;br /&gt;
|-&lt;br /&gt;
|H||0x1 || ||HALT||Останов машины&lt;br /&gt;
|-&lt;br /&gt;
| +||&amp;#039;&amp;#039;&amp;#039;0x2&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039;||INC||Increment of Current data cell&lt;br /&gt;
|-&lt;br /&gt;
| -||&amp;#039;&amp;#039;&amp;#039;0x3&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;-&amp;#039;&amp;#039;&amp;#039;||DEC||Decrement of current data cell&lt;br /&gt;
|-&lt;br /&gt;
|&amp;gt;||&amp;#039;&amp;#039;&amp;#039;0x4&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;&amp;#039;||AINC|| Increment of address pointer&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;||&amp;#039;&amp;#039;&amp;#039;0x5&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;&amp;#039;||ADEC||Decrement of address pointer &lt;br /&gt;
|-&lt;br /&gt;
| [||&amp;#039;&amp;#039;&amp;#039;0x6&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;[&amp;#039;&amp;#039;&amp;#039;||LBEG||If current data cell equal zero, skip the loop &lt;br /&gt;
|-&lt;br /&gt;
|]||&amp;#039;&amp;#039;&amp;#039;0x7&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;]&amp;#039;&amp;#039;&amp;#039;||LEND||If current data cell not equal zero, repeat loop iteration&lt;br /&gt;
|-&lt;br /&gt;
| .||&amp;#039;&amp;#039;&amp;#039;0x8&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039;&amp;#039;||COUT||Print current symbol to the terminal &lt;br /&gt;
|-&lt;br /&gt;
| ,||&amp;#039;&amp;#039;&amp;#039;0x9&amp;#039;&amp;#039;&amp;#039;|| &amp;#039;&amp;#039;&amp;#039;,&amp;#039;&amp;#039;&amp;#039;||CIN ||Read symbol from the terminal (Blocked acces - Program halted while no symbol)&lt;br /&gt;
|-&lt;br /&gt;
|0||0xA||&amp;#039;&amp;#039;&amp;#039;[-]&amp;#039;&amp;#039;&amp;#039;||CLRD||Basic brainfuck optimization: Write zero to current Data Cell&lt;br /&gt;
|-&lt;br /&gt;
|M|| 0xB|| ||CLRML||Clear memory lock&lt;br /&gt;
|-&lt;br /&gt;
| G||0xC || ||LOAD|| Explicit Load from current memory cell to Data Counter, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|P||0xD|| ||STORE || Explicit Store from Data Counter to current memory cell, MemLock not affected&lt;br /&gt;
|-&lt;br /&gt;
|D||0xE|| ||ISA2||Set ISAREG=0 - Debug ISA&lt;br /&gt;
|-&lt;br /&gt;
|B||0xF|| ||ISA3 ||Set ISAREG=1 - Brainfuck ISA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Начальный загрузчик (bootloader) ===&lt;br /&gt;
&lt;br /&gt;
Загрузчик - код, который будет выполняться сразу после включения машины и подачи тактирования.&lt;br /&gt;
&lt;br /&gt;
Одной из идей является установка IpCounter в 999900 - и последние 100 инструкций занять начальным загрузчиком.&lt;br /&gt;
&lt;br /&gt;
Для этого блок MachineCtrl предоставляет два вида сброса машины. &lt;br /&gt;
&lt;br /&gt;
====Hard Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает адрес IpCounter на начало загрузчика. Если тумблер на панели разрешает работу загрузчика автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 20&amp;#039;h999900;&lt;br /&gt;
//User switch to run bootloader after Hard Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= RUN;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Soft Reset====&lt;br /&gt;
Этот тип сброса очищает все возможные флаги и устанавливает все счетчики в нуль. Отличие в том, что после Hard Reset стартует загрузчик, после Soft Reset - загруженная программа. Если тумблер на панели разрешает работу компьютера автоматически - пускает его. В противном случае будет ждать кнопки Run.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
ApCounter &amp;lt;= 0;&lt;br /&gt;
DataCounter &amp;lt;= 0;&lt;br /&gt;
LoopCounter &amp;lt;= 0;&lt;br /&gt;
MemLock &amp;lt;= 0;&lt;br /&gt;
RamDataReady &amp;lt;= 0;&lt;br /&gt;
IpCounter &amp;lt;= 0;&lt;br /&gt;
//User switch to run program after Soft Reset&lt;br /&gt;
if (RunBootloader)&lt;br /&gt;
    MachineState &amp;lt;= FETCH;&lt;br /&gt;
else&lt;br /&gt;
    MachineState &amp;lt;= HALT;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Очистка памяти====&lt;br /&gt;
&lt;br /&gt;
После включения или перезагрузки, в ОЗУ данных может быть мусор. По правилам brainfuck - все ячейки должны изначально иметь нулевое состояние, в С такой код выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  for (i = 0; i &amp;lt; 30000; ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Memory[i] = 0;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
В формате инструкций компьютера DekatronPC, начальный код загрузчика выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  A0&amp;gt; //Установка счетчика адреса в нуль, Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  {   // Пока текущее значение счетчика адреса не равно нулю:&lt;br /&gt;
    0 &amp;gt;//Обнуление текущей ячейки данных и выбор следующей&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Программирование машины===&lt;br /&gt;
[[Файл:DekatronPC program load.png|центр|безрамки|450x450пкс]]В наборе инструкций есть две специальные - SOT(StartOfTransmission) и EOT(EndOfTransmission). Первая должна располагаться по адресу 999999h, ее выполнение осуществляет инкремент счетчика программ и переключает FSM машины в режим разгрузки программы. Имеется два интерфейса для входных данных:&lt;br /&gt;
&lt;br /&gt;
#Один принимает ASCII символы, например со считывателя перфолент, накопителя на магнитной ленте, печатной машинки Consul 260.&lt;br /&gt;
#Второй принимает непосредственно 4-х битовые опкоды инструкций. Либо с первого интерфейса через конвертер, либо с других устройств, например со считывателя с магитной кассеты, или считывателя перфолент в опкодах.&lt;br /&gt;
&lt;br /&gt;
На уровне OpCode производится самостоятельное переключение между наборами Debug/Brainfuck&lt;br /&gt;
&lt;br /&gt;
По синхроимпульсу проверяется условие (CurrentInsn != EOT)  и производится запись опкода в текущую ячейку памяти программ и последующий инкремент счетчика программ. Если условие не выполняется - т.е. текущая инструкция EOT - то автоматически вызывается Soft Reset машины. ЭВМ готова для выполнения загруженной программы.&lt;br /&gt;
&lt;br /&gt;
====Инструкции для работы со считывателем перфолент (в составе Debug ISA)====&lt;br /&gt;
Предназначен для загрузки данных с перфоленты в память программ. &lt;br /&gt;
&lt;br /&gt;
Текущая идея следующая: использовать аппаратный способ загрузки - когда синхросигнал с перфоленты будет инкрементировать значение счетчика инструкций, а другой сигнал - подавать сигнал записи в память. Таким образом можно инструкцией запустить этот процесс и дальше аппаратные средства сделают все самостоятельно. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Специальная инструкция StartOf Transmission сбрасывает счетчик IpCounter в нуль и переключает машину в режим счета-записи по внешнему синхроимпульсу. т.е.&amp;lt;syntaxhighlight lang=&amp;quot;verilog&amp;quot;&amp;gt;&lt;br /&gt;
initial begin&lt;br /&gt;
    IpCounter &amp;lt;= 0;&lt;br /&gt;
	MachineState &amp;lt;= COUNTER;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always @(posedge WriteSync) begin&lt;br /&gt;
	IRAM.Write(IpCounter.value, Insn);&lt;br /&gt;
	IpCounter &amp;lt;= Ipcounter + 1;&lt;br /&gt;
	if (Insn == EOT)//Tape is loaded&lt;br /&gt;
	    MachineState &amp;lt;= SOFT_RESET;	&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Формат записи на магнитную ленту ====&lt;br /&gt;
Если использовать кассетный или бобинный магнитофон (типа ламповой коменты или яузы) для хранения программ и их последующего ввода в память машины, можно использовать [https://ru.wikipedia.org/wiki/DTMF DTMF]-сигналы, когда двумя синусоидами кодируется до 16 символов. Так как программа пишется 4-х битовыми пачками, так что в одном сигнале сразу будет готовая инструкция.  По завершении записи на ленте формируется прерывистый сигнал 0x01(HALT)&lt;br /&gt;
&lt;br /&gt;
===Оптимизация доступа к памяти===&lt;br /&gt;
Допустим, код на bf выгладит следующим образом:&amp;lt;syntaxhighlight lang=&amp;quot;brainfuck&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;+++++&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В наивном режиме выполнения произведется следующий алгоритм:&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
}&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Таким образом помимо 15 операций со счетчиками будет 15 операций работы с памятью, совершенно бесполезных. По факту мы девять раз просто так будем делать загрузку-выгрузку. Проще перед первым инкрементом данных один раз сделать  сделать &amp;#039;&amp;#039;&amp;#039;LOAD&amp;#039;&amp;#039;&amp;#039; из памяти в счетчик, а после последнего вызвать &amp;#039;&amp;#039;&amp;#039;STORE&amp;#039;&amp;#039;&amp;#039; обратно из счетчика в ОЗУ.  За основу взят принцип Memlock.&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
insn = DPC.fetch(IpCounter);&lt;br /&gt;
if (((insn == &amp;quot;+&amp;quot;)|(insn==&amp;quot;-&amp;quot;))&amp;amp; !MemLock){&lt;br /&gt;
    DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
    MemLock = true;&lt;br /&gt;
}&lt;br /&gt;
if (((insn == &amp;quot;&amp;lt;&amp;quot;)|(insn==&amp;quot;&amp;gt;&amp;quot;))&amp;amp; MemLock){&lt;br /&gt;
    Ram.Store(ApCounter, DataCounter.Load());&lt;br /&gt;
    MemLock = false;&lt;br /&gt;
}&lt;br /&gt;
DPC.exec(insn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Тогда код на bf будет выполняться следующим образом: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
DataCounter.Store(Ram.Load(ApCounter));&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    DataCounter.Inc();&lt;br /&gt;
}&lt;br /&gt;
Ram.Store(ApCounter, DataCounter.Load);&lt;br /&gt;
for (i = 0; i &amp;lt; 5; i++){&lt;br /&gt;
    ApCounter.Dec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Итого осталось 15 операций со счетчиками и только две операции работы с ОЗУ. &lt;br /&gt;
&lt;br /&gt;
==Конструктив машины==&lt;br /&gt;
&lt;br /&gt;
===Модуль===&lt;br /&gt;
Модуль представляет собой печатную плату размером 140х100мм с краевым разъемом 3х36 пин либо разъемом ГРПМШ-31. На плате располагаются непосредственно лампы, и схемы обвязки. Несколько видов базовых плат, реализует всю возможную схемотехнику. Платы на базе краевого разъема в приоритете. Предлагается заблокировать один ряд пинов для создания ключа - так не получится платы одного типа воткнуть в разъем для другого типа плат&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[DekatronPC module.png]]||[[Dekatronpc module 140x200.png]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Блок===&lt;br /&gt;
Каждый их трех блоков должен уместиться в 4U стоечном корпусе:&lt;br /&gt;
[[Файл:DekatronPC block.png|центр|безрамки|450x450пкс]]&lt;br /&gt;
Логические элементы располагаются на модулях, до 16 ламп на каждом модуле, с краевым разъемом 31 или 72пин. Три ряда плат, с шагом 24мм для логики и 36мм для плат с декатронами. Теоретическая вместимость каждого блока 768 ламп.&lt;br /&gt;
[[Файл:DekatronPCblock1.png|центр|безрамки|780x780пкс]]&lt;br /&gt;
Каждый блок содержит собственный трансформатор питания мощностью 1.7-2.5 кВт. При этом трансформатор находится ближе к лицевой стороне. Платы располагаются ближе к задней стороне чтобы все провода были минимальной длины.&lt;br /&gt;
&lt;br /&gt;
====Охлаждение====&lt;br /&gt;
В блоке установлены мощные 120мм вентиляторы NMB 4710PS-23T-B20 с питанием от 220В для отведения тепла. Мощность 9Вт, 1900об/мин, производительность 1.4м^3/мин при создаваемом давлении 23.5Па.  &lt;br /&gt;
&lt;br /&gt;
Измерение декатронной ячейки анемометром показывает скорость воздуха 2.4м/с, что при трех вентиляторах дает производительность 5.8м^3/мин, а на один - 1.9м^3/мин - что плюс-минус корректно. В час 350м^3. Для охлаждения лампы ГУ-5 с рассеиваемой мощностью 3.5кВт достаточным является охлаждение в 400м^3/час. Так что должно хватить.&lt;br /&gt;
&lt;br /&gt;
В принципе, 4U серверные корпуса способны выделять 2-3кВт тепла и при наличии активного охлаждения они не перегреваются. Требуется модель openFoam и натурные эксперименты для измерения характеристик нагрева:&lt;br /&gt;
&lt;br /&gt;
#Измерить поток воздуха и создаваемое давление от используемых вентиляторов&lt;br /&gt;
#Загрузить 3D модель блока с платами с лампами в openFoam и просчитать потоки воздуха&lt;br /&gt;
#Подать питание на сверхминиатюрку и обеспечить на ней необходимое тепловыделение, нарисовать график нагрева в закрытом пространстве&lt;br /&gt;
##То же, но при наличии активного обдува.&lt;br /&gt;
&lt;br /&gt;
===Стойка===&lt;br /&gt;
[[Файл:DekatronPCrack.png|центр|безрамки|462x462пкс]]&lt;br /&gt;
&lt;br /&gt;
==DekatronPC Challenge==&lt;br /&gt;
&lt;br /&gt;
Сейчас у меня собрано все железо, нужное для начала экспериментов, в том числе полторы тысячи сверхминиатюрных ламп - 6Н16Б, 6Х7Б и 6Ж2Б.  Продолжается долгий и интересный процесс проектирования и сборки будущей машины. В отличие от релейного компьютера с его монолитной конструкцией, здесь конструкция блочная.&lt;br /&gt;
&lt;br /&gt;
====Этап 1: Верификационная программная модель C++ (UPD: 19.05.2023)====&lt;br /&gt;
Создан [https://github.com/radiolok/bfutils/tree/master/dpcrun программный эмулятор на языке C++]. При этом поведение модели такое же как будет в железе - 4 счетчика - для верификации алгоритма исполнения программ на brainfuck только на счетчиках. Модель поддерживает только 8 базовых инструкций языка Brainfuck и требует доработки для дополнения остальными инструкциями.На данный момент модель подключена  к Verilator и обеспечивает пошаговое сравнение Verilog-модели с C++ моделью.&lt;br /&gt;
&lt;br /&gt;
Завершением этапа будет программный код, поддерживающий расширенный набор инструкций описанный выше.&lt;br /&gt;
&lt;br /&gt;
====Этап 2: FPGA-Эмулятор лампового компьютера (UPD: 07.06.2023)====&lt;br /&gt;
Архитектура машины [https://github.com/radiolok/dekatronpc/tree/master/vhdl/DekatronPC реализуется]на языке Verilog. А также изготавливается [[DekatronPC эмулятор|эмулятор лампового компьютера на базе ПЛИС]]. На данный момент модель уже умеет исполнять программу Hello World! Идет активная переработка исходного кода. Также, на базе Verilator создано окружение виртуального эмулятора - он позволяет отлаживать прошивку Эмулятора без физического доступа к железу, в виде C++ приложения, в котором код Эмулятора пишется на языке Verilog. &lt;br /&gt;
&lt;br /&gt;
Прогресс: [https://github.com/radiolok/dekatronpc/tree/master/vhdl Verilog-модель] поддерживает 7 инструкций brainfuck - кроме CIN.  &lt;br /&gt;
&lt;br /&gt;
Тестирование: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Тест&lt;br /&gt;
!Состояние&lt;br /&gt;
|-&lt;br /&gt;
|Dekatron&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Counter &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|IpLine - LoopTest &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|ApLine&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Hello World &lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
|Pi&lt;br /&gt;
|PASSED&lt;br /&gt;
|-&lt;br /&gt;
| ROT13&lt;br /&gt;
|PASSED&lt;br /&gt;
|}&lt;br /&gt;
В завершении этапа будет синтезируемый код на языке Verilog, работающий на FPGA-эмуляторе и позволяюющий запускать любые программы языка brainfuck&lt;br /&gt;
&lt;br /&gt;
====Этап 3: Экспериментальная декатронная ячейка (UPD: 19.05.2023)====&lt;br /&gt;
Параллельно, ведется третий этап - изготовление экспериментальной декатронной ячейки, задача которой - отладка схемотехники управления декатроном - чтение, запись, счет. &lt;br /&gt;
&lt;br /&gt;
====Этап 4: Сборка в железе====&lt;br /&gt;
На этом этапом будет последовательное создание блоков машины в железе и их подключение к Эмулятору. Получается, что блоки можно будет использовать для реальных вычислений по ходу строительства компьютера. Потом, замещая один за другим эмулируемые блоки реальным железом, мы полностью избавимся от ПЛИС, и ламповый компьютер станет полностью самостоятельным. Проект будет считаться завершенным, когда от ПЛИС в системе не останется и следа.&lt;br /&gt;
&lt;br /&gt;
==Бюджет проекта (UPD: 08.06.2023)==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+План/Факт расходов на проект.&lt;br /&gt;
!Наименование&lt;br /&gt;
!Стоимость, тыс. руб&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
|Лампы, декатроны, панельки&lt;br /&gt;
|90&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Прочее&lt;br /&gt;
|87&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Всего израсходовано&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;177&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Учтенных расходов&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|Трансформатор питания, 3шт&lt;br /&gt;
|100&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Корпус&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Электронные компоненты&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|План&lt;br /&gt;
|377&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Часто-задаваемые вопросы и ответы== &lt;br /&gt;
*&amp;#039;&amp;#039;Зачем?&amp;#039;&amp;#039;  &lt;br /&gt;
**Затем.&lt;br /&gt;
*&amp;#039;&amp;#039;Почему brainfuck? Может быть лучше взять более практичный урезанный ассемблер?&amp;#039;&amp;#039; &lt;br /&gt;
**brainfuck - и есть урезанный ассемблер. Ламповая машина в любом случае будет в миллион раз медленнее современных компьютеров и проект является видом инженерного искусства. А раз так - то реализовывать надо наиболее безумный вариант. Тем более что декатрон - основа машины - позволяет реализовать&lt;br /&gt;
*Книги&lt;br /&gt;
*Схемотехника&lt;br /&gt;
*Температурная стабильность, охлаждение&lt;br /&gt;
*Укладка кабелей&lt;br /&gt;
*Интерфейс ввода-вывода&lt;br /&gt;
*Надежность машины&lt;br /&gt;
&lt;br /&gt;
==Видеоматериалы==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;J-ivv6Dm51o&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;fQ3Wv26qflg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;w-rYR2FQ1q8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;tRTph_La6ac&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;W5iO1OCNY3I&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;6pCbUBWeJFY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
&lt;br /&gt;
*Статья на [https://xakep.ru/2019/09/19/brainfuckpc/ Xakep.ru]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dekatronpc_module_140x200.png&amp;diff=1641</id>
		<title>Файл:Dekatronpc module 140x200.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dekatronpc_module_140x200.png&amp;diff=1641"/>
		<updated>2023-06-25T08:24:09Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dekatronpc_module_140x200&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DekatronPC_module.png&amp;diff=1640</id>
		<title>Файл:DekatronPC module.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DekatronPC_module.png&amp;diff=1640"/>
		<updated>2023-06-25T08:23:07Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Модуль 140х140мм&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9B%D0%B0%D0%BC%D0%BF%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0&amp;diff=1639</id>
		<title>Ламповая логика</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9B%D0%B0%D0%BC%D0%BF%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0&amp;diff=1639"/>
		<updated>2023-06-23T08:06:22Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[категория:Проекты]]&lt;br /&gt;
&lt;br /&gt;
Вариации схем для лампового компьютера&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Схема&lt;br /&gt;
!6Ж2Б&lt;br /&gt;
!6Н16Б&lt;br /&gt;
!6Х7Б&lt;br /&gt;
!Накал на элемент&amp;lt;ref&amp;gt;Расчет мощности накала на логическую ячейку. Если число ламп нецелое число - то мощность накала на лампу также берется только частично&amp;lt;/ref&amp;gt;, Вт&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |BUF&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1.25 &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Катодный повторитель Позволяет согласовать цепь с высоким сопротивлением с цепью с низким. Увеличивает нагрузочную способность линии.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |NOT&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1,25 &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Вероятно что для утилизации имеющегося количества 6Ж2Б часть плат инверторов будет собрана именно на этих лампах.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2NOR &lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2,5&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Предположительно, на разъеме платы можно будет осуществить внешнюю коммутацию и превратить два инвертора в один элемент 2ИЛИ-НЕ.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2OR&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2,5 &lt;br /&gt;
|Два буфера катодных повторителя.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|1,9&lt;br /&gt;
|Пассивный элемент,, Но не во всех цепочках его можно реализовать.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |2AND&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Элемент реализуется на сдвоенном диоде 6Х7Б работающий в комбинации с катодным повторителем. Может быть реализован как в паре 6Х7Б+6Ж2Б, так и 6Х7Б+6Н16Б.  На два элемента потребуется в первом случае 4 лампы, во втором - три. По накалу - одинаково.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| 1,9&lt;br /&gt;
|Пассивная реализация. Будет работать только в составе прочих схем, например RS-защелок&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2NAND&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| 3,15&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Элемент реализуется на сдвоенном диоде 6Х7Б работающий в комбинации с инвертором. Может быть реализован как в паре 6Х7Б+6Ж2Б, так и 6Х7Б+6Н16Б.  На два элемента потребуется в первом случае 4 лампы, во втором - три. По накалу - одинаково.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
|-&lt;br /&gt;
|RSLATCH&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2,5&lt;br /&gt;
|реализуется на одной лампе 6Н16Б. Возможно реализация на двух 6Ж2Б даст какие-то дополнительные возможности по сеткам.  Но это требует исследования&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |DLATCH&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|6,9&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Технически это RS-защелка, два элемента И, скорее всего пассивных, плюс инвертор. Последний может быть как на 6Ж2Б, так и на половине 6Н16Б. По накалу опять же разницы нет.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|1,5&lt;br /&gt;
|2&lt;br /&gt;
|6,9&lt;br /&gt;
|-&lt;br /&gt;
|DFF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Предполагается, что D-триггер будет иметь аналогичную DLATCH схемотехнику, с конденсатором на линии C. Но это не точно. Также нужен сигнал для асинхронного сброса - потребуется доп. схема.&lt;br /&gt;
|-&lt;br /&gt;
|DFFSR&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Триггер с синхронным сбросом&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BUF===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:BUF 2J2P.png|мини|центр]]||[[Файл:BUF_x2_6N16B.png|мини|центр]]&lt;br /&gt;
|-&lt;br /&gt;
|Буфер на пентоде. Схема упрощенная||два буфера на сдвоенном триоде. Схема упрощенная&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===INV===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:INV_6J2B.png|мини|центр]]||[[Файл:INV_x2_6N16B.png|мини|центр]]&lt;br /&gt;
|-&lt;br /&gt;
|инвертор на пентоде. Схема упрощенная||два инвертора на сдвоенном триоде. Схема упрощенная&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%9B%D0%B0%D0%BC%D0%BF%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0&amp;diff=1638</id>
		<title>Ламповая логика</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%9B%D0%B0%D0%BC%D0%BF%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0&amp;diff=1638"/>
		<updated>2023-06-23T07:06:45Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[категория:Проекты]]&lt;br /&gt;
&lt;br /&gt;
Выриации схем для лампового компьютера&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Схема&lt;br /&gt;
!6Ж2Б&lt;br /&gt;
!6Н16Б&lt;br /&gt;
!6Х7Б&lt;br /&gt;
!Накал на элемент&amp;lt;ref&amp;gt;Расчет мощности накала на логическую ячейку. Если число ламп нецелое число - то мощность накала на лампу также берется только частично&amp;lt;/ref&amp;gt;, Вт&lt;br /&gt;
!Примечание&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |BUF&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1.25 &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Катодный повторитель Позволяет согласовать цепь с высоким сопротивлением с цепью с низким. Увеличивает нагрузочную способность линии.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |NOT&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1,25 &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Вероятно что для утилизации имеющегося количества 6Ж2Б часть плат инверторов будет собрана именно на этих лампах.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2NOR &lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2,5&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Предположительно, на разъеме платы можно будет осуществить внешнюю коммутацию и превратить два инвертора в один элемент 2ИЛИ-НЕ.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2OR&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2,5 &lt;br /&gt;
|Два буфера катодных повторителя.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|1,9&lt;br /&gt;
|Пассивный элемент,, Но не во всех цепочках его можно реализовать.&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |2AND&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Элемент реализуется на сдвоенном диоде 6Х7Б работающий в комбинации с катодным повторителем. Может быть реализован как в паре 6Х7Б+6Ж2Б, так и 6Х7Б+6Н16Б.  На два элемента потребуется в первом случае 4 лампы, во втором - три. По накалу - одинаково.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| 1,9&lt;br /&gt;
|Пассивная реализация. Будет работать только в составе прочих схем, например RS-защелок&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |2NAND&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| 3,15&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Элемент реализуется на сдвоенном диоде 6Х7Б работающий в комбинации с инвертором. Может быть реализован как в паре 6Х7Б+6Ж2Б, так и 6Х7Б+6Н16Б.  На два элемента потребуется в первом случае 4 лампы, во втором - три. По накалу - одинаково.&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|0,5&lt;br /&gt;
|1&lt;br /&gt;
|3,15&lt;br /&gt;
|-&lt;br /&gt;
|RSLATCH&lt;br /&gt;
| -&lt;br /&gt;
|1&lt;br /&gt;
| -&lt;br /&gt;
|2,5&lt;br /&gt;
|реализуется на одной лампе 6Н16Б. Возможно реализация на двух 6Ж2Б даст какие-то дополнительные возможности по сеткам.  Но это требует исследования&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |DLATCH&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|6,9&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Технически это RS-защелка, два элемента И, скорее всего пассивных, плюс инвертор. Последний может быть как на 6Ж2Б, так и на половине 6Н16Б. По накалу опять же разницы нет.&lt;br /&gt;
Предполагается, что D-триггер будет иметь аналогичную схемотехнику, с конденсатором на линии C. Но это не точно&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
|1,5&lt;br /&gt;
|2&lt;br /&gt;
|6,9&lt;br /&gt;
|-&lt;br /&gt;
|DFF&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|DFFSR&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===BUF===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:BUF 2J2P.png|мини|центр]]||[[Файл:BUF_x2_6N16B.png|мини|центр]]&lt;br /&gt;
|-&lt;br /&gt;
|Буфер на пентоде. Схема упрощенная||два буфера на сдвоенном триоде. Схема упрощенная&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===INV===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Файл:INV_6J2B.png|мини|центр]]||[[Файл:INV_x2_6N16B.png|мини|центр]]&lt;br /&gt;
|-&lt;br /&gt;
|инвертор на пентоде. Схема упрощенная||два инвертора на сдвоенном триоде. Схема упрощенная&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
	<entry>
		<id>https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:INV_x2_6N16B.png&amp;diff=1637</id>
		<title>Файл:INV x2 6N16B.png</title>
		<link rel="alternate" type="text/html" href="https://dekatronpc.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:INV_x2_6N16B.png&amp;diff=1637"/>
		<updated>2023-06-23T07:05:32Z</updated>

		<summary type="html">&lt;p&gt;Radiolok: INV_x2_6N16B.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Краткое описание ==&lt;br /&gt;
INV_x2_6N16B.png&lt;/div&gt;</summary>
		<author><name>Radiolok</name></author>
	</entry>
</feed>