在 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 中是不允许的。
如果编译器只能实现顺序执行,那么它会报错。
取决于您的供应商。有时很难让编译器理解您所描述的逻辑实际上可以是组合的。
此外,请确保检查您是否没有推断锁定,否则这肯定不起作用
我正在尝试执行以下操作:在一个过程中,在声明一个自然类型的变量之后...
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 中是不允许的。
如果编译器只能实现顺序执行,那么它会报错。
取决于您的供应商。有时很难让编译器理解您所描述的逻辑实际上可以是组合的。
此外,请确保检查您是否没有推断锁定,否则这肯定不起作用