Forum: FPGA, VHDL & Co. range direction in VHDL


von Max K. (mku)


Lesenswert?

hi

ich habe ein einfaches problem und zwar möchte ich entweder mit dem 
code:
1
data_out(4 to 7) <= "1000";

oder dem code:
1
 data_out(0 to 3) <= data_in(0 to 3);

(beide zusammen ein 8 bit großen bus beschreiben.

Deklaration:
1
signal data_in   : std_logic_vector(3 downto 0);
2
data_out          : out std_logic_vector(7 downto 0);

einfach nur die bits ausgeben, aber altera mag das einfach nicht.

Fehler: Error (10484): VHDL error at ...: range direction of object 
slice must be same as range direction of object


warum?

von Eraser (Gast)


Lesenswert?

Hi MAX

bei data_out fehlt das Schlüsselwort "signal"

von Eraser (Gast)


Lesenswert?

sorry, Antwort war faalsch, data_out ist ja ein Ausgang.

du musst glaub ich mit "downto" arbeiten  , nicht mit "to"

von Duke Scarring (Gast)


Lesenswert?

Max K. schrieb:
> data_out(4 to 7) <= "1000";
...
> data_out          : out std_logic_vector(7 downto 0);

to und downto passen da einfach nicht zusammen.

Es klappt nur, wenn Du auf einzelne Bits zugreifst:
1
data_out(4) <= '1';
2
data_out(5) <= '0';
3
data_out(6) <= '0';
4
data_out(7) <= '0';
oder die Richtung änderst:
1
data_out(7 downto 4) <= "0001";

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Es ist sowieso sinnvoll, solche Bithaufen mit downto zu deklarieren. 
Denn nur so ist das Bit 0 das am weitesten rechts sitzende Bit, wie man 
es von jedem Register und Prozessor kennt...

Tricksereien wie ich sie dort gemacht habe müssen unbedingt die Ausnahme 
bleiben und dokumentiert werden:
http://www.lothar-miller.de/s9y/archives/63-RC-5-Empfaenger.html

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
Noch kein Account? Hier anmelden.