Проектируемый компьютер на сверхминиатюрных электронных лампах хоть и является радиационно-стойким, однако работает на электричестве. Кроме того, восстановить в сжатые сроки производство электронных ламп в условиях постапокалипсиса будет довольно сложной задачей. На руинах цивилизации гораздо проще организовать массовое производство логических элементов, работающих на эффекте прилипания струи воздуха к стенке — при этом сам элемент можно лепить хоть из глины! И мало того, что для создания потока воздуха не обязательно использовать электричество — теоретически такой процессор сможет работать на энергии ударной волны ядерного взрыва! Но обо всём по порядку. Для тех, кто следит за проектом DekatronPC — не пугайтесь, ему ничего не угрожает.

В прошлый раз в статье «Пневмоника и влажные мечты стимпанка» я уже рассказывал о струйных логических элементах и поделился мыслями о том, что в принципе на этой технологии можно собрать полноценное вычислительное устройство.

Принцип работы элемента на эффекте прилипания струи воздуха к стенке

Известный из прошлой статьи базисный элемент работает на эффекте прилипания ламинарной струи воздуха к стенке. Вырываясь из сопла, струя воздуха натурально присасывается к одной из двух стенок элемента, а с помощью управляющих сигналов её можно перекинуть на противоположную сторону. При этом у дискретного элемента между выходами имеется вихреобразователь, который создаёт барьер для струи и гарантирует строгость переключения элемента.

Такой базисный элемент лёг в основу известных мне серийных струйных элементов серии ВОЛГА и СМСТ-2. Рисунки элементов СМСТ найти не удалось — повезло лишь отыскать книгу описания серии в целом, а вот по элементам ВОЛГА нашёлся полноценный альбом элементов! Мой товарищ, Антон Н., помог в оцифровке нескольких рисунков. После печати на фотополимерном принтере на свет появился элемент №1 — СТ41. Он имеет два входа справа и по выходному каналу с каждой стороны. В правом канале реализована логическая функция 2ИЛИ-НЕ, а в левом — 2ИЛИ.

Реплика элемента серии ВОЛГА СТ41 из фотополимерного принтера

Для проверки его работоспособности я напечатал пару крыльчаток, задача которых — вращаться от потока воздуха. Собственно, основная проблема струйных элементов — очень слабый выход. Никакого толку от установки манометра не будет — он просто ничего не покажет. А вот поставить крыльчатку можно. Несмотря на вдвое бо́льшие размеры сопла и большой расход питающего воздуха, элемент уверенно заработал. Правда не так, как надо… Согласно альбому схем, по умолчанию воздух должен идти в правый канал и при подаче управляющих сигналов справа переключаться на левый. А у элемента №1 всё с точностью до наоборот. Пора расчехлять тяжёлую артиллерию.

Элемент №1 работает, однако по умолчанию струя воздуха идёт не туда, куда надо

▍ Симуляция струйной логики в OpenFOAM


Чтобы понять, что не так с элементом, я решил воспользоваться пакетом openFOAM — это openSource-система численного моделирования механики сплошных сред. openFOAM нагибает половину суперкомпьютеров списка ТОР500. А вот со стороны простого пользователя у него есть две большие проблемы. Первая — у openFOAM нет графического пользовательского интерфейса: все действия с пакетом производятся через консоль, правда прекрасно автоматизируются скриптами. Вторая проблема — OpenCFD Ltd зарабатывает деньги на поддержке и, как итог, — документация на пакет есть, есть туториалы, но без пол-литра с ними не разберёшься. Обе проблемы частично решаются с помощью САПР FreeCAD с установленным в нём расширением CFDof. Эта связка позволяет нарисовать сам струйный элемент, обозначить его границы (стенки, входы, выходы), а также настроить условия симуляции и запустить расчёт. Впрочем, появляется другая проблема — вам придётся использовать FreeCAD :)

Я проверил работу связки на разных платформах. Наиболее стабильная связка — при установке на Linux. Сам openFOAM отлично живёт под wsl, но вот FreeCAD лично у меня там не работает.

Установка openFOAM и FreeCAD под Linux
#загружаем FreeCAD
wget https://github.com/FreeCAD/FreeCAD/releases/download/0.20/FreeCAD-0.20.0-Linux-x86_64.AppImage
#устанавливаем openFOAM
curl https://dl.openfoam.com/add-debian-repo.sh | bash && apt-get -y install openfoam2206-default


FreeCAD лучше брать самой последней версии, но как минимум не ниже 0.20 — под Linux на 0.19 я столкнулся с проблемами во время установки расширений.

Второй вариант — под Windows. Устанавливайте openfoam-mingw — эту версию проще всего скрестить со скриптами CfdOf. FreeCAD опять-таки ставьте не ниже 0.20.

