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
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... :-/
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
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?
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?
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.