未实现VHDL分配片?

未实现VHDL分配片?,vhdl,slice,Vhdl,Slice,是否可以在赋值的左侧指定要赋值的位范围 例如,R(15到8)允许对片进行赋值。你在用什么工具?D的尺寸是多少?注意结果大小。如果D的大小大于R,则结果大小与D的大小匹配 以下作业中会发生什么情况: R(15 downto 0) <= R(15 downto 8) - D ; R(15到0)答案与我的环境有关,特别是Windows 7上的DesignWorks Professional 5 不能为信号变量位向量的切片赋值。 例如 每种情况都试图将16位分配给一个16位变量。也许您愿意告诉我

是否可以在赋值的左侧指定要赋值的位范围


例如,
R(15到8)允许对片进行赋值。你在用什么工具?D的尺寸是多少?注意结果大小。如果D的大小大于R,则结果大小与D的大小匹配

以下作业中会发生什么情况:

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

R(15到0)答案与我的环境有关,特别是Windows 7上的DesignWorks Professional 5

不能信号变量位向量的切片赋值。 例如


每种情况都试图将16位分配给一个16位变量。

也许您愿意告诉我们是哪个(谁的)分析器告诉您的?在VHDL中,片名作为信号分配语句的目标是合法的。该格式类似于PICA VHDL工具,其中722代表一个行号。很抱歉遗漏了我的环境详细信息。在Windows 7上使用DesignWorks Professional 5。722是错误代码。行号是单独表示的。我使用的是DesignWorks Professional 5。这不是尺寸问题。我应该提到,赋值是在一个信号变量上,而不是在一个普通变量上,这显然是非法的。如果第二个变量编译了,而第一个没有编译,我强烈建议您使用更好的合成工具。第一个应该编译,第二个应该只在使用
D(15到0):=X“00”时编译。可能第一个未编译,因为您正在将8位向量X“00”分配给16位信号。试试看:R(15到0)@Russell:你说的向量大小是对的。我上面的答案是不正确的,我的代码是正确的。现在编辑。@zennehoy:我希望我可以,不幸的是我被这个编译器卡住了(原因被保留)。您对我不正确的普通变量赋值的看法也是正确的,它应该是“:”而不是“:”“@cbrad这几乎肯定是一个工具问题-它显然没有完全实现VHDL标准。如果你无法使用这个工具,恐怕你得用其他方法来解决这个问题。例如,您可以为R的上部和下部创建两个信号,然后在体系结构级别分配给R:
R
R(15 downto 8) <= R(15 downto 8) - D(7 downto 0);
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