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

Действующая модель называется "TD4 CPU", является проектом с открытыми исходниками, реально работает и позволяет понять устройство и принцип работы процессора.

▍ История проекта


Автором идеи является Ику Ватанабе, написавший книгу «とりあえず動作するだけの4bitCPU (Toriaezu Dousa-suru-dakeno 4bitCPU)», что означает «4-разрядный процессор, который действует». Книга заинтересовала энтузиастов, которые усовершенствовали схему и плату.



Мной собрана «чёрная» версия 1.3, которая на сегодняшний день является самой новой. Да, вы не ошиблись. Тут нет блокировочных конденсаторов по питанию для каждой микросхемы или группы микросхем.



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

В более старых версиях платы эти конденсаторы были, по одному на каждый корпус. А ещё было гораздо больше светодиодов, индицирующих состояние регистров, выводы двух регистров на внешние устройства и менее удобный ввод информации через PLS-разъем («гребёнку»).



Постоянное запоминающее устройство — ПЗУ (ROM, read-only memory)- во всех версиях процессора выполнено на блоках по восемь микропереключателей.

Раньше возле каждого такого блока имелся свой светодиод, обозначающий текущее значение регистра счётчика команд (PC, program counter). То есть, светодиод показывал, какая команда выполняется в данный момент.

▍ Блок-схема процессора




Процессор TD4 имеет два регистра общего назначения — A и В, а также специальные регистры — вывода (Output) и счётчик команд. Каждый регистр содержит 4 двоичных разряда, то есть, в нём может находиться одно из 16 возможных значений от 0000b = 0 до 1111b = 15.

Если вы новичок в мире цифровой схемотехники и микроконтроллеров, то вам следует запомнить, что здесь всё считается не от единицы, а от нуля. То есть, не от 1 до 16, а от 0 до 15. 16 = 10000b — это уже пятиразрядное двоичное число.

Физически каждый из 4 регистров реализован на КМОП микросхеме SN74HC161N, она же 1564ИЕ10. Это 4-разрядный двоичный счётчик с возможностью синхронной параллельной загрузки информации и асинхронного сброса.



Для регистров A, B и OUT — собственно счётная функция микросхемы в процессоре TD4 перманентно отключена путём соединения входа разрешения счёта — ноги 7 — с землёй схемы. То есть, SN74HC161N используется в качестве счетверённого синхронного D-триггера с асинхронным сбросом. Иными словами, в качестве регистра-защёлки.

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

Входы данных всех четырёх регистров соединены с шиной данных, и тактируются все регистры от общего тактового генератора.



У регистра PC — счётчика команд — входы разрешения счёта и переноса (нога 10) — перманентно установлены в логическую единицу путём подключения к плюсу питания. Запись в этот регистр также возможна: она необходима для осуществления безусловного и условного перехода, то есть ветвления и циклов.

▍ Тактовый генератор


Генератор тактовых импульсов представляет собой самый обычный мультивибратор на микросхеме SN74HC14N, или КР1564ТЛ2. Микросхема содержит 6 инвертирующих триггеров Шмитта. Используются три из них.



Полярность тактовых импульсов инверсная, то есть новый такт наступает при переключении тактовой шины из высокого логического уровня в низкий. Переключателем S130 можно выбрать тактовую частоту — 1 или 10 герц, а при помощи переключателя S132 можно переключиться на ручное тактирование для пошаговой отладки программы.

Фильтр нижних частот, состоящий из резистора R3 и электролитического конденсатора С1, эффективно защищает цепь тактирования от помех и дребезга контактов. Триггер Шмитта U2F служит инвертирующим буфером и формирователем фронта импульса.

▍ Постоянное запоминающее устройство




Контроллером ПЗУ, или памяти программ, у процессора TD4 является микросхема SN74HC154N, она же 1564ИД3. Это двоичный дешифратор-демультиплексор 4x16, декодирующий содержимое регистра счётчика команд и, таким образом, определяющий, какая группа микропереключателей будет считана в данный момент.

