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.
