【发布时间】:2019-12-13 19:07:15
【问题描述】:
我有一个“std_logic_vector”类型的二维矩阵,我需要对其一列或一行进行切片以提取“std_logic_vector”类型的(一维)数组。 我使用 VHDL2008 标准时遇到了这个问题。我知道嵌套数组可以解决我的问题,但我很好奇是否存在使用矩阵的解决方案。
试图只给矩阵一个索引并没有给我一个数组,而是导致无法解析类型的错误。
矩阵的定义:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
package package1 is
type MATRIX_TYPE is array (natural range <>, natural range <>) of std_logic_vector;
type VECTOR_TYPE is array (natural range <>) of std_logic_vector;
end package1;
子组件的实体:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
library WORK;
use WORK.PACKAGE1.ALL;
entity subcomponent is
port (
input_vector : in VECTOR_TYPE;
);
end subcomponent;
architecture arch of subcomponent is
begin
end architecture;
出现问题的顶级组件:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
library WORK;
use WORK.PACKAGE1.ALL;
entity component1 is
end entity;
architecture arch of component1 is
constant subcomponents : integer := 10;
signal matrix : MATRIX_TYPE (0 to subcomponents - 1, 0 to 15) (31 downto 0);
begin
SUBCOMPONENT_ARRAY : for i in 0 to subcomponents - 1 generate
subcomponent_i : entity work.subcomponent(arch)
port map (
input_vector => matrix(i) --matrix(i) does not work!
);
end generate;
end architecture;
【问题讨论】:
-
--matrix(i) does not work!不是一个特别具有描述性的错误声明,缺少 minimal reproducible example 无法复制。明显的错误是索引名称矩阵 (i) 的维数与 MATRIX 类型的维数不匹配(0 到子组件 - 1、0 到 15)。请注意,不完整类型 VECTOR_TYPE 的子类型指示缺失,它是实体子组件中 input_vector 的端口声明中的元素子类型。 -
@user1155120 感谢您完成我的示例。丢失的部分是微不足道的,但不可否认的是仍然丢失。如果您允许,我会将缺失的部分复制到我的问题中,以使示例正常工作。
-
这两个答案都没有显示如何将解决方案应用于您尚不清楚的问题。清除“...切片一列或一行”的意思。那么这是否足以让未来的读者使用您的问题和已接受的答案作为搜索资源来理解您的问题,然后将您接受的解决方案应用于他们自己的问题?这个想法是问题,他们接受的答案是搜索资源。就目前而言,如何将已接受的答案应用于不清楚的问题。
标签: matrix multidimensional-array vhdl slice