Во FreeCAD необходимо поставить два расширения для работы — CFDof и plot. Это делается в меню Инструменты — Менеджер дополнений. Позднее в настройках укажите папки с установленными openFOAM, paraview и gmsh. В окне настроек, к слову, можно скачать и запустить на установку все необходимые пакеты. Под Windows мои настройки выглядят так:


Дабы не перегружать статью вопросами использования графического интерфейса расширения CFDof, я сделал видео, где за 15 минут я создаю простую модель, указываю её границы в терминах симуляции (стенки, вход, выход) и запускаю симуляцию.

Раз есть элемент №1, значит, есть и его модель… Загоняем её в openFOAM и производим расчёт:

Хорошая новость в том, что симуляция повторяет поведение реального элемента. Плохая — и в реальности, и в симуляции он работает не так, как надо, что и нужно исправить.

На самом деле это видео — не первая симуляция элемента. В первый раз результат выглядел несколько хуже:


Стремясь попасть в левый выходной канал, струя воздуха задевает острый угол атмосферного окна, отбирая часть мощности на себя (1). Проблема решается изменением геометрии входа левого выходного канала. Однако у элемента есть вихреобразователь (2), который обеспечивает дискретность работы элемента. Угол между выходным каналом и вихреобразователем должен отсекать часть струи на себя, чтобы она пошла по радиусу отсекателя и образовала вихрь в центре элемента. Он отрежет неактивный канал от потока воздуха, а главное — дополнительно прижмёт струю к левой стенке. Из этого кадра видно, что образуемый вихрь очень странный — что решается опять-таки изменением геометрии самого завихрителя. В видео выше элемент уже перерисован на сплайнах и эти моменты были исправлены. Как итог — струя воздуха ламинарна вплоть до поворота выходного канала.

Элемент стал работать лучше — вся входная струя идёт на выход. Но по-прежнему не на тот, который нужен. На видео заметно, как в самом начале струя пытается прилипнуть к правой стенке за счёт небольшого угла в её сторону, но подсос воздуха от обводного канала отталкивает её к противоположной. Смотрим на альбом схем ещё раз:

Цитата из «Атласа конструкций элементов схем пневмоавтоматики. Часть II. Элементы струйной системы ВОЛГА»

Конструктивная схема элемента представлена на рис. 5, где 1 — канал питания, 2, 3, 6 — каналы входа, 4, 5 — каналы выхода, 7, 8 — атмосферные каналы для сбрасывания неиспользуемого расхода воздуха в атмосферу и исключения режима автоколебаний, 9 — часть платы, отделённой от неё каналом 10, который соединяет рабочую камеру с атмосферой (при этом величина вакуума при отсутствии сигнала управления уменьшается, что облегчает переброс струи в другой канал).

При отсутствии входных сигналов Х2, Х3, Х6 в каналах 2, 3 и 6 силовая струя, вытекая из канала питания 1 под действием поперечного перепада давления и небольшого наклона канала питания 1, попадает в канал 4, на выходе которого устанавливается единичный сигнал У4=1.

Звучит вроде бы логично — переключение напечатанного элемента требует небольшого ощутимого давления, и обводной канал должен этот процесс облегчить, однако неправильный режим по умолчанию в реальности превращает элемент ИЛИ-НЕ в условно бесполезный инвертор. Попробуем очевидное, на первый взгляд, решение — перенести обводной канал на левую сторону:

Это помогло. Теперь по умолчанию сигнал идёт в правый канал, а распечатанный элемент тоже стал работать как полноценный элемент 2ИЛИ-НЕ. Вопрос в другом — почему в альбоме схем канал всё же справа? А главное — почему в элементе «защёлка» (СТ42) канал есть с каждой стороны?! И утверждается, что оба состояния — устойчивые… Чтобы враг не догадался? Если бы! Вскрываем оригинальный СТ41 прямиком из 1982 года и видим, что в действительности обводной канал находится справа. Сравнив сам элемент и его рисунок в альбоме, я понимаю, что авторы фривольно подошли к его чертежу.

Фотография воссозданного (слева) и оригинального (справа) элементов СТ41

Имеет смысл отсканировать настоящий элемент и воспроизвести его на фотополимернике во второй ревизии, однако первая ревизия справляется со своей функцией, поэтому пока оставим как есть.

▍ Синтезируем вычислитель


С элементом разобрались. Теперь нужно понять, сколько их требуется для создания двоичного сумматора с последовательным переносом. Вручную рисовать схему мне лень, так что напишем всю логику на языке verilog, просимулируем корректность работы в Icarus Verilog и засинтезируем схему соединений в Yosys. Оба пакета прекрасно чувствуют себя как под linux, так и WSL, так что выбирайте наиболее удобный вам вариант.

Ставим iverilog
(Документация)

