← На главную

Собрал 4-битный TD4 из Aliexpress и нашел ошибку в схеме

18.06.2026 20:44 · hackernews

Автор купил на Aliexpress набор для сборки 4-битного процессора TD4. У него два регистра, немного светодиодов и 16 байт программной памяти (ROM) — очень скромно, но наглядно. Схемы есть на GitHub, но их маловато, так что автор решил написать развёрнутые заметки.

Сборка заняла два вечера. Самое сложное — припаять USB-разъём, его советуют ставить до сокетов микросхем, чтобы не мешал паяльнику. USB тут только для питания. Намучились с мелкими диодами, помог тестер в мультиметре. Всё заработало почти сразу, только питание по USB иногда пропадало.

Как это работает. Программа — 16 DIP-переключателей. Старшие биты — код операции (ADD, MOV, IN, OUT, JNC, JMP), младшие — непосредственное значение. Эти 4 бита всегда подаются на сумматор. Команда MOV A, Im на самом деле складывает Im с нулём и записывает в A.

Адресный декодер (IC11) — демультиплексор, который активирует одну из 16 линий. Сигнал проходит через диоды, если переключатель замкнут. Командный декодер собран на дискретной логике (IC8, IC10) и выдаёт сигналы загрузки регистров и выбора источника данных. Регистры A, B, OUT и счётчик команд PC сделаны на микросхемах-счётчиках, но считать умеет только PC. JMP работает через запись значения прямо в PC.

Интересная деталь — схема переноса: D-триггер хранит бит переполнения от предыдущей операции, чтобы реализовать JNC (переход, если нет переноса). Автор заметил на схеме ошибку — попробуйте найти.

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

Автор запустил несколько простых программ: просто вывести значение на светодиоды, мигание с прыжком назад, счёт вверх и счёт вниз (добавление 15 — это вычитание 1 по модулю 16). Сложнее всего оказалось организовать счёт вверх-вниз. Наделали кучу ошибок: путали JNC и JMP, ставили OUT в недосягаемое место, выполняли OUT после сложения и теряли перенос. В итоге автор понял, что ADD B 1, OUT B — это псевдоинструкция, которую можно сжать в OUT B 1, потому что OUT тоже принимает непосредственное значение.

Ещё автор вместе с Беном набросал симулятор и ассемблер на Python — разбирает команды через regex и match.

Если захочется копнуть глубже, автор советует курс Nand2Tetris (проектирование компьютера с нуля) и компьютер Бена Итера (eater.net/8bit) — он сложнее и дороже, но с кучей материалов. У TD4 нет оперативной памяти, всего 16 бит состояния — это почти конечный автомат. Автор размышляет, какие ещё программы можно на нём написать, и набрасывает идеи про верификацию и моделирование на Verilog.

Читать оригинал →