2016-06-21 62 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

相关问题