git clone https://github.com/steveicarus/iverilog.git
cd iverilog
git checkout --track -b v11-branch origin/v11-branch
git pull
sh autoconf.sh
./configure  
make  
sudo make install


Ставим yosys
(Документация)

sudo apt-get install build-essential clang bison flex \
	libreadline-dev gawk tcl-dev libffi-dev git \
	graphviz xdot pkg-config python3 libboost-system-dev \
	libboost-python-dev libboost-filesystem-dev zlib1g-dev
git clone https://github.com/YosysHQ/yosys.git
cd yosys
make config-gcc
make 
sudo make install


Код модуля сумматора предельно прост — в два бита co и out заносим результат операции сложения трёх однобитовых слагаемых A, B и С, а дальше сигналами переноса соединяем модули однобитовых сумматоров в цепочку необходимой длины (или ширины?), получив сумматор с последовательным переносом. Можно, конечно, намудрить с параллельным переносом, например по схеме Брента-Кунга, но для столь малой ширины это лишено смысла. Элементов потребуется больше, а задержка вычислений в итоге будет такая же.

adder.v
module FA(
input wire ci,
input wire A,
input wire B,
output wire out,
output wire co
);

assign {co,out} = A + B + ci;

endmodule

module adder #(
parameter WIDTH=4
)(
input wire ci,
input wire [WIDTH-1:0] A,
input wire [WIDTH-1:0] B,
output wire [WIDTH-1:0] out,
output wire co
);

genvar i;
generate
  for (i=0; i < WIDTH; i=i+1) begin: Add
    wire c_out;
    if (i==0) begin
      FA fa(.A(A[i]), .B(B[i]), .out(out[i]),.ci(ci), .co(c_out));
    end
    else begin
      FA fa(.A(A[i]), .B(B[i]), .out(out[i]),.ci(Add[i-1].c_out), .co(c_out));
    end
  end
endgenerate


Подготовим тестбенч, задача которого — подать на вход сумматора случайные значения чисел и сравнить число на выходе с ожидаемым. Так мы убедимся, что код работает как надо.

adder_tb.v
module adder_tb();

parameter WIDTH=4;
parameter TEST_NUM=WIDTH*WIDTH;
reg clk;
reg [WIDTH-1:0] A;
reg [WIDTH-1:0] B;

wire [WIDTH-1:0] out;
wire co;
wire [WIDTH:0] res = {co, out};
reg [$clog2(TEST_NUM):0] test;
reg [$clog2(TEST_NUM):0] correct;

adder #(.WIDTH(WIDTH)) Adder(.A(A), .B(B), .out(out), .co(co));

initial begin 
  $dumpfile("adder.vcd");
  $dumpvars(0, adder_tb);
  clk = 0;
  test = 0;
  correct = 0;
  A = $urandom();
  B = $urandom();
  forever #1 clk = ~clk;
end

wire[WIDTH:0] RC = A + B;

always @(clk) begin
  if (clk) begin
    test <= test + 1;
    if (test >= TEST_NUM) begin
      $display("TESTS: %d/%d", correct, test);
      $finish();
    end
    if (out == RC) begin
      correct <= correct + 1;
    end
    else begin
      $display("%d: %d + %d: Got: %d, exp: %d", test, A, B, res, RC);
    end
  end
  else begin
      A <= $urandom();
      B <= $urandom();
  end
end
endmodule


И запустим наш код на проверку:

iverilog -o adder -P adder_tb.WIDTH=4 -s adder_tb adder_tb.v adder.v -g2012
./adder
TESTS: 16/16

Отлично, всё работает! Теперь посмотрим, во что оно синтезируется. Для этого с помощью презентации по yosys составим tcl-скрипт для синтеза.

run_synt.tcl
yosys -import
yosys read_verilog [lindex $argv 0]
yosys chparam -set WIDTH [lindex $argv 2] adder
# read design
hierarchy -check
yosys synth -top [lindex $argv 1]
# # high-level synthesis
yosys proc
yosys opt
yosys memory
yosys opt
yosys fsm
yosys opt
# # low-level synthesis
yosys techmap
yosys opt
set cell_lib "fluidic.lib"
# # map to target architecture
yosys read_liberty -lib $cell_lib
yosys dfflibmap -liberty $cell_lib
yosys abc -liberty $cell_lib
# # split larger signals
yosys splitnets -ports
yosys opt
# # cleanup
yosys clean
# # write synthesized design
yosys write_verilog [lindex $argv 1]_synth.v
# # write intermediate language
yosys write_ilang [lindex $argv 1]_ilang.txt
# # show
yosys show -format dot -lib [lindex $argv 1]_synth.v -prefix [lindex $argv 1]
yosys stat
yosys stat -liberty $cell_lib
exec dot -Tpng [lindex $argv 1].dot > [lindex $argv 1].png


