Релейный вычислитель в начале 20-го века.


233 сообщения в этой теме

Опубликовано:

На память:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 12/22/2015, 3:48:02, prostak_1982 сказал:

На память:

Может есть смысл хотя-бы схему программируемого калькулятора запилить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

Коллега, если бы мог, запилил. (((

Я механик, а не схемотехник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 12/22/2015, 6:23:15, prostak_1982 сказал:

Коллега, если бы мог, запилил. ((( Я механик, а не схемотехник.

Так это только в плюс. У вас же тема о счетной(тогда не было слова компьютер) конца 19 века. То что народ сейчас собирает, это сильно с послезнанием, с идеологией 21 века, а сто лет назад люди думали и конструировали иначе, модели как здесь http://members.iinet.net.au/~daveb/simplex/ringhome.html они делать не стали бы. Поэтому и интересно как бы мог выглядеть компьютер с их точки зрения. А инженеры тогда были больше механики чем электрики. Скажем вполне возможна попытка постройки машины Беббиджа в релейном исполнении, или нечто аналогичное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 12/22/2015, 6:15:01, Serg сказал:

схему программируемого калькулятора запилить

А идея хороша...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано: (изменено)

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

Изменено пользователем letbur

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

Есть такая старая фраза: "Чертеж - язык техники".

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано: (изменено)

Придумал более совершенный вариант ячейки памяти. И нарисовал более красивый рисунок. Рисовал в inkscap. Жутко неудобной программе (она была под рукой). Хотя бы понятным получился рисунок?

 

Итак, как работает моя память?

Красное и оранжевое колесо - колеса адреса.

голубое колесо - колесо данных.

Колесо данных и колеса адреса через зубчатую передачу соединены с соответствующими валами. (валы не показаны)

синее колесо - колесо памяти.

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

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

Информация хранится в синем колесике (на самом деле все колеса зубчатые, мне было просто лень рисовать зубы). Синее колесо ни с каким валом не соединено и иногда может свободно вращаться. Но есть стопор, который не дает ему перейти через нулевое положение (не показан), подвижный стопор управления (фиолетовый), который может либо заблокировать, либо освободить колесо. Есть еще пружина, которая стремится вернуть колесо в нулевое положение (не показана). И еще розовый стопор, о назначении которого я расскажу подробнее ниже.

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

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

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

 

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

Розовый стопор. В описанном выше механизме есть проблема - вал управления общий на все ячейки, и когда он дает команду "запись" фиолетовый стопор сбрасывает в ноль все ячейки, а не только ту, чей адрес установлен. Розовый стопор нужен, чтобы этого не происходило. Он блокирует вращение синего колеса до тех пор, пока на него не надавит голубое колесо. А голубое колесо надавливает на него только в том случае, если установлен адрес именно этой ячейки памяти и зуб синего и голубого колеса могут достать друг до друга.

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

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

память.png

Изменено пользователем letbur

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

Идея адресации - прекрасна.
По памяти вопрос: при считывании данные стираются?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано: (изменено)

  В 12/30/2015, 11:36:45, Zenitchik сказал:

По памяти вопрос: при считывании данные стираются?

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

Изменено пользователем letbur

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

Однако, красиво !

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 12/30/2015, 12:13:16, letbur сказал:

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

Как обеспечивается установка на ноль колеса данных перед чтением?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 12/30/2015, 4:07:00, Zenitchik сказал:

Как обеспечивается установка на ноль колеса данных перед чтением?

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

1. На оборот вперед поворачивается привода вала адреса. Обычно в программе записан адрес, куда надо обратится. Во время поворота происходит чтение адреса из программы.

2. вперед поворачивается привод вала управления, читая команду из программы и настраивая компьютер для выполнения команды.

3. Вперед поворачивается вал данных. В это время происходит выполнение команды. Например, передача данных из памяти в аккумулятор.

4. Управление возвращается в нулевое положение. Это защищает ячейку памяти от дальнейших изменений, если она была записана.

5. Одновременно возвращаются в нулевое положение валы адреса и данных. Одновременно с этим проматывается перфолента.

потом все начинается сначала.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

АСКОНА Компас 3Д пробовали?

А то развлекаться так в Инкскейпе или других подобных программах несколько странно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано: (изменено)

Я тут нарисовал обновленную схему Арифметико-логического устройства.

568806b92a4c9_.thumb.png.c7716ecc100a370

Детали

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

Фиолетовый механизм (не знаю как его назвать). Предназначен для сброса аккумулятора.

синее колесо - колесо аккумулятора. именно в нем хранятся данные в аккумуляторе. Если колесо никто не вращает, оно удерживается на месте силами трения.

коричневое колесо - колесо вычитания.

голубое колесо - колесо данных. Оно соединено с тем же валом данных, что и ячейки памяти.

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

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

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

Оранжевый толкатель отвечает за чтение/запись аккумулятора. Он может находится в трех положениях. Положение "0"- аккумулятор заблокирован и не может вращатсья. Оно используется для чтения аккумулятора. Положение "1" используется для арифметических операций - сложение и вычитание. В нем аккумулятор освобождается от блокировки и может быть повернут. Положение "2" - для записи. В нем аккумулятор соединяется с механизмом сброса. Фиолетовый механизм стремится повернуть аккумулятор на один оборот назад, но когда тот упирается в синее колесо, начинает проскальзывать. Таким образом выполняются операции записи.

 

К аккумулятору не идет адресная шина. Тут отсутствует механизм адресации. В результате он подключен к шине данных всегда. В отличии от ячеек памяти, которые могут с шиной данных разобщаться. Это нужно потому, что на шине адреса невозможно установить два адреса одновременно. Кроме того, нельзя иметь двух ячеек с одинаковым адресом. Адресована может быть только одна ячейка памяти. Однако, задачи типа "взять данные из одной ячейки и педедать в другую" должны как-то решаться. Напрямую это сделать нельзя из за механизма адресации. Поэтому алгоритм передачи данных будет примерно такой.

1. Передать данные из первой ячейки в аккумулятор.

2. Передать данные из аккумулятора во вторую ячейку.

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

 

 

Теперь операции, которые могут выполнятся с аккумулятором.

Запись. Перенос данных из ячейки памяти в аккумулятор.

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

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

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

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

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

Допустим, надо сложить число, которое хранится в ячейке 2; с числом, которое хранится в ячейке 3; и записать результат в ячейку 4. Программа будет выглядеть так:

Запись в аккумулятор из ячейки 2

Сложение с аккумулятором ячейки 3

Запись в ячейку 4 из аккумулятора.

Вычитание. Чем-то напоминает сложение. При вычитании так же разблокируется вращение аккумулятора, аккумулятор не сообщается с механизмом сброса. Адресуется одна из ячеек памяти и переводится в режим чтения. Главное отличие - колесо данных остается на месте. Но опускается вниз колесо вычитания, сцепляя аккумулятор и колесо данных. Когда данные начинаую подаваться, аккумулятор вращается в противоположную сторону. Что нужно сделать, чтобы вычесть из ячейки 5 ячейку 6 и записать результат в ячейку 7, догадайтесь сами.

Чтение. Теперь данные передаются из аккумулятора в память. Аналогично предыдущим пунктам, адресуется ячейка памяти, в которую мы хотим передать данные. Но теперь она переводится в режим записи, и возвратная пружина сбрасывает её. В то же время вращение аккумулятора блокируется  желтым толкателем, и голубое колесо переводится в положение 1, где оно может достать до одиночного зуба аккумулятора. Вал данных поворачивается, пока не упрется в зуб на аккумуляторе, одновременно поворачивая колесо памяти в ячейке. Затем вал управления возвращается в нулевое положение, блокируя колесо памяти (чтобы не пропали данные). Затем в нулевое положение возвращаются остальные валы.

 

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

Изменено пользователем letbur

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

Да, выходные прошли у вас не зря.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

Допечатал описание АЛУ.

Теперь вопрос для читателей (можете на них не отвечать, но если ответите, значит вы все поняли)

Почему нельзя поворачивать вал адреса и вал управления одновременно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 1/3/2016, 1:51:19, letbur сказал:

значит вы все поняли

Пока понял что штука явно переусложненная до неработоспособности и автор абсолютно не знаком с ранее существовавшими аналогичными устройствами. А картинка, да, симпатичная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

Где перенос разряда?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 12/31/2015, 12:09:26, letbur сказал:

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

Так... А обратное вращение колеса данных не приводит к передаче данных? Т.е. ещё и сцепление нужно предусматривать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 1/3/2016, 12:09:59, Zenitchik сказал:

А обратное вращение колеса данных не приводит к передаче данных?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 1/3/2016, 12:34:45, letbur сказал:

это зуб ему никак не мешае

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

Кстати, рекомендую обратить внимание на устройство ввода арифмометра Гамана и механизм умножения арифмометра Чебышёва.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано: (изменено)

  В 1/4/2016, 8:33:52, Zenitchik сказал:

При считывании оно во время прямого вращения передаёт данные во вне. А нужно обеспечить, чтобы во время обратного не передавало.

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

 

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

  В 1/3/2016, 12:03:14, Zenitchik сказал:

Где перенос разряда?

Скоро будет.

Изменено пользователем letbur

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано:

  В 1/4/2016, 2:36:20, letbur сказал:

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

Ваше устройство неоптимально. Это видно невооружённым глазом. Рекомендую изучить, наконец, аналоги.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опубликовано: (изменено)

Наконец дорисовал свое устройство переноса.

Механизм я придумал сам. Он дико несовершенный. Я не сильно смотрел на более совершенный аналоги этого механизма. Это является моей довольно вольной фантазией и вряд ли такой механизм возможно сделать.

В данный момент сообщение редактируется.

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

 

С точки зрения программы перенос представляет собой обычную ячейку памяти. И с ним можно попытаться делать те же операции, что и обычными ячейками. Но у него есть некоторые особенности. После каждого обращения к переносу он сбрасывается в ноль. Если при выполнении арифметической операции происходить переполнение аккумулятора (например, если вы попытаетесь из 1-2 или 9+5) то в ячейку переноса записывается 1. Причем это происходит в обход программы. При этом не важно, с чем складывался аккумулятор, с обычной ячейкой памяти, или с тем же переносом. Переполнение может возникнуть и при сложении аккумулятора с самим переносом. Например, если к 999 прибавить 1. Тогда сначала старый перенос сбрасывается, а новый устанавливается. Еще одна особенность ячейки переноса - она может находится только в двух состояниях 0 или 1. Если попытаться туда что-то записать, то это не окажет никакого результата - механизм записи там отсутствует.

 

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

Детали АЛУ -

Красное колесо - колесо Аккумулятора. Оно выполняет арифметические операции.

Оранжевый и зеленые детали - это и есть переносы.

Оранжевый - промежуточный перенос,

зеленый - главный перенос.

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

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

Синий рычажной механизм - механизм сброса главного переноса.

голубое колесо тоже участвует в сбросе главного переноса. Оно запускает сам процесс сброса. Оно имеет две степени свободы - вращательную и поступательную. Во вращательное движение оно приводтися напрямую от тактового генератора и пытается сбросить главные перенос когда происходит обратное движение шины управления. Поступательное движение зависит от механизма адресации переноса.

 

Правая часть схемы - Ячейка переноса.

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

Зеленое колесо адреса имеет две степени свободы - поступательную и вращательную. На него действует пружина, стремящаяся сдвинуть его влево.

Голубое колесо имеет только одну степень свободы.

Желтая деталь - это толкатель. Он имеет только одну поступательную степень свободы.

красная деталь - колесо данных. Оно соединено с шиной данных. Имеет две степени свободы - вращательную и поступательную. На нее давит пружина, стремящееся сдвинуть колесо вправо.

 

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

 

Работа системы переноса. Например, надо сосчитать, сколько будет 119+2.

Сначала число 9 записывается в аккумулятор.

Затем к нему прибавляется 2.

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

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

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

Теперь её надо сложить с переносом.

На шине адреса устанавливается адрес переноса. Желтый толкатель сдвигается так, что давит на красное колесо данных, которое в свою очередь толкает синее колесо сброса переноса.

 

Потом выполняется чтение переноса. Если перенос установлен (во время предыдущей операции произошло переполнение аккумулятора), то главыный перенос будет смещен влево, и колесо данных может немного сдвинутся пока не упрется в ограничитель (ограничитель на рисунке не показан. Но он мешает вращаться колесу данных только когда оно может дотянутся до переноса). Во время чтения может вновь произойти переполнение. Оно активирует промежуточный перенос.

 

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

Далее желтое колесо может сбросить промежуточный перенос (если он установлен) и вновь установить главный перенос.

 

 

568de43930dbf_.thumb.png.15604d4286dd1fc

Изменено пользователем letbur

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!


Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас