进程循环变量和数组

时间:2016-09-13 17:10:30

标签: arrays vhdl

我有一个std_logic_vectors数组,我想在其中实现一个延迟链。我这样写了,它工作正常:

   --Signal Declaration
   type MyArrayType is array(0 to 3) of std_logic_vector(31 downto 0);
   signal s_aslv_DelayChain : MyArrayType;

   --Concurrent Statement, Load input chain
   s_aslv_DelayChain(0) <= ip_slv_Input;

   --Delay line Process
   DelayProc : process(ip_sl_Clk)
   begin
     if(rising_edge(ip_sl_Clk)) then

       s_aslv_DelayChain(1) <= s_aslv_DelayChain(0);
       s_aslv_DelayChain(2) <= s_aslv_DelayChain(1);
       s_aslv_DelayChain(3) <= s_aslv_DelayChain(2);

     end if; --rising_edge(ip_sl_Clk)
   end process DelayProc;

这会产生我期望的结果:

enter image description here

但是,如果我将进程更改为使用循环变量:

   --Delay line Process
   DelayProc : process(ip_sl_Clk)
   begin
     if(rising_edge(ip_sl_Clk)) then    
       for n in 1 to 3 loop
         s_aslv_DelayChain(n) <= s_aslv_DelayChain(n-1);
       end loop;
     end if; --rising_edge(ip_sl_Clk)
   end process DelayProc;

它没有用,我得到了一堆U:

enter image description here

2种编码风格是否应该描述相同的行为?

0 个答案:

没有答案