vhdl 选择第一个向量并重置所有其他向量
vhdl choose first vector and reset all other
我正在用 VHDL 做一个项目,我需要一些帮助。
我有一些数组类型的 std_logic_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);
然后您可以通过以下示例找到第一个“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;
我正在用 VHDL 做一个项目,我需要一些帮助。
我有一些数组类型的 std_logic_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);
然后您可以通过以下示例找到第一个“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;