[ghdl] Rechnen mit unsigned

Gast #1967802
Lesenswert?
• ▲
▼
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?
Gast #1967841
Lesenswert?
• ▲
▼
> > Und bei der Addition
> > von 2 32bit Integern entsteht nun mal ein 33bit Wert...
> Und dazu kommt, dass der positive Bereich eines Integers nur 31 Bit
> umfasst.

Achso. Und wie rechne ich dann mit vorzeichenlosen 32bit Werten? Das 
nicht-standard-Paket std_logic_unsigned möchte ich nicht verwenden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren