Hallo,
ich hoffe bei euch schnelle Hilfe auf mein Problem zu finden; VHDL-Foren
scheinen ja recht rar zu sein. :-(
Das Problem ist folgendes: Der Eingabewert dataIn des Prozesses ist ein
std_logic_vector(count*size - 1 downto 0). Dieser läßt sich in count
gleichgroße Untervektoren zerlegen, auf die jeweils eine Funktion
convert angewendet werden soll. Der Ausgabevektor dataOut ist genauso
groß wie der Eingabevektor.
Bei der Simulation bekomme ich nun aber einen Fehler in der
convert-Funktion: Index 0 out of range (9 downto 5). Offenbar kommt dort
als Eingabe ein Vektor an, dessen Range nicht wie gewünscht (size-1
downto 0) ist, sondern das Original-Range aus dem Vektor dataIn. Welche
Möglichkeiten gibt es nun, dieses Problem zu beheben?
1 | function convert(input : std_logic_vector; constant width : natural) return std_logic_vector is
|
2 | begin
|
3 | -- Hier wird ein wenig an den Bits geschraubt
|
4 | end function;
|
5 |
|
6 | process(dataIn)
|
7 | begin
|
8 | for i in 0 to count-1 loop
|
9 | dataOut(size*(i+1)-1 downto size*i) <= convert(dataIn(size*(i+1)-1 downto size*i), size);
|
10 | end loop;
|
11 | end process;
|
Viele Grüße,
Matthias