我真的是VHDL的初学者,我正在尝试制作一款热门游戏。我的第一个目标是生成-1024到1024之间的数字,以便可以使用10个开关进行猜测。但是,关于正整数有很多资料,但是对于负整数我找不到。这是我的示例代码。另外,有人说LFSR可以完成这项工作,但我是新手,我无法理解LFSR的行为。
library ieee;
use ieee.math_real.all;
entity rand_gen is
end rand_gen;
architecture behavior of rand_gen is
signal rand_num : integer := 0;
begin
process
variable seed1, seed2: positive;
variable rand: real;
variable range_of_rand : real := 1024.0;
begin
uniform(seed1, seed2, rand);
rand_num <= integer(rand*range_of_rand);
wait for 10 ns;
end process;
end behavior;
答案 0 :(得分:0)
请查看Open Source VHDL Verification Methodology。该框架提供了许多软件包来简化测试平台的编写。例如,有一个RandomPkg
VHDL软件包,它提供了许多随机过程,函数和受约束的随机数的受保护类型:RandInt(min, max)
。
process
variable RV : RandomPType;
begin
RV.Init("dkudbcsdkbcfsdbcfdsyc"); -- create a seed value
for in i 0 to 15 loop
rand_num <= RV.RandInt(-1024, 1024);
wait until rising_edge(Clock);
end loop;
end process;
受保护的类型将处理两个种子整数,如果使用ieee.math_real.uniform(...)