MATH_REAL log2函数

时间:2014-04-09 15:30:52

标签: vhdl

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" /"的定义无法确定" /""

的确切重载匹配定义

谢谢!

2 个答案:

答案 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))
假设您使用整数的标准除法,

可能是整数类型,即不是预期的实际类型。我的建议是你研究如何划分实数(例如通过铸造,虽然这可能会导致综合问题),或者自己超负荷划分算子。