mikrocontroller.net

Forum: FPGA, VHDL & Co. Theoriefrage: Zeitabschätzung


Autor: Stefan R. (stefripp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich in VHDL etwas abstraktes wie eine State Machine beschreibe, 
setzt meine Synthesesoftware das Ganze letztendlich in LUTs um.

Frage 1: Wie kann ich, bevor ich die Zielplattform auswähle, den Takt 
abschätzen, mit der ich sie betreiben kann.

Frage 2: Wie kann ich die Statemachine möglichst Synthesefreundlich 
beschreiben?

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

Bewertung
0 lesenswert
nicht lesenswert
Stefan R. schrieb:
> Wenn ich in VHDL etwas abstraktes wie eine State Machine beschreibe,
> setzt meine Synthesesoftware das Ganze letztendlich in LUTs um.
Oder in Produktterme...
BTW: korrekt müsste das heißen: ... setzt meine Synthesesoftware das 
Ganze letztendlich in LUTs UND FLIPFLOPS um.

> Frage 1: Wie kann ich, bevor ich die Zielplattform auswähle, den Takt
> abschätzen, mit der ich sie betreiben kann.
Gar nicht. Wenn deine Zielplattform Relais sind, dann ist die 
Taktfrequenz deutlich niedriger als bei einem V6 FPGA...

> Frage 2: Wie kann ich die Statemachine möglichst Synthesefreundlich
> beschreiben?
Die Frage ist m.E. zu abstakt um konkret beantwortet zu werden.

Autor: Supergast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan R. schrieb:
> Frage 1: Wie kann ich, bevor ich die Zielplattform auswähle, den Takt
> abschätzen, mit der ich sie betreiben kann.

Tendenziell gilt: Umso mehr Kombinatorik vor einem Register kommt umso 
langsamer.
reg = a & b;
ist schneller als
reg = a & b ^ c | d & f ....;

Eine Aussage über die Taktfreqenz ist aber nur möglich mit dem wissen 
was der Compiler aus dem Term macht und wie schnell die Zielplattform 
ist.

> Frage 2: Wie kann ich die Statemachine möglichst Synthesefreundlich
> beschreiben?

Schreib sie wie du lustig bist, schalte in der Synthese-Software eine 
Option wie "Automatic State Machine Extraction" ein und schaue im 
Synthese-Log nach ob die Software die Statemaschine extrahiert hat. Wenn 
sie das schafft, kann sie die Statemaschine auch optimal implementieren.

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du willst, daß Deine FSM auch als solche erkannt wird,
solltest Du mal einen Blick in den XST User Guide werfen:

http://www.xilinx.com/support/documentation/sw_man...

Seite 189. Im Kapitel 3 (HDL Coding Techniques) stehen übrigens noch 
ganz andere interessante Sachen drin.

Von Altera gibts auch noch was:
http://www.altera.com/literature/hb/qts/qts_qii51007.pdf

Autor: Stefan R. (stefripp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Quartus Dokumentation habe ich schon gelesen.
Dabei bleibt eine entscheidende Unklarheit: In den Beispielen werden 
immer ein Process zur Bearbeitung des States und ein Process der dem 
jewiligen State einen Ausgangsvektor zuteilt getrennt. Da VHDL nur eine 
Schaltung beschreibt, denke ich, dass dies hauptsächlich wegen der 
besseren Lesbarkeit so gemacht wird. Da Altera nichts darüber sagt, wie 
Quartus die Stata Machine generiert stellt sich mir Frage nach einer der 
Synthesefreundlichkeit.

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht auch als Zuweisung mit nur einem Prozess.
Bei Quartus kannst Du einstellen wie er den Zustandsvektor 
implementiert. Bei den Syntheseoptionen gibt es den Parameter "State 
Machine Processing", der ist defaultmäßig auf "Auto".

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

Bewertung
0 lesenswert
nicht lesenswert
Stefan R. schrieb:
> In den Beispielen werden
> immer ein Process zur Bearbeitung des States und ein Process der dem
> jewiligen State einen Ausgangsvektor zuteilt getrennt. Da VHDL nur eine
> Schaltung beschreibt, denke ich, dass dies hauptsächlich wegen der
> besseren Lesbarkeit so gemacht wird.
Das hat mehrere Gründe, einer kommt aus der Automatentheorie:
so ist ein Moore-Automat grundlegend aufgebaut
Weiterschaltlogik und Speicher
http://de.wikipedia.org/wiki/Moore-Automat

Mann kann das Modell noch weiter treiben und einen 3-Prozess Automaten 
beschreiben, der dann aber wirklich unhandlich wird.
Insbesondere bringt die Mehr-Automaten-Schreibweise Probleme mit sich, 
wenn z.B. die Sensitivliste des Kombinatorik-Teils nicht komplett ist, 
dann wird falsch simuliert.
Oder wenn im Kombinatorischen Teil ein Zähler eingefügt wird, oder, 
oder...
Such einfach mal hier im Forum nach Ein-, Zwei- und 
Drei-Prozess-Schreibweise oder sieh dir mal meine HP an:
http://www.lothar-miller.de/s9y/categories/37-FSM
http://www.lothar-miller.de/s9y/categories/36-Komb...
An den Beispielen dort ist nichts erfunden. Ich habe sie nur wegen der 
Häufung mal exemplarisch dargestellt.

Ich schreibe daher gern in der Ein-Prozess-Schreibweise und das dann 
gleich so:
http://www.lothar-miller.de/s9y/archives/16-Takt-i...

> Da Altera nichts darüber sagt, wie Quartus die Stata Machine
> generiert stellt sich mir Frage nach einer der
> Synthesefreundlichkeit.
Ob eine FSM jetzt Binär, Gray, One-Hot oder wie auch immer codiert ist, 
sollte dich gar nicht interessieren. Lass das doch die Tools selber 
entscheiden... ;-)

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.