mikrocontroller.net

Forum: FPGA, VHDL & Co. std_logic_vector als signed/unsigned behandelt


Autor: gehm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe gelesen, dass std_logic_vector als unsigned gehandhabt wird 
(z.B. bei vec1+vec2), sofern USE ieee.std_logic_unsigned.all; 
eingebunden wird. Das ist bei mir so auch der Fall, eine Addition von
  signal vec1 : std_logic_vector (3 downto 0) := "0110";
  signal vec2 : std_logic_vector (3 downto 0) := "0011";
  signal vec3 : std_logic_vector (3 downto 0) := "0110";

Ergibt bei mir 1111, also 15.
Kommentiere ich die Verwendung von "USE ieee.std_logic_unsigned.all;" 
aus, so wird mir gesagt das der Operator + nicht definiert ist. Soweit 
auch korrekt.
Binde ich nun

USE ieee.std_logic_signed.all;   (SIGNED)

ein, erhalte ich weiterhin 15 als Ergebnis. Wie wird jetzt mit den 
Vektoren gerechnet? Ich hätte erwartet,dass der Inhalt der Vektoren als 
Zweikomplement interpretiert wird. Ich hab da gerade echt ein Brett vor 
dem Kopf.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutz mal ieee.numeric_std.all damit rechnet der auf jeden Fall 
korrekt. Außerdem ist das immer eine Frage der Interpretation der 
Ergebnisse. Wenn du im Simulator die Anzeige auf unsiged stellst, 
erhältst du natürlich auch für Signed Werte die unsigned Repräsentation.

Autor: gehm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mach jetzt wie es sich gehört: signed und unsigned wenn 
differenziert werden soll.

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

Bewertung
0 lesenswert
nicht lesenswert
> erhalte ich weiterhin 15 als Ergebnis.
Wo siehst du das?
Im Simulator? Dann stell da mal die Anzeige auf signed um.

> erhalte ich weiterhin 15 als Ergebnis.
Was hättest du erwartet? Nachdem das ja auch 15 ergibt (weil keine 
negative Zahl dabei ist), stimmt das Ergebnis doch  :-o
Kritisch wirds dann, wenn das Ergebnis negativ wird, denn du hast in 
deinem Vektor keinen Platz für ein Vorzeichen...

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.