2017-05-31 59 views
0

我想要做2个矩阵的乘法,并且我想在VHDL中创建一个std_logic_vectors数组。VHDL中的多维数组

package matrice is 
type t11 is array (32 downto 0,0 downto 19) of unsigned(7 downto 0);< 
type t1 is array (0 downto 19) of t11; 
type t2 is array (0 downto 194) of unsigned(7 downto 0); 








entity matrice_test is 

Port  (clk  : in STD_LOGIC;a : in t1;b : in t2;multi :out t2); 
end matrice_test; 

architecture Behavioral of matrice_test is 
type t11 is array (M_MAX-1 downto 0,0 downto O_MAX-1) of unsigned(N-1 downto 0); 
type t1 is array (0 downto O_MAX-1) of t11; 
type t2 is array (0 downto N_MAX-1) of unsigned(N-1 downto 0); 

的错误,我越来越:

indexed name prefix type t11 expects 2 dimensions 
+2

这似乎是一个合成sis错误(错误:HDLCompiler:540)。提供[最小,完整和可验证的示例](https://stackoverflow.com/help/mcve)。另请注意,体系结构声明区域中的重载类型声明名称t11,t1和t2与包矩阵(可能用于端口a和b,缺少上下文子句)中的那些不兼容和隐藏。 VHDL中的每个声明都是唯一的,它们不是同一类型。考虑先模拟你的设计。显示完整的错误消息。 – user1155120

+0

参见IEEE Std 1076-2008 5.3.2.2索引约束和离散范围,第4段“...如果任何离散范围定义了一个空范围,那么这样约束的任何数组就是一个* null数组*,没有元素... 。“ – user1155120

回答

2

我无法重现你的错误(怎么样提交MCVE),但这个

type t11 is array (323 downto 0,0 downto 19) of unsigned(7 downto 0); 

应该是这个

type t11 is array (323 downto 0,0 to 19) of unsigned(7 downto 0); 
--        ^
--         | 
+0

感谢您的请求,在模拟我的程序期间,我收到此错误”索引名称前缀类型t11预计2维“在此行类型t11是数组(323 downto 0,0到19)无符号(7 downto 0);我试图做“to”而不是downto,但是我发现同样的错误 – rola

+0

@rola,因为我看不到任何其他错误,我不能帮助你,除非你构建一个MCVE。在EDA Playground上做这件事怎么样? –

+0

该行是有效的VHDL。 0 downto 19是一个零范围。你的回答真的是一个评论,没有MCVE和完整的和特定的错误消息(大概来自综合)没有别的可能。参见IEEE Std 1076-2008 5.3.2.2索引约束和离散范围,第4段“...如果任何离散范围定义了一个零范围,那么这样约束的任何数组就是一个* null数组*,没有元素.... “设计规范没有出现函数式和重载式类型声明,因为架构声明式项目即使具有相同的维度和元素类型也不是同一类型。 – user1155120