0% ont trouvé ce document utile (0 vote)
58 vues14 pages

Tuto Logisim

Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
58 vues14 pages

Tuto Logisim

Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Laboratoire de systèmes logiques

semestre automne 2023 - 2024

Introduction à l’utilisation de Logisim

Auteurs : A. Lescourt, Prof F. Vannel, Prof. A. Upegui


Modifications : Y. Saugy, S. Krieg, A. Convers, S. Masle, B. Cuneo

1 Introduction

Logisim est un logiciel open-source premettant de concevoir et de simuler des circuits logiques 1 .
Ce document est un tutoriel qui décrit comment établir un système numérique à l’aide de cet éditeur
de schéma. Nous expliquerons les démarches nécessaires afin de concevoir, simuler et implémenter
un projet sur une carte Altera MAX_V.
Il existe différentes façons de décrire formellement les systèmes numériques : des langages de des-
cription du matériel (HDL), des tables de vérité, des graphes d’états, ou des schémas. Logisim permet
uniquement de travailler sur des schémas. Le premier chapitre expliquera comment réaliser un pre-
mier schéma. Vous pouvez voir l’interface de Logisim sur la Figure 1.

F IGURE 1 – Interface de Logisim

1. La dernière version de Logisim peut être téléchargée à l’adresse [Link]


logisim-evolution/[Link]. Logisim contient un mécanisme d’auto-update : dès qu’une nou-
velle version sort, vous recevrez une notification au démarrage et vous aurez la possibilité de le mettre à jour.

1
Une des particularités de Logisim est de pouvoir éditer et simuler un circuit en même temps. Nous
expliquerons plus tard dans ce document comment simuler un circuit, puis comment l’implémenter
sur la carte du laboratoire.
A l’ouverture de Logisim, une fenêtre demande l’introduction du nom d’utilisateur - voir Figure 2.
Il sera inscrit dans chaque composant créé, afin d’empêcher le plagiat.

F IGURE 2 – Fenêtre de login

Lors de la première utilisation, il faut ajouter un utilisateur comme en Figure 3 :


1. Cliquez sur Change user.
2. Introduisez votre prénom et votre nom dans la case Add new user, sous la même forme que
votre login HEIG-VD, sans caractères spéciaux, séparé par un _.
3. Cliquez sur Add.
4. Cliquez sur Close.
5. Cliquez sur Accept conditions.

F IGURE 3 – Ajout d’un utilisateur

La liste des utilisateurs est enregistrée sur la machine. Pour les utilisations ultérieures, il suffit de
cliquer sur Accept conditions pour sélectionner l’utilisateur actif ou de le sélectionner dans la
liste.

2 Mode édition

1. Pour utiliser le mode édition, il faut simplement sélectionner la flèche comme indiqué en haut
de la Figure 1.
2. Nous pouvons alors choisir un composant dans la bibliothèque sur la gauche. Pour l’ajouter
dans son schéma, il suffit de cliquer sur le composant désiré, puis de cliquer sur le schéma.

2
3. Chaque composant que vous utiliserez aura des attributs modifiables dans la zone inférieure
gauche de Logisim. Par exemple, si nous posons une porte AND, nous pouvons modifier le
nombre de signaux d’entrée, ou encore mettre un inverseur sur une des entrées.
4. Il est aussi possible de faire des copier/coller d’un ou plusieurs composants. Dans ce cas, les
composants conserveront aussi tous les attributs préalablement définis.
5. Voici un descriptif des éléments dont vous allez avoir besoin pour ce tutoriel :
— Pour les entrées, l’élément Pin de Wiring.
— Pour les sorties, l’élément Pin de Wiring avec l’attribut output?=yes.
— Les portes logiques sont présentes dans le répertoire Gates.
— Le Splitter de Wiring.
— Le Clock de Wiring.
6. Une fois tous les composants posés, il faut alors les connecter. Pour cela, il suffit de placer le
curseur de la souris sur l’un des ports à connecter et, en gardant pressé le bouton gauche de la
souris, le déplacer jusqu’au port de destination.

3 Création d’un premier circuit

Tous les circuits réalisés dans Logisim peuvent être réutilisés dans d’autres circuits. Afin de créer un
nouveau circuit, il faut aller dans Project->Add circuit...->nommer le circuit. Le circuit créé
devient alors un composant disponible dans la bibliothèque.

3.1 Add1bit

Réalisez le schéma en Figure 4 et nommez le Add1bit. Remarques :


— Le circuit en cours d’édition est celui qui comporte une petite loupe en dessous du nom du
projet.
— Ne pas prendre en compte la couleur des fils ni la valeur des Pin d’entrée (par défaut un X
bleu).
— Vous pouvez changer l’orientation des composants en modifiant l’attribut Facing.

F IGURE 4 – Additionneur 1 bit

3
4 Mode simulation

Logisim est capable de simuler un circuit en affichant les valeurs des signaux directement sur le
schéma. L’utilisateur peut alors définir les valeurs des bits en entrée et observer le comportement du
design.
1. Pour utiliser le mode simulation, il faut sélectionner la main en haut à gauche de Logisim (cf
Figure 1).
2. Il est alors possible de contrôler l’état des différentes entrées en cliquant directement dessus. Le
X bleu des Pin d’entrées représente l’état haute impédance. Dans ce laboratoire, nous travaille-
rons uniquement avec des états haut ou bas. Pour supprimer cet état de haute impédance, il
faut modifier les attributs de ces Pin de façon à ce que la ligne Three-State soit égale à No.
3. En cliquant sur une entrée, la valeur doit alterner entre 0 et 1.
4. Voici un descriptif des couleurs utilisées pour les signaux en mode simulation.

F IGURE 5 – Couleurs des fils en simulation

— Gris : La taille du fil est inconnue. Le fil n’est relié à aucune entrée ou sortie.
— Bleu : Le fil a une valeur, cependant elle est inconnue.
— Vert foncé : Le fil a la valeur 0 (niveau logique bas).
— Vert clair : Le fil a la valeur 1 (niveau logique haut).
— Noir : Le fil comporte plusieurs bits (BUS).
— Rouge : Le fil comporte une erreur.
— Orange : Les composants reliés au fil n’ont pas la bonne taille.
5. Testez le bon fonctionnement de votre additionneur 1 bit.

4
5 Design hiérarchique

La méthodologie de design que nous venons d’utiliser est valable pour la conception de systèmes nu-
mériques relativement simples, c’est-à-dire avec un nombre de portes logiques plutôt faible. Lorsque
nous visons des systèmes plus complexes, le risque est de voir le nombre de portes et de connexions
augmenter rapidement. Dans ce cas, le risque d’introduire des erreurs devient très important.
La clé pour gérer correctement une complexité plus grande est d’utiliser le design hiérarchique. Grâce
à celui-ci, nous pouvons travailler à différents niveaux d’abstraction. D’abord nous décrivons des
blocs de base à l’aide des portes logiques, pour ensuite les utiliser comme parties d’un système plus
large. Dans le cas de notre additionneur 4 bits, l’utilisation de quatre additionneurs 1 bit sera néces-
saire. Ce nouveau bloc pourra aussi être utilisé dans d’autres systèmes plus grands.
Pour créer un design hiérarchique, en incluant l’additionneur 1 bit que nous avons déjà conçu, il
faudra suivre les étapes suivantes :

1. Créez un nouveau circuit comme déjà expliqué dans la section 3 et nommez le Add4bits. Pour
passer de l’édition d’un circuit à l’autre, il suffit de double-cliquer sur le nom de celui désiré
dans le menu de gauche.
2. Il est alors possible d’ajouter un sous circuit Add1bit de la même manière que l’utilisation d’un
composant quelconque. Il suffit de cliquer sur Add1bit dans le menu indiqué sur la Figure 6,
puis de le placer en cliquant sur le circuit.
3. Si le circuit Add1Bit a été créé correctement, alors il devrait être représenté par un petit bloc,
avec sur sa gauche trois points bleus correspondant aux entrées et deux points verts sur sa
droite correspondant aux sorties.

F IGURE 6 – Sous circuit

4. Si les sorties apparaissent en bleu et non en vert sur le schéma, vérifiez que l’attribut output?=yes
est bien affecté dans les pins de sorties.

5
5. Pour l’implémentation de l’additionneur 4 bits, 4 additionneurs 1 bit sont nécessaires, il faut
donc compléter le schéma en incluant les ports d’entrée et de sortie. Les différences entre les
circuits pour les additionneurs 1 et 4 bits, sont les entrées et les sorties et plus précisément leurs
tailles, l’un avec des fils et l’autre avec des bus. Par exemple, pour définir l’entrée A comme un
bus de 4 bits, il faut ajouter un élément pin et définir sa taille via l’attribut Data bits = 4.
6. Lorsque nous tirons un fil de l’une de ces entrées, ce n’est plus un simple signal mais un bus de
4 bits. Pour pouvoir connecter les éléments de ce bus aux entrées des additionneurs 1 bit, nous
allons devoir séparer les différents fils du bus afin de pouvoir les traiter un par un. L’élément
splitter de wiring permet d’effectuer ces conversions dans les deux sens : d’un bus de 4
bits vers 4 fils, et de 4 fils vers un bus de 4 bits - voir Figure 7.

F IGURE 7 – Exemples splitters

Il faut définir les tailles d’entrées et de sorties du splitter via les attributs Fan out (nombre
de "branches" du splitter) et Bit Width In (nombre de bits du splitter). Dans notre
cas nous définissons les deux valeurs à 4.
Note : Le bit de poids faible est indexé à 0 en sortie du splitter.

6
6 Additionneur 4 bits

Réalisez l’additionneur 4 bits en Figure 8, puis vérifiez son bon fonctionnement en simulation. Afin
de faciliter la lecture des valeurs d’entrée/sortie, il est possible de changer le radix (binaire / octal /
décimal) dans les options de la pin.

F IGURE 8 – Additionneur 4 bits

7
7 Programmation de la carte MAX_V avec la console

Logisim permet de programmer directement la carte MAX_V. Il faudra alors associer les Pin en
entrées à des boutons, et ceux des sorties à des LEDs.
La partie programmation ne peut se faire qu’avec les ordinateurs mis à votre disposition dans les
salles de laboratoire. Même avec Logisim installé sur votre ordinateur personnel, il est impossible de
programmer une carte, car des drivers spécifiques sont nécessaires.

7.1 Connexion

La carte MAX_V et la console doivent être alimentées avec une alimentation de 5 volts. La program-
mation de la carte MAX_V s’effectue via le module USB-Blaster. Les éléments doivent être branchés
comme sur la Figure 9.
Matériel nécessaire :
— Carte MAX_V,
— Console,
— Carte d’interface de la console,
— Câble de liaison interface-MAX_V (facultatif),
— Module USB-Blaster,
— Câble USB
— Câbles d’alimentation

F IGURE 9 – Connexion de la carte MAX_V avec la console

8
7.2 Configuration
1. Afin de pouvoir programmer la carte, il est nécessaire de nommer chaque entrée/sortie en lui
affectant l’attribut Label (par défaut, un double clic sur un élément donne accès à cet attribut).
Nous utiliserons les termes A, B et D respectivement pour les deux bus d’entrées et le bus de
sorties. Les retenues seront nommées C_in et C_out.
Il faut aussi annoter tous les composants avec des identifiants uniques. Les quatre addition-
neurs 1 bit auront alors pour label add1bit_X où X est un numéro unique. Pour annoter un
composant, il suffit de double cliquer dessus, puis de saisir le nom désiré.
2. Nous pouvons ensuite ouvrir l’interface de programmation via FPGAMenu -> FPGA Commander
comme sur la Figure 10.

F IGURE 10 – FPGA Commander

3. Plusieurs paramètres doivent alors être définis :


