mikrocontroller.net

Forum: FPGA, VHDL & Co. Problem bei Synthese


Autor: Gast_1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast_1 (Gast)
Datum:

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

Autor: Gast_1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast_1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.