Hallo,
ich möchte einen Frequenzteiler in ein eigenes Untermodul packen. Dabei
habe ich mich an die Clock Enable-Generierung welche hier auf der Seite
vorgeschlagen wird gehalten. Nun möchte ich das Teilverhältnis nicht als
constant haben, sondern aus der top_entity "übergeben" (als
Integerwert). Leider gibt mir ISE immer einen Fehler aus beim
compilieren.
Folgenbde Ziele möchte ich realisieren:
-Das Untermodul FreqDiv_test soll
a) den selben Clock wie das Topmodul verwenden
b) das Teilverhältnis von Topmodul "übergeben" bekommen
c) den geteilten Takt an das Topmodule "zurückgeben" (fdiv_out)
Hier mein Code
a) Topmodule
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FPA_172h is
port (
Clk: in std_logic);
end entity FPA_172h;
architecture Behavioral of FPA_172h is
component FreqDiv_test
port (
Clk: in std_logic;
cnt_div: in integer;
fdiv_out: out std_logic
};
end component;
begin
Teiler : FreqDiv_test port map (Clk, cnt_div, fdiv_out);
end Behavioral;
b) Untermodule
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity FreqDiv_test is
port
(
Clk: in std_logic;
cnt_div: in integer;
fdiv_out: out std_logic
);
end FreqDiv_test;
architecture Behavioral of FreqDiv_test is
signal cnt: integer range 0 to cnt_div-1; -- Zähler für Teiler
signal ce: std_logic;
begin
process(Clk)
begin
if rising_edge(Clk) then
if ce='1' then
fdiv_out <= '1';
end if;
end if;
end process;
process(Clk)
begin
if rising_edge(Clk) then
if cnt=cnt_div-1 then
ce <= '1';
cnt <= 0;
else
ce <= '0';
cnt <= cnt +1 ;
end if;
end if;
end process;
end Behavioral;
Ich bekomme immer einer Fehlermeldung im Topmodule am Ende der
Component-Deklaration:
Line 37. Unexpected symbol read: }.
Line 38. parse error, unexpected END, expecting IDENTIFIER
component FreqDiv_test
port (
Clk: in std_logic;
cnt_div: in integer;
fdiv_out: out std_logic
}; -- =>Line 37
end component; -- => Line 38
Ich schätze mal ich mache hier generell noch etwas falsch und es ist
kein einfacherer Syntax-Error...
Thx for Help
jey