Changes between Version 25 and Version 26 of CaoCourseTme7


Ignore:
Timestamp:
Apr 23, 2007, 1:41:53 PM (18 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme7

    v25 v26  
    4848Créez un répertoire de travail TME7, et copiez dans ce répertoire tous les fichiers et répertoires qui se trouvent dans
    4949{{{
    50 /users/enseig/encadr/cao/tme7
     50cp -rp /users/enseig/encadr/cao/tme7 .
    5151}}}
    5252
     
    229229si cette valeur change (en utilisant la fonction add_event).
    230230
    231 = C) Construction du réseau Booléen =
     231= C) Travail à réaliser =
    232232
    233233On se propose de simuler le schéma suivant, qui réalise un additionneur 2 bits.
     
    236236[[Image(schema_portes.png, nolink)]]
    237237
    238 Ecrire le programme main() qui construit en mémoire
    239 le réseau Booléen correspondant au circuit-ci-dessus.
     238== C1) simulation du circuit ''etou'' ==
     239
     240Le fichier ''etou.c'' contient un tout petit réseau Booléen ne contenant que deux noeuds,
     241et 4 signaux. Compilez ce fihier, et exécutez la simulation.
     242{{{
     243> make
     244}}}
     245Lancez l'exécution duprogramme (construction du réseau Booléen et simulation).
     246{{{
     247> ./etou
     248}}}
     249Vous pouvez visualiser le réseau Booléen avec la commande:
     250{{{
     251> xv etou.gif
     252}}}
     253Vous pouvez visualiser le chronogramme résulat de la simulation avec la commande:
     254{{{
     255> xpat -l etou
     256}}}
     257
     258== C2) Construction réseau Booléen de l'additionneur 2 bits ==
     259
     260En vous inspirant du fichier ''etou.c'', écrivez le fichier ''adder.c'' qui construit en mémoire
     261le réseau Booléen correspondant au circuit additionneur 2 bits décrit ci-dessus.
    240262On utilisera pour cela les fonctions cons_boolnet(), cons_process() et cons_signal().
    241263On prendra une valeur de 1 ns pour le temps de propagation de la porte NAND2, et de 2 ns pour la porte XOR2.
    242 Pour vérifier la structure du réseau Booléen, on utilisera la fonction :
    243 {{{
    244 void drive_boolnet(dotfmt_t format, boolnet_t *bn)
    245 }}}
    246 Cette fonction construit une représentation graphique du réseau Booléen, et la sauvegarde dans un fichier au format .gif ou .ps.
    247 {{{
    248 enum dotfmt_t { GIF , PS }
    249 }}}
    250 Ecrivez le Makefile permettant de compiler ce programme main(), et exécutez-le.
    251 
    252 = D) Construction et initialisation de l’échéancier =
    253 
    254 Complêter le programme main() de la question C) pour créer l’échéancier
     264Pour vérifier la structure du réseau Booléen, on utilisera la fonction ''drive_boolnet()''.
     265Cette fonction construit une représentation graphique du réseau Booléen, et la sauvegarde dans un fichier
     266au format .gif ou .ps.
     267
     268Modifiez le Makefile permettant de compiler ce programme ''adder.c'', et exécutez-le.
     269
     270== C3) Construction et initialisation de l’échéancier ==
     271
     272Complêter le fichier ''adder.c'' main() pour créer l’échéancier
    255273et initialiser les événements sur les signaux d’ entrée a0, b0, c0, a1 et b1 de façon à respecter le chronogramme ci-dessous.
    256274On utilisera les fonctions cons-scheduler() et add_event(). Attention : le passage de la valeur U (indéfinie) à une valeur 0 ou 1
     
    259277[[Image(chronogramme.png, nolink)]]
    260278
    261 Pour vérifier que l’échéancier est correctement initialisé, on pourra utiliser la fonction:
    262 {{{
    263 void drive_scheduler (boolnet_t * bn, scheduler_t * sch)
    264 }}}
    265 Cette fonction génére un fichier au format .pat que vous pouvez visualiser avec l’outil XPAT.
    266 
    267 = E) Ecriture de la boucle de simulation =
    268 
    269 Ecrire la boucle fonction principale de simulation qui enchaîne les phases “update” et “exécute” de l'algorithme de simulation ''event-driven'' présenté en cours.
     279Pour vérifier que l’échéancier est correctement initialisé, on pourra utiliser la fonction ''drive_scheduler ()''.
     280Cette fonction peut être utilisée avant même l'exécution de la fonction de simulation, pour générer un fichier au format .pat
     281qui décrit le chronogramme des signaux d'entrée. Vous pouvez visualiser ce chronogramme avec l’outil XPAT.
     282
     283== C4) Simulation effective du circuit additionneur
     284
     285Introduisez dans le fichier ''adder.c'' la fonction ''simulate()'' qui effectue la simulation du réseau Booléen,
     286jusqu'à ce qu'il n'y ait plus aucun événement à traiter dans l'échéancier. Compilez ce programme,
     287et analysez le chronogramme résultant
     288
     289== C5) Ecriture de la boucle de simulation ==
     290
     291Ecrire en langage C la fonction ''simulate()''. Cette fonction contient une boucle ''while'' qui enchaîne les
     292deux phases “update” et “exécute” de l'algorithme de simulation ''event-driven'' présenté en cours.
    270293{{{
    271294void simulate (boolnet_t * bn, scheduler_t * sch)
     
    275298de façon à visualiser le chronogramme avec l’outil XPAT.
    276299
    277 = F) Ecriture des fonctions d’accès =
     300== C6) Ecriture des fonctions d’accès ==
    278301
    279302Bien que le texte de cette question soit très court, cette question est  évidemment la plus importante du TME :