mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL Rechner


Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
  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... :-/

Autor: Lukas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
woops sorry wollte den coe mit hochladen
hier isser.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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-Ta...

Und asynchrone Resets sollte man prinzipiell nicht verwenden:
http://www.lothar-miller.de/s9y/archives/70-Asynch...

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und bei sum <= a+b oder dif gibt es da probleme wenn a oder b negativ 
ist?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oke dann danke ich schonmal werds dann wohl mal nach deiner methode 
versuchen :=)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.