www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Signed / Std Logic


Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Darf man eigentlich innerhalbe einer Entity/Architectur nicht signed
und std logic Daten verarbeiten, obwohl die sich gar nicht
"berühren"?
Ich vermische diese auch nicht.
Std Logic Daten arbeiten für sich.
Signed Daten arbeiten für sich.

Folgende Fehlermeldung:
# Error: COMP96_0334: saf_mod.vhd : (119, 17):
Subprogram "=" is ambiguous.

Ich habe folgende Bibliotheken eingebunden:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_signed.all;


Mark

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, aber wenn ich
use ieee.std_logic_unsigned.all;
entferne, dann motzt der Compiler nicht mehr.
Aber erkennt der Compiler dann noch die Std_Logic Daten als
vorzeichenlos an oder betrachtet er diese nun also vorzeichenbehaftet?

Thanks for help!

Mark

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir keiner diesbezüglich helfen?

Autor: Dennis Senge (klopfer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe gelernt, dass zuviele eingebundene Bibliotheken sich
gegenseitig behindern. Einige der Schlüsselwörter sind identisch in
mehreren Bibliotheken.

Bei der Verwendung von unsigned, signed und std_logic Typen binde ich
nur die
   ieee.std_logic_1164.ALL;
ein. Damit kann ich fast alle Operationen ausführen. Der Conpiler
unterscheidet dann immer noch zwischen signed und unsigned.
Für mathematische Funktionen binde ich dann noch die
   ieee.numeric_std.ALL;
ein.

Welche Bibliotheken Du brauchst, kannst Du der angehängten Kurzreferenz
entnehmen.

Autor: Ines (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mark,

Du schreibst:
> Darf man eigentlich innerhalbe einer Entity/Architectur nicht
> signed und std logic Daten verarbeiten ...

Was meinst Du denn damit? std_logic-Daten sind entweder signed oder
unsigned. Signed ist also ein std_logic.

Autor: Dennis Senge (klopfer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry hier kommt die andere Referenz, die ich eigentlich schicken
wollte.

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ines

Das verstehe ich ja nicht.
Ich habe Eingangssignale, welche als SIGNED "reinkommen" und ich habe
Eingangssignale, welche als "STD_LOGIC" reinkommen.

Die SIGNED Daten sollen als 2er Komplement behandelt werden, während
die STD_LOGIC Daten nur positive Werte sind.

"Wie" muss ich also die USE IEEE...... definieren, damit ich keine
"ambiguous"-Meldung mehr bekomme?

(Bin noch nicht so lange im Bereich VHDL tätig...)

Mark

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow Dennis, das ist ja ein Ding, was du mir da um die Ohren haust...

Muss ich erst mal alles durchlesen...

Autor: Ines (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mark,

kannst Du mal den Code schicken?

Ines

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ines

Im Moment komme ich nicht an meinen eigenen Code ran.
Es reicht ja auch aus, wenn du's mir (Anfänger) verständlich
erklärst:

Also Input-Signale habe ich als SIGNED-Signale und STD_LOGIC-Signale.
SIGNED arbeiten doch im 2er Komplement. STD_LOGIC hingegen sollten die
positiven Werte darstellen und eben nicht im 2er Komplement arbeiten.

So, dann definiert man:
library IEEE;

Und dann die USE...

Nur, welches USE... ist für welchen Datentypen zuständig?

So...
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_signed.all;
...bekommt man die oben beschriebene "ambiguous" Fehlermeldung...

Mark

Autor: Ines (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mark,

gleich vorweg, ich arbeite nicht mit SIGNED und UNSIGNED, sondern nur
mit std_logic_vector, der sowohl als signed als auch als unsigned
aufgefasst werden kann, je nachdem ob man die std_logic_signed oder die
std_logic_unsigned einbindet.

Du willst ja aber innerhalb eines Designs mischen. Probier doch mal
deine std_logic_vector-en als UNSIGNED zu definieren und binde dann die
numeric_std ein, also:
  library ieee;
  use ieee.numeric_std.all;

Was auch gehen müsste - wenn ich dich richtig verrstanden habe ist:
  library ieee;
  use ieee.std_logic_1164.all;
  use ieee.std_logic_unsigned.all;

Wie gesagt, ich mache dass so nie, aber probier's doch mal.

Gruß
Ines

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Ines.

----
Mark

Autor: high_speed (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Fehler liegt daran, dass du gleichzeitig die beiden Biblioteken
benutzt.

use ieee.std_logic_unsigned.all; Definiert std_logic als unsigned.
use ieee.std_logic_signed.all;   Definiert std_logic als signed.

Um in einer Entity signed und unsigned benutzen zu können, gibt es noch
die beiden Ableitungen von std_logic : signed und unsigned

Holger

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.