Forum: FPGA, VHDL & Co. Xilinx ISE: bad object specification bei vhdl konformen Ausdruck


von ff (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit ISE und sehe nicht, warum der Synthesiser 
dieses Konstrukt nicht übersetzten will(in der Simulation bekomme ich 
keine Fehler, da es ja ein legales vhdl Konstrukt ist).

Problem: Überprüfen ob x bits eines Registers auf '0' gesetzt sind:
1
entity test 
2
...
3
reg : in unsigned(31 downto 0);
4
...
5
...
6
if reg(reg'length - 1 downto 10) /= (reg(reg'length- 1 downto 10)'range => '0') then
7
... 
8
end if;

ISE spuckt mir aus
ERROR:Xst:770 - "file" line 1234: Bad object specification in qualified 
expression

Warum kann er das nicht synthesiereun und noch wichtiger: Wie schreibe 
ich das so um, das ich nicht hardcodiert reinschreiben muss 31 downto 10 
...?!

von Drüberschauer (Gast)


Lesenswert?

ich glaub die Klammer ganz rechts muß etwas nach links

von Duke Scarring (Gast)


Lesenswert?

Vielleicht machst Du auch eine Funktion draus (ungetestet):
1
function upper_is_zero( value: unsigned) return boolean is
2
    variable result: boolean;
3
begin
4
    result := true;
5
    for index in value'length - 1 downto 10 loop
6
        if value( index) /= '0' then
7
            result := false;
8
        end if;
9
    end loop;
10
    return result;
11
end function upper_is_zero;

Duke

von ff (Gast)


Lesenswert?

Danke erstmal für die Info...
Ich stand total aufm Schlauch.
Da unsigned, reicht ja auch folgendes
1
if reg(reg'length - 1 downto 10) /= 0 then

wenn ich mich nicht total täusche ;)?!

von anonym (Gast)


Lesenswert?

alternativ geht auch:
1
if reg(reg'length-1 downto 10) /= (reg'length-1 downto 10=>'0') then
so funktioniert es dann auch mit einem std_logic_vector

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.