Changes between Version 21 and Version 22 of MethoCourseTp1


Ignore:
Timestamp:
Apr 7, 2007, 7:57:35 PM (17 years ago)
Author:
anonymous
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MethoCourseTp1

    v21 v22  
    3535ce qui correspond au style ''data-flow''.
    3636
    37 Ces assignations peuvent contenir des informations temporelles :
    38 {{{
    39 c <= a AND b  AFTER 300ps;
    40 }}}
     37Ces assignations peuvent contenir des informations temporelles, grace à la construction ''after'':
     38{{{
     39c <= a and b  after 1 ns;
     40}}}
     41
    4142Puisque la sémantique du langage VHDL repose sur les ''événements'', l'assignation
    4243ci-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
     44sur le signal a ou sur le signal b peut entraîner un événement sur le signal c à la date t + 1 ns.
     45
     46La construction ''after'' peut être utilisée dans des constructions plus complexes,
     47comme la construction ''with'' x ''select'' qui décrit un multiplexeur :
     48{{{
     49with sel select
     50   x <= a after 2 ns when '0',
     51            b after 2 ns when '1';
     52}}}
     53
     54Mais elle ne peut pas être utilisée dans la construction qui décrit l'écriture dans un registre:
     55{{{
     56accu : block(ck='1' and not ck 'stable)
     57        begin
     58        accu <= guarded s ;
     59        end block ;
     60}}}
     61
     62La construction  ''after'' peut être omise, ce qui correspond à un temps de propagation nul.
     63Une description comportementale qui ne contient pas de constructions ''after'' est une description dite
    4764"zero-delay": on considère que tous les temps de propation sont négligeables par rapport au temps
    4865de cycle. C'est donc une description où on cherche à valider la fonctionnalité logique, mais où
    49 on ne cherche pas à simuler les performances temporelles.
     66on ne cherche pas à simuler le comportement temporel.
    5067
    5168Ecrire une description comportementale "zero-delay" pour le composant ''addaccu''.
     
    6077
    6178Vous 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.
     79en utilisant l'outil '''asimut''' pour compiler ce fichier, sans lancer la simulation.
    6380{{{
    6481>asimut -b -c addaccu
     
    94111
    95112Ce 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).
     113de 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).
    97114
    98115Vous trouverez ci-dessous un exemple de fichier ''stimuli.pat''
     
    111128
    112129begin
    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 ?* ?* ;
    129139end;
    130140}}}
    131 
     141 
    132142On utilise l'attribut ''spy'' pour les signaux qu'on souhaite observer. Les signaux internes sont
    133 désignés par la notation ''composant.signal''.
     143désignés par la notation ''composant.signal''. Les attributs B et X précisent si on souhaite
     144un affichage de type binaire ou hexadecimal.
    134145
    135146'''Attention''' : Comme les registres internes au composant ''addaccu'' sont des bascules à échantillonnage
     
    158169
    159170Pour terminer ce TP, vous allez maintenant complêter la description comportementale du
    160 composant ''addaccu'', en utilisant la construction "AFTER" pour introduire des informations temporelles
     171composant ''addaccu'', en utilisant la construction ''after'' pour introduire des informations temporelles
    161172dans la description comportementale, de façon à modéliser les temps de propagation dans les différents opérateurs
    162173combinatoires.
     
    165176Vous utiliserez les valeurs suivantes:
    166177
    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 ||
    171181
    172182Après modification vous sauvegarderez cette description comportementale temporisée sous le nom ''addaccu_time.vbe''.
    173183
    174 On cherche maintenant à observer la propagation du report dans l'additionneur.
     184Puisque qu'on décrit explicitement les temps de propagations, on peut maintenant à observer
     185la propagation du report dans l'additionneur.
    175186Il 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 }}}
     187d'observer les signaux internes carry![3:0] et mux![3:0].
     188On affichera ces signaux bit par bit en utilisant les directives suivantes:
     189{{{
     190register addaccu.accu (3 downto 0)      X spy;;;
     191out      s (3 downto 0)                 X spy;;;
     192signal   addaccu.carry (0)              B spy;;;
     193signal   addaccu.carry (1)              B spy;;;
     194signal   addaccu.carry (2)              B spy;;;
     195signal   addaccu.carry (3)              B spy;;;
     196signal   addaccu.mux (0)                B spy;;;
     197signal   addaccu.mux (1)                B spy;;;
     198signal   addaccu.mux (2)                B spy;;;
     199signal   addaccu.mux (3)                B spy;;;
     200}}}
     201Il 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}}}
     212Il 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
     218On sauvegardera ce fichier de stimuli sous le nom ''stimuli_time.pat''.
     219{{{
     220>asimut -b addaccu_time stimul_time result_time
     221}}}
     222
     223En analysant le chronogramme obtenu, donnez une estimation de la fréquence maximale
     224de fonctionnement de ce circuit.
    182225
    183226= Compte-Rendu =
     
    185228Vous rédigerez un compte-rendu d'une page maximum pour ce TP, et vous joindrez en annexe
    186229le fichier ''addaccu_time.vbe'', ainsi que le chronogramme résultant de la simulation logico-temporelle
    187 pour le fichier ''stimuli_carry.pat''.
     230pour le fichier ''stimuli_time.pat''.