Conception du processeur Logisim

Partie I
Partie II
Partie III
Partie IV
Partie V

L'un des chapitres du livre «Code» de Charles Petzold est consacré à la conception du CPU et au début du chapitre décrit un appareil qui vous permet de résumer les ensembles de nombres stockés en mémoire. Concevez ce circuit dans Logisim . Prenez un ensemble de nombres à huit chiffres et connectez-le au multiplexeur, nous passerons d'un numéro à un autre à l'aide d'un compteur connecté à l'entrée du sélecteur du multiplexeur, et connecter l'additionneur et la batterie à la sortie du multiplexeur. Nous utiliserons le bouton comme générateur d'horloge. Les données seront chargées dans la batterie lorsque le bouton est relâché (cela se fait en utilisant l'élément NOT connecté au bouton).



Nous stockons les numéros dans la RAM.

La RAM peut être représentée comme un ensemble de registres auxquels on accède à l'aide d'un démultiplexeur et d'un multiplexeur (DMX et MUX).


Supposons qu'un ensemble de nombres soit stocké dans la RAM, et nous devons ajouter tous les nombres et enregistrer le résultat (dans une cellule libre). Nous allons stocker les commandes («ajouter» et «enregistrer») dans une RAM, et les nombres en cours de traitement dans une autre. Cette méthode de stockage est une caractéristique de l'architecture de Harvard .
La commande «1» écrira le numéro de l'additionneur sur la batterie, la commande «2» écrira le numéro de l'accumulateur sur la 2e RAM.

Supposons que dans la RAM, plusieurs tableaux de nombres soient stockés. C'est-à-dire nous avons besoin
  • charger des numéros de la RAM vers la batterie
  • charger les numéros de l'additionneur dans la batterie
  • enregistrer des numéros de la batterie dans la RAM

Nous utiliserons le multiplexeur MUX pour sélectionner les données de la RAM.
La nouvelle instruction «5» fait basculer le multiplexeur MUX le long du front montant du générateur d'horloge et écrit sur la batterie le long du front descendant (en déclin).


Ensuite, nous stockons les instructions et les données dans une RAM. Cette méthode de stockage est une caractéristique de l' architecture von Neumann .
La commande sera stockée dans les quatre premiers chiffres de la cellule mémoire à huit bits, l'adresse sera stockée dans les deux derniers chiffres ( adressage direct ).

Nous chargerons l'adresse et la commande dans des registres séparés, puis utiliserons le multiplexeur pour accéder à l'adresse enregistrée. Pour écrire des données dans la RAM, nous chargerons d'abord les données dans le registre temporaire Temp (sinon les instructions seront écrites dans la RAM, pas dans les données), puis dans la batterie Ass. L'enregistrement des données dans Temp et Ass se fera sur le bord de fuite.

Nous allons ajouter, par exemple, les numéros 2 et 3, qui se trouvent dans les cellules 8 et 9, et enregistrer le résultat dans une cellule avec l'adresse a.


Nous ajoutons également la possibilité de faire des sauts inconditionnels.
Nous implémentons un périphérique dans lequel une seule commande sera exécutée - la commande de saut inconditionnel. Pour ce faire, nous enverrons les quatre bits les moins significatifs (adresse, en fait) au compteur générant l'adresse, et nous enverrons la commande stockée dans les bits hauts de la cellule mémoire au port de téléchargement.
Par exemple, pour accéder à une cellule avec l'adresse 2, utilisez la commande 82.


Ajoutez une commande pour passer inconditionnellement au schéma précédent.


En général, à l'époque des geek, il y avait déjà un article consacré à la conception de CPU dans Logisim.

Tous les schémas présentés ci-dessus peuvent être téléchargés dans un seul fichier .
Logisim peut être téléchargé ici .

Considérez comment l'additionneur fonctionne sur l'exemple d'une puce 155im3 (7483). Pour les microcircuits de la 155e série, nous convenons que les entrées ont une résistance interne qui tire vers le haut (si la jambe "pend dans l'air", alors il y a un "un" logique dessus), donc, lorsque l'alimentation est connectée au microcircuit, toutes les LED connectées à la sortie s'allument .

La photo montre le MS 74ls283 (un analogue moderne de 155im3).

Pour concevoir une telle puce dans Logisim, vous devez sélectionner "Menu" - "Projet" - "Ajouter un schéma".

Voici à quoi ressemble cette MS à l'intérieur d'un sous-circuit. Ce sont quatre demi- additionneurs combinés en un additionneur complet.

image


En tant que batterie, nous utiliserons la puce 155tm8 (74175) - un quadruple déclencheur D.

Les déclencheurs qui font partie de la MS passent tout le temps jusqu'à ce qu'il y ait 1 sur l'entrée de synchronisation, et pas seulement sur le bord (déclencheurs avec contrôle statique), mais dans le programme Logisim, nous n'avons que des déclencheurs avec contrôle dynamique, mais dans ce cas, cela n'a pas d'importance ; nous utiliserons ce qui est.

Vous pouvez en savoir plus sur les déclencheurs sur Wikipedia.

Assemblons le modèle MS 155tm8 à partir des tongs en D.

image

Ensuite, nous collectons un schéma qui vous permet d'ajouter des ensembles de nombres.

Par exemple, si vous ajoutez un ensemble de nombres 2 (0010), nous obtenons 2 (0010), 4 (0100), 6 (0110), etc.

image


image

Les 2 premiers apparaissent à la sortie de l'additionneur (LED rouges), puis 2 est chargé dans la bascule quadruple D (LED jaunes), et 4 apparaît à la sortie de l'additionneur, puis 4 est chargé à 155 tm8, et 6 apparaît à la sortie de l'additionneur, etc.

Pour concevoir un module de mémoire simple, nous avons besoin d'un multiplexeur. Nous concevons un multiplexeur double 155kp2.
image

Nous avons également besoin d'un comptoir. Nous concevrons la puce 155ie5.

Il s'agit d'un compteur à quatre chiffres, mais nous n'avons besoin que des deux bits les moins significatifs.
Nous allons stocker des nombres, par exemple, 2 (0010), 3 (0011), 5 (0101).
image




Combinez tous les composants dans un seul circuit. Nous allons ajouter les numéros qui sont stockés dans la "mémoire"
2 + 3 + 5.


Logisim peut être téléchargé ici .

Article PS sur le livre «Code. Langage secret de l'informatique. " est sur Habré ici .
Z.Y. Articles traduits (traduction par PatientZero ) sur l'architecture du processeur ici , ici et ici

Source: https://habr.com/ru/post/fr406157/


All Articles