Dezimalzahl zerschneiden

Gast #1137595
also ich würde es über einfache rechnungen machen. je nach anzahl der 
stellen halt erstmal z.B. -100 rechnen und einen zähler mitlaufen 
lassen, so oft diese operation geht bis die zahl <100 ist. anschließend 
das gleiche mit -10 machen und einen weiteren zähler mitlaufen lassen 
und dann mit -1. und die werte der zähler is dann die "zerhackte" 
dezimalzahl.

so zumindest mein erster gedanke.
Moderator (Firma: Titel) Persönliche Seite #1137600
Robert T. wrote:
> Gibt es da einen Befehl in VHDL? Bisher habe ich nichts gefunden.
Jein.
Was du willst ist eine Division durch 10.
Die Division an sich gibt es in VHDL (das ist das '/').
Aber der Haken an der Sache: die ist nicht synthetisierbar :-(

Am einfachsten ist die Zählermethode, wie von Nephilim beschreiben. 
Allerdings ist die Laufzeit u.U. recht lang :-/

Deterministischer ist da eine Radix-2 Division, allerdings ist die 
Komplexität schon deutlich höher.
OP #1137606
Hi, danke für die Antwort. Diesen Ansatz hatte ich 2 Minuten nach dieser 
Frage im Forum entdeckt. Andere Idee:

Könnte ich meinen Zähler als std_logic_vector(7 downto 0) laufen lassen 
und von diesem dann Z1 <= xy_std_logic_vector(7 downto 4) und Z2 <= 
yx_std_logic_vecotor(3 downto 0) "cutten".

Oder macht man sowas nicht?
OP #1137618
Also eigentlich will ich eine ganz einfache Anzeige auf einem 7-Segment 
Display haben. Und da dachte ich mir (ohne Überlauf und Instanzierungen 
usw.) könnte ich einfach meinen Zähler zerschneiden und dann auf meine 
beiden (oder eventuell mehr) Anzeigen bringen.
#1137621
Also da gibt es zwei einfache Moeglichkeiten:

a) Du zeigst die Zahl nicht dezimal sondern hexadezimal an, dann kannst 
du direkt jeweils vier Bit breite Stuecke deines Zaehlers auf die 
Anzeige legen

b) Du verwendest mehrere Counter, die jeweils von 0 bis 9 zaehlen, dann 
zurueckgesetzt werden und den jeweils hoeherwertigen um eins erhoehen 
(das ist dann das BCD-Format)

und eine kompliziertere:

c) Einen grossen Counter und dann eine mehr oder weniger aufwendige 
Logik die den grossen Vektor in die einzelnen Ziffern zerlegt wie oben 
beschrieben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.