VHDL Rechner

Gast #1931735
Lesenswert?
• ▲
▼
Hallo.
Ich wollte in VHDL einen Adder/subber schreiben und hab mich da im 
Internet ein bisschen informiert. Ich habe da ein Programm gefunden das 
im BCD-Code aus jeder subtraktion eine addition macht und dazu die 
neagtiven Zahlen umwandelt und zwar mit der folgenden Zeile:
if ( zahl1(16) = '1' ) then

wzahl2 <= '1' & (X"9" - zahl1(15 downto 12)) & (X"9" - zahl1(11 downto 
8)) & (X"9" - zahl1(7 downto 4)) & (X"9" - zahl1(3 downto 0));

Den Rest vom Programm versteh ich nun meine Frage:
Was hat das X"9" - zahl zu bedeuten?
Ich weiß das X9 die hexadezimale 9 ist aber was bewirkt es wenn man 9- 
die zahl rechnet.
Für Antwort wäre ich dankbar
Moderator (Firma: Titel) Persönliche Seite #1931754
Lesenswert?
• ▲
▼
Lukas schrieb:
> Was hat das X"9" - zahl zu bedeuten?
Das ist eine Subtraktion der zahl vom Wert 9

Lukas schrieb:
> Ich weiß das X9 die hexadezimale 9 ist aber was bewirkt es wenn man 9-
> die zahl rechnet.
Das z.B. bei einer Zahl von 0 der Wert 9 herauskommt, und bei einer Zahl 
9 kommt 0 heraus.

Nimm mal die BCD-Zahl x"1234"
dann steht da:
1
  wzahl2 <= '1' & (X"9" - X"1") & (X"9" - X"2") & (X"9" - X"3") & (X"9" - X"4");
damit ergibt sich dann wzahl2 zu
'1' & x"8" & x"7" & x"6" & x"5"

Was das soll, kannst jetzt aber nur du beantworten, weil nur du den 
VHDL-Code hast... :-/
Moderator (Firma: Titel) Persönliche Seite #1931820
Lesenswert?
• ▲
▼
Lukas schrieb:
> Ich wollte in VHDL einen Adder/subber schreiben und hab mich da im
> Internet ein bisschen informiert.
Und wieso willst du da so aufwendig im BCD-Code rumwursteln?

In VHDL beschreibe ich einen Addierer so:    sum <= a + b;
Und einen Subtrahierer so:                   dif <= a - b;
Und genauso hätte ich das auch gemacht:
generisch rechnen und die Zahl nur für die Anzeige umwandeln...
Warum willst du es unbedingt im BCD-Code machen?


BTW: der Code ist nicht als gutes Beispiel brauchbar...
Sowas macht man nicht:
 zahl1 <= "00000000000000000";

Und die dreiseitige PS/2 Schnittstelle kann man auch kürzer schreiben:
http://www.lothar-miller.de/s9y/archives/75-PS2-Tastatur.html

Und asynchrone Resets sollte man prinzipiell nicht verwenden:
http://www.lothar-miller.de/s9y/archives/70-Asynchroner-Reset.html
Gast #1931859
Lesenswert?
• ▲
▼
ja aber is so ein BCD-Dual  und Dual-BCD Code Wandler nich sehr 
aufwendig?
Und da die Daten von der Tastatur so kommen und auch wieder als bcd 
ausgegeben werden isses da nich praktischer so zu rechnen?
Moderator (Firma: Titel) Persönliche Seite #1931906
Lesenswert?
• ▲
▼
Lukas schrieb:
> und bei sum <= a+b oder dif gibt es da probleme wenn a oder b negativ
> ist?
Das kommt auf den Datentyp an.
Es gibt ja zum Glück integer und signed...

> ja aber is so ein BCD-Dual und Dual-BCD Code Wandler nich sehr
> aufwendig?
http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung
Wie sagt Radio Eriwan: Im Prinzig nein, aber...
... warum eigentlich der ganze Aufwand?

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