mikrocontroller.net

Forum: FPGA, VHDL & Co. xilinx-flipflop


Autor: alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

ich hätte gern eine frage:

wenn ich so schreibe:
signal x1,x2,x3 : std_logic;
process 
  begin
    wait until rising_edge(clk);
    x3 <= x2;
    x1 <= x3;
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

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Sauron (Firma: www.das-labor.org) (laborsauron)
Datum:

Bewertung
0 lesenswert
nicht 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_...

Autor: alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:
Angehängte Dateien:
  • preview image for FF.png
    FF.png
    1,62 KB, 83 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Du beschreibst mit deinem Code genau das.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.