是否可以在分配的左侧指定要分配的位范围?
例如。 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;
答案 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位变量。