二维数组需要 1 维

2-dimenstional array in expects 1 dimension

我正在尝试在 VHDL 中创建一个 std_logic_vectors 数组。该数组在生成语句中用于制作桶形移位器。数组(数组、向量)的每个元素都应该是一个可单独寻址的位。这是我的一些代码。

信号声明:

type stage_t is array( 4 downto 0 ) of std_logic_vector ( 15 downto 0);
signal stages: stage_t;

架构中:

test_stage: for st in 0 to 4 generate
        test_bit_assign: for st_bit in 0 to 15 generate 
            test_stagemux: entity work.mux2_1 port map (
                S => amt(st),
                M0 => stages(st,st_bit), M1 =>  stages(st,st_bit+log_w),
                O => stages(st+1,st_bit)
        );
end generate;

2:1 多路复用器的实体:

entity mux2_1 is
   generic ( n : INTEGER := 8);
   port (
       S : in std_logic; -- select
       M0, M1   : in std_logic;
       O        : out std_logic
    );
end mux2_1;

我遇到的错误:

Indexed name prefix type stage_t expects 1 dimensions

这发生在我读取或写入阶段数组的任何地方。如何寻址其中一个向量的位?

我按照@user1155120 的第二个解决方案解决了我的问题。 stage_t 是一个向量数组,每个维度都喜欢单独处理。 stages(st)st 索引整个向量。 stages(st)(st_bit) 等同于 ( stages(st) )(st_bit).