Codierung von negativen Zahlen für Adder in Spartan

Gast #477446
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 )
Gast #477448
@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
Gast #477505
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 ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.