我正在尝试用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;
编译器抱怨第二行,并说“范围左边界类型整数与右边界类型不同”。有人可以向我解释为什么这条线是错误的,我该如何解决?
答案 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!