25 April 2014

A fistful of relays, или компьютер на электромагнитных реле. Часть 1 — АЛУ

Abnormal programming
Sandbox
Я расскажу вам о том, как можно создать компьютер (точнее, пока только его часть) на электромагнитных реле своими руками.



Как все началось


А началось все с того, что я прочитал про компьютер на электромагнитных реле, созданный Гарри Портером – энтузиастом из университета Портленда. Вот его фотография рядом с этим компьютером:



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

Другие современные компьютеры на электромагнитных реле


Часть из них более-менее повторяла проект Гарри, часть лишь демонстрировала то, что создание такого компьютера возможно. Например, DUO 14 Premium, показанный на картинке ниже, может выполнять программу, содержащую до 8 несложных команд.



Проект


Итак, я запланировал создать компьютер, похожий на HPRC. Хотелось, чтобы на нем можно было бы хоть что-то реальное посчитать, а также, чтобы все его элементы были наглядными – можно было бы проследить работу АЛУ, регистров, счетчика инструкций и т.п.

Начать изготовление я решил с АЛУ. Чтобы определить предъявляемые к нему требования, я в общих чертах разработал набор инструкций, а также прикинул какие понадобятся шины и сигналы. АЛУ имеет параллельную конструкцию (все биты вычисляются одновременно) и предназначено для 8-битных вычислений.

Я сразу решил, что нужно делать модуль вычитания. Во многих других компьютерах этот модуль не реализован, так как его работу можно выполнять с помощью отрицания и сложения. Таким образом, АЛУ будет выполнять следующие операции: сложение, вычитание (с переносом и без), логические И, ИЛИ, НЕ, ИСКЛЮЧАЮЩЕЕ ИЛИ, а также сдвиги вправо (с переносом или по кругу). Схемы для сложения и логических операций я взял из HPRC.

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

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



Реле


Было выбрано напряжение питания 24 В, а не 12 В, как в большинстве других современных компьютеров на электромагнитных реле, чтобы сделать провода тоньше. Впоследствии оказалось, что у этого решения есть и недостаток – светодиодов со встроенным резистором, рассчитанных на напряжение 24 В не бывает, поэтому резисторы пришлось покупать и паять отдельно.

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

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

Материалы


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

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

Работа


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


Эти реле обошлись мне примерно по 200 рублей, поэтому я стал искать варианты подешевле, так как на весь модуль АЛУ по предварительным подсчетам их требовалось около 100 штук. Одну партию в 100 штук мне удалось заказать по оптовой цене чуть больше 100 рублей за реле. Но у этого поставщика сами реле появиться должны были еще не скоро, поэтому я продолжил поиски.

Оказалось, что можно заказать реле напрямую из Китая значительно дешевле. Я заказал еще одну партию в 100 штук примерно по 1 доллару за штуку (доллар в то время стоил в районе 30 рублей). Впоследствии оказалось, что некоторые реле, полученные из Китая, заведомо бракованные. Например, на следующей картинке видно, что провода внутри реле перепутаны местами. К счастью, для исправления этого бага достаточно было аналогичным образом поменять местами внешние подключения к этому реле.


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

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

Итоги


Статья получилась не очень длинной и слегка поверхностной. Больше информации можно найти на сайте проекта. Если у сообщества появится интерес, я могу написать больше о характеристиках и принципах работы как АЛУ, так и проектируемого компьютера.

С того момента, как я решил делать свой компьютер, прошло уже полтора года. За это время я в общих чертах спроектировал архитектуру и систему команд, а также создал первый модуль компьютера – арифметико-логическое устройство. Формально, конечно, в АЛУ используются полупроводники – в светодиодах для индикации и в защитных диодах. Но вся логика построена на электромеханических реле. В этом блоке не хватает только внешних соединений, но их я сделаю после того, как появятся другие блоки, к которым будет подключаться АЛУ. Следующим я планирую делать блок регистров.



Статистика


АЛУ состоит из 88 реле, отладочные сигналы подаются с помощью 43 тумблеров, выходы отображаются с помощью 70 светодиодов. Размеры блока – 74x56x14 сантиметров.

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

Затраты


  • Реле – 6120
  • Светодиоды – 2660
  • Тумблеры – 1510
  • Блок питания – 2520
  • Провода и другие детали – 1220
  • Таблички с надписями (материалы, гравировка и крепеж) – 3340
  • Материалы для корпуса – 4300
  • Итого – 21670

Пока получается раза в 2 дешевле, чем у Гарри. Сюда не включены припой и флюс, наждачная бумага, неисправные и испорченные детали, а также стоимость инструментов, которые у меня появились в процессе изготовления корпуса.

Что можно сделать лучше


По окончании реализации первого модуля моего компьютера я пришел к тому, что некоторые вещи можно было бы сделать лучше:
  1. Вероятно, количество используемых в АЛУ реле можно было бы уменьшить, объединив модули сложения и вычитания. Думаю, что таким образом можно было бы сэкономить 8 реле.
  2. При работе над следующим модулем нужно постараться сверлить отверстия аккуратнее. В этот раз некоторые из них получились с небольшими (и одно – с большими) трещинами.
  3. Практика показала, что в нашем городе не очень-то легко сделать качественную лазерную гравировку на латуни. Видимо, в следующий раз для изготовления надписей придется попробовать применить фотолитографию.
  4. Вероятно, для часто переключающихся схем, таких как тактовый генератор, придется использовать дублирование, так как реле показали себя не слишком надежными.


Ссылки


Сайт проекта: github.com/Dovgalyuk/Relay
Другие компьютеры:
Tags:релестранные компьютеры
Hubs: Abnormal programming
+129
48.3k 139
Comments 60
Top of the last 24 hours