VHDL for循环类型错误和移位错误

时间:2013-02-04 08:20:30

标签: vhdl

我正在尝试用VHDL编写for循环,但我相信循环语句中存在一些类型问题。我有一个块接收一个16位字A,作为输入,指示我应该移动另一个输入的次数,B。输出C显示B的移位版本。我的代码如下所示:

TEMP_C := B;
FOR I IN 1 TO UNSIGNED(A) LOOP
  TEMP_C := TEMP_C(15) & TEMP_C(15 DOWNTO 1);
END LOOP;
C <= TEMP_C;

编译器抱怨第二行,并说“范围左边界类型整数与右边界类型不同”。有人可以向我解释为什么这条线是错误的,我该如何解决?

2 个答案:

答案 0 :(得分:1)

在左侧,您有'1',是'整数'。在右侧,你有'unsigned(std_logic_vector?)',是'unsigned'。无符号仍然与“整数”不同。 unsigned仍然是一个位集合。 Here了解有关'unsigned'的更多信息。

无论如何this solution会帮助你更多......

答案 1 :(得分:0)

FOR I IN 1 TO to_integer(UNSIGNED(A)) LOOP

unsigned向量与integer不同。这不是Verilog!