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

el *_*ass 2 hardware 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"
Run Code Online (Sandbox Code Playgroud)

然后我想要我的组合逻辑做的是找到第一个等于的"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"
Run Code Online (Sandbox Code Playgroud)

任何想法怎么做?

Pla*_*ugh 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);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下示例找到第一个"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;
Run Code Online (Sandbox Code Playgroud)