Datentyp umwandeln

#1302854
Lesenswert?
• ▲
▼
Hallo Mari,

STD_LOGIC_VECTOR nach INTEGER würde ich so machen:

signal SREG: std_ulogic_vector (N downto 0);
signal VALUE: integer range 0 to 2^(N+1);
...
...
VALUE <= CONV_INTEGER(SREG);

*********************************************************

STD_LOGIC_VECTOR nach STD_uLOGIC_VECTOR würde ich so machen:

signal SREG_A: std_logic_vector (N downto 0);
signal SREG_B: std_ulogic_vector (N downto 0);
...
...
SREG_B <= To_StduLogicVector(SREG_A);

*********************************************************


Gruss
Stanko
Moderator (Firma: Titel) Persönliche Seite #1303017
Lesenswert?
• ▲
▼
Ist Google kaputt?
Eine Suche mit "umwandlung std_logic_vector std_ulogic_vector" bringt 
z.B.
http://eesun.free.fr/DOC/vhdlref/refguide/language_overview/using_standard_logic/standard_logic_type_conversions.htm

Aber das steht zudem in jedem VHDL-Buch (wenn nicht: wirf es weg).

BTW:
Ich würde std_ulogic überhaupt nicht verwenden, die numeric.std Lib 
nehmen und das so machen:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
:
5
signal vect: std_logic_vector (N downto 0);
6
signal int:  integer range 0 to 2^(N+1)-1;
7
:
8
:
9
vect <= std_logic_vector(to_unsigend(int,vect'length));
10
-- bzw.
11
int  <= to_integer(unsigned(vect));
Moderator (Firma: Titel) Persönliche Seite #1303057
Lesenswert?
• ▲
▼
> so erkennt man doch Designfehler falls ein Signal mehrere Treiber hat?
Was in der Schule alles erzählt wird...  :-/
Wer FPGAs beschreibt, hat gar keine Möglichkeit, mehrere Treiber auf ein 
Signal loszulassen. Tristate-Busse gibt es dort schon seit geraumer Zeit 
nicht mehr.
Das Thema hatten wir schon ausführlich im 
Beitrag "verschiedene Teile von std_Ulogic_vector aus mehreren Processen zuweisen"

Warum, das sollte man sich fragen, warum gibt es in der (genormten und 
empfohlenen) numeric.std Lib diese Definition:
1
  type UNSIGNED is array (NATURAL range <>) of STD_LOGIC;
2
  type SIGNED is array (NATURAL range <>) of STD_LOGIC;
Gast #1303158
Lesenswert?
• ▲
▼
@Lothar:
>Warum, das sollte man sich fragen, warum gibt es in der (genormten und
>empfohlenen) numeric.std Lib diese Definition:

Bei den Standardbibliotheke stellen sich mir auch manche Fragen (aber 
aus anderem Grund):

Warum gibt es die Funktionen MAX und MIN nur im Body?
Warum sind die Funktionen zum Rotieren (z.B. XROL) und Shiften für 
std_logic_vector nur im Body und nicht öffentlich?

Es gibt da so einige Sachen, die man immer mal gebrauchen könnte, die 
sogar schon da sind, aber so toll versteckt werden :-(

Duke
Moderator (Firma: Titel) Persönliche Seite #1303183
Lesenswert?
• ▲
▼
ULOGIC war in den Entwürfen zur numeric_std noch wesentlich umfassender 
enthalten, in der Release-Version gibt es davon nur noch die 
Auflösungstabelle.

Ich habe die numeric.std Typumwandlungen mal irgendwo grafisch 
aufbereitet gefunden, das Ganze überarbeitet und mir dort abgelegt: 
http://www.lothar-miller.de/s9y/categories/16-Numeric_Std
(Firma: ftf) #1318309
Lesenswert?
• ▲
▼
hallo ,
ich habe eine problem mit datentyp ,ich will integer in 
std_ulogic_vector umwandlen .ich habe das so gemacht:

........
port( d: std_ulogic_vector( 0 to 7);
.........
);

........
..........

Signal A :integer ;
.....
d(0 to 7)<=conv_std_logic_vector(A,Bits);

aber leider funktioniert nicht weil ich A unterschiedliche werte nehmen 
soll.

habe ich   das falsch gemacht?
danke schön.
OP #1318314
Lesenswert?
• ▲
▼
hallo ,
ich habe eine problem mit datentyp ,ich will integer in
std_ulogic_vector umwandlen .ich habe das so gemacht:

........
port( d: std_ulogic_vector( 0 to 7);
.........
);

........
..........

Signal A :integer ;
.....
d(0 to 7)<=conv_std_logic_vector(A,Bits);

aber leider funktioniert nicht weil ich A unterschiedliche werte nehmen
soll.

habe ich   das falsch gemacht?
danke schön.
OP #1318318
Lesenswert?
• ▲
▼
hallo ,
ich habe eine problem mit datentyp ,ich will integer in
std_ulogic_vector umwandlen .ich habe das so gemacht:

........
port( d: std_ulogic_vector( 0 to 7);
.........
);

........
..........

Signal A :integer ;
.....
d(0 to 7)<=conv_std_logic_vector(A,Bits);

aber leider funktioniert nicht weil ich A unterschiedliche werte nehmen
soll.

habe ich   das falsch gemacht?
danke schön.

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