Vous êtes sur la page 1sur 4

Classe 

: 3LAUT

Module : TP Microprocesseur et Microcontrôleur


Durée : 2 h40
Professeur : Mohamed Bougrine

TP № 1
Modélisation et Simulation d’une Mémoire sous Matlab/Simulink

Objectifs du TP
L’étudiant se familiarise avec le fonctionnement d’une mémoire à microprocesseur en modélisant son

comportement sous forme d’un système dynamique discret.

I. Presentation 

La figure ci-dessous présente un boitier mémoire ayant un bus d’adresse de 13 bits et un bus de donnée
de 8 bits, sois une capacité de stockage valant213=8 Ko . De plus, ce boitier possède 3 entrées de
´ , RD
commande CS ´ et WR
´ .

Figure 1 : Schéma bloc d’une mémoire 8Ko

La première est une entrée de sélection « Chip Select » qui doit être en état « 0 » logique pour que le
boitier soit sélectionné, dans le cas contraire le bus de sortie (données) du boitier est en état « haute
impédance », disons déconnectée du bus. Les deux autres entrées de commande sont deux bits de lecture
et d’écriture dont le fonctionnement est expliqué par les chronogrammes suivants (figure 2).

Page 1
a) Chronogramme de lecture b) Chronogrammed’écriture

Figure 2 : Chronogrammes de lecture et d’écriture d’une mémoire

II. Modèle d’une mémoire à un seul mot

Pour simplifier l’étude, nous considérons dans un premier temps une mémoire composée d’un seul mot (1
octet) pouvant être soit lu soit écrit via un bus de données, et puisque cette mémoire ne contient qu’un
seul mot, elle est donc dépourvue du bus d'adresse qui dans ce cas ne sert à rien (Figure 3).

Donnée posée de l’extérieur (écriture) Donnée posée par la mémoire (lecture)

Un mot de 8 bits

Figure 3 : Schéma simplifié d’une mémoire à un seul mot

1) Ouvrir un nouveau fichier simulink, séléctionner un bloc « Matlab Function » et éditer son corps
pour comprendre 3 entrées RDbar,WRbar et Csbar de type booléen,une entrée Din de type uint8et
une seule sortie Dout de type uint8. De plus, créer une variable interne M persistante qui prend un
mot de type uint8 qui est le mot stocké dans la mémoire. (utiliser « help persistent » pour savoir s’en
servir)

2) Esquisser un organigramme qui permet de détecter un front descendant sur RDbar ou WRbar et d’y
réagir selon les chronogrammes de lecture et d’écriture tout en considérant les points suivants :

a- Si CSbar est 1, écrire directement la valeur Nan sur Dout quelles que soient les autres entrées,
(Nous désignons par Nan un état haute impédance).

Page 2
b- Si Din = Nan alors on va attendre un front descendant sur RDbar, car si Din est à haute
impédance alors on compte surement lire une donnée.

c- Si Din est différente de Nan alors on va attendre un front descendant sur WRbar, car si Din est
significatif alors on veut surement l’écrire.

d- Si une opération de lecture est détectée alors nous l’exécuterons par Dout = M ;

e- Si une opération d’écriture est détectée alors nous l’exécuterons par M = Din et Dout = Nan ;

3) Traduire l’organigramme en code matlab dans le corps de la fonction créée (initialiser la variable M à
0)

4) Sélectionner le mode de simulation « discrete » dans les paramètres et tester le code en écrivant la
valeur F3h dans la case mémoire, puis la relire. (utiliser des relais interactifs)

III. Modèle de la mémoire complète

1) Cette fois la variable Mest un vecteur de dimension 13*1024 initialisé à 0. Introduire une nouvelle
entrée A de type uint16 qui désigne le bus d’adresse.

2) Modifier le corps de la fonction pour tenir compte de l’adresse A en lecture comme en écriture

3) Tester le programme en écrivant la valeur 3Fh à l’adresse 0FFFh en utilisant des relais interactifs.

4) Ecrire un autre programme qui simule un microprocesseur qui écrit la valeur 3Fh dans la plage
mémoire de 1000h à 1FFFh.

Page 3
Page 4

Vous aimerez peut-être aussi