如何获得n个为';1';什么是VHDL?

如何获得n个为';1';什么是VHDL?,vhdl,Vhdl,我想使用uniform()生成一个随机数。最大值必须等于N位整数的最大值 所以我需要生成一个具有n'1的二进制数的值 谢谢你制服给你一个从0.0到1.0的实数。您需要对其进行缩放以适应所需的值范围,并可以选择将其转换为std_逻辑_向量 例如,对于N位目标值: uniform(seed1, seed2, rand); rand_int := integer(floor(rand*2.0**N)); sig <= std_logic_vector(to_unsigned(rand_

我想使用uniform()生成一个随机数。最大值必须等于N位整数的最大值

所以我需要生成一个具有n'1的二进制数的值


谢谢你

制服给你一个从0.0到1.0的实数。您需要对其进行缩放以适应所需的值范围,并可以选择将其转换为std_逻辑_向量

例如,对于N位目标值:

uniform(seed1, seed2, rand);
rand_int := integer(floor(rand*2.0**N));
sig      <= std_logic_vector(to_unsigned(rand_int,N));
统一(seed1、seed2、rand);
rand_int:=整数(下限(rand*2.0**N));

sig开源OSVVM包包括一个基于统一的函数,该函数可以返回包randompkg中指定长度的数组类型(表示二进制数)。大于31位,使用两个统一调用。(2**N)-1中有N个。您的答案不包括N>31的情况。Uniform有一个基于种子作为参数传递的受约束随机范围,请参阅包体以获取包数学实数,其类型标记为正。解决方案是进行多个统一调用,并从每个调用中提取最多31位,形成N>31的值,其中N指定
sig
的长度。OSVVM包含这样的代码。OP既不指定N,也不指定二进制“整数”类型。