Forum: FPGA, VHDL & Co. xilinx-flipflop


von alex (Gast)


Lesenswert?

hallo zusammen,

ich hätte gern eine frage:

wenn ich so schreibe:
1
signal x1,x2,x3 : std_logic;
2
process 
3
  begin
4
    wait until rising_edge(clk);
5
    x3 <= x2;
6
    x1 <= x3;
7
end process;


d.h. ich versuche gleichzeitig auf x3 zu schreiben und aus x3 zu lesen.

gibts kein konflict bei dieser situation? oder es geht um hold-time und 
setup-time von flipflop?

vielen dank für euche antwort!

lg alex

von Morin (Gast)


Lesenswert?

"Gleichzeitig" lesen und schreiben geht deshalb, weil während einer 
Taktperiode gelesen, aber zur Taktflanke geschrieben wird. Der Code 
erweckt zwar den Anschein, dass das Lesen auch zur Flanke passiert, dem 
ist aber nicht so.

Allerdings beschreibt dein Code zwei Flip-flops, x1 und x3.

von Michael S. (Firma: www.das-labor.org) (laborsauron)


Lesenswert?

Was du da beschreibst ist ein Schieberegister: X2 => X3 => X1
Das bit wird mit jedem Takt einen weiter geschoben.

>ich versuche gleichzeitig auf x3 zu schreiben und aus x3 zu lesen.
Aber um einen Takt versetzt.

vielleicht hilft das:
http://www.mikrocontroller.net/articles/VHDL#Wann_und_warum_verwendet_man_Variablen.3F

von alex (Gast)


Lesenswert?

danke erstmal für euche Antwort^^

Morin schrieb:
> "Gleichzeitig" lesen und schreiben geht deshalb, weil während einer
> Taktperiode gelesen, aber zur Taktflanke geschrieben wird. Der Code
> erweckt zwar den Anschein, dass das Lesen auch zur Flanke passiert, dem
> ist aber nicht so.

Michael Sauron schrieb:
> Was du da beschreibst ist ein Schieberegister: X2 => X3 => X1
> Das bit wird mit jedem Takt einen weiter geschoben.


Bei clk-flanke :

1. x2-wert auf x3 schreiben, nach einem delay T1 hat 
x3-flip-flop-Ausgang den neu wert :x2

2. x3-wert auf x1 schreiben, nach einem delay T2 hat 
x1-flip-flop-Ausgang den neu wert :x3

Wenn T2 > T1, dann ist das ergebnis bei punkt 2 nicht mehr richtig,oder?

von Christian R. (supachris)


Lesenswert?

Nicht ganz. Es wird der Wert auf das Signal geschrieben, den es vor 
der Flanke hatte. Innerhalb des FPGA ist garantiert, dass sich das nicht 
überholen kann. Es sei denn, dein Takt ist sehr schnell und du hättest 
noch kombinatorische Verknüpfungen zwischen den FF. Ansonsten übernimmt 
in deinem Fall das 2. FF für X3 den Wert, den X2 vorher hatte.
Solange T1 und T2 kleiner sind als eine Periodenlänge des Taktes ist das 
"Ergebnis" immer das selbe. Du hast nur 2 FlipFlips hintereinander.

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Du beschreibst mit deinem Code genau das.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.