The Electronics Project
C++

The Electronics Project

Пересмотр концепций электроники и попытка создать процессор. Учебный репозиторий. Цель — изучить проектирование печатных плат и цифровые схемы. Verilog, Arduino, ESP32 и Raspberry Pi.

The Electronics Project

Учебный репозиторий. Цель — изучить проектирование печатных плат и цифровых схем. Verilog, Arduino, ESP32 и Raspberry PI. Буду публиковать здесь свой прогресс по мере продолжения.

Конечная цель — напечатать реальную схему или печатную плату.
Чтобы этого достичь, я сначала прорабатываю основы. Скетчи Arduino предназначены для ознакомления с физическими компонентами: кнопками, светодиодами, чтением сигналов и тому подобным. Сторона Verilog нужна для более глубокого понимания цифровой логики — как на самом деле работают вместе такие базовые строительные блоки, как регистры, счетчики и память.

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

Потому что, видимо, страдания — это хорошо.

SAP-1 — максимально простой компьютер (справочная информация): 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-байтовая синхронная RAM
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.