std_logic_vector nach int

Gast #916641
Lesenswert?
• ▲
▼
Hallo,

Ich möchte gerne Bits, die in einem std_logic_vector(31 downto 0) 
gespeichert sind, in eine Zahl wandeln. Diese möchte ich dann in einem 
Signal abspeichern. Hier mal kurz der bereits von mir verwendete Code 
(gekürzte)
1
LIBRARY ieee;
2
USE ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4

5

6
PORT
7
( ...
8
data     : in  std_logic_vector(31 downto 0);
9
..
10
)
11
signal intervall : integer range 0 to 50000;
12
....
13
intervall <= to_integer(unsigned(data));

Ich bin mir sicher, dass er die Zeile mit der umwandlung erreicht, es 
wird dann nur nichts in die Variable geschrieben. Kann mir jemand sagen 
woran das liegt? Verwende ich die falschen Bibliotheken? Kann es sein, 
dass der Vector mit 32 Bit zu groß ist und die variable intervall auch 
mindestens 2^32 groß sein muss?

Bin für jede Hilfe dankbar!
Gast #918393
Lesenswert?
• ▲
▼
Also wenn ich das simuliere, dann werden die angelegten Daten einfach 
nicht übernommen. Er erreicht die Zeile, die Typumwandlung haut nur 
einfahch nicht hin. Es kommt auch keine Fehlermeldung oder sowas.
Gast #918520
Lesenswert?
• ▲
▼
>es wird dann nur nichts in die Variable geschrieben
Das ist keine Variable, du definierst es als Signal.
>signal intervall : integer range 0 to 50000;
Egal, das ist nur eine Spitzfindigkeit.


Aber: wird tatsächlich nichts geschrieben?
Oder hat das Signal nach der Zuweisung irgendeinen Wert?
Was ist der Eingangswert?
#918633
Lesenswert?
• ▲
▼
Ich hab's auch mal versucht. Nix ... hatte x"fefefefe" in data 
geschrieben und intervall ist auf 0 geblieben ...
Ich hatte auch ein paar andere Konvertierungen versucht. Unter anderem 
std_logic_vector zu unsigned. Mein Signal vom Typ "unsigned" hatte einen 
undefinierten Zustand. Dabei habe ich mich an die Funktionen aus 
http://dz.ee.ethz.ch/support/ic/hdl/vhdlsources.en.html gehalten.
Simulator: ModelSim 6.2
Gast #918668
Lesenswert?
• ▲
▼
@Hans
Du hast mit Sicherheit den data-Vektor nicht richtig belegt. Die 
Konvertierung geht so 100% OK, das kann jeder im Modelsim nachprüfen.
Natürlich sollten alle 32 bit 1 oder 0 sein ! (s.o.)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren