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
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
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.
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.
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
Wow Dennis, das ist ja ein Ding, was du mir da um die Ohren haust... Muss ich erst mal alles durchlesen...
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
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.