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
Und noch ein Rat: In deinem eigenen Interesse solltest du bei deinem Code eine sinnvolle Formatierung haben (z.B. Einrückungen des Codes innerhalb von einem Process, Verwendung von Klammern...). Damit machst du den Code lesbarer für dich und die anderen, vor allem wenn du die anderen dir helfen lassen willst.
Jan schrieb: > Warning: Found combinational loop of 1 nodes > bezogen auf "WHEN 0 => ausgang0 <= ausgang0 + resultreal;" Die Lösung: (besser spät als nie ;-) Das ist ein kombinatorischer Zähler. Denn hier wird, solange zaehler=0 ist, der ausgang0 immer schnellstmöglich um das resultreal hochgezählt... :-o Mehr zum Thema kombinatorische Schleifen: http://www.lothar-miller.de/s9y/categories/36-Kombinatorische-Schleife
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.