二维数组需要 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)
.
我正在尝试在 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)
.