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; ------------------------------------------------------------------------
rising_edge ist stimmt schon, könnte das ggf. was mit dem Datentyp "bit" zu tun haben ?
ich bin mir nicht sicher aber ich denke die Bedingung muss in Klammern stehen. also elsif (rising_edge(clk)) then Gruß Jörg
Hallo Jörg ! Danke für den Tip, doch daran liegt es leider auch nicht.
clk MUSS vom Typ: STD_LOGIC sein ! entity kreuztisch is port(clk,rst,el,er,eu,eo,tarot :in std_logic; al,ar,au,ao :out std_logic); end kreuztisch;
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.