Hallo,
Ich habe folgenden VHDL Code, Übersetzung mit dem ALTIUM-Compiler...
Soll:
( RCYC_S_FrequValOut(23..0) * 244140 ) / 2^20 )
Division über Indexierung... = Bitshift...
RCYC_STAT_REG_RO und RCYC_S_FrequValOut sind vom Typ (IS ARRAY OF)
STD_LOGIC_VECTOR()
Mit Altium Designer 14 war dies kein Problem.
Compiliert ohne Fehlermeldung, gerechnet ohne Fehler.
1 | --..AAD14, OK // AD16 Fehlermelddung...
|
2 | RCYC_STAT_REG_RO(8)(31 DOWNTO 0) <= "0000000000" & (
|
3 | STD_LOGIC_VECTOR(
|
4 | (UNSIGNED(RCYC_S_FrequValOut(23 DOWNTO 0)))
|
5 | *244140
|
6 | )
|
7 | (41 DOWNTO 20));
|
Nun, mit AD16 bekomme ich die Fehlermeldung:
"cannot index the result of a type conversion"
?
Ich habe nun versucht noch den Qualifier für die Länge zu nutzen, aber
ohne Erfolg... gleiche Fehlermeldung bleibt in AD16:
1 | --AD16 Fehlermeldung...
|
2 | RCYC_STAT_REG_RO(8)(31 DOWNTO 0) <= "0000000000" & (
|
3 | STD_LOGIC_VECTOR(
|
4 | resize(
|
5 | ((UNSIGNED(RCYC_S_FrequValOut(23 DOWNTO 0)))
|
6 | *244140),
|
7 | 42
|
8 | )
|
9 | )
|
10 | (41 DOWNTO 20));
|
Mache ich was falsch? Bzw. was kann ich hier noch tun?
Ich sehe eigentlich nichts, warum das nicht indizierbar sein soll...
Besten Dank für Hilfe.