【发布时间】:2016-12-11 00:03:38
【问题描述】:
我正在尝试执行以下操作:在一个进程中,在声明一个自然类型的变量之后...
VARIABLE Pointer: NATURAL := 0;
...我将它分配给一个值 Pnt,它是 std_logic_vector(3 downto 0) 类型的信号:...
Pointer := to_integer(unsigned(Pnt));
... 稍后(在流程的开始部分)我使用这个值 Pointer 来指向一个称为 Buffer 的大 std_logic_vector 的一部分(一个字节):
Buffer(Pointer*8+7 downto Pointer*8) <= ...something...
不幸的是,在编译时,我收到以下错误:
Error (10327): VHDL error at OutputInterface.vhd(38): can't determine definition of operator ""*"" -- found 0 possible definitions
我已经导入了 numeric_std,在我的文件的最顶部写了“use IEEE.numeric_std.all;”
为什么会发生这个错误?提前感谢您提供的宝贵帮助,我希望我围绕这个问题提供了足够且有条理的信息!
【问题讨论】:
-
这将有助于发布错误所在的整个第 38 行,以及上面所有内容的声明。但最好将问题提炼成最小的自包含可编译示例,让人们重现您正在做的事情。鉴于上述声明,
Pointer * 8肯定不是问题。 -
buffer是 VHDL 中的保留字。你的数组真的被称为“缓冲区”吗?如果是这样,那将无济于事;您需要更改其名称。 (缓冲端口是一种可以读取的输出端口。它很少使用,因为它引入了其他复杂性。) -
@MatthewTaylor 好点:这可能会使一些 VHDL 解析器偏离轨道并导致令人困惑的错误消息。
标签: vhdl