麻烦使用变量作为std_logic_vector中的边界与downto

时间:2016-08-04 18:12:43

标签: vhdl

我正在尝试执行以下操作:在一个过程中,在声明一个类型为自然的变量...

之后
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;

为什么会发生这种错误?提前感谢您的宝贵帮助,我希望我提供有关该问题的足够和有组织的信息!

1 个答案:

答案 0 :(得分:0)

原因是你的索引器:指针变量正在改变。如果编译器无法将部分解析为组合逻辑,则在VHDL中不允许这样做。

如果编译器只能实现顺序实现,那么它会抱怨错误。

取决于您的供应商。有时很难让编译器理解你所描述的逻辑实际上可以是组合的。

此外,请确保检查您是否没有推断锁定,否则肯定无法正常工作