在 VHDL 和后验合成中使用常量

问题描述

在 VHDL 中,我知道常量和变量,但目前我只使用了 integerstd_logic_vector 数据类型。为了分析和实现自动增益控制 (AGC),我需要改变 alpha 参数。 alpha 值有 16 位,例如,如果 alpha 的选定值是 0.95,那么在定点中将是:

alpha = round(0.95 * (2 ^ (bits - 1))) = 31130

将定点值设置为没有问题:

signal alpha : std_logic_vector(15 downto 0) := "0111100110011010"; -- alpha = 31130

但是,我的第一个问题是:是否可以将值设置为实际值,然后将其转换为定点并将其设置为 variable : std_logic_vector

第二个问题是:如果第一个问题是可以实现的,那么浮点数转换为定点数所需要的操作,如下例,不是综合的吧?

为了将我的真实值转换为 VHDL 中的定点,我认为的方法是:

constant bits : integer := 16;

-- Real alpha value
constant r_alpha : real := 0.95;

-- Fixed point alpha value: this is the alpha that I'm going to use.
constant alpha : integer := r_alpha * (2 ** (bits - 1));

这个例子显然不起作用,提出这个例子是为了澄清我的第一个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)