VHDL“For”循环空范围

时间:2016-04-08 11:59:44

标签: loops for-loop vhdl hdl

我已经在这个问题上坚持了好几个小时了,似乎我找不到解决办法,即在这里或谷歌上找不到任何东西。

这是我的代码:

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std;
USE work.arrays.ALL;

ENTITY parallel IS  
  PORT (clk:IN std_logic; text:IN INT_ARRAY(119 DOWNTO 0); result:OUT INT_MATRIX_2D);
END parallel;

ARCHITECTURE arch OF parallel IS
  COMPONENT unit_comparator IS
    PORT (letter:IN integer; difference:OUT integer);
  END COMPONENT;
  SIGNAL temp: INT_MATRIX_2D := (others => (others => 0));
  SIGNAL temp_differences: INT_ARRAY(119 DOWNTO 0) := (others => 0);
  BEGIN
    PROCESS(clk)
    BEGIN
      IF(rising_edge(clk))THEN
        FOR index IN 119 TO 1 LOOP
          temp(temp_differences(index))(temp_differences(index - 1)) <= 
          temp(temp_differences(index))(temp_differences(index - 1)) + 1;
        END LOOP;
        result <= temp;
      END IF;
    END PROCESS;
  wiring_loop: FOR index IN 119 DOWNTO 0 GENERATE
    wiring_unit: unit_comparator PORT MAP (text(index), temp_differences(index));
  END GENERATE;
END arch;

您看到“ FOR索引IN 119 TO 1 LOOP ”?

编译器给出一个“范围119到0是 Null ”警告(毫无疑问,整个事情不能正常工作),我似乎有一个问题的理解。如果在循环的每一步都有一个分配给“index”的整数,它怎么能变为空(它表示它在每一步都发生!)。我需要一个坚定的理解,而不是一个明确的解决方案。 (注意:所有使用的模块和软件包都经过测试并正常运行!)

谢谢!

1 个答案:

答案 0 :(得分:2)

范围需要一个与其极限相对应的方向。您想要119 downto 11 to 119119 to 1不是适合迭代的范围。