Hallo, ich bin neu in der VHDL Programmierung und versuche gerade Zähler zu schreiben. Mein Zähler zählt richtig bis zum Übertrag hoch und resetet sich dann korrekt. Jedoch fängt er bei "7" an das Vorzeichen falsch auszugeben, nach 7 folgt -8 dann -7 und dann 0 statt 7,8,9 (siehe Modelsim Screenshot). Folgend mein VHDL-Code der Architecture. Hoffe Ihr findet meinen Fehler. Liebe Grüße Jonas ----------------------------------------------------------------- signal hundertstel_temp, zehnerhundertstel_temp: std_logic_vector (3 downto 0); signal uebertrag_temp: std_logic; begin counterproc:process(in_clk,in_clr) begin if in_clr='1' then hundertstel_temp <= "0000"; zehnerhundertstel_temp <= "0000"; uebertrag_temp <= '0'; elsif in_clk'event and in_clk='1' then if hundertstel_temp = "1001" then if zehnerhundertstel_temp = "1001" then uebertrag_temp <= '1'; zehnerhundertstel_temp <= "0000"; else zehnerhundertstel_temp <= zehnerhundertstel_temp + '1'; uebertrag_temp <= '0'; end if; hundertstel_temp <= "0000"; else hundertstel_temp <= hundertstel_temp + '1'; zehnerhundertstel_temp <= zehnerhundertstel_temp; uebertrag_temp <= '0'; end if; end if; end process;
hallo, du musst in Modelsim darauf achten, dass du dein Signalattribut für das Signal "out_hundertstel" auf unsigned setzt. Ansonsten bekommst du für den Zählstand 8 und 9 eine negative Zahl, da dein höchstwertigstes Bit gesetzt wird wird. (vergleiche Zweierkomplementbildung für negative Zahlen). Es ist also nur ein Darstellungsproblem in Modelsim.
@ Jonas (Gast) >sich dann korrekt. Jedoch fängt er bei "7" an das Vorzeichen falsch >auszugeben, nach 7 folgt -8 dann -7 und dann 0 statt 7,8,9 (siehe >Modelsim Screenshot). Du musst Modelsim sagen, dass dein Signal vorzeichenlos ist. MFG Falk
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.