mikrocontroller.net

Forum: FPGA, VHDL & Co. Buch Reichardt/Schwarz: Frage zu while Schlaufe


Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
einige haben sicher auch das Buch"VHDL Synthese" von Reichardt/Schwarz, 
mir liegt es in der 4.Auflage vor.

Aus Urheberrechtsgründen zitiere ich das Problem hier nicht komplett, es 
mögen doch bitte diejenigen im Buch nachsehen, welche es auch haben ;-)

Zum Problem:
In Kapitel 3.2.3.2 wird der while loop erklärt. Im Beispielcode auf 
Seite 42, Code 3-9, wird ein process gezeigt, der wie folgt aufgebaut 
ist:
P: process
  variable PAR: boolean;
  begin
    wait until (CLK'event and CLK='1')
    if START then
      ..
      while not STOP loop
        ..
        wait until (CLK'event and CLK='1')
      end loop;
    end if;
end process P;

Wie ist hier das zweite "wait until" zu verstehen? Warten auf eine 
einzelne weitere Taktflanke? Nach der Beschreibung müsste gewartet 
werden, bis erneut START eintrifft.

Kann mir das jemand noch etwas durchleuchten?

Gruss, Martin

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es wird die Anzahl Takte gewartet, solange die STOP-Bedingugn greift,
d.h. sobald die Schleife betreten wurde, ist START irrelevant.

Gruß,
SuperWilly

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SuperWilly schrieb:
> d.h. sobald die Schleife betreten wurde, ist START irrelevant.
Jetzt ist der Groschen gefallen, danke!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann mir das jemand noch etwas durchleuchten?
Und im Auge behalten:
Die Autoren schreiben selber, diese Beschreibung sei das extremste, was 
heutige Synthesetools noch in Harware umsetzen können.

Fazit: Gewöhne dir diesen Stil (vorerst) nicht an.

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Fazit: Gewöhne dir diesen Stil (vorerst) nicht an.

Das habe ich nicht vor, keine Angst.

Bei mir sind die Prozesse ungefähr so aufgebaut:
process (CLK)
  begin
    if rising_edge(CLK) then
      if (RST) then
        -- sync reset wo nötig
        ...
      else
        -- work to do
        ...
      end if;
    end if;
end process;

Da könnte man gemäss deiner Homepage noch diskutieren, ob die 
sensitivity list überhaupt nötig ist.
Auch die Frage, ob jetzt rising_edge() oder die andere Schreibweise 
"richtiger" ist, ist nicht abschliessend geklärt.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh dir die Funktion von
> rising_edge()
mal genauer an und entscheide selber....

Ich nehme es abgesehen von der Simulationsthematik hauptsächlich, weil 
es sich schöner liest...

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Sieh dir die Funktion von
>> rising_edge()
> mal genauer an und entscheide selber....
>
> Ich nehme es abgesehen von der Simulationsthematik hauptsächlich, weil
> es sich schöner liest...

Ich nehme rising_edge() auch weil es einfacher zu lesen ist. Die 
marginalen Unterschiede in der Simulation stören mich nicht, weil der 
Takt bei mir in der Testbench sowieso nie etwas anderes als 0 oder 1 
ist.

Meine Infos stammen von hier:
Beitrag "CLK'event oder rising_edge(clk)"
http://www.mikrocontroller.net/articles/VHDL#CLK.3...
sowie weiteren Freds in diesem Forum.

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.