首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何用VHDL实现数组元素的随机输出

如何用VHDL实现数组元素的随机输出
EN

Stack Overflow用户
提问于 2013-09-27 18:01:00
回答 4查看 746关注 0票数 0

我有一个包含10个元素的数组。如何在不重复的情况下以随机顺序输出这些内容。

EN

回答 4

Stack Overflow用户

发布于 2013-09-27 22:21:00

对于测试平台,使用OSVVM随机库在数组中生成随机索引。或者您可以对其进行混洗(结合使用Fischer-Yates Algorithm和随机库)。

如果需要综合,则将数组放入RAM块中,并生成随机地址(例如,使用线性反馈移位寄存器)。

请注意,这些都不是完全随机的,只有伪随机的。如果您正在尝试任何远程加密,它们不太可能是您想要的。

票数 1
EN

Stack Overflow用户

发布于 2013-09-28 00:43:56

对于测试平台,OSVVM的RandomPkg使这一点变得很容易。

代码语言:javascript
代码运行次数:0
运行
复制
library osvvm ; 
use osvvm.RandomPkg.all ;
...
RandProc : process
  variable RV : RandomPtype ;
  variable IndexVals : integer_vector(0 to 9) := (others => integer'low) ;
begin
  for i in IndexVals'range loop 
    --                         min  max   ExcludeList
    IndexVals(i) := RV.RandInt(  0,   9,   IndexVals) ;
  end loop ; 

如果连续随机生成的10个元素的排列需要与前一个元素不同,问题就会变得更加有趣。为此,我将使用覆盖率模型。虽然,10个是我想要这样做的最大排列数,但有n个!排列和覆盖模型将需要存储所生成的每个排列。

票数 1
EN

Stack Overflow用户

发布于 2013-09-27 20:57:58

接近随机性的一个好方法是使用线性反馈移位寄存器。

http://en.wikipedia.org/wiki/Linear_feedback_shift_register

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19047989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档