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
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?
ja hast Du recht die negative Flanke brauche ich nicht.Problem ist gelöst.Ich danke Dir.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.