高效地从通用型vhdl中导出参数。

问题描述 投票:0回答: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 因为它只用于计算其他常数?

vhdl fpga xilinx vivado ghdl
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.