Problem bei Synthese

Gast #887557
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
#887578
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?
Gast #887895
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
Gast #887930
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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren