The Electronics Project
Rivisitazione di concetti di elettronica e tentativo di realizzare un processore. Un repository di studio. L'obiettivo è imparare la progettazione di PCB e i circuiti digitali. Verilog, Arduino, ESP32 e Raspberry PI.
The Electronics Project
Un repository di studio. L'obiettivo è imparare la progettazione di PCB e i circuiti digitali. Verilog, Arduino, ESP32 e Raspberry PI. Pubblicherò i miei progressi qui man mano che continuo.
L'obiettivo finale è stampare un circuito reale o un PCB.
Per arrivarci, sto prima studiando le basi. Gli sketch Arduino servono per prendere confidenza con i componenti fisici: pulsanti, LED, lettura di segnali, cose del genere. La parte Verilog serve per comprendere più a fondo la logica digitale — come i mattoncini di base come registri, contatori e memoria lavorano insieme.
Il processore è realizzato per imparare nel modo più doloroso possibile come funziona l'elettronica al livello più basso.
Perché a quanto pare soffrire fa bene.
SAP-1 — Simple as Possible Computer (riferimento): https://karenok.github.io/SAP-1-Computer/
Struttura
arduino/ Esperimenti hardware fisici su Arduino
processor/ Moduli Verilog — esperimenti di logica digitale
Processore (Verilog)
Costruito e simulato usando Digital. Lo schema completo si trova in main.dig.
| Modulo | File | Descrizione |
|---|---|---|
| Sommatore a 8 bit | adder_8bit.v |
Somma due valori a 8 bit con carry in/out |
| Registro a 8 bit | register_8bit.v |
Registro temporizzato con abilitazione scrittura e reset sincrono |
| Contatore di programma | program_counter.v |
Incrementa a ogni tick di clock, supporta stop e reset |
| Memoria | memory_256x8.v |
RAM sincrona da 256 byte |
| Mux 8-a-1 | mux_8_to_1.v |
Seleziona una tra 8 linee dati |
| Contatore a 8 bit | counter_8bit.v |
Conta verso l'alto a ogni clock, con caricamento e reset |
| Do Once | do_once.v |
Latch monostabile — lascia passare un segnale una sola volta |
Sketch Arduino
1. Il dispositivo acceso-spento (completamente inutile)
Descrizione:
Un dispositivo di commutazione base con un pulsante fisico e due LED (rosso e blu).
Comportamento:
- Quando acceso, il LED rosso si accende.
- Premendo il pulsante si spegne il LED rosso e si accende il LED blu.
- Rilasciando il pulsante si torna allo stato precedente.
Circuito: pulsante sul pin 9 (INPUT_PULLUP), LED blu sul pin 2, LED rosso sul pin 7.
I miei antenati hanno aspettato il momento in cui questo dispositivo è stato inventato. Ed eccoci finalmente.
2. Test pulsante
Imposta un pin a HIGH. Tutto qui.
3. Test lettura
Legge un pin e stampa il valore sulla seriale. Roba introduttiva di base.
4. Controllo traffico
Descrizione:
Un semaforo automatico a 3 stati. Cicla verde → giallo → rosso con un timer. Il pulsante interrompe e forza immediatamente il rosso (attraversamento pedonale).
Comportamento:
- Verde (stato 0): LED verde acceso per 5s, esegue 2 cicli (10s totali), poi passa al giallo.
- Giallo (stato 1): LED rosso + verde accesi (miscelati per ottenere il giallo), cicalino suona per 2s, poi passa al rosso.
- Rosso (stato 2): LED rosso acceso per 5s, esegue 2 cicli (10s totali), poi torna al verde.
- Pressione del pulsante in qualsiasi momento: salta direttamente al rosso con debounce di 500ms.
- Le pressioni del pulsante vengono controllate a metà ritardo (
responsiveDelay) in modo che il segnale sia sempre interrompibile.
Circuito: pulsante sul pin 9 (INPUT_PULLUP), LED rosso sul pin 2, LED verde sul pin 3, LED blu sul pin 4, cicalino sul pin 7.
