我正在尝试执行以下操作:在一个过程中,在声明一个类型为自然的变量...
之后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,在我的文件的最顶部写了&#34;使用IEEE.numeric_std.all; &#34;
为什么会发生这种错误?提前感谢您的宝贵帮助,我希望我提供有关该问题的足够和有组织的信息!
答案 0 :(得分:0)
原因是你的索引器:指针变量正在改变。如果编译器无法将部分解析为组合逻辑,则在VHDL中不允许这样做。
如果编译器只能实现顺序实现,那么它会抱怨错误。
取决于您的供应商。有时很难让编译器理解你所描述的逻辑实际上可以是组合的。
此外,请确保检查您是否没有推断锁定,否则肯定无法正常工作