Forum: FPGA, VHDL & Co. Problem bei Synthese


von Gast_1 (Gast)


Lesenswert?

Hallo zusammen!
ich hab ein zustandsautomat in vhdl geschrieben.Ich hab es simuliert und 
es laüft wunderbar.Die Überraschung ist bei der Synthese, kriege ich 
fehlermeldung:
Signal Folge_z cannot be synthesized, bad synchronous description. The 
description style you are using to describe a synchronous element 
(register, memory, etc.) is not supported in the current software 
release.
Im programm arbeite ich mit pos-flanke meines clocks.Mit jeder positiven 
F. kriege ich mein naechster zustand,aber in einem zustand muss ich da 
mit negativer flanke auch arbeiten(Counter züählen) und da ist mein 
fehler weil ich es erstmal auskommentiert hab und ja dann wird das 
programm synthesierbar sein.
Hat jemand irgendeine Idee!oder es ist möglich in einem einzelnen 
zustand mit der anderen flanke des clocks zu arbeiten?Ich bedanke mich 
im Voraus.
Tool:WEbPACK 10.1

von Jan M. (mueschel)


Lesenswert?

Ein Flipflop kann immer nur auf eine Taktflanke reagieren. Gemischte 
Logik ist nicht nur unpraktisch, kann auch zu haesslichen Fehlern 
fuehren, wenn man nicht genau weiss, was man da tut.

Wofür brauchst du die negative Flanke überhaupt? Warum muss da zwischen 
zwei Takten synchron gezählt werden?

von Gast_1 (Gast)


Lesenswert?

ja hast Du recht die negative Flanke brauche ich nicht.Problem ist 
gelöst.Ich danke Dir.

von Gast_1 (Gast)


Lesenswert?

Hello wieder!
ich muss erstmal das program stück posten!

when S2 =>  --Zustand S2
                                                                              if 
counter<15 then
               counter<=counter+1;
               Folge_z<=S3;
               else
               Folge_z<=S0;
               counter<=(others=>'0');
                --Data<=(others=>'0');
              end if;
Das problem bei mir wenn ich den zustand S2 erreiche wird counter 
inkrementiert und wenn ich es wieder verlasse wird counter nochmal 
inkremenitiert obwohl ich nur mit einem poaitiven flanke arbeite?
MFG

von Jan M. (mueschel)


Lesenswert?

Ist dieses Fragment nun in einem synchronen oder einem kombinatorischen 
Prozess? Falls es ein kombinatorischer ist, solltest du eigentlich auch 
entsprechende Fehlermeldungen bei der Synthese erhalten.

von Gast_1 (Gast)


Lesenswert?

jep hab ich!Das war ein synchrones prozess.Mein fehler bestand darin, 
dass ich wieder mein Clock in sensitivity_list dieses prozesses 
deklarieret hab,Aber es reicht nur für einen prozess der 
zustandaktualisierung.ZB:
aktualisierung:process(Myclock)
if rising_edge(My clock) then
Current_state<=Nxt_state;
end if;
.
.
.
end process aktualisierung;

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.