我正在尝试在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 mux的实体:
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
这种情况发生在我正在阅读或写入舞台阵列的任何地方。如何处理其中一个向量的位?
答案 0 :(得分:2)
我通过关注@ user1155120的第二个解决方案解决了我的问题。
stage_t
是一个向量数组,每个维度都喜欢自己解决。 stages(st)
为st
处的整个向量编制索引。 stages(st)(st_bit)
与( stages(st) )(st_bit)
相同。