На примере библиотеки КМОП-элементов cmos_cells.lib и прошлой статьи накидаем библиотеку струйных элементов. Наш базисный элемент можно использовать как элемент НЕ, 2ИЛИ, 2ИЛИ-НЕ, а также в роли буферного элемента, так как мощность выхода позволяет подключить только два элемента. В качестве параметра Area укажем количество базисных элементов, необходимых для создания логического модуля каждого типа — то есть 1. Оставим также оригинальное описание элементов DFF и DFFSR — это синхронные триггеры, без которых yosys отказывается синтезировать — уж больно ему хочется иметь элементы синхронной логики.

fluidic.lib
library(fluidic) {
  cell(BUF) {
    area: 1;
    pin(A) { direction: input; }
    pin(Y) { direction: output;
              function: "A"; }
  }
  cell(NOT) {
    area: 1;
    pin(A) { direction: input; }
    pin(Y) { direction: output;
              function: "A'"; }
  }
  cell(AND) {
    area: 1;
    pin(A) { direction: input; }
    pin(B) { direction: input; }
    pin(Y) { direction: output;
             function: "(A&B)"; }
  }
  cell(OR) {
    area: 1;
    pin(A) { direction: input; }
    pin(B) { direction: input; }
    pin(Y) { direction: output;
             function: "(A+B)"; }
  }
  cell(NOR) {
    area: 1;
    pin(A) { direction: input; }
    pin(B) { direction: input; }
    pin(Y) { direction: output;
             function: "(A+B)'"; }
  }
  cell(DFF) {
    area: 10;
    ff(IQ, IQN) { clocked_on: C;
                  next_state: D; }
    pin(C) { direction: input;
                 clock: true; }
    pin(D) { direction: input; }
    pin(Q) { direction: output;
              function: "IQ"; }
  }
  cell(DFFSR) {
    area: 10;
    ff("IQ", "IQN") { clocked_on: C;
                  next_state: D;
                      preset: S;
                       clear: R; }
    pin(C) { direction: input;
                 clock: true; }
    pin(D) { direction: input; }
    pin(Q) { direction: output;
              function: "IQ"; }
    pin(S) { direction: input; }
    pin(R) { direction: input; }
    ; // empty statement
  }
}


Осталось объединить всю рутину в общем скрипте:

synt.sh
#!/bin/bash
set -Eeuo pipefail
WIDTH=4
if [ -f *.vcd ]; then rm *.vcd fi
iverilog -o adder -P adder_tb.WIDTH=${WIDTH} -s adder_tb adder_tb.v adder.v -g2012
./adder
echo 'tcl run_synt.tcl adder.v adder '${WIDTH}  > tcl.txt
yosys < tcl.txt
gvpr -f split adder.dot
rm -f *.png

for file in $(ls *.dot); do 
    echo $file; dot -Tpng $file -O
done


Где файл split помогает разделить dot-файл с несколькими графами на множество файлов с одним графом в каждом. Это нужно потому, что команда dot обрабатывает только самый первый граф в файле, сколько бы их там не оказалось. Его код выглядит так:

BEG_G {
  fname = sprintf("%s.dot",$G.name);
  writeG($G, fname);
}


И запустить его. В случае успешного синтеза вывод будет оканчиваться следующей статистикой:

22. Printing statistics.

=== adder ===

   Number of wires:                 53
   Number of wire bits:             53
   Number of public wires:          14
   Number of public wire bits:      14
   Number of memories:               0
   Number of memory bits:            0
   Number of processes:              0
   Number of cells:                 44
     NOR                            27
     NOT                             9
     OR                              8

   Chip area for module '\adder': 44.000000

Так как в роли Area мы выставили число элементов, общий параметр Chip area тут можно интерпретировать именно как оценку требуемого количества модулей. Всего на 4-битовый сумматор нужно 44 штуки. А если точнее, то 40. Сейчас объясню почему.

Посмотрим на картинку соединений, полученную из dot-файла:


Синтезированный сумматор с последовательным переносом

Всё логично. Хотели 4 бита — получили 4 полных сумматора, последовательно соединённых по цепи переноса. Сами полные сумматоры выглядят следующим образом:

Синтезированная схема одного бита полного сумматора на логических элементах из библиотеки

На каждый полный сумматор требуется 10 логических элементов. Почему на рисунке их 11? Потому что элементы 191 и 192 — OR и NOR — можно заменить одним элементом, используя оба выхода — их входы распараллелены. Просто в lib-файле я не указал, что у элемента есть два выхода разных типов.

