如何在逻辑向量的每2位之间添加“ 0”

时间:2019-08-20 18:33:51

标签: vhdl fpga

假设我们有一个32位的std_logic_vector数据。我想在每2位之间添加一个逻辑'0'。 举个例子:所有11111....1111将是101010101....1010101.

1 个答案:

答案 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);
相关问题