1
我想在VHDL一個泛型參數後調整實體端口。VHDL - 調整大小口尺寸計算後泛型參數
這裏是我的實體聲明:
library ieee;
use ieee.std_logic_1164.all;
use IEEE.math_real.all;
use ieee.numeric_std.all;
entity counter is
generic(
ticks : natural := 10
);
port(
clk : in std_logic;
f_v : in std_logic_vector(natural(FLOOR(LOG2(Real(ticks)))) downto 0); --forced value
res : in std_logic;
z : out std_logic_vector(natural(FLOOR(LOG2(Real(ticks)))) downto 0)
);
end counter;
更specificly,我想大小f_v和功能巢自然後ž(FLOOR(LOG 2(雷亞爾(蜱))))當實例化一個計數器實體時。
代碼編譯,但是當我嘗試生成一個符號文件,我得到了下面錯誤信息:
Error (10017): Can't create symbol/include/instantiation/component file for entity "counter" because port "f_v" has an unsupported type
Error (10017): Can't create symbol/include/instantiation/component file for entity "counter" because port "z" has an unsupported type
我使用的Altera的Quartus II 9.1網絡版。
我該如何得到這個工作?
除非我錯過了一個subtlty,這看起來像完全有效的VHDL;我一直都在做這種事情(計算使用泛型和函數的端口),並且在我遇到的每個合成器中它都能正常工作。如果你告訴我們什麼工具會給你這個錯誤並提供你得到的所有錯誤(這看起來像一個片段),你可能會得到更好的幫助。 – wjl
通常我使用更易合成的遞歸整數log2。這可能是什麼給你的(未指定的)工具的麻煩。 – wjl
在綜合中對像REAL這樣的東西的支持有點不完善,但有所改進。嘗試(1)更新版本的Quartus,或者(2)將該表達式從端口映射中移出,或許放入調用者中,將「width」作爲通用參數傳遞。 –