Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vhdl选择第一个向量并重置所有其他向量_Vhdl_Hardware - Fatal编程技术网

vhdl选择第一个向量并重置所有其他向量

vhdl选择第一个向量并重置所有其他向量,vhdl,hardware,Vhdl,Hardware,我正在用VHDL做一个项目,我需要一些帮助 我在数组类型中有一些std\u logic\u vectors,例如: 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”的向量,并使之后的所有向量

我正在用VHDL做一个项目,我需要一些帮助

我在数组类型中有一些
std\u logic\u vector
s,例如:

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"

你知道怎么做吗?

你可以使用循环。假设您具有以下数组定义:

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);

一个好方法是使用for循环。只是一个问题,这个变量是可合成的吗?是的。变量通常是可合成的(也有例外,例如一些共享变量)。
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;