我正在尝试将较小的分配std_logic_vector
给较大的,如下所示:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity subarray_tb is
end subarray_tb;
architecture VERHALTEN of subarray_tb is
signal big : std_logic_vector(15 downto 0) := x"A5A5";
signal small : std_Logic_vector(7 downto 0) := x"F0";
begin
big <= small;
end VERHALTEN;
正如预期的那样,我从 Modelsim 中收到以下错误:
** 错误(可抑制):C:/altera/15.1/subarray_tb.vhd(19): (vcom-1272) 预期长度为 16;实际长度为8。
我知道如何解决这个问题,但我对结果不满意,因为它看起来很不可读:
big(big'LEFT downto (big'LEFT-small'LENGTH+1)) <= small;
我不想在括号中使用固定范围,因为我的真正问题有点复杂。较小的数组是不同 std_logic_vectors 的串联,所以我希望解决方案灵活。
有没有人更好的解决方案,更易于阅读?