The Electronics Project
C++

The Electronics Project

Ponowne odwiedzanie koncepcji elektroniki i próba zrobienia procesora. Repozytorium do nauki. Celem jest nauka projektowania PCB i układów cyfrowych. Verilog, Arduino, ESP32 i Raspberry PI.

Projekt Elektroniczny

Repozytorium do nauki. Celem jest poznanie projektowania PCB i układów cyfrowych. Verilog, Arduino, ESP32 i Raspberry PI. Będę tutaj publikować swoje postępy w miarę kontynuacji.

Ostatecznym celem jest wydrukowanie rzeczywistego obwodu lub PCB.
Aby to osiągnąć, najpierw przerabiam podstawy. Szkice Arduino służą do oswojenia się z elementami fizycznymi: przyciskami, diodami LED, odczytywaniem sygnałów – tego typu rzeczy. Strona Veriloga służy do głębszego zrozumienia logiki cyfrowej – jak podstawowe bloki, takie jak rejestry, liczniki i pamięć, faktycznie ze sobą współpracują.

Procesor jest tworzony po to, abym mógł w najbardziej bolesny możliwy sposób nauczyć się, jak elektronika działa na najniższym poziomie.

Bo najwyraźniej cierpienie jest dobre.

SAP-1 — Komputer tak prosty, jak to możliwe (odnośnik): https://karenok.github.io/SAP-1-Computer/


Struktura

arduino/      Eksperymenty ze sprzętem fizycznym na Arduino
processor/    Moduły Verilog — eksperymenty z logiką cyfrową

Procesor (Verilog)

Zbudowany i symulowany przy użyciu Digital. Pełny schemat znajduje się w pliku main.dig.

Moduł Plik Opis
8-bitowy sumator adder_8bit.v Dodaje dwie 8-bitowe wartości z przeniesieniem wejściowym/wyjściowym
8-bitowy rejestr register_8bit.v Rejestr taktowany z możliwością zapisu i synchronicznym resetem
Licznik rozkazów program_counter.v Zwiększa się z każdym cyklem zegara, obsługuje zatrzymanie i reset
Pamięć memory_256x8.v 256-bajtowa synchroniczna pamięć RAM
Multiplekser 8-do-1 mux_8_to_1.v Wybiera jedną z 8 linii danych
8-bitowy licznik counter_8bit.v Zlicza w górę przy każdym cyklu zegara, z możliwością ładowania i resetu
Wykonaj raz do_once.v Przerzutnik jednorazowy – przepuszcza sygnał dokładnie raz

Szkice Arduino

1. Urządzenie włącz-wyłącz (całkowicie bezużyteczne)

Opis:
Podstawowe urządzenie przełączające z fizycznym przyciskiem i dwiema diodami LED (czerwoną i niebieską).

Zachowanie:

  • Po włączeniu zasilania świeci się czerwona dioda LED.
  • Naciśnięcie przycisku wyłącza czerwoną diodę LED i włącza niebieską.
  • Puszczenie przycisku przywraca poprzedni stan.

Obwód: przycisk na pinie 9 (INPUT_PULLUP), niebieska dioda LED na pinie 2, czerwona dioda LED na pinie 7.

Moi przodkowie czekali na moment wynalezienia tego urządzenia. I oto wreszcie jesteśmy.

2. Test przycisku

Ustawia pin w stan HIGH. I to wszystko.

3. Test odczytu

Odczytuje pin i wypisuje wartość na port szeregowy. Podstawowe rzeczy na początek.

4. Sterowanie ruchem

Opis:
Automatyczna sygnalizacja świetlna z 3 stanami. Cykl zielony → żółty → czerwony na czasomierzu. Przycisk przerywa cykl i natychmiast wymusza czerwony (przejście dla pieszych).

Zachowanie:

  • Zielony (stan 0): zielona dioda LED włączona przez 5s, wykonuje 2 cykle (łącznie 10s), następnie przechodzi do żółtego.
  • Żółty (stan 1): czerwona + zielona diody LED włączone (mieszanie daje żółty), brzęczyk piszczy przez 2s, następnie przechodzi do czerwonego.
  • Czerwony (stan 2): czerwona dioda LED włączona przez 5s, wykonuje 2 cykle (łącznie 10s), następnie wraca do zielonego.
  • Naciśnięcie przycisku w dowolnym momencie: przeskakuje bezpośrednio do czerwonego z 500ms zwłoką antyodbiciową.
  • Naciśnięcia przycisków są sprawdzane w trakcie opóźnienia (responsiveDelay), dzięki czemu sygnał jest zawsze przerywalny.

Obwód: przycisk na pinie 9 (INPUT_PULLUP), czerwona dioda LED na pinie 2, zielona dioda LED na pinie 3, niebieska dioda LED na pinie 4, brzęczyk na pinie 7.