Vhdl 数学实数log2函数

Vhdl 数学实数log2函数,vhdl,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”定义”,无法确定“/”的确切重载匹配定义 谢谢 Log2具有以下签名(请参见:): 你在给它 Num/(2**(num*2-1)) 它可能是integer类型(假设您

MATH_REAL的Log2函数不起作用

代码如下:

Num: integer:=64;
num: integer:=2;    
...
out: out STD_LOGIC_VECTOR(natural(log2(Num/(2**(num*2-1)))) downto 0)
...
我遇到的错误是:“找到运算符“/”的“0”定义”,无法确定“/”的确切重载匹配定义


谢谢

Log2具有以下签名(请参见:):

你在给它

Num/(2**(num*2-1))

它可能是integer类型(假设您对整数使用标准除法,则不是预期的实数类型)。我的建议是,您研究如何分割实数(例如,通过强制转换,尽管这可能会导致合成问题),或者自己重载除法运算符

Log2具有以下签名(请参见:):

你在给它

Num/(2**(num*2-1))

它可能是integer类型(假设您对整数使用标准除法,则不是预期的实数类型)。我的建议是,您研究如何分割实数(例如,通过强制转换,尽管这可能会导致合成问题),或者自己重载除法运算符

在应用
log2
之前(或者在除法之前,如果不需要整数除法),强制转换为
real

顺便说一句,不能对两个不同的标识符使用“
Num
”和“
Num
”——VHDL不区分大小写

std_logic_vector(natural(log2(real(num1) / real(2**(num2*2-1)))) downto 0);

在应用
log2
之前(或者如果不需要整数除法,在除法之前),强制转换为
real

顺便说一句,不能对两个不同的标识符使用“
Num
”和“
Num
”——VHDL不区分大小写

std_logic_vector(natural(log2(real(num1) / real(2**(num2*2-1)))) downto 0);

您键入的代码与有效代码不符。这里面破的东西太多了。请提供一个小而完整的代码片段,该片段可编译并仅给出您要讨论的错误。您键入的代码与有效代码不符。这里面破的东西太多了。请提供一个小而完整的代码段,该代码段编译并仅给出您想要讨论的错误。
out
也不能用作信号或变量名,它是保留字。发问者的错误消息意味着找到了log2函数。你的回答告诉我们包中的log2 real_math是可以接受的。现在可怕的问题是为什么?表达式是否暗示了用于查找左边界的几何图形?我不认为log2在这里无效或不明确的任何原因-我可能误解了您的问题。
out
也不能用作信号或变量名,它是保留字。发问者的错误消息意味着找到了log2函数。你的回答告诉我们包中的log2 real_math是可以接受的。现在可怕的问题是为什么?这个表达式是否暗示了寻找左边界的几何关系?我看不出log2在这里无效或不明确的任何原因-我可能误解了你的问题。