我试图解决这个问题并且失败了。奇怪的是,我的项目的另一个文件中完全相同的代码似乎很好,我使用相同的库..出了什么问题?
代码行(及其内部的生成)
generate_decounter_ppl: for i in 0 to ppl - 1 generate
block_decounter_load(i) <= (ppl_stage_count = conv_std_logic_vector((i),log2(ppl)));
错误:
Line 175: found '0' definitions of operator "=", cannot determine exact overloaded matching definition for "="
上下文:
ppl : integer := 18;
ppl_stage_count : in std_logic_vector(log2(ppl)-1 downto 0);
signal block_decounter_load : std_logic_vector(ppl -1 downto 0);
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
答案 0 :(得分:4)
你究竟想做什么?
尽我所能猜测,看起来你可能会将VHDL与Verilog或C混淆,并且可能会尝试执行以下操作:
block_decounter_load(i) <= '1' when (ppl_stage_count = conv_std_logic_vector((i),log2(ppl))) else '0';
在VHDL中,您不能隐式更改类型作为赋值的一部分。您正在尝试将布尔结果转换为代码中的std_logic。您必须使用条件信号赋值(上例中的'when'子句),进程内的if语句或其他方法明确地执行此操作。