mikrocontroller.net

Forum: FPGA, VHDL & Co. Warnung bei Statemachine (Synplify / IspLever)


Autor: Andi Z. (duderino65)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich habe in meinem design eine statemachine. wenn ich das design nicht 
direkt im ispLever7.2 synthetisiere sondern in synplify, gibt er mir 
folgene warnung aus:

Extracted state machine for register STATE
State machine has 4 reachable states with original encodings of:
   00
   01
   10
   11
@W:"C:\ispTOOLS7_2_STRT\work\MXO2280\receiver_test_v1\rec_cntl.vhd":252: 
2:252:3|Initial  value is not supported on state machine STATE
@END

hier noch ein teil des quelltextes:
begin
    if falling_edge(sys_clk25M) then
      if sys_en = '1' then
      
        clk_cnt_i <= (others => '0');
        smpl_cnt_i <= (others => '0');
        neg_cnt_i <= (others => '0');
        rlock <= '0';
        STATE <= CNT_STATE;
      
      elsif sys_en = '0' and all_enable = '1' then

        case STATE is
          when CNT_STATE =>....
          when SMPL_STATE => ....
          when NEG_STATE =>....
          when RESET_STATE => ....
        end case;
                      .........

da ich gerade das design durchchecken muss weil es nicht richtig 
funktioniert würde ich gerne wissen was die meldung zu bedeuten hat. ich 
kann mir darunter nicht viel vorstellen.
kann mir jemand helfen?


mfg

Andi

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die fehlermeldung besagt, das dein initialisierungswert für dein signal 
"STATE" nicht unterstützt wird.

wird dieses signal von dir noch irgendwo vorinitialisiert? also bevor du 
es in dem "if sys_en = 1"-zweig auf einen startwert legst?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist STATE definiert?
Wie wird STATE initialisiert?

Autor: Andi Z. (duderino65)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh ja hab ich vergessen dazu zu schreiben...

--Signale und Zustände für die Statemachine--
  type states is (CNT_STATE, RESET_STATE, SMPL_STATE, NEG_STATE);
  signal STATE : states := CNT_STATE;

das ist die initialisierung


mfg

Andi

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>> ispTOOLS7_2_STRT
> signal STATE : states := CNT_STATE;
Die Starter-Edition der Toolchain unterstützt die Initilisierung 
nicht!!!
Schade, eigentlich... :-(

Autor: Andi Z. (duderino65)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah ok,

dann kann ich die initialisierung rausmachen.

danke


mfg

Andi

Autor: Andi Z. (duderino65)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

das nächste problem ist nun aufgetaucht.
ich habe ein prozess welcher mir eine taktflanke eines signals anzeigt. 
dazu verwende ich ein "pre_rxdv" mit dem ich den aktuellen wert des 
signals vergleiche.
der prozess reagiert auf die steigende flanke der 25Mhz clock und 
vergleicht den letztenm wer mit dem neuen und setzt dann für einen takt 
ein signal.
hier mal der code:
  signal cnt_start_i   : std_logic := '0';
  signal pre_rxdv   : std_logic := '0';
  
  attribute syn_keep of cnt_start_i : signal is true; 
  attribute syn_keep of pre_rxdv : signal is true;
  attribute syn_noprune : boolean;
  attribute syn_noprune of cnt_start_i : signal is true; 
  attribute syn_noprune of pre_rxdv : signal is true;

....

if rising_edge(sys_clk25M) then
      if sys_en = '1' then
        pre_rxdv <= '0';
        cnt_start_i <= '0';
        
      elsif sys_en = '0' then
        if rxen = '1' and pre_rxdv = '0' then
          cnt_start_i <= '1';
          pre_rxdv <= rxen;
        else
          cnt_start_i <= '0';
          pre_rxdv <= rxen;
        end if;
      end if;
    end if;

nach der synthese wurden die beiden signale rausgeschmissen. mit den 
direktiven passiert das aber auch. dazu muss ich sagen das mein 
restliches design auf fallende flanken reagiert.

hier die meldung von synplify:

@W: BN226 
:"c:\isptools7_2_strt\work\mxo2280\receiver_test_v2\rec_cntl.vhd":114:2: 
114:3|Property  n_syn_noprune incorrectly applied to instance 
RECEIVE_CONTROL.INCOMING_DATA\.pre_rxdv.Q_0
@W: BN226 
:"c:\isptools7_2_strt\work\mxo2280\receiver_test_v2\rec_cntl.vhd":114:2: 
114:3|Property  n_syn_noprune incorrectly applied to instance 
RECEIVE_CONTROL.INCOMING_DATA\.cnt_start_i.Q_0

somit kann ich die signale ja nicht im simulator finden.
wie kann ich die signale den behalten?

mfg

Andi

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
syn_noprune existiert nur für Instanzen.
Für Signale ist es syn_keep, für Register syn_preserve.


Der Code-Ausschnitt sieht ansonsten soweit gut aus - sonst gibt es keine 
Warnungen?
Warum benutzt du unterschiedliche Taktflanken? Normalerweise sollte man 
sich auf eine Flanke beschraenken.

Autor: Andi Z. (duderino65)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ne da kommen keine warnungen mehr. nur die, die ich zu beginn hier schon 
erwähnt habe und welche mich nicht stört.

ich verwende ansich nur eine taktflanke im ganzen design. allerdings ist 
es gerade sehr günstig das design dadurch zu synchronisieren. und jetzt 
läuft alles tadellos.


danke...

mfg

Andi

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.