# Autres langages > Autres langages > VHDL >  FIFO  deux horloges

## Inedhelp

bonsoir,
Je dois implementer en vhdl un  fifo avec deux horloges (une pour la lecture et une autre pour la l'Ecriture), et j'ai besoin d'aide car j'ai dj essay  mais a ne  marchait pas comme je voudrais (surtout le passage plein  vide et de vide  plein).
Voici la vue externe de la fifo: 



```

```


Merci d'avance pour votre aide.

----------


## titiri

Bonsoir,

   Les flags full et empty ne peuvent tre uniques : il en faut une version pour chaque ct.
   Mcanisme de haut niveau :

1) on incrmente les pointeurs d'adresse  chaque accs associ


```

```

2) on convertit ces pointeurs en code de gray


```

```

3) on copie ces valeurs de gray sur l'autre domaine d'horloge :


```

```

4) on revient en code CBN (code binaire naturel)


```

```

5) on calcule le nombre de mots


```

```

Les flags full et empty sont alors obtenus trs simplement (si xx_usedw=0 --> empty, si xx_usedw=2^n, alors full)

ATTENTION #1 : si les bus d'adresse font 8bits, la FIFO peut contenir de 0  256 mots, ce qui ncessite un vecteur de 9 (NEUF) bits...
ATTENTION #2 : il faut veiller  la qualit du changement de domaine d'horloge. Quelle que soit la qualit de celui-ci, a fonctionnera toujours nickel en simulation, mais s'il faut que a fonctionne physiquement (dans un FPGA), seul l'interface chaise-clavier (donc VOUS !) peut garantir le bon fonctionnement. Il est impossible de faire passer une valeur binaire pure (un compteur CBN) d'une horloge  une autre. Seul un compteur en code de gray le peut. Et oubliez ceux qui vous diront "a marche en simulation, donc a marchera sur carte", c'est comme de dire "a compile donc a marche".

Cordialement

----------


## Inedhelp

Merci beaucoup pour ta rponse. Demain je vais essayer ta solution et je te tiendrai au courant.

Merci encore une fois!

----------

