The Electronics Project
C++

The Electronics Project

Je revisite les concepts de l'électronique et tente de fabriquer un processeur. Un espace de partage de mes travaux. L'objectif est d'apprendre la conception de circuits imprimés et les circuits numériques. Verilog, Arduino, ESP32 et Raspberry Pi.

Le projet d'électronique

Un référentiel d'étude. L'objectif est d'apprendre la conception de circuits imprimés et les circuits numériques. Verilog, Arduino, ESP32 et Raspberry Pi. Je publierai ici mes progrès au fur et à mesure.

L'objectif final est d'imprimer un véritable circuit ou un circuit imprimé.
Pour y parvenir, je commence par acquérir les bases. Les croquis Arduino servent à se familiariser avec les composants physiques : boutons, LED, lecture de signaux, ce genre de choses. La partie Verilog sert à approfondir la compréhension de la logique numérique — comment les éléments de base tels que les registres, les compteurs et la mémoire fonctionnent réellement ensemble.

Le processeur est en cours de fabrication afin que je puisse apprendre de la manière la plus pénible possible comment l'électronique fonctionne au niveau le plus bas.

Parce qu'apparemment, souffrir est bon.

SAP-1 — Simple as Possible Computer (référence) : https://karenok.github.io/SAP-1-Computer/


Structure

arduino/ Expériences matérielles sur Arduino
processor/    Modules Verilog — expériences de logique numérique

Processeur (Verilog)

Construit et simulé à l'aide de Digital. Le schéma complet se trouve dans main.dig.

Module Fichier Description
Additionneur 8 bits adder_8bit.v Additionne deux valeurs de 8 bits avec report d'entrée/sortie
Registre 8 bits register_8bit.v Registre cadencé avec validation d'écriture et réinitialisation synchrone
Compteur de programme program_counter.v Incrémenté à chaque cycle d'horloge, prend en charge l'arrêt et la réinitialisation
Mémoire memory_256x8.v RAM synchrone de 256 octets
Multiplexeur 8-vers-1 mux_8_to_1.v Sélectionne l'une des 8 lignes de données
Compteur 8 bits counter_8bit.v Compte à chaque cycle d'horloge, avec chargement et réinitialisation
Do Once do_once.v Verrou à déclenchement unique — laisse passer un signal exactement une fois

Sketches Arduino

1. Le dispositif marche-arrêt (totalement inutile)

Description :
Un dispositif de commutation basique avec un bouton physique et deux LED (rouge et bleue).

Comportement :

  • À la mise sous tension, la LED rouge s'allume.
  • Appuyer sur le bouton éteint la LED rouge et allume la LED bleue.
  • Relâcher le bouton rétablit l'état initial.

Circuit : bouton sur la broche 9 (INPUT_PULLUP), LED bleue sur la broche 2, LED rouge sur la broche 7.

Mes ancêtres attendaient le moment où ce dispositif serait inventé. Et nous y sommes enfin.

2. Test du bouton

Met une broche à l'état HAUT. C'est tout.

3. Test de lecture

Lit une broche et affiche la valeur sur le port série. Introduction de base.

4. Contrôle de la circulation

Description :
Un feu de signalisation automatique à 3 états. Cycle vert → orange → rouge selon une minuterie. Le bouton interrompt le cycle et force immédiatement le passage au rouge (passage piéton).

Comportement :

  • Vert (état 0) : LED verte allumée pendant 5 s, effectue 2 cycles (10 s au total), puis passe à l'orange.
  • Jaune (état 1) : les LED rouge et verte s'allument (se mélangeant pour former du jaune), le buzzer émet un bip pendant 2 s, puis passe au rouge.
  • Rouge (état 2) : la LED rouge s'allume pendant 5 s, effectue 2 cycles (10 s au total), puis revient au vert.
  • Appui sur le bouton à tout moment : passe directement au rouge avec un rebond de 500 ms.
  • Les appuis sur le bouton sont vérifiés au milieu du délai (responsiveDelay) afin que le signal soit toujours interruptible.

Circuit : bouton sur la broche 9 (INPUT_PULLUP), LED rouge sur la broche 2, LED verte sur la broche 3, LED bleue sur la broche 4, buzzer sur la broche 7.