![](https://habrastorage.org/webt/dd/v6/j7/ddv6j7s7ufar4r2slgi7bjui6q4.jpeg)
Проектируемый компьютер на сверхминиатюрных электронных лампах хоть и является радиационно-стойким, однако работает на электричестве. Кроме того, восстановить в сжатые сроки производство электронных ламп в условиях постапокалипсиса будет довольно сложной задачей. На руинах цивилизации гораздо проще организовать массовое производство логических элементов, работающих на эффекте прилипания струи воздуха к стенке — при этом сам элемент можно лепить хоть из глины! И мало того, что для создания потока воздуха не обязательно использовать электричество — теоретически такой процессор сможет работать на энергии ударной волны ядерного взрыва! Но обо всём по порядку. Для тех, кто следит за проектом DekatronPC — не пугайтесь, ему ничего не угрожает.
В прошлый раз в статье «Пневмоника и влажные мечты стимпанка» я уже рассказывал о струйных логических элементах и поделился мыслями о том, что в принципе на этой технологии можно собрать полноценное вычислительное устройство.
![](https://habrastorage.org/webt/qm/hq/tp/qmhqtpqt19jb7hcyefecb-zvpcq.gif)
Известный из прошлой статьи базисный элемент работает на эффекте прилипания ламинарной струи воздуха к стенке. Вырываясь из сопла, струя воздуха натурально присасывается к одной из двух стенок элемента, а с помощью управляющих сигналов её можно перекинуть на противоположную сторону. При этом у дискретного элемента между выходами имеется вихреобразователь, который создаёт барьер для струи и гарантирует строгость переключения элемента.
Такой базисный элемент лёг в основу известных мне серийных струйных элементов серии ВОЛГА и СМСТ-2. Рисунки элементов СМСТ найти не удалось — повезло лишь отыскать книгу описания серии в целом, а вот по элементам ВОЛГА нашёлся полноценный альбом элементов! Мой товарищ, Антон Н., помог в оцифровке нескольких рисунков. После печати на фотополимерном принтере на свет появился элемент №1 — СТ41. Он имеет два входа справа и по выходному каналу с каждой стороны. В правом канале реализована логическая функция 2ИЛИ-НЕ, а в левом — 2ИЛИ.
![](https://habrastorage.org/webt/sf/um/t4/sfumt46oc4rgc28so8b7h5jtsca.jpeg)
Для проверки его работоспособности я напечатал пару крыльчаток, задача которых — вращаться от потока воздуха. Собственно, основная проблема струйных элементов — очень слабый выход. Никакого толку от установки манометра не будет — он просто ничего не покажет. А вот поставить крыльчатку можно. Несмотря на вдвое бо́льшие размеры сопла и большой расход питающего воздуха, элемент уверенно заработал. Правда не так, как надо… Согласно альбому схем, по умолчанию воздух должен идти в правый канал и при подаче управляющих сигналов справа переключаться на левый. А у элемента №1 всё с точностью до наоборот. Пора расчехлять тяжёлую артиллерию.
Элемент №1 работает, однако по умолчанию струя воздуха идёт не туда, куда надо
▍ Симуляция струйной логики в OpenFOAM
Чтобы понять, что не так с элементом, я решил воспользоваться пакетом openFOAM — это openSource-система численного моделирования механики сплошных сред. openFOAM нагибает половину суперкомпьютеров списка ТОР500. А вот со стороны простого пользователя у него есть две большие проблемы. Первая — у openFOAM нет графического пользовательского интерфейса: все действия с пакетом производятся через консоль, правда прекрасно автоматизируются скриптами. Вторая проблема — OpenCFD Ltd зарабатывает деньги на поддержке и, как итог, — документация на пакет есть, есть туториалы, но без пол-литра с ними не разберёшься. Обе проблемы частично решаются с помощью САПР FreeCAD с установленным в нём расширением CFDof. Эта связка позволяет нарисовать сам струйный элемент, обозначить его границы (стенки, входы, выходы), а также настроить условия симуляции и запустить расчёт. Впрочем, появляется другая проблема — вам придётся использовать FreeCAD :)
Я проверил работу связки на разных платформах. Наиболее стабильная связка — при установке на Linux. Сам openFOAM отлично живёт под wsl, но вот FreeCAD лично у меня там не работает.
#загружаем 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 мои настройки выглядят так:
![](https://habrastorage.org/webt/fo/ym/x5/foymx5gmppcgribfqvspifkgmvy.jpeg)
Дабы не перегружать статью вопросами использования графического интерфейса расширения CFDof, я сделал видео, где за 15 минут я создаю простую модель, указываю её границы в терминах симуляции (стенки, вход, выход) и запускаю симуляцию.
Раз есть элемент №1, значит, есть и его модель… Загоняем её в openFOAM и производим расчёт:
Хорошая новость в том, что симуляция повторяет поведение реального элемента. Плохая — и в реальности, и в симуляции он работает не так, как надо, что и нужно исправить.
На самом деле это видео — не первая симуляция элемента. В первый раз результат выглядел несколько хуже:
![](https://habrastorage.org/webt/ij/4s/9l/ij4s9lupyvj31_67spxc2m6jrbs.jpeg)
Стремясь попасть в левый выходной канал, струя воздуха задевает острый угол атмосферного окна, отбирая часть мощности на себя (1). Проблема решается изменением геометрии входа левого выходного канала. Однако у элемента есть вихреобразователь (2), который обеспечивает дискретность работы элемента. Угол между выходным каналом и вихреобразователем должен отсекать часть струи на себя, чтобы она пошла по радиусу отсекателя и образовала вихрь в центре элемента. Он отрежет неактивный канал от потока воздуха, а главное — дополнительно прижмёт струю к левой стенке. Из этого кадра видно, что образуемый вихрь очень странный — что решается опять-таки изменением геометрии самого завихрителя. В видео выше элемент уже перерисован на сплайнах и эти моменты были исправлены. Как итог — струя воздуха ламинарна вплоть до поворота выходного канала.
Элемент стал работать лучше — вся входная струя идёт на выход. Но по-прежнему не на тот, который нужен. На видео заметно, как в самом начале струя пытается прилипнуть к правой стенке за счёт небольшого угла в её сторону, но подсос воздуха от обводного канала отталкивает её к противоположной. Смотрим на альбом схем ещё раз:
![](https://habrastorage.org/webt/9n/py/ag/9npyag9y6-eve9mo_b2yqrr7f1c.jpeg)
Конструктивная схема элемента представлена на рис. 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 года и видим, что в действительности обводной канал находится справа. Сравнив сам элемент и его рисунок в альбоме, я понимаю, что авторы фривольно подошли к его чертежу.
![](https://habrastorage.org/webt/_2/zx/yt/_2zxytatigsgjpljfh0gr4e1m1k.jpeg)
Имеет смысл отсканировать настоящий элемент и воспроизвести его на фотополимернике во второй ревизии, однако первая ревизия справляется со своей функцией, поэтому пока оставим как есть.
▍ Синтезируем вычислитель
С элементом разобрались. Теперь нужно понять, сколько их требуется для создания двоичного сумматора с последовательным переносом. Вручную рисовать схему мне лень, так что напишем всю логику на языке verilog, просимулируем корректность работы в Icarus Verilog и засинтезируем схему соединений в Yosys. Оба пакета прекрасно чувствуют себя как под linux, так и WSL, так что выбирайте наиболее удобный вам вариант.
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
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 и С, а дальше сигналами переноса соединяем модули однобитовых сумматоров в цепочку необходимой длины (или ширины?), получив сумматор с последовательным переносом. Можно, конечно, намудрить с параллельным переносом, например по схеме Брента-Кунга, но для столь малой ширины это лишено смысла. Элементов потребуется больше, а задержка вычислений в итоге будет такая же.
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
Подготовим тестбенч, задача которого — подать на вход сумматора случайные значения чисел и сравнить число на выходе с ожидаемым. Так мы убедимся, что код работает как надо.
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-скрипт для синтеза.
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 отказывается синтезировать — уж больно ему хочется иметь элементы синхронной логики.
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
}
}
Осталось объединить всю рутину в общем скрипте:
#!/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-файла:
![](https://habrastorage.org/webt/o9/5w/dw/o95wdwa7o6yw3_080dhuhpgeppg.png)
Синтезированный сумматор с последовательным переносом
Всё логично. Хотели 4 бита — получили 4 полных сумматора, последовательно соединённых по цепи переноса. Сами полные сумматоры выглядят следующим образом:
![](https://habrastorage.org/webt/w3/zh/bt/w3zhbt5r_wtxudinla-2wuvhzjq.png)
На каждый полный сумматор требуется 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. И в него в принципе можно написать конвертер. Но это не точно.
Можно, конечно, перерисовать вручную. Благо достаточно нарисовать только один бит, и дальше стекировать по модулям:
![](https://habrastorage.org/webt/db/2r/3b/db2r3busskvki8sphkocdba5wxc.jpeg)
Это перерисованная схема полного сумматора на базовых элементах OR-NOR. Три входа, два выхода. Аналогично соединяем сигналы переноса и получаем готовый блок сумматора.
![](https://habrastorage.org/webt/01/lc/o6/01lco6tuuzudn_i7jjf43dlcals.jpeg)
По задумке автора было бы неплохо взять элементы меньшего размера, например СМСТ-2 габаритами 10 х 15 мм. Разместить их десяток-другой на одной пластине, и это будет верхний слой бутерброда. В том же KiCAD разводим многослойную плату соединений, на ЧПУ фрезеруем каналы в платах и собираем всё в очень компактный пневмо-бутерброд. В итоге 8-битовый сумматор можно уместить в габариты VHS-кассеты…
![](https://habrastorage.org/webt/2t/vh/7b/2tvh7bbj06j4ckz5efxwep6gsu4.jpeg)
Звучит это, конечно, круто, но за отсутствием автоматизированного конвертера пришлось остановиться на трубках… Хотя для лампового компьютера такой подход тоже может пригодиться. Вы же помните, что ламповый компьютер я изначально пишу на Verilog? Как только я с этим закончу, yosys мне засинтезирует схему соединений логических элементов и количество их напишет. Удобно, однако.
В следующей части соберём всё воедино и убедимся, что openSource вполне пригоден для создания процессора постапокалипсиса. А самые нетерпеливые могут посмотреть в этом видео, что получилось:
▍ Литература
Некоторое количество литературы по струйной логике.
- Рехтен А.В, Струйная техника: Основы, элементы, схемы. — М, изд. Машиностроение, 1980, 237 с.
- Лебедев И.В., Трешкунов С.Л. Яковенко В.С, Элементы струйной автоматики. — М, Машиностроение, 1973, 360 с.
- Вулис Л.А., Кашкаров В.П. Теория струи вязкой жидкости. — М, изд. Наука, 1965, 431 с.
- Залмазон Л.А, Теория элементов пневмоники. — М, изд. Наука, 1968, 508 с.
- Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов систем пневмоавтоматики. Часть 1. Элементы систем УСЭППА и КЭМП. — М, 1995.
- Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов схем пневмоавтоматики. Часть 2. Элементы струйной системы ВОЛГА. — М, 1996.
- Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов схем пневмоавтоматики. Часть 3. Типовые схемы на элементах серий УСЭППА, КЭМП, ВОЛГА. — М, 2000.
- Касимов А.М. Система модулей струйной техники СМСТ-2 (дискретная ветвь). — М, 1971.
Telegram-канал с полезностями и уютный чат
![](https://habrastorage.org/webt/sz/7j/pf/sz7jpfj8i1pa6ocj-eia09dev4q.png)
Комментарии (54)
Sancho_SP
02.11.2022 13:51+6Идея любопытная, но тут, конечно, более интересен гидравлический вычислитель, который мог бы работать на энергии воды из реки. Вот уж точно автономная технология. А во компрессор шутка все же сложная…
radiolok Автор
02.11.2022 13:58+9Кузнечные меха - куда уж проще то?
18741878
02.11.2022 14:05+9Так смысл-то в том, чтобы воспользоваться существующим источником энергии. Парусный флот отлично доказал, что воздух может быть таким источником. А кузнечные меха - это же кого-то кормить надо постоянно. Тут же появятся эффективные менеджеры, скрам-мастера и прочие церемонии )
Sancho_SP
02.11.2022 14:56+3Проще туда, что при наличии плотины в несколько метров высотой, вода с некоторым напором будет идти постоянно без каких либо внешних энергозатрат. Хотя, конечно, вода грязная и работать это будет очень не долго, чисто как мысленный эксперимент.
VT100
02.11.2022 22:41+1Можно ли обратить пневмонику на работу от разряжения? Тогда водоструйный вакуум-насос подойдёт. Или два с разным разряжением — один для "струи", второй для "атмосферы".
radiolok Автор
03.11.2022 11:13Я не спец в газодинамике, но при разряжении не вижу способов возникновения ламинарной струи из сопла - у элемента множество атмосферных каналов для сброса давления. Скорее будет из них подсос.
vassabi
02.11.2022 13:59+11мне кажется, что воздух - менее агрессивная среда, чем вода (и в нем жизни живет\цветет меньше),
а воздушный компрессор можно сделать и от речного колеса ...
attuda
03.11.2022 08:28более интересен гидравлический вычислитель, который мог бы работать на энергии воды из реки.
Не далее как десять лет назад я писал о таком. Правда, в несколько другом жанре:)
iShrimp
03.11.2022 10:10В том и проблема, что для пневматического компьютера хороший компрессор со стабильным давлением - критически важная вещь. Гидравлическому компьютеру тоже нужен стабильный поток воды (а чистая вода может быть в дефиците).
Так что стоит, наверное, задуматься о создании механического компьютера, который можно приводить в движение чем угодно (хоть руками) и которому не страшна временная остановка механизма.
Тут пригодится и устройство вычислительной машины Лейбница, и советских арифмометров, и современных игрушек типа Turing Tumble.
VT100
03.11.2022 19:33Боюсь "Точная Механика" (присутствующая в названии многих НИИ как отголосок механических вычислителей 40-50 годов XX века) может быть утеряна ещё проще, чем вырезание по дереву и последующая полировка.
hssergey
02.11.2022 14:08+10В СССР пневматическая логика применялась, и насколько помню, недостатками подобных конструкций был быстрый износ логических элементов - воздух с частицами пыли действовал как абразив. Нужна была весьма высокая степень очистки воздуха, то есть одними простыми мехами не обойдешься...
18741878
02.11.2022 14:10+1Это, скорее, вопрос культуры производства: фильтры, подготовка (осушение), качественный монтаж и грамотный процесс ТО
progchip666
02.11.2022 14:16+4Сначала были Реле, потом Лампы теперь ВОТ ЭТО!!! Ума не приложу чем нас Артём в следующий раз удивит!
radiolok Автор
02.11.2022 15:08+7Теперь уже и сам не знаю чем в дальнейшем удивлять зрителя :) Пока вернусь к сборке ламповой машины. А там глядишь еще какую дичь найду. Говорят надо подшивки "Юный Техник" полистать - может чего интересного найду
developer7
02.11.2022 15:34Я бы посмотрел на ЭВМ на шестерёнках. Если есть такие. И маленький паровой двигатель. И всё в меди ) Стимпанк.
Upd. Хотя если память не изменяет Тьюринг свою машину вроде тоже на шестерёнках собрал.AndreyNagih
02.11.2022 16:14+1Вот недавно появился такой конструктор: https://www.youtube.com/watch?v=QrkiJZKJfpY
kovserg
02.11.2022 14:21+3Финальный вариант надо делать в виде пирамид, как у египтян.
dartav
02.11.2022 19:19+1— Конечно, так, — ответил Тембхара. — Это может относиться ко всяким частностям — например, к внешнему виду машины, монтажным особенностям, взаимному расположению агрегатов и так далее. Об одном из моих коллег, Иорисе, человеке очень рассеянном, рассказывают, что, строя гиромат, он сообщил базисной системе все данные, кроме одного — величины аппарата. Возвратившись через месяц на строительную площадку, он издали заметил какой-то массив, напоминавший пирамиду Хеопса и господствовавший над окружающей местностью. Немного обеспокоенный, он спросил у первого встречного автомата, закончен ли гиромат, и услышал в ответ: «Где там, только начали строить: изготовлен первый шуруп!»
С. Лем (c)
progchip666
02.11.2022 15:14+3Сегодня удивить кого то сложно, особенно в России, если ты конечно тут ещё...
Мне кажется тебе надо салон - музей открывать.
Я могу какую нибудь аналоговую вычислительную хрень собрать для него наверное. Изучали когда-то и не только на электротехнике! На военной кафедре аппаратуру изучали где они ещё работали, бок о бок с ФТЯ!
Есть в Москве и Питере музей игровых автоматов, на ура пошёл.
Кстати, как там Intel то из страны пока не ушёл?
radiolok Автор
02.11.2022 19:33+4Общедоступный музей советской дичи в далеко идущих планах. Кстати аналоговую вычислительную технику пока обхожу стороной, хотя там тоже очень много интересного успели понаделать.
Интел ушел. Я остался. Уже полгода как в другой компании работаю.
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 - тогда парсер и не понадобится.
thevlad
02.11.2022 17:14+3Осталось посчитать вероятность отказа, как функцию от количества элементов и прослезиться. (/шутка)
Exchan-ge
02.11.2022 18:25+4Кроме того, восстановить в сжатые сроки производство электронных ламп в условиях постапокалипсиса будет довольно сложной задачей.
После апокалипсиса будет уже не до электронных ламп.
В свое время мы изучали курс ГО в варианте «для инженеров».
Позже, уже во время работы на предприятии — порядок восстановления производства после п… любого вида.
Простейший анализ имевшихся ресурсов показывал, что вся эта подготовка рассчитана на от… сь — реально ничего восстановить без помощи извне было бы невозможно.
(А вот в помощь от инопланетян после апокалипсиса — верится как-то слабо :)8street
03.11.2022 08:28Кстати, какое-то количество транзисторов и микросхем должно остаться целыми, их хватит на первое время. Дело в том, что их часто упаковывают в антистатическую упаковку. Да и в Саратове у нас лампы еще выпускают.
Exchan-ge
03.11.2022 16:48+1Кстати, какое-то количество транзисторов и микросхем должно остаться целыми, их хватит на первое время.
Безусловно.
Только в случае п/а будет столько других проблем, что транзисторы и микросхемы (а их надо будет целенаправленно искать) будут далеко не главной задачей.
(расчистка завалов, восстановление возможности проезда транспорта, сам этот транспорт (вполне возможно — что и гужевой), продукты питания, лекарства, стрелковое оружие и боеприпасы к нему (для восстанавливаемых органов правопорядка), жилье взамен разрушенного, топливо для обогрева...)
Если что и будут восстанавливать — так это средства связи.
Gryphon88
02.11.2022 18:59Насколько точно требуется выдерживать размеры и гладкость? Если принять, что нам в течение лет 10 после Апокалипсиса понадобился процессор и мы его решили делать в полевых условиях, то это будет что-то типа вырезания из дерева/выдавливания в глине с последующей наклейкой фанеры или оргстекла.
radiolok Автор
02.11.2022 19:23+1Гладкость стенок обязательно - иначе будет сильное влияние на поток. Размеры - судя по литературе - довольно свободная величина. основная привязка размеров идет к размеру сопла, к длине стенок - пока струя ламинарна, и т.д. Товарищ делал из фанеры - и у него работало. Элемент стабилен в некотором диапазоне размеров/питающей струи.
APLe
03.11.2022 07:38Интересно, а гладкости, которую даёт филламентный принтер, достаточно?
radiolok Автор
03.11.2022 11:17+1Гладкость от филаментного принтера в плоскости работы струи гораздо выше чем у фотополимерника. Тут больше проблема, что филаментом сложнее печатать столь тонкие элементы, плюс по вертикали гладкость будет никакая. У меня есть рабочая модель элемента в масштабе 3:1 напечатанная из прутка :)
APLe
03.11.2022 11:25Понял. Тогда сначала поиграюсь по вашим стопам с филаментником, а дальше, если пойдёт, буду думать о фотополимере.
K1804
02.11.2022 20:09+3Спасибо Артём за проделанную работу. Электроны и целые молекулы воздуха мы в действии посмотрели, хотелось бы увидеть фотоны. Может можно придумать демонстрационный логический элемент на эффекте интерференции или хотя бы фотострикции.
tormozedison
02.11.2022 22:49Есть мысль по аналогии с самодельной электролюминесценцией сделать самодельный ЖКИ без поляризаторов, на более раннем принципе, как в Б3-04, там вместо смены плоскости поляризации происходит переключение между мутностью и прозрачностью.
APLe
03.11.2022 07:59А что вы используете в качестве источника воздуха?
И что за красивые фиттинги и краники у вас на видео?
И ещё, почему "на ЧПУ фрезеруем каналы", а не "печатаем их на принтере"?
aakhamef
03.11.2022 08:25Статья очень интересная, но название лукавит. Ведь проект подразумевает высокотехнологичные процессы создания элементов, разве не так? Хоть и декларируется обратное в самом начале
unwrecker
03.11.2022 08:38+3"Требуется оператор ЭВМ. Имеющим объём лёгких менее 5л просьба не беспокоить" )
LevOrdabesov
04.11.2022 21:12+1Берите выше:
теперь дирижёры духового оркестра, не говоря уже об органистах, могут озолотиться – и тебе концерт, и крипты намайнить!
vashu1
03.11.2022 08:49+1В 1964 делали опытный FLODAC - что-то вроде простейшего процессора, 280 воздушных пневмонических элементов, время переключения элемента порядка миллисекунды, частота проца - 10 Гц, время прохождения сигнала - фут за мс, давление 0,8 пси (на грани возможного поддувом из рта ) ).
4 иструкции и 4 4х битных регистра.
DOI Bookmark: 10.1109/AFIPS.1964.74
Pedro87
04.11.2022 11:40Меня тут другой вопрос заинтересовал: если уж это - прототип вычислительной машины судного дня, то на каком оборудовании его собирать, ведь по условию задачи никакого freeCad не будет, как не будет и 3д принтеров и станков ЧПУ
Тут уж лучше о механической машине задуматься, ведь старый добрый токарный станок никуда не денется от эм импульса, да и генератор дизельный починить не проблема ????
0x131315
04.11.2022 17:31Все это можно на бересте вычислить, просто долго и нудно, и даже вырезать такое можно острым камнем, при желании, но потребность сомнительна - возможности очень скромные, суммировать можно и в уме, а что-то большое требует сотни и тысячи элементов, сложного обслуживания (чего там только не налипнет со временем), и самое главное задачи: нужна какая-то потребность, чтобы окупить все эти усилия, в условиях апокалипсиса первостепенны совсем другие потребности.
Да и какой судный день - такое железо неэффективно, один компрессор чего стоить будет, тут скорее просто ради интереса что такое в принципе возможно.
0x131315
04.11.2022 17:27Интересный материал. Всегда было интересно производить железо под свои нужды и по своим чертежам. И хотя ни практического, ни экономического смысла это не имеет, зато позволяет в теории получать девайсы с неограниченным сроком жизни: если на девайс есть полный комплект чертежей и есть возможность по ним произвести любую деталь, девайс можно частично или полностью воссоздать не зависимо ни от каких корпораций, которые то появляются, то исчезают.
Интересно, живо ли направление опенсорс-железа в этом плане. Так то для большинства применений особо сложного железа не требуется, а не сложное можно и в гаражных условиях производить по совсем кустарным техпроцессам. Тут важнее скорее сообщество, общедоступная библиотека чертежей и техпроцессов, обмен опытом и знаниями.
Знаю что таким страдают единицы - практика самосбора не особо популярна, всегда дешевле купить готовое.
radiolok Автор
04.11.2022 18:58+1https://github.com/The-OpenROAD-Project
Как минимум данный проект для синтеза и плейсмента ASIC активно используется в научной среде. Активно пилится (даже я внес свой копеечный вклад) и в целом его уже можно использовать для изготовления чипов на фабриках.
18741878
Бомбическая статья - спасибо! Я по основному образованию инженер и до ИТ занимался гидроприводами. С пневмо, к сожалению, сталкивался совсем немного и нечасто. Но интерес остался