Changes between Version 21 and Version 22 of MethoCourseTp1
- Timestamp:
- Apr 7, 2007, 7:57:35 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MethoCourseTp1
v21 v22 35 35 ce qui correspond au style ''data-flow''. 36 36 37 Ces assignations peuvent contenir des informations temporelles : 38 {{{ 39 c <= a AND b AFTER 300ps; 40 }}} 37 Ces assignations peuvent contenir des informations temporelles, grace à la construction ''after'': 38 {{{ 39 c <= a and b after 1 ns; 40 }}} 41 41 42 Puisque la sémantique du langage VHDL repose sur les ''événements'', l'assignation 42 43 ci-dessus signifie qu'un événement (c'est à dire un changement de valeur à une date t) 43 sur le signal a ou sur le signal b peut entraîner un événement sur le signal c à la date t + 300 ps. 44 La construction AFTER peut être omise, ce qui correspond à un temps de propagation nul. 45 46 Une description comportementale qui ne contient pas de constructions AFTER est une description dite 44 sur le signal a ou sur le signal b peut entraîner un événement sur le signal c à la date t + 1 ns. 45 46 La construction ''after'' peut être utilisée dans des constructions plus complexes, 47 comme la construction ''with'' x ''select'' qui décrit un multiplexeur : 48 {{{ 49 with sel select 50 x <= a after 2 ns when '0', 51 b after 2 ns when '1'; 52 }}} 53 54 Mais elle ne peut pas être utilisée dans la construction qui décrit l'écriture dans un registre: 55 {{{ 56 accu : block(ck='1' and not ck 'stable) 57 begin 58 accu <= guarded s ; 59 end block ; 60 }}} 61 62 La construction ''after'' peut être omise, ce qui correspond à un temps de propagation nul. 63 Une description comportementale qui ne contient pas de constructions ''after'' est une description dite 47 64 "zero-delay": on considère que tous les temps de propation sont négligeables par rapport au temps 48 65 de cycle. C'est donc une description où on cherche à valider la fonctionnalité logique, mais où 49 on ne cherche pas à simuler le s performances temporelles.66 on ne cherche pas à simuler le comportement temporel. 50 67 51 68 Ecrire une description comportementale "zero-delay" pour le composant ''addaccu''. … … 60 77 61 78 Vous pourrez vérifier que votre fichier ''addaccu.vbe'' est syntaxiquement correct 62 en utilisant l'outil '''asimut''' pour compiler ce fichier sans lancer la simulation.79 en utilisant l'outil '''asimut''' pour compiler ce fichier, sans lancer la simulation. 63 80 {{{ 64 81 >asimut -b -c addaccu … … 94 111 95 112 Ce fichier ''stimuli.pat'' doit en particulier décrire le signal d'horloge. On choisira un signal périodique 96 de période 20 ns, et de rapport cyclique 50% (cela signifie que l'état bas et l'état haut ont des durées égales ).113 de période 20 ns, et de rapport cyclique 50% (cela signifie que l'état bas et l'état haut ont des durées égales à 10ns). 97 114 98 115 Vous trouverez ci-dessous un exemple de fichier ''stimuli.pat'' … … 111 128 112 129 begin 113 -- a b s c v v a s 114 -- e k d s c 115 -- l d s c 116 -- u 117 < 0 ns> : 0 0 0 0 1 0 ?* ?* ; 118 < +10 ns> : 0 0 0 1 1 0 ?* ?* ; 119 < +10 ns> : 0 1 0 0 1 0 ?* ?* ; 120 < +10 ns> : 0 1 0 1 1 0 ?* ?* ; 121 < +10 ns> : 0 2 0 0 1 0 ?* ?* ; 122 < +10 ns> : 0 2 0 1 1 0 ?* ?* ; 123 < +10 ns> : 0 5 1 0 1 0 ?* ?* ; 124 < +10 ns> : 0 5 1 1 1 0 ?* ?* ; 125 < +10 ns> : 0 1 1 0 1 0 ?* ?* ; 126 < +10 ns> : 0 1 1 1 1 0 ?* ?* ; 127 < +10 ns> : 0 1 1 0 1 0 ?* ?* ; 128 < +10 ns> : 0 1 1 1 1 0 ?* ?* ; 130 -- Pattern description : 131 -- a b s c v v a s 132 -- e k d s c 133 -- l d s c 134 -- u 135 <0 ns> : 4 3 0 0 1 0 ?* ?* ; 136 <+10 ns> : 4 3 0 1 1 0 ?* ?* ; 137 <+10 ns> : 0 1 1 0 1 0 ?* ?* ; 138 <+10 ns> : 0 1 1 1 1 0 ?* ?* ; 129 139 end; 130 140 }}} 131 141 132 142 On utilise l'attribut ''spy'' pour les signaux qu'on souhaite observer. Les signaux internes sont 133 désignés par la notation ''composant.signal''. 143 désignés par la notation ''composant.signal''. Les attributs B et X précisent si on souhaite 144 un affichage de type binaire ou hexadecimal. 134 145 135 146 '''Attention''' : Comme les registres internes au composant ''addaccu'' sont des bascules à échantillonnage … … 158 169 159 170 Pour terminer ce TP, vous allez maintenant complêter la description comportementale du 160 composant ''addaccu'', en utilisant la construction "AFTER"pour introduire des informations temporelles171 composant ''addaccu'', en utilisant la construction ''after'' pour introduire des informations temporelles 161 172 dans la description comportementale, de façon à modéliser les temps de propagation dans les différents opérateurs 162 173 combinatoires. … … 165 176 Vous utiliserez les valeurs suivantes: 166 177 167 || x xor y xor z || 900 ps || 168 || multiplexeur || 400 ps || 169 || x.y + x.z + y.z || 600ns || 170 || x.y || 300 ps || 178 || x xor y xor z || 2ns || 179 || multiplexeur || 1ns || 180 || x.y + x.z + y.z || 1ns || 171 181 172 182 Après modification vous sauvegarderez cette description comportementale temporisée sous le nom ''addaccu_time.vbe''. 173 183 174 On cherche maintenant à observer la propagation du report dans l'additionneur. 184 Puisque qu'on décrit explicitement les temps de propagations, on peut maintenant à observer 185 la propagation du report dans l'additionneur. 175 186 Il faut modifier le fichier ''stimuli.pat'' pour introduire les directives permettant 176 d'observer les signaux internes carry![3:0], et définir des valeurs sur les entrées a et b qui 177 sensibilisent la chaîne de propagation des reports, avant écriture dans le registre accumulateur. 178 On sauvegardera ce fichier de stimuli sous le nom ''stimuli_carry.pat''. 179 {{{ 180 >asimut -b addaccu_time stimulu_carry result_carry 181 }}} 187 d'observer les signaux internes carry![3:0] et mux![3:0]. 188 On affichera ces signaux bit par bit en utilisant les directives suivantes: 189 {{{ 190 register addaccu.accu (3 downto 0) X spy;;; 191 out s (3 downto 0) X spy;;; 192 signal addaccu.carry (0) B spy;;; 193 signal addaccu.carry (1) B spy;;; 194 signal addaccu.carry (2) B spy;;; 195 signal addaccu.carry (3) B spy;;; 196 signal addaccu.mux (0) B spy;;; 197 signal addaccu.mux (1) B spy;;; 198 signal addaccu.mux (2) B spy;;; 199 signal addaccu.mux (3) B spy;;; 200 }}} 201 Il faut également modifier la description des "patterns" puisqu'on veut maintenant observer 10 signaux: 202 {{{ 203 -- Pattern description : 204 -- a b s c v v a s c c c c 205 -- e k d s c 0 1 2 3 206 -- l d s c 207 -- u 208 209 <0 ns> : 4 3 0 0 1 0 ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ; 210 <+10 ns> : 4 3 0 1 1 0 ?* ?* ?* ?* ?* ?* ?* ?* ?* ?* ; 211 }}} 212 Il faut enfin appliquer sur les entrées des valeurs qui sensibilisent 213 la chaîne de propagation des reports, telles que 214 * a![3:0] = 1111 215 * b![3:0] = 0001 216 * sel = 0 217 218 On sauvegardera ce fichier de stimuli sous le nom ''stimuli_time.pat''. 219 {{{ 220 >asimut -b addaccu_time stimul_time result_time 221 }}} 222 223 En analysant le chronogramme obtenu, donnez une estimation de la fréquence maximale 224 de fonctionnement de ce circuit. 182 225 183 226 = Compte-Rendu = … … 185 228 Vous rédigerez un compte-rendu d'une page maximum pour ce TP, et vous joindrez en annexe 186 229 le fichier ''addaccu_time.vbe'', ainsi que le chronogramme résultant de la simulation logico-temporelle 187 pour le fichier ''stimuli_ carry.pat''.230 pour le fichier ''stimuli_time.pat''.