0

Is it possible to specify a bit range to be assigned on the left side of the assignment?

eg. R(15 downto 8) <= R(15 downto 8) -D;

The above gives me the compiler error: Error 722: Assignment to a signal slice is not implemented. I've tried Googling the error to no avail.

However this works:

R <= R(15 downto 8) - D;

4

2 回答 2

1

允许分配给切片。你用的是什么工具?D的尺寸是多少?注意结果大小。如果 D 的大小大于 R,则结果大小与 D 的大小匹配。

以下作业中会发生什么:

R(15 downto 0) <= R(15 downto 8) - D ;

如果此分配有效,那么您还需要对 D 进行切片:

R(15 downto 8) <= R(15 downto 8) - D(7 downto 0);

如果这没有得到它,其余的代码是什么样的?

于 2013-09-24T18:44:51.763 回答
0

答案与我的环境有关,特别是 Windows 7 上的 DesignWorks Professional 5。

不能将值分配给信号变量位向量的切片。例如。

signal R: std_logic_vector(15 downto 0);
R(15 downto 0) <= X"0000"; -- will not compile

可以将值分配给普通变量位向量的切片。例如。

variable D: std_logic_vector(15 downto 0);
D(15 downto 0) := X"0000"; -- will compile

每种情况都尝试将 16 位分配给 16 位变量。

于 2013-09-24T19:35:57.787 回答