Каждая из линий 8-разрядной шины считывания ПЗУ подтянута к плюсу питания резистором сопротивлением 10 килоом. Чтобы перевести каждую такую линию в состояние логического нуля, должны выполниться 2 условия: замкнут соответствующий микропереключатель, и счётчик команд досчитал до числа, соответствующего номеру группы микропереключателей.



Далее считываемые данные поступают на вход инвертирующего буфера-драйвера шины SN74HC540N, он же К1564АП12. Получается, что включённое положение микропереключателя соответствует логической единице на выходе буфера, то есть на шине команд D0-D7.

Слово машинного языка у процессора TD4 8-разрядное. Младший полубайт D0-D3 содержит непосредственные данные, или, что тоже самое, непосредственное значение, то есть 4-разрядное двоичное число, задаваемое при программировании.

▍ Арифметико-логическое устройство


Этот полубайт всегда поступает на входы второго операнда полного четырёхразнядного двоичного сумматора SN74HC283N, он же ЭКР1564ИМ6. Результат суммирования с выхода этой микросхемы поступает на шину данных, то есть на входы данных четырёх регистров — A, B, PC и OUT.



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

На входы первого операнда сумматора могут поступать данные с регистров A, B, IN, либо логические нули. Что именно поступит на вход, определяют два корпуса SN74HC153N, или К1564КП2. Это сдвоенные мультиплексоры с четырьмя входами.



Получается, что при 00b на управляющих входах сумматор получит содержимое регистра A, 01b — B, 10b — IN, 11 — логические нули.



Регистр IN представляет собой группу из 4 микропереключателей. Когда они замкнуты, получаются логические единицы, а когда разомкнуты — нули. Содержимое регистра OUT выводится на светодиоды.

▍ Дешифратор команд


Старший полубайт машинного слова кодирует команду, то есть является кодом операции, или опкодом (opcode). Дешифратор команд собран на строенном трехвходовом логическом элементе 3И-НЕ SN74HC10N (1564ЛА4) и счетверённом двухвходовом элементе 2ИЛИ-НЕ SN74HC32N (1564ЛЛ1).



Биты D4, D6 и D7 поступают на входы логических элементов, отвечающие за выбор регистра, куда будет записываться результат операции, а D5 — на входы B мультиплексоров SN74HC153N.

Логический элемент U11A используется в качестве инвертора, так как на двух его входах присутствует логическая единица с плюса питания, а на третьем входе бит D6.

Рассмотрим, какие регистры выбираются двоичными разрядами D7 и D6.
  • 00: логические нули на обоих входах U10C, и, соответственно, нуль на линии ¬LOAD0. Выбран регистр А. На входах U10D 0 и 1, на выходе 1. На входах U11B 1, 1 и 0, на выходе 1. На двух входах U11C логические нули, на выходе 1.
  • 01: на одном из входов U10C единица, на выходе единица. На U10D то же самое. На всех трёх входах U11B единицы, на выходе нуль. Выбран регистр B. На одном из входов U11C ноль, на выходе высокий уровень.
  • 10: высокий уровень на одном из входов U10C, соответственно, и на выходе. Единицы на обоих входах U10D, на выходе высокий логический уровень. Логические единицы на всех входах U11B, на выходе нуль. Выбран регистр OUT.
  • 11: на входах U10C 1 и 1, на выходе 1. На входах U10D 0 и 1, на выходе 1. На входах U11B 1, 0 и 1, на выходе 1. Выбран регистр PC, но при условии, что с выхода U10A придёт единица. А это произойдёт при логической единице на D4, либо если в предыдущем такте не произошло переполнения сумматора.



Сигнал переполнения сумматора запоминается синхронным D-триггером U1B микросхемы SN74НС74N (К1533ТМ2). Другой триггер U1A не используется.

На языке булевой алгебры логика работы дешифратора команд выглядит так.
¬LOAD0 = D6 | D7
¬LOAD1 = ¬D6 | D7
¬LOAD2 = ¬(¬D6 & D7)
¬LOAD3 = ¬(D6 & D7 & (¬C | D4))
SEL_A = D4 | D7
SEL_B = D5

