Forum: FPGA, VHDL & Co. VHDL Zähler zählt falsch


von Jonas (Gast)


Angehängte Dateien:

Lesenswert?

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;

von Daniel R. (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@  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

von Gast (Gast)


Lesenswert?

"DEZIMAL" statt "unsigned int"

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
Noch kein Account? Hier anmelden.