在 std_logic_vector 中使用变量作为边界时出现问题

Trouble using a variable as boundary in a std_logic_vector with the downto

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

VARIABLE Pointer: NATURAL := 0;

... 我将其分配给一个值 Pnt,它是 std_logic_vector(3 downto 0) 类型的信号:...

Pointer := to_integer(unsigned(Pnt));

... 之后(在过程的开始部分)我使用这个值 Pointer 来指向一个叫做 Buffer:std_logic_vector 的大 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,在我的文件的最顶部写下“使用 IEEE.numeric_std.all;”

为什么会出现这个错误?提前感谢您的宝贵帮助,我希望我围绕这个问题提供了足够且有条理的信息!

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

如果编译器只能实现顺序执行,那么它会报错。

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

此外,请确保检查您是否没有推断锁定,否则这肯定不起作用