В принципе на данном этапе уже можно брать десяток-другой струйных элементов и соединять их трубками, согласно данной схеме. Однако, если итоговая схема значительно сложнее, хотелось бы большей автоматизации процесса. Например, превратить dot-файл в схему соединений для KiCAD. Вообще, dot-файл — это текстовое представление графа. И в нашем случае неплохо бы было иметь автоматизированный конвертер соединений логических элементов из dot-файла во что-то, что можно импортировать в kiCAD. Представьте, если на месте библиотеки fluidic.lib была бы К155СЕРИЯ.lib. Пишем модуль процессора на Verilog, синтезируем схему соединений, импортируем в kiCAD — и у нас готовая схема соединений логических элементов на 155-й серии микросхем малой степени интеграции! Дальше разводим печатную плату, и в итоге получаем самый натуральный ASIC! Правда с очень специфичными IC в конце. В общем, такого конвертера нет. Из ближайшего, что может помочь — kiCAD кушает ASCII-формат Eagle 6. И в него в принципе можно написать конвертер. Но это не точно.

Можно, конечно, перерисовать вручную. Благо достаточно нарисовать только один бит, и дальше стекировать по модулям:


Это перерисованная схема полного сумматора на базовых элементах OR-NOR. Три входа, два выхода. Аналогично соединяем сигналы переноса и получаем готовый блок сумматора.


По задумке автора было бы неплохо взять элементы меньшего размера, например СМСТ-2 габаритами 10 х 15 мм. Разместить их десяток-другой на одной пластине, и это будет верхний слой бутерброда. В том же KiCAD разводим многослойную плату соединений, на ЧПУ фрезеруем каналы в платах и собираем всё в очень компактный пневмо-бутерброд. В итоге 8-битовый сумматор можно уместить в габариты VHS-кассеты…

Верхний слой будущего бутерброда. Матрица из 10 струйных элементов, каждый размером 10 х 15 мм. Требуется калибровка печати (или 8К матрица)

Звучит это, конечно, круто, но за отсутствием автоматизированного конвертера пришлось остановиться на трубках… Хотя для лампового компьютера такой подход тоже может пригодиться. Вы же помните, что ламповый компьютер я изначально пишу на Verilog? Как только я с этим закончу, yosys мне засинтезирует схему соединений логических элементов и количество их напишет. Удобно, однако.

В следующей части соберём всё воедино и убедимся, что openSource вполне пригоден для создания процессора постапокалипсиса. А самые нетерпеливые могут посмотреть в этом видео, что получилось:

▍ Литература


Некоторое количество литературы по струйной логике.

  1. Рехтен А.В, Струйная техника: Основы, элементы, схемы. — М, изд. Машиностроение, 1980, 237 с.
  2. Лебедев И.В., Трешкунов С.Л. Яковенко В.С, Элементы струйной автоматики. — М, Машиностроение, 1973, 360 с.
  3. Вулис Л.А., Кашкаров В.П. Теория струи вязкой жидкости. — М, изд. Наука, 1965, 431 с.
  4. Залмазон Л.А, Теория элементов пневмоники. — М, изд. Наука, 1968, 508 с.
  5. Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов систем пневмоавтоматики. Часть 1. Элементы систем УСЭППА и КЭМП. — М, 1995.
  6. Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов схем пневмоавтоматики. Часть 2. Элементы струйной системы ВОЛГА. — М, 1996.
  7. Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов схем пневмоавтоматики. Часть 3. Типовые схемы на элементах серий УСЭППА, КЭМП, ВОЛГА. — М, 2000.
  8. Касимов А.М. Система модулей струйной техники СМСТ-2 (дискретная ветвь). — М, 1971.

Telegram-канал с полезностями и уютный чат

