The Electronics Project
C++

The Electronics Project

Повторюємо концепції електроніки та спробуємо створити процесор. Репозиторій для навчання. Мета — вивчити дизайн PCB та цифрові схеми. Verilog, Arduino, ESP32 та Raspberry PI.

GitHub|

The Electronics Project

Навчальний репозиторій. Мета — вивчити дизайн друкованих плат (PCB) та цифрові схеми. Verilog, Arduino, ESP32 та Raspberry PI. Я буду публікувати тут свій прогрес по мірі просування.

Кінцева мета — надрукувати справжню схему або друковану плату.
Щоб досягти цього, я спочатку працюю над основами. Скетчі Arduino призначені для ознайомлення з фізичними компонентами: кнопками, світлодіодами, зчитуванням сигналів тощо. Сторона Verilog призначена для глибшого розуміння цифрової логіки — як працюють разом базові будівельні блоки, такі як регістри, лічильники та пам'ять.

Процесор створюється, щоб я міг найболючішим способом навчитися, як електроніка працює на найнижчому рівні.

Бо, очевидно, страждання — це добре.

SAP-1 — Simple as Possible Computer (довідка): https://karenok.github.io/SAP-1-Computer/


Структура

arduino/      Експерименти з фізичним обладнанням на Arduino
processor/    Модулі Verilog — експерименти з цифровою логікою

Процесор (Verilog)

Побудовано та змодельовано за допомогою Digital. Повна схема знаходиться в main.dig.

Модуль Файл Опис
8-бітний суматор adder_8bit.v Додає два 8-бітних значення з переносом вхід/вихід
8-бітний регістр register_8bit.v Регістр з тактовим сигналом, керуванням запису та синхронним скиданням
Лічильник програм program_counter.v Збільшується на кожен такт, підтримує зупинку та скидання
Пам'ять memory_256x8.v Синхронна ОЗП об'ємом 256 байт
8-в-1 Мультиплексор mux_8_to_1.v Вибирає один з 8 ліній даних
8-бітний лічильник counter_8bit.v Збільшується на кожен такт, з можливістю завантаження та скидання
Виконати один раз do_once.v Одноразовий тригер — пропускає сигнал рівно один раз

Скетчі Arduino

1. Пристрій увімкнення-вимкнення (абсолютно марний)

Опис:
Базовий перемикач з фізичною кнопкою та двома світлодіодами (червоним та синім).

Поведінка:

  • При увімкненні загоряється червоний світлодіод.
  • Натискання кнопки вимикає червоний світлодіод і вмикає синій.
  • Відпускання кнопки повертає стан.

Схема: кнопка на піні 9 (INPUT_PULLUP), синій світлодіод на піні 2, червоний світлодіод на піні 7.

Мої предки чекали моменту винаходу цього пристрою. І ось ми нарешті тут.

2. Тест кнопки

Встановлює пін у стан HIGH. Це все.

3. Тест зчитування

Зчитує пін і виводить значення в послідовний порт. Базові вступні речі.

4. Керування світлофором

Опис:
3-становий автоматичний світлофор. Циклічно перемикається зелений → жовтий → червоний за таймером. Кнопка перериває і негайно вмикає червоний (пішохідний перехід).

Поведінка:

  • Зелений (стан 0): зелений світлодіод увімкнений протягом 5 секунд, виконує 2 цикли (всього 10 секунд), потім переходить до жовтого.
  • Жовтий (стан 1): червоний + зелений світлодіоди увімкнені (змішуючись до жовтого), зумер пищить протягом 2 секунд, потім переходить до червоного.
  • Червоний (стан 2): червоний світлодіод увімкнений протягом 5 секунд, виконує 2 цикли (всього 10 секунд), потім повертається до зеленого.
  • Натискання кнопки в будь-який момент: перехід безпосередньо до червоного з 500 мс дебаунсом.
  • Натискання кнопки перевіряються посередині затримки (responsiveDelay), тому сигнал завжди можна перервати.

Схема: кнопка на піні 9 (INPUT_PULLUP), червоний світлодіод на піні 2, зелений світлодіод на піні 3, синій світлодіод на піні 4, зумер на піні 7.