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.