我的实体上有两个泛型:
clk_freq, io_delay: integer
由此,我想计算所需的周期数,io_delay
以毫秒为单位。我还想将此计数器值存储在一个无符号变量中,这样我就不会在整数类型上浪费大量资源。所以我实现了以下内容来做到这一点:
constant COUNT_MAX_I: integer := integer(ceil(real(io_delay) * 0.001 * real(clk_freq)));
constant COUNTER_WIDTH: integer := integer(ceil(log2(real(COUNT_MAX_I))));
constant COUNT_HIGH: integer := unsigned(COUNTER_WIDTH - 1 downto 0) := to_unsigned(COUNT_MAX_I, COUNTER_WIDTH);
然而,仅仅看它看起来效率非常低。所以我的问题是:
有没有更有效的方法来做到这一点,综合工具是否会被淘汰,COUNT_MAX_I
因为它只用于计算其他常数?