Проектируемый компьютер на сверхминиатюрных электронных лампах хоть и является радиационно-стойким, однако работает на электричестве. Кроме того, восстановить в сжатые сроки производство электронных ламп в условиях постапокалипсиса будет довольно сложной задачей. На руинах цивилизации гораздо проще организовать массовое производство логических элементов, работающих на эффекте прилипания струи воздуха к стенке — при этом сам элемент можно лепить хоть из глины! И мало того, что для создания потока воздуха не обязательно использовать электричество — теоретически такой процессор сможет работать на энергии ударной волны ядерного взрыва! Но обо всём по порядку. Для тех, кто следит за проектом DekatronPC — не пугайтесь, ему ничего не угрожает.
В прошлый раз в статье «Пневмоника и влажные мечты стимпанка» я уже рассказывал о струйных логических элементах и поделился мыслями о том, что в принципе на этой технологии можно собрать полноценное вычислительное устройство.
Принцип работы элемента на эффекте прилипания струи воздуха к стенке
Известный из прошлой статьи базисный элемент работает на эффекте прилипания ламинарной струи воздуха к стенке. Вырываясь из сопла, струя воздуха натурально присасывается к одной из двух стенок элемента, а с помощью управляющих сигналов её можно перекинуть на противоположную сторону. При этом у дискретного элемента между выходами имеется вихреобразователь, который создаёт барьер для струи и гарантирует строгость переключения элемента.
Такой базисный элемент лёг в основу известных мне серийных струйных элементов серии ВОЛГА и СМСТ-2. Рисунки элементов СМСТ найти не удалось — повезло лишь отыскать книгу описания серии в целом, а вот по элементам ВОЛГА нашёлся полноценный альбом элементов! Мой товарищ, Антон Н., помог в оцифровке нескольких рисунков. После печати на фотополимерном принтере на свет появился элемент №1 — СТ41. Он имеет два входа справа и по выходному каналу с каждой стороны. В правом канале реализована логическая функция 2ИЛИ-НЕ, а в левом — 2ИЛИ.
Реплика элемента серии ВОЛГА СТ41 из фотополимерного принтера
Для проверки его работоспособности я напечатал пару крыльчаток, задача которых — вращаться от потока воздуха. Собственно, основная проблема струйных элементов — очень слабый выход. Никакого толку от установки манометра не будет — он просто ничего не покажет. А вот поставить крыльчатку можно. Несмотря на вдвое бо́льшие размеры сопла и большой расход питающего воздуха, элемент уверенно заработал. Правда не так, как надо… Согласно альбому схем, по умолчанию воздух должен идти в правый канал и при подаче управляющих сигналов справа переключаться на левый. А у элемента №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 мои настройки выглядят так:
Дабы не перегружать статью вопросами использования графического интерфейса расширения 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, так что выбирайте наиболее удобный вам вариант.
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-файла:
Синтезированный сумматор с последовательным переносом
Всё логично. Хотели 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 вполне пригоден для создания процессора постапокалипсиса. А самые нетерпеливые могут посмотреть в этом видео, что получилось:
▍ Литература
Некоторое количество литературы по струйной логике.
- Рехтен А.В, Струйная техника: Основы, элементы, схемы. — М, изд. Машиностроение, 1980, 237 с.
- Лебедев И.В., Трешкунов С.Л. Яковенко В.С, Элементы струйной автоматики. — М, Машиностроение, 1973, 360 с.
- Вулис Л.А., Кашкаров В.П. Теория струи вязкой жидкости. — М, изд. Наука, 1965, 431 с.
- Залмазон Л.А, Теория элементов пневмоники. — М, изд. Наука, 1968, 508 с.
- Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов систем пневмоавтоматики. Часть 1. Элементы систем УСЭППА и КЭМП. — М, 1995.
- Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов схем пневмоавтоматики. Часть 2. Элементы струйной системы ВОЛГА. — М, 1996.
- Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов схем пневмоавтоматики. Часть 3. Типовые схемы на элементах серий УСЭППА, КЭМП, ВОЛГА. — М, 2000.
- Касимов А.М. Система модулей струйной техники СМСТ-2 (дискретная ветвь). — М, 1971.
Telegram-канал с полезностями и уютный чат
Комментарии (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
Бомбическая статья - спасибо! Я по основному образованию инженер и до ИТ занимался гидроприводами. С пневмо, к сожалению, сталкивался совсем немного и нечасто. Но интерес остался