2014-04-09 34 views
0

MATH_REAL的Log2函數不起作用。MATH_REAL log2函數

下面是代碼:

Num: integer:=64; 
num: integer:=2;  
... 
out: out STD_LOGIC_VECTOR(natural(log2(Num/(2**(num*2-1)))) downto 0) 
... 

我遇到的錯誤是:「發現‘0’操作者的定義‘/’,無法確定確切的重載匹配定義‘/’」

謝謝!

+0

你鍵入的內容沒有接近有效的代碼。這裏有太多的東西被打破。請提供一小段但完整的代碼片段,這些代碼編譯並只給出您想要討論的錯誤。 – Philippe

回答

1

LOG2具有以下特徵(見:here):

function LOG2 (X : in REAL) return REAL; 

你給它

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

這可能是整數類型的,即不是真正的類型預期,假設你是使用整數的標準分割。我的建議是研究如何劃分實際值(例如,通過投射,儘管這可能會導致合成問題),或者自己讓分割運算符超載。

4

在申請log2之前(或者在分割之前,如果您不想要整數除法),應將其設置爲real

順便提一句,對於兩個不同的標識符,不能使用「Num」和「num」 - VHDL不區分大小寫。

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

'out'不能用作信號或變量名稱,它是一個保留字。提問者的錯誤消息意味着找到了一個log2函數。你的答案分析告訴我們在包real_math中的log2是可以接受的。現在可怕的問題是爲什麼?表達式爲了找到左邊界是否存在幾何圖形? – user1155120

+0

我沒有看到任何理由log2應該是無效或含糊不清 - 我可能誤解你的問題。 – fru1tbat