▍ Машинный язык


Теперь рассмотрим возможные коды операций D7D6D5D4.



  • 0000 — первый операнд для сумматора берётся из регистра А, результат помещается в регистр А. Потому мнемокод операции ADD A, Im. Im (immediate) — это непосредственное значение, которое является вторым операндом и подаётся на входы сумматора с линий D3D2D1D0 всегда.
  • 0001 — операнд для сумматора берётся из регистра А, результат помещается в регистр B. Im должен равняться нулю. Мнемокод MOV A, B. Либо можно произвести операцию A = В + Im.



  • 0010 — источником является регистр IN, приёмником — регистр А. Получается IN A, либо A = IN + Im.
  • 0011 — источником являются логические нули, приёмником — регистр А. Мнемокод MOV A, Im.
  • 0100 — источник А, результат помещается в B. Мнемокод MOV B, A, либо B = A + Im.
  • 0101 — Источник и приёмник — регистр B. Мнемокод ADD B, Im.

Как видим, все операции этого процессора на самом деле являются двоичным сложением, с разными источниками и приёмниками, определяемыми кодом операции.

  • 0110 — источник IN, приёмник B. Получается IN B, либо B = IN + Im.
  • 0111 — источник — логические нули, приёмник B. MOV B, Im.



  • 1000 (не задокументировано автором процессора) — источник B, приёмник OUT. OUT B или OUT = B + LM. Источник не А, потому что младший бит селектора источников берётся с выхода элемента U10B и равен логической единице, если на D4 или D7 высокий уровень Проверено, работает.
  • 1001OUT B или OUT = B + LM.
  • 1010 (незадокументированный автором) — источник нули, приёмник OUT. OUT Im

1011OUT Im.
1100 (незадокументированный автором) — источник В, приёмник PC. JZ B или JZ (B + Im). Условный переход указателя на адрес, хранящийся в регистре B, если флаг переноса не установлен. То есть, в предыдущем такте не было переполнения сумматора.
1101 (незадокументированный автором) — JZ B или JZ (B + Im).
1110 — источник нули, приёмник PC. JZ Im.
1111 — источник нули, приёмник PC. Безусловный переход. JMP Im.

Итак, мы рассмотрели всю схему процессора TD4. Здесь можно скачать файлы проекта, а здесь купить печатную плату, набор с полным комплектом компонентов, либо собранное и протестированное устройство.

▍ Важные замечания


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

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

То есть, 0101 0111, что означает ADD B, 0101b, на блоке переключателей будет выглядеть как 1110 1010. Слева непосредственное значение, справа код операции. Если этого не учесть, вам покажется, что процессор неисправный. (Мне поначалу показалось именно так).

▍ Первые программы


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

0000 ADD B, 1    0101 0001
0001 OUT B       1000 0000 ; опробуем недокументированный опкод
0010 JMP 0       1111 0000

Теперь заменим безусловный переход на условный. Цикл завершится при переполнении сумматора. Далее будем брать число из регистра IN, прибавлять к нему единицу, (снова недокументированная функция), и выводить на светодиодный дисплей, пока не наступит переполнение, то есть, пока не введём 1111.

0000 OUT B        1000 0000
0001 ADD B, 1     0101 0001
0010 JZ 0         1110 0000
0011 IN B         0110 0000
0100 OUT B, 1     1001 0001
0101 JZ 11b       1110 0011
0110 MOV B, 0     0111 0000 ; b = 0
0111 JZ B         1100 0000

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

Всё работает, как ожидалось, в том числе недокументированные функции.

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

