Ceci est une ancienne révision du document !
LOGICIEL LOGICAL EDITOR
SimuLogic — Simulateur logique et micro-contrôleur pédagogique *Lazarus / FreePascal — Octobre 2025*
—
Objectif du projet
SimuLogic est un environnement développé sous Lazarus / FreePascal permettant :
- de construire et simuler des circuits logiques combinatoires et séquentiels ; - de composer progressivement un micro-contrôleur rudimentaire, avec :
- un gestionnaire de bus,
- une mémoire ROM contenant un programme,
- une RAM 8 bits,
- un registre d’instruction (IR),
- un registre accumulateur (A),
- une unité arithmétique et logique (ALU),
- un compteur ordinal (PC),
- un contrôleur / unité de commande capable de décoder les instructions.
L’objectif est un outil pédagogique puissant, simple d'accès, adapté à l’enseignement des systèmes logiques, des microarchitectures et de la programmation bas-niveau.
—
Philosophie du logiciel
1. Le concret d’abord
SimuLogic rend visibles :
- la propagation des bits,
- le rôle des bascules et des fronts d’horloge,
- la circulation des données dans les bus,
- le fonctionnement interne d’un micro-contrôleur.
L’élève observe le système fonctionner étape par étape, ce qui ancre les concepts abstraits dans l’expérience concrète.
2. Une logique unifiée : combinatoire + séquentielle
Le moteur interne repose sur deux passes :
1. Passage séquentiel — traitement des signaux mémorisés (@signal) 2. Passage combinatoire — propagation logique instantanée
Cette architecture clarifie la différence entre mémoire et logique et permet de créer des circuits fiables et pédagogiques.
3. Construire un micro-contrôleur, brique par brique
Chaque composant du micro-contrôleur est représenté par un bloc :
- PC (compteur ordinal)
- IR (registre d’instruction)
- A (accumulateur)
- ALU (arithmétique et logique)
- ROM (programme)
- RAM (mémoire de données)
- BUS (sélection de sources)
- CTRL (décodage d’instruction)
L’utilisateur peut câbler son propre micro-contrôleur et observer son fonctionnement interne, ce qu'un matériel réel ne permet pas de manière aussi transparente.
Construction de circuits
L'utilisateur dispose de nombreux composants :
- portes logiques (AND, OR, XOR, NOT…)
- multiplexeurs
- bascules (RS, JK, D, T)
- compteurs
- bus 4 ou 8 bits
- registres
- RAM et ROM
- afficheurs (LED, 7 segments)
- labels (renommage et routage local)
- notes
Chaque bloc possède :
- des entrées et sorties nommées,
- des équations logiques internes en notation RPN,
- un préfixe automatique évitant les collisions de noms.
Les connexions se font intuitivement par clic, même dans des circuits complexes.
Simulation
- Simulation en temps réel via timer ou en mode pas-à-pas.
- Affichage direct de :
- l’état des bits,
- les valeurs des bus,
- l’état des registres,
- le cycle d'exécution d’une instruction.
La mémoire interne peut être inspectée et figée pour analyser un cycle.
Simulation d’un micro-contrôleur rudimentaire
Pipeline minimal
1. **FETCH** - PC fournit l’adresse - ROM renvoie l’octet d’instruction - IR se charge
2. **DECODE** - Le contrôleur active LOAD_A, ALU_SEL, BUS_SEL, RAM_RW, etc. 3. **EXECUTE** - ALU calcule - Accumulateur ou RAM mis à jour selon l’instruction
Jeu d’instructions typique
- LDA imm : charger une constante
- ADD imm : addition immédiate
- STA addr : stocker A en RAM
- LDA addr : charger depuis la RAM
- JMP addr : saut inconditionnel
L’élève voit littéralement les signaux s’activer et le bus commuter, ce qui concrétise la micro-architecture.
Public visé
- Enseignants en sciences de l’ingénieur (STI2D / SSI) - Étudiants en électronique ou informatique - Makers souhaitant comprendre l’intérieur d’un CPU - Élèves débutants en logique numérique
Pourquoi ce logiciel est unique ?
- Il combine éditeur visuel, simulateur logique, gestion des bus et micro-architecture complète. - Il est basé sur Lazarus/FreePascal : libre, modifiable, pédagogiquement clair. - Il offre une visualisation interne du micro-contrôleur, habituellement invisible. - Sa logique interne simple mais cohérente est idéale pour la formation.
Évolutions possibles
- Breakpoints et debug instruction par instruction - Registres supplémentaires - ALU paramétrable - Jeu d’instructions étendu - Export en VHDL/Verilog - Interaction avec microcontrôleurs réels via liaison série

