2016-06-21 11 views
2

私はVHDLでプロジェクトをやっています。私は助けが必要です。VHDLで最初のベクトルを選択し、他のすべてをリセット

私は、たとえばのは言わせ、配列型で、いくつかのstd_logic_vector秒を持っている:

vector(0) = "00" 
vector(1) = "00" 
vector(2) = "00" 
vector(3) = "01" 
vector(4) = "00" 
vector(5) = "01" 
vector(6) = "11" 
vector(7) = "11" 
vector(8) = "11" 

その後、私は私の組み合わせロジックがやりたいことは"01"に等しい最初のベクトルを見つけて、後にすべてのベクトルを作りますその私たちの例に等しい"11" は次のようになります。

vector(0)= "00" 
vector(1)= "00" 
vector(2)= "00" 
vector(3)= "01" 
vector(4)= "11" 
vector(5)= "11" 
vector(6)= "11" 
vector(7)= "11" 
vector(8)= "11" 

任意のアイデアはどのようにそれを行うには?

+1

良い方法は_forループを使用することです。 –

答えて

5

ループを使用できます。あなたは、次の配列の定義があるとします。

type vector_array is array(natural range <>) of std_logic_vector(1 downto 0); 
signal vector : vector_array(0 to 8); 
signal vector_out : vector_array(0 to 8); 

あなたは、次の例で最初の「01」を見つけることができます(とそれを行うには多くの方法があります)。この例ではvectorをとり、vector_outを作成します。

process(vector) 
    variable found : boolean; 
begin 
    found := false; 
    for i in vector'range loop 
    if (found) then 
     vector_out(i) <= "11"; 
    else 
     vector_out(i) <= vector(i); 
     if (vector(i) = "01") then 
     found := true; 
     end if; 
    end if; 
    end loop; 
end process; 
+0

答えに感謝します!助けalot :) –

+0

ちょうど質問、この変数は合成可能ですか? –

+1

はい、そうです。変数は一般に合成可能です(いくつかの共有変数などの例外があります)。 – PlayDough

関連する問題