mikrocontroller.net

Forum: FPGA, VHDL & Co. Codierung von negativen Zahlen für Adder in Spartan


Autor: Nichtwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

bin Anfänger in VHDL und lerne mit der WEB ISE.

Meine Frage betrifft die Kodierung von negativen ganzen Zahlen.

Beispiel: Wenn ich mit dem Coregen einen Adder z.B. mit jeweils 
Eingangs-Bitbreite 9 Bit entwerfe ( als vorzeichenbehaftet deklariert ) 
und diesen in meinen code einbinde und ich möchte die Zahlen A= -12 und 
B= -32 addieren.

Wie muss dann das Bitmuster für A und B aussehen ?

Dezimal 12 entspricht binär 0 0000 1100

Dezimal 32 entspricht binär 0 0010 0000

Dezimal -12 entspricht dann binär 1 000 1100 ( das ist die Frage ?? )

Wird bei Dezimal = -12 das höchste Bit einfach als Vorzeichen bit vom 
Addierer interpretiert ?   Also in unserem Fall das Bit 9 ???

Wie würde das Bitmuster für das Ergebnis aussehen ? ( Dezimal - 48 )

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Nichtwisser

>Meine Frage betrifft die Kodierung von negativen ganzen Zahlen.

Zweier Komplement

>und diesen in meinen code einbinde und ich möchte die Zahlen A= -12 und
>B= -32 addieren.
>Dezimal 12 entspricht binär 0 0000 1100
>Dezimal 32 entspricht binär 0 0010 0000

>Dezimal -12 entspricht dann binär 1 000 1100 ( das ist die Frage ?? )

Das wäre Einer Komplement. Du brauchst das Zwierkomplement.

http://de.wikipedia.org/wiki/Zweierkomplement

MFG
Falk

Autor: Nichtwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk,

danke für den Link. Habs jetzt verstanden.

Meine Frage ist eigentlich aus folgendem Sachverhalt entstanden:

Ich habe einen VHDL code durchgearbeitet, bei dem 2 Zahlen multipliziert 
werden.

Das wurde so gemacht:

1. vorzeichen der Vorzeichenbehafteten Zahlen einlesen. ( MS Bit)
2. Falls es sich um eine negative Zahl handelt:
   wird eine  1 subtrahiert und dann die Zahl negiert
3. Mulitplikation durchführen
4. Ergebnis Vorzeichen hinzufügen über XOR Verknüpfung der Vorzeichen er 
Summanden


Nun hab ich mich gefragt, ob man beim Spartan3 unter Verwendung eines 
MULT18 (also den Hardware Multiplizierer aus dem Coregen )sich die ganze 
Geschichte mit dem extrahieren der Vorzeichen usw. sparen kann ?

Kann der MULT18 keine vorzeichenbehafteten Zahlen verarbeiten ???

Hat die obige multiplizierer Version einen versteckten Vorteil ?
( evtl. schneller oder braucht weniger Resourcen ?? )

Kann mir das bitte jemand erklären ?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Kann der MULT18 keine vorzeichenbehafteten Zahlen verarbeiten ???

Die Hardware-Multiplier gibts mit und ohne Vorzeichen.

MfG
Falk

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.