2016-06-21 65 views
2

我正在做一個VHDL項目,我需要一些幫助。vhdl選擇第一個矢量並重置所有其他

我有一些std_logic_vector S IN數組類型,例如讓我們說:

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 loop_。 –

回答

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

感謝您的回答!幫助很多:) –

+0

只是一個問題,這是可變的綜合? –

+1

是的。一般來說變量是可綜合的(也有例外,比如一些共享變量)。 – PlayDough

相關問題