— Choose main circuit : Le circuit top level que nous voulons programmer. Dans notre cas,
Add4bits.
— Choose target board : La carte que nous allons utiliser. Il faut choisir la carte du laboratoire
MAX_V_CONSOLE.
— Toolpath : Il faut s’assurer qu’il pointe vers /opt/EDA/altera/13.0/quartus/bin.
— Workspace : Il doit être défini vers /home/reds/logisim_workspace.
— Les autres paramètres doivent être laissés à leur valeur par défaut
4. Afin de programmer la carte MAX_V_CONSOLE, Logisim va tout d’abord générer plusieurs
fichiers .vhd. Il faut pour cela cliquer sur le bouton Annotate, puis sur le bouton Download.
Tous les fichiers générés sont affichés dans l’onglet Infos du FPGA Commander.
5. Il faut ensuite associer les entrées / sorties de l’additionneur aux boutons et aux LEDs de la
carte comme sur la Figure 11 et la Figure 12.

9
F IGURE 11 – Console Board Mapping

6. Toutes les entrées/sorties que nous avons définies sont visibles dans la zone Unmapped components
list. Si nous voulons par exemple mettre le bit 0 de l’entrée A sur l’interrupteur tout en bas à
droite de la carte, il faut sélectionner PIN: /A<0>, puis cliquer sur l’interrupteur dans l’image.
Si le mapping est possible, lorsque nous passons le curseur sur l’interrupteur, ce dernier de-
vient rouge. Pour les pins C_in et C_out, il faut double-cliquer sur la ligne pour passer du
type pin_in/out au type switch/led.
7. Placez les éléments de la manière suivante cf Figure 12 :
— Les 4 bits de l’entrée A sur les 4 premiers switches (S0 à S3).
— Les 4 bits de l’entrée B sur les 4 switches suivants (S4 à S7).
— L’entrée C_in sur le bouton-poussoir (SW1).
— Les 4 bits de la sortie D sur les 4 premières LEDs (L0 à L3).
— La sortie C_out sur la LED L7.
Une fois que toutes les entrées et sorties ont été définies, cliquez sur Done.

F IGURE 12 – Position des entrées/sorties

10
8. Après la compilation, une fenêtre apparaît pour demander à l’utilisateur si la carte est bran-
chée. Branchez le connecteur USB du programmeur JTAG au PC et le connecteur JTAG à la
carte. Allumez l’alimentation 5V puis cliquez sur Yes, download. Une fois le téléchargement
terminé, l’onglet Errors de la fenêtre FPGA Commander indique si il y a eu des erreurs.

8 Chronogramme

En plus de pouvoir simuler en temps réel un schéma logique, Logisim peut représenter cette simu-
lation sous la forme d’un chronogramme. Si cette visualisation est peu utilisée pour des systèmes
purement combinatoires, elle est très pratique dans le cas des systèmes logiques séquentiels (utilisa-
tion d’horloges, ex : compteur, registres. . .). Afin de vérifier le fonctionnement de l’additionneur en
fonction du temps, il faut ajouter un compteur au circuit.

1. Créez un nouveau circuit dans le projet.


2. Insérez votre additionneur 4 bits dans le nouveau circuit.
3. Ajoutez un compteur (le compteur se trouve dans les composants de la section Memory. Editez
le paramètre Data bits, et fixez sa valeur à 9).
4. Câblez le compteur et l’additionneur comme indiqué sur l’image suivante(les constantes se
trouvent dans Wiring).

Le circuit final doit ressembler à celui en figure 13.

F IGURE 13 – Ajout compteur

8.1 Configuration du Chronogramme

Pour pouvoir afficher le chronogramme, il faut définir une fréquence d’échantillonnage qui indi-
quera au système le moment où il doit afficher les valeurs de chaque signal. Cette fréquence doit être
définie par une horloge d’échantillonnage ajoutée au circuit simulé, qui ne doit être reliée à aucun
composant.

8.1.1 Horloge d’échantillonnage

Voici les étapes pour créer l’horloge d’échantillonnage :


— Allez dans la liste de composants, sélectionnez Wiring -> clock et ajoutez le au schéma.

