微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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 举报,一经查实,本站将立刻删除。