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 の連結であるため、ソリューションを柔軟にしたいと考えています。
人間が読みやすい、より優れたソリューションはありますか?