Комментарии (54)


  1. 18741878
    02.11.2022 13:31
    +10

    Бомбическая статья - спасибо! Я по основному образованию инженер и до ИТ занимался гидроприводами. С пневмо, к сожалению, сталкивался совсем немного и нечасто. Но интерес остался


  1. Sancho_SP
    02.11.2022 13:51
    +6

    Идея любопытная, но тут, конечно, более интересен гидравлический вычислитель, который мог бы работать на энергии воды из реки. Вот уж точно автономная технология. А во компрессор шутка все же сложная…


    1. 18741878
      02.11.2022 13:55
      +1

      Сквозняк в просвете между гор?


    1. radiolok Автор
      02.11.2022 13:58
      +9

      Кузнечные меха - куда уж проще то?


      1. 18741878
        02.11.2022 14:05
        +9

        Так смысл-то в том, чтобы воспользоваться существующим источником энергии. Парусный флот отлично доказал, что воздух может быть таким источником. А кузнечные меха - это же кого-то кормить надо постоянно. Тут же появятся эффективные менеджеры, скрам-мастера и прочие церемонии )


      1. Sancho_SP
        02.11.2022 14:56
        +3

        Проще туда, что при наличии плотины в несколько метров высотой, вода с некоторым напором будет идти постоянно без каких либо внешних энергозатрат. Хотя, конечно, вода грязная и работать это будет очень не долго, чисто как мысленный эксперимент.


      1. VT100
        02.11.2022 22:41
        +1

        Можно ли обратить пневмонику на работу от разряжения? Тогда водоструйный вакуум-насос подойдёт. Или два с разным разряжением — один для "струи", второй для "атмосферы".


        1. radiolok Автор
          03.11.2022 11:13

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


    1. vassabi
      02.11.2022 13:59
      +11

      мне кажется, что воздух - менее агрессивная среда, чем вода (и в нем жизни живет\цветет меньше),

      а воздушный компрессор можно сделать и от речного колеса ...


    1. attuda
      03.11.2022 08:28

      более интересен гидравлический вычислитель, который мог бы работать на энергии воды из реки.

      Не далее как десять лет назад я писал о таком. Правда, в несколько другом жанре:)


    1. iShrimp
      03.11.2022 10:10

      В том и проблема, что для пневматического компьютера хороший компрессор со стабильным давлением - критически важная вещь. Гидравлическому компьютеру тоже нужен стабильный поток воды (а чистая вода может быть в дефиците).

      Так что стоит, наверное, задуматься о создании механического компьютера, который можно приводить в движение чем угодно (хоть руками) и которому не страшна временная остановка механизма.

      Тут пригодится и устройство вычислительной машины Лейбница, и советских арифмометров, и современных игрушек типа Turing Tumble.


      1. VT100
        03.11.2022 19:33

        Боюсь "Точная Механика" (присутствующая в названии многих НИИ как отголосок механических вычислителей 40-50 годов XX века) может быть утеряна ещё проще, чем вырезание по дереву и последующая полировка.


        1. iShrimp
          04.11.2022 11:22

          Ну значит компьютер будет деревянным - из реек с толкателями и подвижных брусочков.


          1. Exchan-ge
            04.11.2022 11:27

            Ну значит компьютер будет деревянным — из реек с толкателями и подвижных брусочков.


            Заголовок спойлера
            image


          1. kovserg
            04.11.2022 21:00

            И работать на муравьиной тяге.


  1. hssergey
    02.11.2022 14:08
    +10

    В СССР пневматическая логика применялась, и насколько помню, недостатками подобных конструкций был быстрый износ логических элементов - воздух с частицами пыли действовал как абразив. Нужна была весьма высокая степень очистки воздуха, то есть одними простыми мехами не обойдешься...


    1. 18741878
      02.11.2022 14:10
      +1

      Это, скорее, вопрос культуры производства: фильтры, подготовка (осушение), качественный монтаж и грамотный процесс ТО


  1. progchip666
    02.11.2022 14:16
    +4

    Сначала были Реле, потом Лампы теперь ВОТ ЭТО!!! Ума не приложу чем нас Артём в следующий раз удивит!


    1. spanasik
      02.11.2022 14:51
      +9

      В "Задача трёл тел" логические элементы формировались из индивидуумов.


    1. radiolok Автор
      02.11.2022 15:08
      +7

      Теперь уже и сам не знаю чем в дальнейшем удивлять зрителя :) Пока вернусь к сборке ламповой машины. А там глядишь еще какую дичь найду. Говорят надо подшивки "Юный Техник" полистать - может чего интересного найду


      1. developer7
        02.11.2022 15:34

        Я бы посмотрел на ЭВМ на шестерёнках. Если есть такие. И маленький паровой двигатель. И всё в меди ) Стимпанк.

        Upd. Хотя если память не изменяет Тьюринг свою машину вроде тоже на шестерёнках собрал.


        1. AndreyNagih
          02.11.2022 16:14
          +1

          Вот недавно появился такой конструктор: https://www.youtube.com/watch?v=QrkiJZKJfpY


        1. Denis_Chernyshev
          03.11.2022 12:10

          Ну, тогда уж надо делать реплику Z1 Конрада Цузе.


  1. 18741878
    02.11.2022 14:21
    +1

    Компьютер из спичечных коробков



  1. kovserg
    02.11.2022 14:21
    +3

    Финальный вариант надо делать в виде пирамид, как у египтян.


    1. dartav
      02.11.2022 19:19
      +1

      — Конечно, так, — ответил Тембхара. — Это может относиться ко всяким частностям — например, к внешнему виду машины, монтажным особенностям, взаимному расположению агрегатов и так далее. Об одном из моих коллег, Иорисе, человеке очень рассеянном, рассказывают, что, строя гиромат, он сообщил базисной системе все данные, кроме одного — величины аппарата. Возвратившись через месяц на строительную площадку, он издали заметил какой-то массив, напоминавший пирамиду Хеопса и господствовавший над окружающей местностью. Немного обеспокоенный, он спросил у первого встречного автомата, закончен ли гиромат, и услышал в ответ: «Где там, только начали строить: изготовлен первый шуруп!»

      С. Лем (c)


  1. progchip666
    02.11.2022 15:14
    +3

    Сегодня удивить кого то сложно, особенно в России, если ты конечно тут ещё...

    Мне кажется тебе надо салон - музей открывать.

    Я могу какую нибудь аналоговую вычислительную хрень собрать для него наверное. Изучали когда-то и не только на электротехнике! На военной кафедре аппаратуру изучали где они ещё работали, бок о бок с ФТЯ!

    Есть в Москве и Питере музей игровых автоматов, на ура пошёл.

    Кстати, как там Intel то из страны пока не ушёл?


    1. radiolok Автор
      02.11.2022 19:33
      +4

      Общедоступный музей советской дичи в далеко идущих планах. Кстати аналоговую вычислительную технику пока обхожу стороной, хотя там тоже очень много интересного успели понаделать.

      Интел ушел. Я остался. Уже полгода как в другой компании работаю.


      1. progchip666
        02.11.2022 19:58
        +4

        Я вот тоже остался.

        Удачи нам!


  1. vaxxabait
    02.11.2022 16:24
    +3

    Не знаю насчёт К155СЕРИЯ.lib, но https://github.com/Ravenslofty/74xx-liberty/blob/master/74ac.lib вполне себе существует.

    А комбинация парсера Verilog (например https://github.com/yellekelyk/PyVerilog) и https://github.com/devbisme/skidl для генерации KiCAD netlist решит вторую часть проблемыю

    А можно и просто в Yosys сказать write_json - тогда парсер и не понадобится.


    1. radiolok Автор
      02.11.2022 19:24

      А вот это интересно, спасибо!


  1. thevlad
    02.11.2022 17:14
    +3

    Осталось посчитать вероятность отказа, как функцию от количества элементов и прослезиться. (/шутка)


  1. Exchan-ge
    02.11.2022 18:25
    +4

    Кроме того, восстановить в сжатые сроки производство электронных ламп в условиях постапокалипсиса будет довольно сложной задачей.


    После апокалипсиса будет уже не до электронных ламп.

    В свое время мы изучали курс ГО в варианте «для инженеров».
    Позже, уже во время работы на предприятии — порядок восстановления производства после п… любого вида.
    Простейший анализ имевшихся ресурсов показывал, что вся эта подготовка рассчитана на от… сь — реально ничего восстановить без помощи извне было бы невозможно.

    (А вот в помощь от инопланетян после апокалипсиса — верится как-то слабо :)


    1. 8street
      03.11.2022 08:28

      Кстати, какое-то количество транзисторов и микросхем должно остаться целыми, их хватит на первое время. Дело в том, что их часто упаковывают в антистатическую упаковку. Да и в Саратове у нас лампы еще выпускают.


      1. Exchan-ge
        03.11.2022 16:48
        +1

        Кстати, какое-то количество транзисторов и микросхем должно остаться целыми, их хватит на первое время.


        Безусловно.
        Только в случае п/а будет столько других проблем, что транзисторы и микросхемы (а их надо будет целенаправленно искать) будут далеко не главной задачей.

        (расчистка завалов, восстановление возможности проезда транспорта, сам этот транспорт (вполне возможно — что и гужевой), продукты питания, лекарства, стрелковое оружие и боеприпасы к нему (для восстанавливаемых органов правопорядка), жилье взамен разрушенного, топливо для обогрева...)

        Если что и будут восстанавливать — так это средства связи.


  1. eltardowut
    02.11.2022 18:41
    +1

    Как же круто настолько заморочиться.


  1. Gryphon88
    02.11.2022 18:59

    Насколько точно требуется выдерживать размеры и гладкость? Если принять, что нам в течение лет 10 после Апокалипсиса понадобился процессор и мы его решили делать в полевых условиях, то это будет что-то типа вырезания из дерева/выдавливания в глине с последующей наклейкой фанеры или оргстекла.


    1. radiolok Автор
      02.11.2022 19:23
      +1

      Гладкость стенок обязательно - иначе будет сильное влияние на поток. Размеры - судя по литературе - довольно свободная величина. основная привязка размеров идет к размеру сопла, к длине стенок - пока струя ламинарна, и т.д. Товарищ делал из фанеры - и у него работало. Элемент стабилен в некотором диапазоне размеров/питающей струи.


      1. APLe
        03.11.2022 07:38

        Интересно, а гладкости, которую даёт филламентный принтер, достаточно?


        1. radiolok Автор
          03.11.2022 11:17
          +1

          Гладкость от филаментного принтера в плоскости работы струи гораздо выше чем у фотополимерника. Тут больше проблема, что филаментом сложнее печатать столь тонкие элементы, плюс по вертикали гладкость будет никакая. У меня есть рабочая модель элемента в масштабе 3:1 напечатанная из прутка :)


          1. APLe
            03.11.2022 11:25

            Понял. Тогда сначала поиграюсь по вашим стопам с филаментником, а дальше, если пойдёт, буду думать о фотополимере.


  1. K1804
    02.11.2022 20:09
    +3

    Спасибо Артём за проделанную работу. Электроны и целые молекулы воздуха мы в действии посмотрели, хотелось бы увидеть фотоны. Может можно придумать демонстрационный логический элемент на эффекте интерференции или хотя бы фотострикции.


  1. tormozedison
    02.11.2022 22:49

    Есть мысль по аналогии с самодельной электролюминесценцией сделать самодельный ЖКИ без поляризаторов, на более раннем принципе, как в Б3-04, там вместо смены плоскости поляризации происходит переключение между мутностью и прозрачностью.


  1. APLe
    03.11.2022 07:59

    А что вы используете в качестве источника воздуха?

    И что за красивые фиттинги и краники у вас на видео?

    И ещё, почему "на ЧПУ фрезеруем каналы", а не "печатаем их на принтере"?


  1. aakhamef
    03.11.2022 08:25

    Статья очень интересная, но название лукавит. Ведь проект подразумевает высокотехнологичные процессы создания элементов, разве не так? Хоть и декларируется обратное в самом начале


  1. unwrecker
    03.11.2022 08:38
    +3

    "Требуется оператор ЭВМ. Имеющим объём лёгких менее 5л просьба не беспокоить" )


    1. LevOrdabesov
      04.11.2022 21:12
      +1

      Берите выше:
      теперь дирижёры духового оркестра, не говоря уже об органистах, могут озолотиться – и тебе концерт, и крипты намайнить!


  1. vashu1
    03.11.2022 08:49
    +1

    В 1964 делали опытный FLODAC - что-то вроде простейшего процессора, 280 воздушных пневмонических элементов, время переключения элемента порядка миллисекунды, частота проца - 10 Гц, время прохождения сигнала - фут за мс, давление 0,8 пси (на грани возможного поддувом из рта ) ).

    4 иструкции и 4 4х битных регистра.

    DOI Bookmark: 10.1109/AFIPS.1964.74


  1. Pedro87
    04.11.2022 11:40

    Меня тут другой вопрос заинтересовал: если уж это - прототип вычислительной машины судного дня, то на каком оборудовании его собирать, ведь по условию задачи никакого freeCad не будет, как не будет и 3д принтеров и станков ЧПУ

    Тут уж лучше о механической машине задуматься, ведь старый добрый токарный станок никуда не денется от эм импульса, да и генератор дизельный починить не проблема ????


    1. 0x131315
      04.11.2022 17:31

      Все это можно на бересте вычислить, просто долго и нудно, и даже вырезать такое можно острым камнем, при желании, но потребность сомнительна - возможности очень скромные, суммировать можно и в уме, а что-то большое требует сотни и тысячи элементов, сложного обслуживания (чего там только не налипнет со временем), и самое главное задачи: нужна какая-то потребность, чтобы окупить все эти усилия, в условиях апокалипсиса первостепенны совсем другие потребности.

      Да и какой судный день - такое железо неэффективно, один компрессор чего стоить будет, тут скорее просто ради интереса что такое в принципе возможно.


  1. HOLAOLA
    04.11.2022 11:40

    Супер


  1. 0x131315
    04.11.2022 17:27

    Интересный материал. Всегда было интересно производить железо под свои нужды и по своим чертежам. И хотя ни практического, ни экономического смысла это не имеет, зато позволяет в теории получать девайсы с неограниченным сроком жизни: если на девайс есть полный комплект чертежей и есть возможность по ним произвести любую деталь, девайс можно частично или полностью воссоздать не зависимо ни от каких корпораций, которые то появляются, то исчезают.

    Интересно, живо ли направление опенсорс-железа в этом плане. Так то для большинства применений особо сложного железа не требуется, а не сложное можно и в гаражных условиях производить по совсем кустарным техпроцессам. Тут важнее скорее сообщество, общедоступная библиотека чертежей и техпроцессов, обмен опытом и знаниями.

    Знаю что таким страдают единицы - практика самосбора не особо популярна, всегда дешевле купить готовое.


    1. radiolok Автор
      04.11.2022 18:58
      +1

      https://github.com/The-OpenROAD-Project

      Как минимум данный проект для синтеза и плейсмента ASIC активно используется в научной среде. Активно пилится (даже я внес свой копеечный вклад) и в целом его уже можно использовать для изготовления чипов на фабриках.