MATH_REAL的Log2功能不起作用。
以下是代码:
Num: integer:=64;
num: integer:=2;
...
out: out STD_LOGIC_VECTOR(natural(log2(Num/(2**(num*2-1)))) downto 0)
...
我遇到的错误是:"找到' 0' operator" /"的定义无法确定" /""
的确切重载匹配定义谢谢!
答案 0 :(得分:4)
在您申请real
之前(或在您分割之前,如果您不想要整数除法),则转换为log2
。
顺便说一句,您不能将“Num
”和“num
”用于两个不同的标识符 - VHDL不区分大小写。
std_logic_vector(natural(log2(real(num1) / real(2**(num2*2-1)))) downto 0);
答案 1 :(得分:1)
Log2具有以下签名(请参阅:here):
function LOG2 (X : in REAL ) return REAL;
你正在给它
Num/(2**(num*2-1))
假设您使用整数的标准除法,可能是整数类型,即不是预期的实际类型。我的建议是你研究如何划分实数(例如通过铸造,虽然这可能会导致综合问题),或者自己超负荷划分算子。