Dezimalzahl zerschneiden

Gast #1137595
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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?
#1137621
Lesenswert?
• ▲
▼
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren