1

我正在尝试用 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;

编译器抱怨第二行,并说“Range left bound type Integer is not the same as right bound type”。有人可以向我解释为什么这条线是错误的,我该如何解决?

4

2 回答 2

1

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

无论如何,此解决方案将为您提供更多帮助...

于 2013-02-04T08:54:50.567 回答
0
FOR I IN 1 TO to_integer(UNSIGNED(A)) LOOP

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

于 2013-02-05T14:30:04.683 回答