我需要在 vhdl 中生成 0 - 1023 之间的随机整数,但是我在互联网上找不到这方面的好资源。请问有人帮我吗?
下面是生成范围 [0 : 1023] 内均匀(均匀)分布的整数的示例。
请注意,floor
必须在与最大值 + 1 相乘之后使用运算,在本例中为 1023 + 1 = 1024,以确保 [0 : 1023] 中所有整数值的均匀(均匀)分布,因为使用不带下限的整数(因此integer(x * 1023)
)如注释中的“在 VHDL 测试平台中生成随机数”示例中所示,将导致四舍五入到最接近的值(从一半向上舍入),因此仅给出范围内第一个和最后一个值(0 和 1023)的一半概率。
entity tb is
end entity;
library ieee;
use ieee.math_real.uniform;
use ieee.math_real.floor;
architecture sim of tb is
begin
process is
variable seed1 : positive;
variable seed2 : positive;
variable x : real;
variable y : integer;
begin
seed1 := 1;
seed2 := 1;
for n in 1 to 10 loop
uniform(seed1, seed2, x);
y := integer(floor(x * 1024.0));
report "Random number in 0 .. 1023: " & integer'image(y);
end loop;
wait;
end process;
end architecture;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)