Académique Documents
Professionnel Documents
Culture Documents
: 3LAUT
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
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
´ .
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
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).
Un mot de 8 bits
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)
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