Arrays 一维中的二维指令数组
我试图用VHDL制作一个std_逻辑_向量数组。该数组在generate语句中用于生成桶移位器。数组的每个元素(数组、向量)都应该是一个单独的可寻址位。这是我的一些代码 信号声明:Arrays 一维中的二维指令数组,arrays,vhdl,xilinx-ise,digital-logic,Arrays,Vhdl,Xilinx Ise,Digital Logic,我试图用VHDL制作一个std_逻辑_向量数组。该数组在generate语句中用于生成桶移位器。数组的每个元素(数组、向量)都应该是一个单独的可寻址位。这是我的一些代码 信号声明: 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
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
这发生在我读取或写入stages数组的任何地方。如何处理其中一个向量的位?我通过遵循@user1155120的第二个解决方案解决了我的问题。
stage\t
是一个向量数组,每个维度都喜欢自己处理stages(st)
在st
索引整个向量<代码>阶段(st)(st_位)与(阶段(st))(st_位)
您也可以将类型阶段声明为类型阶段是标准逻辑的数组(4到0,15到0)代码>并使其成为二维数组,在端口映射中保留您的关联。如果没有一个模型,你很难准确地预测你将遇到的下一个问题。阶段是一个一维类型(stage\t)。尝试沿着M0=>stages(st)(st_位)的思路进行操作,
其中,在维度索引中,stages(st)是一个索引名,指定stage(t)的哪个元素,并且是使用st_位作为std_逻辑向量元素的索引名的前缀。您试图将阶段作为多维数组来处理,但事实并非如此。它的元素恰好是数组类型。@J.H.Bonarius是的,一些用户坚持回答评论中的问题:/