4
VHDL-2008定義如何約束VHDL-2008 integer_vector?
type integer_vector is array (natural range <>) of integer
,它可以被用來創建不受約束整數數組就好:
signal sUnconsrainedIntA : integer_vector(0 to 1) := (others => 0);
然而,如何聲明約束整數數組,例如:
-- does not work:
-- signal sConstrainedTestIntA : integer_vector(0 to 1) range 0 to 3 := (others => 0);
-- ** Error: filetest.vhd(65): Range constraints cannot be applied to array types.
-- ** Error: filetest.vhd(65): Range expression is type Integer; expecting type std.STANDARD.INTEGER_VECTOR
-- What you can do is:
type my_int_array is array (natural range <>) of integer range 0 to 3;
signal sConstrainedIntA : my_int_array(0 to 1) := (others => 0);
有沒有一種方法來限制沒有自定義類型的數組中的整數?
我猜不是。正如你寫的,'integer_vector'是一個包含全範圍的整數數組。如果你想改變它,你必須自己定義一個不同的類型。 – Juergen
如何定義一個自定義類型,然後可以被約束,如 類型slv_array是std_logic_vector的數組(自然範圍<>); signal sSlvA:slv_array(0 to 1)(1 downto 0):=(others =>(others =>'0')); – FritzDC
我不確定VHDL-2008,但之前,你不能做這樣的事情。我想VHDL-2008仍然不可能。 – Juergen