首页 > 解决方案 > 如何在 VHDL 中获得具有 n 个 '1' 的二进制数?

问题描述

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

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

谢谢

标签: vhdl

解决方案


uniform 给你一个从 0.0 到 1.0 的实数。您需要对其进行缩放以适应所需的值范围,并可选择将其转换为 std_logic_vector。

例如对于 N 位目标值:

uniform(seed1, seed2, rand);
rand_int := integer(floor(rand*2.0**N));
sig      <= std_logic_vector(to_unsigned(rand_int,N));

推荐阅读