mikrocontroller.net

Forum: FPGA, VHDL & Co. dezimalzähler verilog


Autor: Robert M. (rob2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

bin grad dabei mir nen dezimalzähler zu bauen... soweit so gut. nun soll 
er bei 49 auf 0 gesetzt werden, das habe ich mir wie folgt gedacht:
wenn b=4 und a=9 ist setz ich alles einfach zurück, siehe ende vom code;
funktioniert leider nicht so ganz. vieleicht kann mir jemand weiter 
helfen. danke

module decimal_counter(A,B,OVERFLOW,CLK,RST);
input  CLK, RST;
output OVERFLOW;
output [3:0] A;
reg OVERFLOW;
reg [3:0] A;
reg [3:0] B;
always @ (posedge CLK or negedge RST)

if (~RST)
  begin
    OVERFLOW <= 1'b0;
    A <= 4'b0000;
  end
else if (A<9)
  begin
    A <= A + 1'b1;
    OVERFLOW <= 1'b0;
  end
else
  begin
    A <= 4'b0000;
    OVERFLOW <= 1'b1;
    //B <= B + 1'b1;
  end

if (B==4 && A==9)
  begin
    OVERFLOW <= 1'b0;
    A <= 4'b0000;
    B <= 4'b0000;
  end

endmodule

Autor: Schrotty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann es sein, dass deiner einer-Stelle immer nur bis 8 zählt? und am 
Ende dein Zähler nicht wieder auf Null geht?

Ich bin zwar nicht fit in Verilog, aber mir scheint es so, als würdest 
du nur bis 8 zählen (A < 9) und dann in den else-zweig springen um dort 
den Einer-Zähler zurück zu setzen und den Übertrag in die Zehner-Stelle 
zu machen.

Ebenfalls anpassen müsstest du meines Erachtens den Überlauf des 
Gesamten Zählers, denn der erfolgt vermutlich bei 48..

aber wie gesagt, ich kenn mich mit verilog nicht aus..

Autor: Schrotty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm... bin mir grad selber etwas unschlüssig, ob das stimmt, was ich 
oben behauptet habe.. aber probier´s doch einfach mal aus ;-)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> funktioniert leider nicht so ganz.
Was funktioniert nicht so ganz? Zählt er über 4 bzw. 9 hinaus?

Autor: Robert M. (rob2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habs nun doch noch hinbekommen das er bis 49 zählt. hab einfach zwei 
counter gemacht einen für die 1er stelle und einen für die 10er stelle. 
entsprechend dann die overflows gezählt und gesagt bei 4 bzw. 9 
zurücksetzen.

besten dank trotzdem für eure hilfe. vieleicht steh ich ja schon bald 
vorm nächsten problem...

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.