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!
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:
1 | CYCLESINT<= CYCLESINT(3 downto 0) & x"F"; |
oder falls Vector
1 | CYCLESINT<= CYCLESINT(3 downto 0) & unsigned(F); |
grüße
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!
dann sollte es aber ein
1 | CYCLESINT<= CYCLESINT(3 downto 0) & F; |
auch tun.
Sepp schrieb: > F war nur ein Bit. Was für ein Bit? So ein VHDL-Bit:
1 | 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...
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.