Datum:
Nabend, ich habe eine Frage. Ich soll ein Schieberegister/Zähler, je nach Modus, erstellen. Das Problem ist das das Signal unsigned sein muss, nicht Std_Logic. (Vorgabe) Nun erhalte ich aber eine Fehlermeldung bei folgendem Ausdruck: CYCLESINT<= unsigned(std_logic_vector(CYCLESINT)(3 downto 0) & F) Fehler: Prefix of slice name cannot be type conversion (STD_LOGIC_VECTOR) expression. Wie gesagt, ich darf nur kurz auf Std_Logic casten, aber außer F darf kein Signal diesen Typ haben. Danke schonmal!
Datum:
Du kannst unsigned i.d.R. genauso verwenden wie std_logic_vectoren. Was ist F? Ein anderer Vector oder die Hex-Zahl? Falls es die Hex-Zahl ist, versuchs mal so:
CYCLESINT<= CYCLESINT(3 downto 0) & x"F"; |
oder falls Vector
CYCLESINT<= CYCLESINT(3 downto 0) & unsigned(F); |
grüße
Datum:
Verrückt, es funktioniert. Danke! F war nur ein Bit. Da scheint der Cast nicht zu klappen. Ist jetzt ein Unsigned(0 downto 0), nicht schön aber egal. Danke nochmal!
Datum:
dann sollte es aber ein
CYCLESINT<= CYCLESINT(3 downto 0) & F; |
auch tun.
Datum:
Sepp schrieb: > F war nur ein Bit. Was für ein Bit? So ein VHDL-Bit:
signal F : bit; |
Dann ist es klar: dafür ist keine Konvertierungsfunktion vorhanden.
Deshalb nimmt der Rest der Welt diese Dinger nicht. Warum nimmst du
nicht einen std_logic, wie alle anderen? Dann klappts auch mit dem
unsigned...
> Das Problem ist das das Signal unsigned sein muss, nicht Std_Logic.
Soso, ist es das?
Natürlich ist ein Zähler unsigned, wenn nicht gleich integer. Denn mit
uneingeschränkten Vektoren rechnet man nicht. Und man sieht: das Problem
lag (wie allgemein üblich) ausserhalb des geposteten Codes...