Комментарии (49)


  1. Dimsml
    29.06.2023 13:42
    +4

    Ну, чисто технически, если собрать процессор на одной микросхеме 74181 (4-битное АЛУ, можно соединять "паравозиком" для получения 8 или 16 бит, например), то он тоже будет 4-битный компьютер на микросхемах стандартной логики 7400 серии. :)

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

    UPD: Подождите, или всё таки до процессора с одной инструкцией он всё равно не дотягивает, ведь там должна быть вообще одна инструкция, например вычитание, без всяких там переходов не так ли?


    1. strvv
      29.06.2023 13:42
      +2

      вычитание это сложение с обратным кодом, т.е. -А = (инверсия А + 1)
      /s Извините, Ваш КЭП /s
      дополнение, чтобы совсем быть язвой:
      например 5 — 4, 5 это 5, а -4 = 12.
      5 + 12 = 17, т.к. регистр 4 битный, получаем 1.


      1. Dimsml
        29.06.2023 13:42
        +2

        Я просто задумался, если у процессора целый список инструкций вида ADD, MOV, IN, JMP и т.п., то это реально одна инструкция или как?

        И только сейчас до меня дошло, что это мнемоники, а одна инструкция - двоичное сложение (вычитание).


        1. beeruser
          29.06.2023 13:42
          +2

          если у процессора целый список инструкций вида ADD, MOV, IN, JMP и т.п., то это реально одна инструкция или как?

          16 яблок это одно яблоко или как?

          Вам не кажется, что вы сами ответили на свой вопрос?

          То что тут под капотом они работают однообразно через одно и то же ALU, это дело десятое. Практически так же работает ARM1. Есть регистры, ALU+Shift, через который выполняется все операции и вычисления и адресации.

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

          ADD R0,r1,r2 LSL #3

          LDR r0,[r1+r2 LSL #3]

          http://www.visual6502.org/

          что это мнемоники, а одна инструкция - двоичное сложение

          мнемоника это символьное представление команды (инструкции).

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

          Нет, в OISC есть только одна инструкция - действие+условный переход.

          Вы же сами привели ссылку(!)


          1. Dimsml
            29.06.2023 13:42
            +2

            Теперь понятно, спасибо! Я даже изначально посмотрел вот на этот список, но почему-то всё равно до меня не дошло что там везде именно одна инструкция пока вы не обратили на это моё внимание.


  1. Darka
    29.06.2023 13:42
    +11

    Какой хэшрейт Биткоина на нем? SSE3 хотя-бы есть?

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


    1. starfair
      29.06.2023 13:42
      +7

      Угу, а потом вырастают "мужики", которые в случае чего сами кран перекрыть не могут, или прости господи, засверлить бетонную стену под шуруп.
      Мальчик должен уметь работать руками, головой, и уже потом остальными частями тела! Тогда из него вырастет нормальный мужик.


      1. CrashLogger
        29.06.2023 13:42
        +14

        Что-то не помню сверления бетонных стен на уроках труда )


        1. starfair
          29.06.2023 13:42
          +4

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


          1. CrashLogger
            29.06.2023 13:42
            +16

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


          1. Lunathecat Автор
            29.06.2023 13:42
            +3

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


            1. Darka
              29.06.2023 13:42
              +8

              Про что и речь, сейчас актуальна сложная электроника. Паять киты с такими процессорами самое то, по пути объясняя, что это и как работает.


              1. pewpew
                29.06.2023 13:42

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


                1. AlexSpirit
                  29.06.2023 13:42
                  +3

                  Погоди, они скоро ещё каждое утро будут начинать с pledge of allegiance, как это делается в цензура.


                  1. mc2
                    29.06.2023 13:42

                    Так вроде уже обязали еженедельные поднятия флага и гимн России в школах?!


                    1. far-rainbow
                      29.06.2023 13:42
                      +6

                      Вы путаете с США. Только там ежедневное поднятие флага и приспускание в дни траура. А не еженедельные. Как видим, это не мешает выпускать и электронику и прочий хлам с попкорном. Так что го...ноеды выше 100% не в тот корень зрят, если вообще в корень.


                      1. mc2
                        29.06.2023 13:42

                        Прочитайте два комментария выше моего, пожалуйста. Про США и речи не было, в явном виде, но речь шла про РФ.


                1. event1
                  29.06.2023 13:42
                  +4

                  В СССР учили перебирать автомат Калашникова, петь гимн и любить партию. Выросли ли все советские люди зомби-патриотами?

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


              1. far-rainbow
                29.06.2023 13:42
                +3

                Зачем большинству людей что-то паять? Работа руками развивает нервную систему, пространственное воображение, умение оптимизировать действия самостоятельно. Вы, кажется, понятия не имеете о чём пишете... Повторю -- база в школах должна развивать тело и душу, а вот умение паять это должно быть факультативно по желанию ребёнка или его опекунов. Просто потому, что 1) это примитивный навык, если речь идёт о пайке антенного штекера, и слишком сложный, если это пайка уровня доп. кружка любителей электроники, на уроке труда этому точно не место 2) без понимания основ электротехники это впустую потраченное время и 90% людей это точно в жизни не пригодится -- за них паяют специалисты или даже роботы на фабриках


        1. YMA
          29.06.2023 13:42
          +9

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

          У мелкого в школе на технологии изучались сверлильный и токарный станки на примере работы с деревом. Они делали себе подставки под телефон (еще и ошкурили, проолифили и отлакировали).


        1. BeLord
          29.06.2023 13:42
          +3

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


          1. jar_ohty
            29.06.2023 13:42
            +1

            Застал Союз, застал школьные труды. Были у нас великолепные межшкольные мастерские рядом с домом. Со станками - дерево- и металлообрабатывающими и даже там был фрезерный с ЧПУ. Мы же делали черенки для лопат, табуретку, выпиливая сидение и прочие детали ножовкой. Потом эти черенки и табуретки горели на заднем дворе. Станки еам показывали чисто теоретически, нас к ним не подпускали. С ЧПУ было связано одно из заданий "со звездочкой" на информатике: превратить задание для станка в картинку в виде сверху.

            Единственный полезный навык из тех трудов - что покрасив дерево, нужно его прошкурить и покрасить вторым слоем, тогда не будет "ворса".


            1. far-rainbow
              29.06.2023 13:42
              +2

              На уроках труда учат труду прежде всего (планирование, схема, анализ, работа, синтез работ, результат), а не готовят узкоспециализированного болванчика для фабрики по выпуску айфона по низкой часовой ставке, чтобы в 14 лет уже был на все ручонки мастер за плошку риса. Поэтому для профана со стороны это всё выглядит не слишком понятным. Кстати, у нас все эти поделки не горели на заднем дворе, а просто забирались домой. Здесь уже вопросы к вашим учителям, т.к. ритуальное сожжение результата труда не входило в образовательную программу (инфа 100%!)


              1. CrashLogger
                29.06.2023 13:42
                -1

                Вот планированию и анализу на уроках труда точно не учат ) Вот тебе деревяшка, вот ножовка, пили. И на результат обычно пофиг.


                1. Terranz
                  29.06.2023 13:42

                  Не знаю как сейчас, в начале 2000х ещё учили


                1. Arhammon
                  29.06.2023 13:42

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


                  1. sirmax123
                    29.06.2023 13:42
                    +1

                    Молотком из железнодорожного «костыля» (кавычки по тому что не уверен в названии, такой себе гвоздь), что сделал в школе, до сих пор пользуюсь ;)


        1. berng
          29.06.2023 13:42
          +1

          Это обычно на дом задают


      1. Bluewolf
        29.06.2023 13:42
        +1

        2023 год

        мальчик должен
        "нормальный мужик"

        А может, всех детей стоит немножечко учить работать и руками, и головой, и не бояться делать что-то как руками, так и головой?


    1. SIISII
      29.06.2023 13:42
      +1

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


  1. Kotofay
    29.06.2023 13:42

    1. Kotofay
      29.06.2023 13:42

      del


  1. gleb_l
    29.06.2023 13:42
    +4

    Ну прекрасная ведь вещица!


  1. Ghost_D
    29.06.2023 13:42
    +8

    Вау! Прямо прослезился... пару лет назад с приятелем делали такой проект. Плата изготавливалась утюгом (та еще песня!) но все заработало. Причем помню, что я очень хотел заполучить всю книгу в коллекцию, а не обрывочные фото, но так и не смог найти :( Кстати, а где вы заполучили "черную" плату?


    1. Lunathecat Автор
      29.06.2023 13:42
      +2

      Красота! Респект! Черная плата продается тут - https://alii.pub/6q30pp


  1. sim2q
    29.06.2023 13:42
    +4

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

    Потому стандартные для устройств на цифровых микросхемах требования по фильтрации питания применительно к этой поделке неактуальны.

    Это из за непонимания физики процесса.


    1. sepulkary
      29.06.2023 13:42
      +3

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

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


  1. kh0
    29.06.2023 13:42
    +2

    Космически гениально! Очень зайдет такое дарить почти любым айтишникам в виде готово устройства или набора для пайки!
    Технически, несложно сделать ап устройства для чтения с кольцеобразных-перфолент и получится вообще убойно! самим устройством можно не управлять, а для goto просто пропускать N-инструкций!


  1. DrMefistO
    29.06.2023 13:42
    +4

    А лампочки зря убрали дополнительные


  1. kt97679
    29.06.2023 13:42

    Статья подозрительно коррелирует с https://prog.world/operating-processor-on-13-chips-of-standard-logic/ Что первично: русский вариант или английский?


    1. vesper-bot
      29.06.2023 13:42
      +1

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


    1. Lunathecat Автор
      29.06.2023 13:42

      Cайт prog.world успел перевести именно эту статью. Даже с баннером RuVDS.

      И подписи на картинках.

      Умеют люди работать. Или они не люди, а роботы?


  1. danilbal
    29.06.2023 13:42

    У нас в универе на лабах что-то подобное было. Было то лет 25-30 назад, деталей не помню, но развлекались - изучали как работает процессор.


    1. miksoft
      29.06.2023 13:42
      +1

      У нас это был годовой курсовик на 3 курсе. Команд было поменьше, кажется,4 штуки - сложение, условный переход, безусловный переход и еще что-то. И делали не в железе, а в специальной программе для симуляции.


  1. checkpoint
    29.06.2023 13:42
    +1

    Очень странно выбрана система команд. Я бы сделал так: на каждый из двух входов АЛУ поставил бы по двух-входовому 4-х битному мультиплексору (74HCT257N). На один мультиплексор завел бы A и IN (выбор по D4), на второй - B и Im (выбор по D5). Получилась бы следующая система команд:

    ADD r, A, B;

    ADD r, A, Im или MOV r, A если Im = 0 - сохранение аккумулятора, или NOP если r = A и Im = 0;

    ADD r, B, IN;

    ADD r, IN, Im или MOV r, IN если Im = 0 - чтение порта.

    где r - регистр сохранения определяемый битами D7,D6 оригинальной схемы.

    Для тех, кому требуется загрузка непосредственного значения, её тоже можно сделать заменой команды NOP. Для этого потребуется еще один двух-входовый мультиплексор, который устанавливается последовательно после первого мьюкса, и простая схема дешифрации r = A. Суммарное количество микросхем в этом случае, по моим прикидкам, будет на одну больше (плюс один мьюкс).

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


    1. Dovgaluk
      29.06.2023 13:42
      +1

      Ещё побитового отрицания не хватает.


      1. checkpoint
        29.06.2023 13:42
        +1

        Или NAND (NOR).

        Я бы заменил сумматор на нормальный 4-х битный АЛУ (ИП3 или 181N), но для его управления требуется еще минимум пара бит в командном слове. Если командное слово расширить до 10 бит, то можно сделать уже полноценный процессор.


  1. Dovgaluk
    29.06.2023 13:42
    +3

    16 команд - это маловато.

    Вот примеры программ для моего релейного комппьютера: https://dovgalyuk.github.io/Relay/programs.html

    Он чуток помощнее, там что-то влезает. А тут наверное только числа Фибоначчи можно посчитать.

    Хотя может быть что-то типа игры "угадай число" и влезет, если очень постараться.


  1. BigDflz
    29.06.2023 13:42
    +4

    в середине 80-х пришлось ремонтировать импортный станок, когда разобрались что и как оказалось,что его основа однобитный процессор собранный на рассыпухе типа 155 серии...