0
我想在VHDL中制作一个std_logic_vectors数组。该数组用于生成语句以生成桶形移位器。数组中的每个元素(数组,矢量)应该是可单独寻址的位。这是我的一些代码。二维数组在期望1维
信号声明:
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
这发生在我正在阅读或写入阶段数组的任何地方。我如何处理其中一个矢量的位?
你也可以声明类型stage_t为'type stage_t是std_logic的数组(4 downto 0,15 downto 0);'使它成为一个二维数组,保留你在端口映射中的关联。如果没有[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),很难准确预测您将遇到的下一个问题。 – user1155120
阶段是一维类型(stage_t)。沿着'M0 =>阶段(st)(st_bit)'行,'在维度索引中st,阶段(st)是索引名称,指定阶段的stage_t的哪个元素,并且是使用st_bit命名的索引的前缀t作为std_logic_vector的一个元素的索引。你正试图将阶段作为一个多维数组来处理,而事实并非如此。它的元素恰好是一个数组类型。 – user1155120
@ J.H.Bonarius是的,一些用户坚持回答评论中的问题:/ –