【发布时间】:2013-02-18 13:27:52
【问题描述】:
我正在尝试对一段 vhdl 代码中的整数进行一些数学运算,但是当我尝试编译该工具时,会显示“0 运算符“+”的定义在此处匹配”。这是我想要做的:
for i in 0 to arr_size - 1 loop
for j in 0 to arr_size - 1 loop
for k in 0 to arr_size - 1 loop
for l in 0 to arr_size - 1 loop
for m in 0 to arr_size - 1 loop
mega_array(i)(j)(k)(l)(m) <= i*(arr_size**4) + j*(arr_size**3) + k*(arr_size**2) + l*(arr_size**1) + m*(arr_size**0);
end loop;
end loop;
end loop;
end loop;
end loop;
问题出现在设置了 mega_array 的那一行。请注意,这整个块都在一个进程中。
另外:
arr_size : integer := 4;
sig_size : integer := 32
type \1-line\ is array (arr_size - 1 downto 0) of unsigned (sig_size - 1 downto 0);
type square is array (arr_size - 1 downto 0) of \1-line\;
type cube is array (arr_size - 1 downto 0) of square;
type hypercube is array (arr_size - 1 downto 0) of cube;
type \5-cube\ is array (arr_size - 1 downto 0) of hypercube;
signal mega_array : \5-cube\;
【问题讨论】:
-
问题很可能出在Library/Use子句或者mega_array的声明中;值得将它们添加到问题中。 “0 个定义匹配”通常意味着有 2 个或更多可见(不明确)定义,因为您有太多重叠的“使用”子句。
标签: math integer vhdl operations