Hallo, kurz und knapp: Sind [vhdl] wait until condition; [\vhdl] statements immer synthetisierbar? Also auch mehrere, hintereinander kommende Statements?
frage schrieb: > Sind > [vhdl] > wait until condition; > [\vhdl] > statements immer synthetisierbar? "Immer" ist immer falsch. Welche VHDL Konstrukte synthetisierbar sind beschreibt der "synthesis style guide" des jeweiligen Synthesetools. Pauschal gültige Antworten gibt es dazu nicht. Relativ oft wird "wait" im zusammenhang mit der Taktflanke zur synthesegerechten Beschreibung getakter FF genutzt. Das kann es aber auch schon mit den synthesefähigen "wait"-Konstrukten gewesen sein. MfG,
Ich frage mich immer noch, was es für einen Sinn macht, solche Konstrukte zu verwenden, wenn man synthestisierbaren Code braucht. Mag sein, dass Xilinx das nimmt, andere tun es gfs nicht. Der Begriff "wait" macht bei realer Hardware auch keinen Sinn, weil Hardware keine wirkliche zeitliche Abhängigkeit kennt. Die müsste man erst auch Umwegen hineininterpretieren.
Weltbester FPGA Pongo schrieb im Beitrag #4308475: > Der Begriff "wait" macht bei realer Hardware auch keinen Sinn, weil > Hardware keine wirkliche zeitliche Abhängigkeit kennt. Es fällt zumindest mir nicht arg schwer, "wait until rising_edge(CLK)" als "warte auf nächste steigende Taktflanke" zu interpretieren. Das ist allemal intuitiver als den Takt in die implizite "Warteliste" (=Sensitivliste) aufzunehmen und danach nur die steigende Flanke abzufragen.
Vielleicht hat er ein sondern Thread gelesen... "wait until ist bei Lothar Miller synthetisierbar" ;-) /joke
ich frage mich, ob diese Schreibweise einer Statemachine überhaupt guter Stil ist?! Oder anders: warum sollte man diese Schreibweise überhaupt verwenden? Gibt es da Anwendungen für?
fluuppu schrieb: > ob diese Schreibweise einer Statemachine überhaupt guter Stil ist?! Welche Schreibweise? Ein "wait until" in der FSM? Tadelloser Stil, garantiert synchrones Design. http://www.lothar-miller.de/s9y/archives/16-Takt-im-Prozess.html http://www.lothar-miller.de/s9y/archives/43-Ein-oder-Zwei-Prozess-Schreibweise-fuer-FSM.html
Lothar M. schrieb: > fluuppu schrieb: >> ob diese Schreibweise einer Statemachine überhaupt guter Stil ist?! > Welche Schreibweise? > > Ein "wait until" in der FSM? > Tadelloser Stil, garantiert synchrones Design. > http://www.lothar-miller.de/s9y/archives/16-Takt-i... > http://www.lothar-miller.de/s9y/archives/43-Ein-od... ich bezog mich auf das Beispiel wo Du ganz viele "Wait until" im Prozess hattest. Da hast du ja beides gegenübergestellt:
1 | architecture Behavioral of wait_im_process is |
2 | signal cnt : integer range 0 to 6; |
3 | begin |
4 | |
5 | process begin |
6 | wait until rising_edge(clk100MHz); |
7 | case cnt is |
8 | when 0 => dout <= '0'; |
9 | when 1 => clk <= '1'; |
10 | when 2 => clk <= '0'; |
11 | dout <= '0'; |
12 | when 3 => clk <= '1'; |
13 | when 4 => clk <= '0'; |
14 | dout <= din; |
15 | when 5 => dout <= '1'; |
16 | when 6 => clk <= '0'; |
17 | dout <= '1'; |
18 | end case; |
19 | if (cnt<6) then cnt <= cnt+1; |
20 | else cnt <= 0; |
21 | end if; |
22 | end process; |
23 | |
24 | end Behavioral; |
Versus
1 | entity wait_im_process is |
2 | Port ( clk10ns : in STD_LOGIC; |
3 | din : in STD_LOGIC; |
4 | dout : out STD_LOGIC := '0'; |
5 | clk : out STD_LOGIC := '0'); |
6 | end wait_im_process; |
7 | |
8 | architecture Behavioral of wait_im_process is |
9 | begin |
10 | |
11 | process begin |
12 | dout <= '0'; |
13 | wait until rising_edge(clk10ns); |
14 | clk <= '1'; |
15 | wait until rising_edge(clk10ns); |
16 | clk <= '0'; |
17 | dout <= '0'; |
18 | wait until rising_edge(clk10ns); |
19 | clk <= '1'; |
20 | wait until rising_edge(clk10ns); |
21 | clk <= '0'; |
22 | dout <= din; |
23 | wait until rising_edge(clk10ns); |
24 | dout <= '1'; |
25 | wait until rising_edge(clk10ns); |
26 | clk <= '0'; |
27 | dout <= '1'; |
28 | wait until rising_edge(clk10ns); |
29 | end process; |
30 | |
31 | end Behavioral; |
fluuppu schrieb: > ich bezog mich auf das Beispiel wo Du ganz viele "Wait until" im Prozess > hattest. Das war nur ein Beispiel, was Synthesizer schon können. Ich würde das auch niemals (oder bestenfalls in homöopathischen Mengen) in produktivem Code einsetzen...
fluuppu schrieb: > ich frage mich, ob diese Schreibweise einer Statemachine überhaupt guter > Stil ist?! Oder anders: warum sollte man diese Schreibweise überhaupt > verwenden? Gibt es da Anwendungen für? * Keine Sensitivitaetsliste notwendig * Eine Einrueckungstiefe im Source weniger -> mehr Platz auf dem Bildschirm bzw. kann man den Tabulator auch groesser stellen, was der Uebersichtlichkeit enorm dient * Sofort erkennbar, dass da kein asynchrones Zeugs im Prozess steht Also ich sehe da nur Vorteile und damit ist es fuer mich "guter Stil"
berndl schrieb: > * Keine Sensitivitaetsliste notwendig > * Eine Einrueckungstiefe im Source weniger -> mehr Platz auf dem > Bildschirm bzw. kann man den Tabulator auch groesser stellen, was der > Uebersichtlichkeit enorm dient > * Sofort erkennbar, dass da kein asynchrones Zeugs im Prozess steht > > Also ich sehe da nur Vorteile und damit ist es fuer mich "guter Stil" Und weiter: * sofort erkennbar, dass der Zustandsgraph der Statemaschine einfach nur ein großer Kreis ist. * sofort erkennbar, dass der Zustand nicht noch andere Prozesse beeinflusst, da es kein explizites Zustandssignal gibt.
Hoppla, da sind jetzt 2 Beschreibungsarten zugleich bewertet worden: a) die 1-Prozess-Schreibweise mit einem wait until ganz am Anfang und b) der "dauerlaufende" Prozess mit mehreren wait, der eigentlich nur ein Bitmuster ausgeben kann.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.