Changes between Version 5 and Version 6 of CaoCourseTme7
- Timestamp:
- Mar 22, 2007, 12:41:30 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CaoCourseTme7
v5 v6 54 54 * structure représentant le réseau Booléen, c'est à dire le graphe biparti des processus et des signaux, 55 55 * structure représentant l'échéancier, c'est à dire l'ensemble ordonné des événements. 56 57 == A1) Le réseau Booléen ==58 56 59 57 Le réseau Booléen est constitué d'un ensemble de signaux et d'un ensemble de processus. … … 104 102 }}} 105 103 106 == A2) L’échéancier ==107 108 104 L'échéancier permet d'enregistrer et d'ordonner les événements dans le temps. 109 105 Ceux-ci sont donc rangés dans une liste doublement chaînée, par dates croissantes. … … 139 135 Dans un deuxième temps, il vous sera demandé d’écrire vous-même le code de ces fonctions. 140 136 141 == B1) construction réseau Booléen == 137 '''B1) construction réseau Booléen''' 142 138 143 139 {{{ … … 161 157 et qu'un signal de type OUT ne peut apparaître dans le support d'une fonction. 162 158 163 == B2) construction échéancier == 159 '''B2) construction échéancier''' 164 160 {{{ 165 161 scheduler_t * cons_scheduler() … … 176 172 les événements portant sur les signaux d’entrée du circuit (stimuli). 177 173 178 == B3) simulation == 174 '''B3) simulation''' 179 175 {{{ 180 176 void add_event (scheduler_t * sch, signal_t sig, long delta, unsigned val) … … 233 229 Ecrire, compiler et exécuter le programme main() qui construit le réseau Booléen. 234 230 Pour vérifier la structure du réseau Booléen, on pourra utiliser la fonction : 235 231 {{{ 236 232 void drive_boolnet(dotfmt_t format, boolnet_t *bn) 237 233 }}} 238 234 Cette fonction construit une représentation graphique du réseau Booléen, et la sauvegarde dans un fichier au format .gif ou .ps. 239 235 {{{ 240 236 enum dotfmt_t { GIF , PS } 237 }}} 241 238 242 239 = D) Construction et initialisation de l’échéancier = 243 240 244 Complêter le programme main() de la question D1 pour créer l’échéancier et initialiser les événements sur les signaux d’ entrée a0, b0, c0, a1 et b1 de façon à respecter le chronogramme suivant . On utilisera les fonctions cons-scheduler() et add_event(). Attention : le passage de la valeur U (indéfinie) à une valeur 0 ou 1 constitue un événement : Dans ce chronogramme, il y a donc un événement sur tous les signaux d’entrée au temps T = 0. 241 Complêter le programme main() de la question C) pour créer l’échéancier 242 et initialiser les événements sur les signaux d’ entrée a0, b0, c0, a1 et b1 de façon à respecter le chronogramme ci-dessous. 243 On utilisera les fonctions cons-scheduler() et add_event(). Attention : le passage de la valeur U (indéfinie) à une valeur 0 ou 1 244 constitue un événement : Dans ce chronogramme, il y a donc un événement sur tous les signaux d’entrée au temps T = 0. 245 245 246 246 247 247 Pour vérifier que l’échéancier est correctement initialisé, on pourra utiliser la fonction: 248 248 {{{ 249 249 void drive_scheduler (boolnet_t * bn, scheduler_t * sch) 250 251 Cette fonction génére un fichier au format .pat que vous pouvez visualiser avec l’outil XPAT que vous connaissez déjà. 252 253 250 }}} 251 Cette fonction génére un fichier au format .pat que vous pouvez visualiser avec l’outil XPAT. 254 252 255 253 = E) Ecriture de la boucle de simulation =