Релейная ЭВМ версия 2. Релейная логика. Сумматор с параллельным переносом
Привет, давно не виделись. Я вернулся к проекту релейной ЭВМ и хочу представить на суд продолжение этой темы.
UPDATE: Снял видео из цикла BrainfuckPC. Дабы не плодить новую статью, добавлю его сюда:
Каждое реле имеет некоторую задержку срабатывания и отпускания, которое мы примем за 1 условную единицу времени(у.е.в.) Если будем использовать реле РЭС22, 1у.е.в. будет равен 12-15мс (справочное), РЭС64 — 1.3мс(справочное). Самой дорогой операцией в АЛУ моей машины является сумматор.
Сумматор сам по себе довольно простой и быстрый, но «есть один нюанс», который заключается в способе вычисления и передачи сигнала переноса.
Изначально я планировал использовать сумматор с последовательным переносом. В таком сумматоре каждый последующий разряд зависит от состояния сигнала переноса разряда текущего. В итоге длительность операции вычисления будет колебаться между 2 у.е.в. — N*2 у.е.в., где N — число разрядов. В итоге, 8-разрядный сумматор с последовательным переносом будет иметь максимальную задержку 12 у.е.в.
Рисунок 1: Принципиальная схема 4-разрядного сумматора с последовательным переносом
Такой вариант меня не устроил, поэтому будем проектировать сумматор с параллельным переносом. Так как сумматоров в системе будет как минимум два — сумматор в АЛУ и сумматор текущей команды (Instruction Pointer — IP) (не хочу отдавать его на откуп микроконтроллеру), задачка становится еще более актуальной. Сумматор в АЛУ будет 8-разрядным, сумматор IP — 16-разрядным.
Читать дальше
UPDATE: Снял видео из цикла BrainfuckPC. Дабы не плодить новую статью, добавлю его сюда:
Введение
Релейная ЭВМ должна быть не только релейной, но еще и быстрой. Как и любая другая ЭВМ, моя РЦВМ будет синхронной машиной, оснащенной тактовым генератором. Естественно мне не хочется растрачивать впустую циклы тактирования и постараться каждую операцию уместить в один цикл — т. е. за нарастающий и спадающий фронты синхронного генератора успеть загрузить новую команду и исполнить ее. Желательно при этом чтобы все команды выполнялись за одинаковый период времени.Каждое реле имеет некоторую задержку срабатывания и отпускания, которое мы примем за 1 условную единицу времени(у.е.в.) Если будем использовать реле РЭС22, 1у.е.в. будет равен 12-15мс (справочное), РЭС64 — 1.3мс(справочное). Самой дорогой операцией в АЛУ моей машины является сумматор.
Сумматор сам по себе довольно простой и быстрый, но «есть один нюанс», который заключается в способе вычисления и передачи сигнала переноса.
Изначально я планировал использовать сумматор с последовательным переносом. В таком сумматоре каждый последующий разряд зависит от состояния сигнала переноса разряда текущего. В итоге длительность операции вычисления будет колебаться между 2 у.е.в. — N*2 у.е.в., где N — число разрядов. В итоге, 8-разрядный сумматор с последовательным переносом будет иметь максимальную задержку 12 у.е.в.
Рисунок 1: Принципиальная схема 4-разрядного сумматора с последовательным переносом
Такой вариант меня не устроил, поэтому будем проектировать сумматор с параллельным переносом. Так как сумматоров в системе будет как минимум два — сумматор в АЛУ и сумматор текущей команды (Instruction Pointer — IP) (не хочу отдавать его на откуп микроконтроллеру), задачка становится еще более актуальной. Сумматор в АЛУ будет 8-разрядным, сумматор IP — 16-разрядным.
Читать дальше