1

我的实体上有两个泛型:

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因为它只用于计算其他常数?

4

1 回答 1

2

一般来说,constant声明本身不会直接导致任何综合逻辑。因此,编写的代码并没有什么低效的地方。

于 2020-05-01T18:16:34.727 回答