无法在VHDL中与std_logic_vector类型进行比较

时间:2011-11-14 02:37:12

标签: vhdl

我试图解决这个问题并且失败了。奇怪的是,我的项目的另一个文件中完全相同的代码似乎很好,我使用相同的库..出了什么问题?

代码行(及其内部的生成)

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;

1 个答案:

答案 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语句或其他方法明确地执行此操作。