Hallo,
da ich im Rahmen eines Uni-Projektes einen asynchronen FIFO (der einen
Lesetakt und einen Schreibetakt besittz) erstellen soll (bei dem die
gray codierung jedoch komplett vernachlässigt werden soll!) und ich im
Bereich VHDL doch noch ziemlich frisch bin, stoße ich hier leider immer
wieder auf Probleme und hoffe, dass mir hier weitergeholfen werden kann.
:)
Zunächst bin ich mir etwas unsicher, wie die Wahrscheinlichkeit des
Auftretens eines Metastabilen Zustandes verringern kann.
Ich habe mich umgesehen und habe erfahren, dass man dies mit 2 direkt
hintereinander geschalteten D-FFs macht.
Ich weis, dass jede Signalzuweisung innerhalb eines Prozesses einen D-FF
zur Folge hat, jedoch bin ich mir unsicher wie die Implementation
umgesetzt werden soll:
Würde ich das so machen, dann hätte ich ja das Problem, dass Signale ja
erst im Takt später den neuen Wert annehmen würden, also kann das so ja
nicht gehen oder?
1 | clk1:process(clk_in) --Prozess für Write
|
2 | begin
|
3 | if(clk_in'event and clk_in='1')then
|
4 | data_tmp_in<=data_in;
|
5 | data_sync_in<=data_tmp_in;
|
6 | end if;
|
7 | end process clk1;
|
Denke ich denn überhaupt in die richtige Richtung?
Muss ich es statt dessen mit variablen schreiben? (werden bei variable
zuweisungen überhaupt dffs erzeugt?)
Soll ich 2 Prozesse daraus machen?
Ich hoffe, dass mir jemand einen Tipp in die Richtige Richtung geben
kann :)
Bin für jeden Rat offen!
Vielen lieben Dank schon mal im Voraus! :)
MFG, Henry.