Autor |
Beitrag |
Sofien
Gast
|
Erstellt: 24.01.07, 17:45 Betreff: case Anweisung
drucken
Thema drucken weiterempfehlen
|
|
|
Hallo ich habe folgende Funktion unter Quartus kompiliert und es funktioniert ohne Probleme. Wenn ich aber die gleiche Funktion unter Modelsim kompiliere kommt die folgende Fehlermeldung.
"Array type case expression must be of a locally static subtype"
function CATANH(n: std_logic_vector) return std_logic_vector is -- ln, sqrt variable result: std_logic_vector(63 downto 0); begin case n is
when x"00000001" => result:=x"3FE193EA7AAD030B"; when x"00000002" => result:=x"3FD058AEFA811452"; when x"00000003" => result:=x"3FC015891C9EAEF7"; when x"00000004" => result:=x"3FB005588AD375AD"; when x"00000005" => result:=x"3FA001558891AEE3"; when x"00000006" => result:=x"3F9000555888AD1D"; when x"00000007" => result:=x"3F8000155588891B"; when x"00000008" => result:=x"3F7000055558888B"; when x"00000009" => result:=x"3F60000155558889"; when x"0000000a" => result:=x"3F50000055555889"; when x"0000000b" => result:=x"3F40000015555589"; when x"0000000c" => result:=x"3F30000005555559"; when x"0000000d" => result:=x"3F20000001555556"; when x"0000000e" => result:=x"3F10000000555555"; when x"0000000f" => result:=x"3F00000000155555"; when x"00000010" => result:=x"3EF0000000055555"; when x"00000011" => result:=x"3EE0000000015555"; when x"00000012" => result:=x"3ED0000000005555"; when x"00000013" => result:=x"3EC0000000001555"; when x"00000014" => result:=x"3EB0000000000555"; when x"00000015" => result:=x"3EA0000000000155"; when x"00000016" => result:=x"3E90000000000055"; when x"00000017" => result:=x"3E80000000000015"; when x"00000018" => result:=x"3E70000000000005"; when x"00000019" => result:=x"3E60000000000001"; when x"0000001a" => result:=x"3E50000000000000"; when others => result:=x"0000000000000000"; end case; return result; end CATANH;
kann mir jemand helfen, ich muss es unbedingt unter Modelsim zum laufen bringen.
ich wäre sehr denkbar.
Gruss Sofien
|
|
nach oben |
|
|
Rick
Gast
|
Erstellt: 23.02.07, 14:17 Betreff: Re: case Anweisung
drucken
weiterempfehlen
|
|
|
Hi Sofien,
ich erhalte diese Fehlermeldung auch, wenn die Bitbreite des Vektors über eine Konstante definiert wird.
Beispiel: constant AD_MSB_MAIN: integer := 4; constant AD_LSB: integer := 2; signal vFpgaCheckAddr: std_logic_vector(AD_MSB_MAIN downto AD_LSB) ... case vFpgaCheckAddr is ...
Wenn ich aber vFpgaCheckAddr als std_logic_vector(4 downto 2) definiere, dann gibts keine Probleme im Modelsim. Modelsim scheint wahrscheinlich nicht so recht mit Konstanten oder offenen Vektorgrenzen umgehen zu können
Versuche mal Dein Glück, indem Du Deine Vektorgrenzen fest eingibst für n:
function CATANH(n: std_logic_vector(31 downto 0))...
Gruß
Rick
|
|
nach oben |
|
|
marketing99
Junior-Mitglied
Beiträge: 11
|
|
nach oben |
|
|
|