2016-11-10 4 views
1

で2 STD_LOGIC_VECTORを追加します私は次のエラー直面最高と最速の方法私は次の宣言どおりSTD_LOGIC_VECTORを持っている場合、VHDLでVHDL

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; 

を:以下

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

をあなたはBEを提案することができます(多分整数のような別のタイプのデータを使用することなく)それを解決する方法を断食?事前に

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; 

おかげで、これを行うには、最も頻繁に推奨される方法

答えて

4

numeric_stdパッケージを使用して、インスタンス化することです。今、私は、次の(悪い)ソリューションを使用していますまで

タイプunsignedの信号。

use ieee.numeric_std.all; 

...

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

...

RAM_ADDR <= RAM_ADDR + 1; 

あなたは型システムを戦う伴う他の方法を試すことができますが、早期に適切なタイプを使用してに慣れる場合将来、ある種のバグから身を守ることができます。私の意見では、適切な型を使用すると、より読みやすいコードにつながる可能性があります。

+0

パフォーマンス(タイミング)に関しても良い結果が得られますか? – pittuzzo

+1

3ビットカウンタを記述する場合、使用するデータ型はパフォーマンスに影響を与えてはいけません。 –

関連する問題