2

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 の連結であるため、ソリューションを柔軟にしたいと考えています。

人間が読みやすい、より優れたソリューションはありますか?

4

1 に答える 1