| 30 | 2.3 SYF et VHDL |
| 31 | An de décrire de tels automates, on utilise un style particulier de description |
| 32 | VHDL qui dénit l'architecture "fsm" (finite-state machine). |
| 33 | Le chier correspondant possède également l'extension fsm. A partir de ce chier, |
| 34 | l'outil SYF effectue la synthèse d'automate et transforme cet automate abstrait en un |
| 35 | réseau booléen. SYF génère donc un chier VHDL au format vbe. Comme la plupart |
| 36 | des outils utilisés au laboratoire, il faut positionner certaines variables d'environnement |
| 37 | avant d'utiliser SYF. Pour les connaître, reportez-vous au man de syf. |
| 38 | 2.4 Exemple |
| 39 | An de se familiariser avec la syntaxe de description d'un chier .fsm, un exemple |
| 40 | de compteur de trois "1" successifs est présenté. Sa vocation est de détecter par exemple |
| 41 | sur une liaison série une séquence de trois "1" successifs. Le graphe d'états que l'on |
| 42 | cherche à décrire est représenté sur la gure 4. |
| 43 | Le format fsm est également décrit dans une page man. Pensez à la consulter. |
| 44 | E0 |
| 45 | E1 |
| 46 | E2 |
| 47 | E3 |
| 48 | o=0 |
| 49 | o=1 |
| 50 | 0 |
| 51 | 0 |
| 52 | 0 |
| 53 | 0 1 |
| 54 | 1 1 |
| 55 | 1 |
| 56 | reset |
| 57 | reset |
| 58 | reset |
| 59 | o=0 |
| 60 | o=0 |
| 61 | FIG. 4 Graphe d'états d'un compteur de trois "1" successifs |
| 62 | entity circuit is |
| 63 | port ( |
| 64 | ck, i, reset, vdd, vss : in bit ; |
| 65 | o : out bit |
| 66 | ) ; |
| 67 | end circuit ; |
| 68 | architecture MOORE of circuit is |
| 69 | type ETAT_TYPE is (E0, E1, E2, E3) ; |
| 70 | signal EF, EP : ETAT_TYPE; |
| 71 | pragma CURRENT_STATE EP |
| 72 | pragma NEXT_STATE EF |
| 73 | pragma CLOCK CK |
| 74 | begin |
| 75 | process (EP, i, reset) |
| 76 | begin |
| 77 | ACSI M2 5 |
| 78 | TP2 Synthèse logique et génération de chemin de données |
| 79 | if (reset=’1’) then |
| 80 | EF<=E0; |
| 81 | else |
| 82 | case EP is |
| 83 | when E0 => |
| 84 | if (i=’1’) then |
| 85 | EF <= E1 ; |
| 86 | else |
| 87 | EF <= E0 ; |
| 88 | end if ; |
| 89 | when E1 => |
| 90 | if (i=’1’) then |
| 91 | EF <= E2 ; |
| 92 | else |
| 93 | EF <= E0 ; |
| 94 | end if ; |
| 95 | when E2 => |
| 96 | if (i=’1’) then |
| 97 | EF <= E3 ; |
| 98 | else |
| 99 | EF <= E0 ; |
| 100 | end if ; |
| 101 | when E3 => |
| 102 | if (i=’1’) then |
| 103 | EF <= E3 ; |
| 104 | else |
| 105 | EF <= E0 ; |
| 106 | end if ; |
| 107 | when others => assert (’1’) |
| 108 | report "etat illegal"; |
| 109 | end case ; |
| 110 | end if ; |
| 111 | case EP is |
| 112 | when E0 => |
| 113 | o <= ’0’ ; |
| 114 | when E1 => |
| 115 | o <= ’0’ ; |
| 116 | when E2 => |
| 117 | o <= ’0’ ; |
| 118 | when E3 => |
| 119 | o <= ’1’ ; |
| 120 | when others => assert (’1’) |
| 121 | report "etat illegal" ; |
| 122 | end case ; |
| 123 | end process ; |
| 124 | process(ck) |
| 125 | begin |
| 126 | if (ck=’1’ and not ck’stable) then |
| 127 | EP <= EF ; |
| 128 | end if ; |
| 129 | end process ; |
| 130 | end MOORE ; |
| 131 | TP2 Synthèse logique et génération de chemin de données |
| 132 | = 5 Travail à effectuer = |
| 133 | Ecrire la description d'un compteur de cinq "un" successifs sous la forme d'un |
| 134 | automate de Moore. |
| 135 | Positionner les variables d'environnement. |
| 136 | Lancer SYF avec les options de codage -a, -j, -m, -o, -r et en utilisant les options |
| 137 | -CEV. |
| 138 | >syf -CEV -a <fsm_source> - |
| 139 | Un chier Makele vous est fourni pour vous faciliter la vie ! |
| 140 | répertoire : ~trncomun/TP/2006/TP2/Fichiers/Fournis/Compteur5/. Utilisez ce Make |
| 141 | le à compléter. |
| 142 | Visualiser les chiers .enc. |
| 143 | Ecrire un chier de vecteurs de test et simuler sous ASIMUT. |
| 144 | Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ? |
| 145 | |
| 146 | TP2 Synthèse logique et génération de chemin de données |
| 147 | 3 Automate pour digicode |
| 148 | |
| 149 | |
| 150 | 2.5 Travail à effectuer |
| 151 | Ecrire la description d'un compteur de cinq "un" successifs sous la forme d'un |
| 152 | automate de Moore. |
| 153 | Positionner les variables d'environnement. |
| 154 | Lancer SYF avec les options de codage -a, -j, -m, -o, -r et en utilisant les options |
| 155 | -CEV. |
| 156 | >syf -CEV -a <fsm_source> - |
| 157 | Un chier Makele vous est fourni pour vous faciliter la vie ! |
| 158 | répertoire : ~trncomun/TP/2006/TP2/Fichiers/Fournis/Compteur5/. Utilisez ce Make |
| 159 | le à compléter. |
| 160 | Visualiser les chiers .enc. |
| 161 | Ecrire un chier de vecteurs de test et simuler sous ASIMUT. |
| 162 | Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ? |