2016-11-10 3 views
1

In VHDL zwei std_logic_vector hinzufügen, wenn ich ein std_logic_vector gemäß folgenden Erklärung habe:bester und schnellster Weg für in VHDL

signal RAM_ADDR : STD_LOGIC_VECTOR (2 downto 0) := (others => '0'); 

Wenn ich versuche, diese Adresse in einer Schleife zu erhöhen, mit dem ‚+‘ Operator gemäß folgende:

for i in 0 to 7 loop 
    RAM_RW <= '1'; 
    wait until KEY_NUM'event;      
    RAM_RW <= '0'; 
    RAM_ADDR <= RAM_ADDR + "1"; 
end loop; 

ich stehe den folgenden Fehler:

Error (10327): VHDL error at X.vhd(40): can't determine definition of operator ""+"" -- found 0 possible definitions

können Sie das sein st und schnell Weg, um es zu lösen (vielleicht ohne eine andere Art von Daten wie Integer verwenden)?

Bis jetzt ich die folgenden (sehr schlecht) Lösung bin mit:

case RAM_ADDR is 
    when "000" => 
    RAM_ADDR <= "001"; 
    when "001" => 
    RAM_ADDR <= "010"; 
    when "010" => 
    RAM_ADDR <= "011"; 
    when "011" => 
    RAM_ADDR <= "100"; 
    when "100" => 
    RAM_ADDR <= "101"; 
    when "101" => 
    RAM_ADDR <= "110"; 
    when "110" => 
    RAM_ADDR <= "111"; 
    when "111" => 
    RAM_ADDR <= "000"; 
    when others => 
    RAM_ADDR <= "000"; 
end case; 

Vielen Dank im Voraus,

Antwort

4

Der am häufigsten empfohlene Weg, dies zu tun ist, um das numeric_std Paket zu verwenden, und instanziiert eine Signal vom Typ unsigned.

use ieee.numeric_std.all; 

...

signal RAM_ADDR : unsigned (2 downto 0) := (others => '0'); 

...

RAM_ADDR <= RAM_ADDR + 1; 

können Sie andere Methoden versuchen, die den Typ System beinhalten kämpfen, aber wenn Sie frühzeitig zur Verwendung von geeigneten Typen gewöhnungs Sie können sich in der Zukunft vor bestimmten Arten von Fehlern schützen. Meiner Meinung nach kann die Verwendung geeigneter Typen auch zu besser lesbarem Code führen.

+0

Gibt es auch ein gutes Ergebnis in Bezug auf die Leistung (Timing)? – pittuzzo

+1

Wenn Sie einen 3-Bit-Zähler beschreiben, sollten die verwendeten Datentypen keinen Einfluss auf die Leistung haben. –

Verwandte Themen