Hallo, gibt es eine Möglichekeit eine Dezimalzahl zu "zerhacken"? Also z.B. würde gerne eine zweistellige Zahl in 2 verschiende Signale legen. 45 z.B. => Z1 = 4, Z2 = 5. Gibt es da einen Befehl in VHDL? Bisher habe ich nichts gefunden.
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.
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.
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?
Wenn Z1 und Z2 jeweils nur Ziffern von 0 bis 9 enthalten sollen, dann nennt man das BCD Codierung.
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.
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.
Vielen Dank. Ich denke ich werde jetzt mit die Variante mit den 2 Zählern ausprobieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.