The Electronics Project
Повторюємо концепції електроніки та спробуємо створити процесор. Репозиторій для навчання. Мета — вивчити дизайн PCB та цифрові схеми. Verilog, Arduino, ESP32 та Raspberry PI.
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.
