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.
