Le coeur, comme illustré à la figure 2 est composé de quelques registres, d’une unité de calcul, d’un compteur de programme et d’une unité de contrôle. Tous les registres du microprocesseur sont pilotés par l’horloge sclk (comme horloge système, system clock en anglais) et remis à zéro par l’état bas du signal reset_n.

Fig. 2 : Intérieur du processeur
4.1 Le compteur de programme (''PC'')
Le compteur de programme (8 bits) sert à stocker l’adresse de l’instruction courante.
-
Son mode "standard" de fonctionnement est de s’auto-incrémenter lors des phases IF et AF pour aller chercher en séquence les différents octets des instructions à exécuter. L’incrémentation se fait au moyen du signal inc_PC.
- En cas d’instruction de saut, il n’est pas incrémenté, mais directement chargé (lors de la phase AF) avec le contenu du bus de donnée ram_data[7..0], grâce au signal load_PC.
Le signal load_PC est prioritaire par rapport au signal inc_PC.
4.2 La machine à états du contrôleur (CTR)
Cette unité contient la machine à états permettant de gérer les unités du processeur. Elle est donc en charge de séquencer les différents cycles d’une instruction (chargement d’une instruction, chargement de l’opérande, puis exécution) et de générer les signaux de contrôle des différents blocs, sans oublier, bien sûr, le signal ram_write de validation d’écriture en mémoire.
4.3 Les registres de mémorisation
Ce bloc regroupe en fait les quatre registres suivants :
- le registre de sortie pour le buzzer.
- le registre d’accumulation.
- le registre d’instruction
- le registre d’adresse
Tous ces registres fonctionnent de la même façon : la valeur présente à l’entrée du registre xxx est enregistrée sur le front montant de l’horloge, si le signal de validation (load_xxx) est à 1.
4.4 Le multiplexeur d’adresses (MUX_ADDR, en sortie du PC)
Ce multiplexeur permet de choisir qui, de l’adresse "pointeur programme" PC ou de l’adresse de données AD, doit être envoyé sur le bus d’adresse ram_addr de la mémoire. Le choix de l’un ou de l’autre dépend de l’état courant du microprocesseur. De manière générale, lorsque le microprocesseur va chercher une instruction en mémoire, PC est sélectionné, et lorsque le microprocesseur va traiter une donnée en mémoire, AD est sélectionné. Le choix est contrôlé par le signal sel_adr. La table de vérité de cette fonction est :
-
sel_adr
ram_addr
0
PC
1
AD
4.5 L’ALU, ou "unité arithmétique et logique" (UAL)
Ce bloc prend comme opérandes le contenu de l’accumulateur et le bus de donnée de la RAM, et effectue l’opération indiquée par I. Selon le type d’opération:
-
une retenue entrante peut éventuellement être prise en compte (C)
- deux bits sont générés
-
Z qui indique si le résultat de l’opération effectuée est nul
-
C qui indique si une éventuelle retenue sortante est générée.
-