Forum: FPGA, VHDL & Co. Quartusrichtlinien für Procedure


von Michael K. (manhunt)


Lesenswert?

Hallo,

Frage weiß jemand wo man die Guidlines für den Quartus Compiler findet 
im speziellen wie und was er in Procedures unterstützt.

Das Handbook gibt dazu nicht wirklich was her.

lg Mike

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Michael K^3 schrieb:
> weiß jemand wo man die Guidlines für den Quartus Compiler findet
Das hast du schon probiert?
http://www.google.de/search?q=quartus+synthesis+guide

> im speziellen wie und was er in Procedures unterstützt.
Im Prinzip unterstützt ein Synthesizer in Prozeduren all das, was er 
auch ausserhalb von Prozeduren unterstützt. Allerdings wirst du gern mal 
ein Problem bekommen, wenn du z.B. einen Takt in eine Prozedur einbaust 
und dann die Prozedur in einem getakteten Prozess aufrufst...

Was ist dein eigentliches Problem?

von Fritz J. (fritzjaeger)


Lesenswert?

Michael K^3 schrieb:
> Hallo,
>
> Frage weiß jemand wo man die Guidlines für den Quartus Compiler findet
> im speziellen wie und was er in Procedures unterstützt.
>
> Das Handbook gibt dazu nicht wirklich was her.

Hallo Michael,

ich nehme an das du wissen möchtest was Quartus als synthesetool an 
proceduren unterstütz, also welche Richtlinien es für synthese bzgl 
prozeduren gibt. Das Handbuch gibt dazu keine Antwort, weil die Frage 
falsch gestellt. VHDL ist eine Hardwarebeschreibungsprache: der 
Synthese-Guide beschreiben wie du VHDL schreiben musst um einen 
MUXER,RAM-Block, FF zu erhalten. Also in Hardware denken, proceduren 
sind nur Mittel zum Zweck

Ich setze Prozeduren ein, um Blöcke von identischen Zuweisungen zu 
strukturiern. Hat bspw eine FSM einen mehrfach vorkommenden Übergang 
(z.B. Übergang in den IDLE-Zustand, bei dem der Bus freigegeben wird, 
und der Abschluss der Transaktion signalisiert) kommt das in eine 
procedure mit griffigen Namen (P_free_Bus).


Zur modellierung und in Testbenches geht natürlich mehr, nämlich das was 
im Standard steht. Quick reference Cards ist ein guter Spickzettel.


Die Quartus Doku - Kapitelübersicht:
http://www.altera.com/literature/lit-qts.jsp

Kapitel zum Synthese Coding Style:
Kap11: Recommended Coding Style: 
http://www.altera.com/literature/hb/qts/qts_qii51007.pdf
Kap 14: http://www.altera.com/literature/hb/qts/qts_qii51008.pdf

Advanced Synthesec Cookbook:
http://www.altera.com/literature/manual/stx_cookbook.pdf

Quick reference Card:
http://www.eda.org/rassp/vhdl/guidelines/vhdlqrc.pdf

MfG,

von Stachele (Gast)


Lesenswert?

Hast Du ein konkretes Beispiel für deine Prozeduren?

von MichaelK (Gast)


Lesenswert?

Sorry das ich erst jetzt zurück scheibe, war mit modelsim-altera 
Problemen beschäftigt das dumme Ding startet nicht.

Danke für die viele Antworten.

Also, anfangs wollte ich eine Prozedur bauen die "pressed, release, 
state" eines Buttons erkennt. Ist aber nicht möglich da variablen ihrn 
Wert nicht behalten. (hinterher klar da es sich ja nicht um instanzen 
handelt....)

Ja und das andere Thema waren prinzipell Takte und was passiert wenn man 
getaktete Prozeduren in getakteten Umgebungen aufruft. Bzw werden Takte 
überhaupt unterstützt. So wie ich das Verstehe sind Prozeduren am besten 
als rapper für logik zu misbrauchen.

lg Michael

von Klaus (Gast)


Lesenswert?

MichaelK schrieb:
> rapper für logik

Bei dem was man heute so Musik nennt, kann das nur besser werden :-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

MichaelK schrieb:
> So wie ich das Verstehe sind Prozeduren am besten
> als rapper für logik zu misbrauchen.
Du meinst sicher "wrapper" (=Einwickler)...
Und wenn der Code synthesefähig sein soll, lautet die Antwort: Ja.

> Also, anfangs wollte ich eine Prozedur bauen die "pressed, release,
> state" eines Buttons erkennt.
Vergiss KOMPLETT diese Softwaredenkweise!!!!
(ich kann gar nicht genug Ausrufezeichen machen!!!).
Sonst wirst du da noch einige Male ganz dumm aus der Wäsche gucken.

Du musst dich fragen: wie würde ich das mit Gattern und FLipflops bauen. 
Und dann den VHDL-Code so hinschreiben, dass der Synthesizer deine 
Schaltung draus baut.

> eine Prozedur bauen die "pressed, release, state" eines Buttons erkennt.
Das wird aber ganz anders gemacht:
http://www.lothar-miller.de/s9y/categories/18-Flankenerkennung
http://www.lothar-miller.de/s9y/categories/19-SpikePuls
Und vergiss das Einsynchronisieren nicht:
http://www.lothar-miller.de/s9y/archives/64-State-Machine-mit-asynchronem-Eingang.html

Am besten machst du erst mal die blinkende LED:
http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html
Und das legendäre Lauflicht:
http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html

> Ist aber nicht möglich da variablen ihrn Wert nicht behalten.
Natürlich tun sie das. Da sind schon einige auf die Nase gefallen...
Beitrag "Variable vs Signal"

von MichaelK (Gast)


Lesenswert?

Lothar Miller schrieb:
>> Ist aber nicht möglich da variablen ihrn Wert nicht behalten.
> Natürlich tun sie das. Da sind schon einige auf die Nase gefallen...
> Beitrag "Variable vs Signal"

Hm laut dem Buch von VHDL Synthese, behalten Variablen in Procedures 
anders als in prozessen ihre Werte nicht.

lg

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

MichaelK schrieb:
> Hm laut dem Buch von VHDL Synthese, behalten Variablen in Procedures
> anders als in prozessen ihre Werte nicht
Richtig, da habe ich mich mental verirrt...

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.