rising_edge(clk) ---> ERROR

Gast #487894
Lesenswert?
• ▲
▼
ModelSim XE Compiler meldet Error Zeile 21 @ elsif rising_edge(clk) then 
... Meldung: "No feasible entries for subprogram rising_edge". Auf 
Deutsch: "Keine praktikablen Eintragungen für das Unterprogramm 
rising_edge()", die jedoch als Funktion in ieee.std_logic_1164.all 
implementiert und eingebunden ist ?! Meldung erscheint auch wenn 
rising_edge durch ~Äquivalent "else  clk'event and clk = '1' then ..." 
ersetzt wurde.
Möglicherweise hat jemand einen Rat - Danke! Chris


library IEEE;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
------------------------------------------------------------------------
entity kreuztisch is
    port(clk,rst,el,er,eu,eo,tarot    :in bit;   -- std_logic
         al,ar,au,ao                  :out bit); --std_logic
end kreuztisch;
------------------------------------------------------------------------
architecture verhaltensbeschreibung of kreuztisch is

   type zv_type is (init, abfangen, bereit, nach_or, nach_u, nach_l);
   signal zv,zvneu : zv_type;
   begin
   ---------------------------------------------------------------------
   taktung: process (clk,rst)
       begin
           if (rst='1') then
              zv<=init;
           elsif rising_edge(clk) then
              zv<=zvneu;
           end if;
       end process;
   ---------------------------------------------------------------------
   automat: process (zv,tarot,el,er,eu,eo)
       begin
           case zv is
               when init =>
                   if (tarot='0') then
                       al<='0';
                       ar<='0';
                       au<='0';
                       ao<='0';
                       zvneu<=init;
                   else
                       if (el='0') then
                           al<='1';
                           ar<='0';
                           au<='0';
                           ao<='0';
                           zvneu<=init;
                       else
                          if (eu='0') then
                              al<='0';
                              ar<='0';
                              au<='1';
                              ao<='0';
                              zvneu<=init;
                          else al<='0';
                               ar<='0';
                               au<='0';
                               ao<='0';
                               zvneu<=abfangen;
                          end if;
                       end if;
                   end if;
               when abfangen =>
                   if (tarot='1') then
                       al<='0';
                       ar<='0';
                       au<='0';
                       ao<='0';
                       zvneu<=abfangen;
                    else al<='0';
                         ar<='0';
                         au<='0';
                         ao<='0';
                         zvneu<=bereit;
                    end if;
                when bereit =>
                    if (tarot='0') then
                       al<='0';
                       ar<='0';
                       au<='0';
                       ao<='0';
                       zvneu<=bereit;
                    else al<='0';
                         ar<='0';
                         au<='0';
                         ao<='0';
                         zvneu<=nach_or;
                    end if;
                when nach_or =>
                    if (eo='0') then
                        if (er='0') then
                            al<='0';
                            ar<='1';
                            au<='0';
                            ao<='1';
                            zvneu<=nach_or;
                        else al<='0';
                             ar<='0';
                             au<='0';
                             ao<='1';
                             zvneu<=nach_or;
                        end if;
                    else
                        if (er='0') then
                            al<='0';
                            ar<='1';
                            au<='0';
                            ao<='0';
                            zvneu<=nach_or;
                        else al<='0';
                             ar<='0';
                             au<='0';
                             ao<='0';
                             zvneu<=nach_u;
                        end if;
                    end if;
                when nach_u =>
                    if (eu='0') then
                        al<='0';
                        ar<='0';
                        au<='1';
                        ao<='0';
                        zvneu<=nach_u;
                    else al<='0';
                         ar<='0';
                         au<='0';
                         ao<='0';
                         zvneu<=nach_l;
                    end if;
                when nach_l =>
                    if (el='0') then
                        al<='1';
                        ar<='0';
                        au<='0';
                        ao<='0';
                        zvneu<=nach_l;
                    else al<='0';
                         ar<='0';
                         au<='0';
                         ao<='0';
                         zvneu<=bereit;
                    end if;
           end case;
   end process;
   ---------------------------------------------------------------------
end verhaltensbeschreibung;
------------------------------------------------------------------------

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