Gast
#1842789
Hi, kann mir vllt jemand mit meinem problem weiterhelfen? ich habe
folgenden code, enable ist auf 1 gesetzt, clock ist er Takt und
resultreal hat auuch eindeutige werte, aber als ergebnis krieg ich in
der simulation für ausgang immer nur 'U'.
[vhdl]
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE IEEE.numeric_std.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Entity Declaration
ENTITY aufsummierer IS
-- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
PORT
( enable: IN STD_LOGIC;
clock : IN STD_LOGIC;
resultreal : IN STD_LOGIC_VECTOR(23 downto 0);
resultim : IN STD_LOGIC_VECTOR(23 downto 0);
ausgang : out std_logic_vector ( 27 downto 0 )
);
-- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
END aufsummierer;
-- Architecture Body
ARCHITECTURE aufsummierer_architecture OF aufsummierer IS
signal zaehler : natural range 0 to 3;
signal zaehler2 : natural range 0 to 3;
signal ausgang0: std_logic_vector (27 downto 0);
signal ausgang1: std_logic_vector (27 downto 0);
signal ausgang2: std_logic_vector (27 downto 0);
signal ausgang3: std_logic_vector (27 downto 0);
BEGIN
Process ( clock , enable, zaehler)
begin
If clock = '1' and clock'event and enable = '1' then
If zaehler = 3 then
zaehler <= 0;
else
zaehler <= zaehler +1;
end if;
end if;
Case zaehler2 is
WHEN 0 => ausgang0 <= ausgang0 + resultreal;
WHEN 1 => ausgang1 <= ausgang1 + resultreal;
WHEN 2 => ausgang2 <=ausgang2 + resultreal;
WHEN 3 => ausgang3 <=ausgang3 + resultreal;
end case;
Case zaehler is
WHEN 0 => ausgang <= ausgang0;
WHEN 1 => ausgang <= ausgang1 ;
WHEN 2 => ausgang <=ausgang2 ;
WHEN 3 => ausgang <=ausgang3 ;
end case;
end process;
end aufsummierer_architecture;
[\vhdl]
Bei der Implemtierung erschient zudem die Warnung :Warning: Found
combinational loop of 1 nodes bezogen auf "WHEN 0 => ausgang0 <=
ausgang0 + resultreal;"
MfG