| | 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 ? |