11
— Allez dans les attributs de cette horloge et nommez la sysclk (Attribut Label).
— Assurez vous que les attributs High Duration et Low Duration sont bien définis à un coup
d’horloge.
— Ne reliez cette horloge à aucun composant !
— Pour définir la fréquence de cette horloge : Simulate -> Tick Frequency, prendre par
exemple 4Hz.

8.1.2 Ajout d’une horloge interne

Placez une nouvelle horloge nommée clk. Logisim nécessite le nom clk pour le chonogramme, un
autre nom ne convient pas. L’horloge interne de votre système doit être plus lente que sysclk. Elle
s’ajoute del a même façon que l’horloge d’échantillonnage : Wiring -> clock. Usuellement, nous
nommons l’horloge d’un système clk.
Le chronogramme va rechercher l’horloge dans le main circuit. Pour changer votre circuit en main
circuit, il faut effectuer un clic droit sur votre composant (dans la liste des composants de la colonne
de gauche) puis sélectionner Set As Main Circuit. Pour définir sa fréquence, il faudra modi-
fier ses attributs afin de définir combien de ticks cette horloge a besoin avant de changer d’état.
Par exemple, si vous avez choisi une fréquence d’échantillonnage de 4Hz, mettez les attributs High
duration et Low duration de votre horloge à 4 ticks. Votre horloge changera alors d’état une fois
par seconde.

8.1.3 Sélection des signaux

Il faut ensuite définir quels signaux nous voulons afficher dans le chronogramme, comme en Fi-
gure 14.

F IGURE 14 – Sélection des signaux

— Ouvrez le menu Simulate puis sélectionnez Chronogram. La liste des signaux disponibles
apparait.
— Sélectionnez les signaux que vous voulez et cliquez sur Add »

12
— Il est indispensable que l’horloge d’échantillonnage sysclk soit aussi ajoutée.

Il est possible (mais pas indispensable) d’afficher une base de temps, selon la fréquence d’un signal
d’horloge. Il faut cocher la case Enable time selection, puis choisir l’horloge de votre système
ainsi que sa fréquence.
Démarrez le chronogramme via le bouton Start Chronogram, puis organiser les fenêtres afin
d’être capable de voir à la fois le schéma et le chronogramme. Le chronogramme final doit ressembler
à celui en Figure 15.

F IGURE 15 – Chronogramme

8.2 Utilisation du chronogramme

A chaque changement d’état de l’horloge sysclk, le chronogramme se mettra à jour.


Il est aussi possible de démarrer et d’arrêter l’horloge : Simulate -> Ticks Enabled (Raccourci :
Ctrl+k). La touche F2 permet d’avancer en mode pas à pas.
Contrôles du chronogramme :
— Valeur à l’instant t : En cliquant sur un signal dans la partie droite du chronogramme, la valeur
des données à cet instant sera affichée à coté du nom du signal.
— Utilisez la molette sur le chronogramme pour zoomer/dézoomer (focus sur la zone sélection-
née).
— Click droit sur un bus ->Format pour changer son format d’affichage.
— Click droit sur un bus ->Expand pour afficher chaque signal composant le bus.

8.2.1 Sauvegarde et chargement

Une fois la simulation terminée, vous pouvez exporter ce chronogramme dans un logFile via le bou-
ton Export. Créez un fichier .txt ou .log à l’emplacement souhaité.
Le chargement d’un de ces chronogrammes se fait via le bouton Load File. Dans ce cas, le chro-
nogramme ne prend plus en compte les signaux du schéma courant. Il affiche simplement l’état des
signaux tels qu’ils étaient lors de l’exportation. Par ailleurs, si vous voulez utiliser le chronogramme
uniquement pour visualiser un fichier préalablement exporté, il faut simplement lancer le chrono-
gramme avant de charger le fichier : (Simulate -> Chronogram -> Start Chronogram ->
Load file).

9 Liens utiles

Logisim est un logiciel open-source. C’est à dire que les sources sont accessibles par tout le monde.

13
1. Le dépôt git est accessible à l’addresse :
2. [Link]
3. Une FAQ est accessible dans le wiki du dépôt
4. [Link]

14

Vous aimerez peut-être aussi