如何在逻辑向量的每2位之间添加'0'
How to add '0' to between every 2 bits of a logic vector
假设我们有一个 32 位 std_logic_vector
的数据。我想在每 2 位之间添加一个逻辑 '0'
。
举个例子;所有 11111....1111
都将是 101010101....1010101.
你可以在中间添加 '0'
函数:
function add_zeros(std_logic_vector_in : std_logic_vector) return std_logic_vector is
variable std_logic_vector_out : std_logic_vector(std_logic_vector_in'length*2 -2 downto 0);
begin
for i in std_logic_vector_in'range loop
std_logic_vector_out(i*2) := std_logic_vector_in(i);
if (i /= std_logic_vector_in'length-1) then
std_logic_vector_out(i*2+1) := '0';
end if;
end loop;
return std_logic_vector_out;
end function;
对于最后的 '0'
,您可以通过简单的连接将它们相加。
如果你有:
signal initial_signal : std_logic_vector(31 downto 0);
signal final_signal : std_logic_vector(66 downto 0);
那么你可以这样写:
final_signal <= '0' & '0' & '0' & '0' & add_zeros(initial_signal);
假设我们有一个 32 位 std_logic_vector
的数据。我想在每 2 位之间添加一个逻辑 '0'
。
举个例子;所有 11111....1111
都将是 101010101....1010101.
你可以在中间添加 '0'
函数:
function add_zeros(std_logic_vector_in : std_logic_vector) return std_logic_vector is
variable std_logic_vector_out : std_logic_vector(std_logic_vector_in'length*2 -2 downto 0);
begin
for i in std_logic_vector_in'range loop
std_logic_vector_out(i*2) := std_logic_vector_in(i);
if (i /= std_logic_vector_in'length-1) then
std_logic_vector_out(i*2+1) := '0';
end if;
end loop;
return std_logic_vector_out;
end function;
对于最后的 '0'
,您可以通过简单的连接将它们相加。
如果你有:
signal initial_signal : std_logic_vector(31 downto 0);
signal final_signal : std_logic_vector(66 downto 0);
那么你可以这样写:
final_signal <= '0' & '0' & '0' & '0' & add_zeros(initial_signal);