假设我们有一个32位的std_logic_vector
数据。我想在每2位之间添加一个逻辑'0'
。
举个例子:所有11111....1111
将是101010101....1010101.
答案 0 :(得分:2)
您可以在'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);