mikrocontroller.net

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


Autor: Jonas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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;

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"DEZIMAL" statt "unsigned int"

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.