VHDL分配切片没有实现?

时间:2013-09-24 17:08:45

标签: vhdl slice

是否可以在分配的左侧指定要分配的位范围?

例如。 R(15 downto 8) <= R(15 downto 8) -D;

上面给出了编译错误:Error 722: Assignment to a signal slice is not implemented.我尝试使用Google搜索错误无效。

然而这有效:

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

2 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分: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位变量。