Hallo,
ich möchte in einem VHDL-Programm mit unsigned Werten rechnen. Konkret
sieht das so aus:
1 | phase_inc : in std_logic_vector(31 downto 0);
|
2 |
|
3 | [...]
|
4 |
|
5 | signal phase_acc : std_logic_vector(31 downto 0);
|
6 |
|
7 | [...]
|
8 |
|
9 | process
|
10 | variable tmp : integer;
|
11 | begin
|
12 | wait until rising_edge(clk);
|
13 | if reset = '0' then
|
14 | phase_acc <= (others => '0');
|
15 | else
|
16 | tmp := to_integer(unsigned(phase_acc));
|
17 | tmp := tmp + to_integer(unsigned(phase_inc));
|
18 | phase_acc <= std_logic_vector(to_unsigned(tmp, 32));
|
19 | end if;
|
20 | end process;
|
GHDL bricht allerdings mit der Fehlermeldung "./testbench:error: bound
check failed (#11)" ab. Was bedeutet das? Die Bitbreiten müsste doch
eigentlich stimmen. Wie kann ich den Fehler beheben?