IV.1 Validation de la machine à état

publicité
IV. simulation et implémentation -----22
IV. SIMULATION ET IMPLEMENTATION
Simulations
Nous avons procédé à la validation des fonctions suivantes sous QUARTUS après en avoir validé
la description VHDL :
- Machine à état,
- Séquenceur,
- Diviseur d’horloge,
- Les 3 blocs branchés entre eux.
IV.1 Validation de la machine à état
Circuit de test :
ACQ
CLK
EOF
BB
S_state
BER
Machine à état
C
RW
EVT
LAB
TMP
ACQG
Figure 10 Schéma de machine à état
Chronogrammes obtenus :
Nous attaquons le système par le signal CLK et par le bus de commande C qui correspond au
registre R_Control mis à jour par le microcontrôleur. Nous plaçons les signaux aux moments
opportuns de sorte à parcourir le grafcet que nous avons établit.
IV. simulation et implémentation -----23
Emission donnée
Emission
Attente
adresse
acquittement
Attente
4,7 us
Conclusion :
attente
Prise
contrôle
de Cond.
start
Attente
Cond.
acquittement
stop
Figure 11 la résulte de la simulation de machine à état
Nous constatons le déroulement correct de la séquence prévue au niveau du vecteur d’état s_state.
IV.2 Validation du bloc séquenceur
Circuit de test :
SCL
SDA_IN
SDA
TOP
EOF
A[0-7]
BB
D[0-7]
BER
Séquenceur
S_state
ACQ
RW
EVT
LAB
TMP
ACQG
Figure 12 Schéma de séquenceur
Chronogrammes : Nous attaquons le séquenceur par le signal d’horloge TOP, les registres de
donnée et d’adresse A et D et le vecteur de pilotage de la machine à état S_State. Nous nous
sommes efforcés de se placer dans le contexte de la machine à état qui doit recevoir les signaux de
retour du séquenceur aux moments opportuns. D’autre part la ligne SDA_in (entrée du buffer
IV. simulation et implémentation -----24
tri-state) doit être relâchée à l’état haut, sauf au moment où doit être effectué l’acquittement par
l’esclave.
Figure 13 La résulte de la simulation de séquenceur
Conclusion :
Avec l’évolution du bus S_State que nous présentons, le séquenceur reproduit l’ensemble des
étapes de la prise de contrôle jusqu’à la condition de stop. Notons que les trames d’adresses et de
données sont établies sur niveau haut de SCL avec les bonnes valeurs comme convenu. Les
signaux de contrôle (EOF, BB, ACQ, ACQG, EVT, RW, LAB et TMP) réagissent au bon moment.
IV.3 Validation du diviseur de fréquence
Circuit de test :
R_clock
CLK
Diviseur
Figure 14 Schéma de Diviseur
Chronogrammes :
TOP
IV. simulation et implémentation -----25
Figure 15 la résulte de la simulation de diviseur
Nous attaquons le système par une horloge et on place la valeur « 4 » sur l’entrée « R_Clock ».
Le signal TOP change d’état tout les 5 tops d’horloges de CLK. Le retard que nous observons est
dû à la fréquence de simulation utilisée. (Ici, le temps de propagation du composant n’est pas
négligeable devant la période d’horloge que nous avons employée)
Conclusion :
Nous observons une division correcte de la fréquence d’horloge CLK.
IV.6 Simulation globale
Chronogramme :
Nous plaçons dans le registre C les commandes « Prise de contrôle » et « Condition de start » et
dans les registres A et D les valeurs que le séquenceur serait susceptible de trouver dans les
registres R_Data et R_Adress.
Nous attaquons le système par une horloge CLK.
Prise de contrôle
Condition de start
Envoi de l’adresse
Figure 16 la résulte de la simulation globale
Attente acquittement
IV. simulation et implémentation -----26
IV.5 implémentation
Après finir bien simulation ,nous avons besoin d’implémenter sur une carte test. Ici ,
nous utilisons la carte d’entreprise Altera.
Dans une première phase , nous réalisons l’architecture de nios en logiciel, ici nous
allons construire une processeur dans SOPC builder de quartus et se réaliser la
synthèse IP sur un hardware plate-forme .
Dans une seconde phase, vérifions
la communication enter le
I2C slave et
la
processeur par la synthèse IP.
1) prise en main et architecture primitive
Figure 17
2) description de l’architecture
Nous avons vu bien la figure en haut qui est l’architecture primitive d’un
processeur. Mais nous n’avons pas besoin de tous les blocs.. Le filtre est entièrement
réalisé en logiciel. Dans notre projet, nous avons besoin de la CPU et la ROM
seulement. Donc nous simplifions l’architecture comme ci-dessous :
FPGA—nios system
NIOS µp
SCL
I2C
IP
Controlle
r
SDA
IV. simulation et implémentation -----27
Le premier bloc est défini dans SOPC builder. Nous fournissons les éléments suivants :

Une plate-forme Nios de notre projet qui contient
-un processeur NIOS 32 bits : cpu
-une ROM de boot
-une flash
-user logic
D’après compiler le bloc que nous construirons, nous allons faire implémentation sur une
carte
test
Figure la carte développement NIOS II
Conclusion :
Nous pouvons observoire l’évolution de la machine à état et des lignes SDA et SCL.
Les lignes SDA et SCL sont relachées à 1, puis sur la commande « Condition de
Start », le circuit impose un niveau 0 sur SDA. Le séquenceur réagit par l’envoi d’un
bit qui place la machine à état en émission de l’adresse. SCL devient un signal
d’horloge.
IV. simulation et implémentation -----28
Nous pouvons observoirs la bonne division en fréquence et le cadencement des bits de
l’adresse sur la ligne SDA. Le séquenceur renseigne la machine à état de la fin de
trame est bien émis, le contrôleur se place ensuite en attente d’acquittement…
Nous pouvons contrôler bien la machine à état et la séquenceur avec l’IP.
A l’heure de la rédaction de ce rapport, j’ai validé le fonctionnement global de ce
circuit, mais je n’ai pas fini de tester la circuit sur la carte NIOS, et d’effectuer la
compilation et simulation en systemC.
=>annexe II. Programmes
Téléchargement