首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spartan-3E上的随机数生成

Spartan-3E上的随机数生成
EN

Stack Overflow用户
提问于 2009-04-16 17:15:41
回答 6查看 15.6K关注 0票数 11

我需要在Spartan-3E FPGA上为我的遗传算法生成伪随机数,我想用verilog实现它:你能给我一些关于这方面的建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-16 17:30:35

通常,您将使用IEEE.math_real uniform函数

代码语言:javascript
运行
复制
use IEEE.math_real.all;
procedure UNIFORM (variable Seed1,Seed2:inout integer; variable X:out real);

但是稍微研究一下伪随机数生成器(PRNG),您会发现许多变体都是简单的LFSR-它们看起来与CRC生成器非常相似。

如果您想从现有的、正在运行的PRNG开始滚动自己的PRNG,这里有几个资源:

http://www.opencores.org/?do=project&who=systemc_rng

http://verificationguild.com/modules.php?name=Downloads&d_op=viewdownload&cid=3

这是一个CRC VHDL代码生成器:

http://www.easics.be/webtools/crctool

票数 3
EN

Stack Overflow用户

发布于 2009-05-17 01:01:11

当然,Adam的随机生成器是不可合成的!您必须显式创建一个LFSR

下面的例子可能会有所帮助。它是一个8位最大LFSR

代码语言:javascript
运行
复制
module lfsr(input clk, reset, en, output reg [7:0] q);
  always @(posedge clk or posedge reset) begin
    if (reset)
      q <= 8'd1; // can be anything except zero
    else if (en)
      q <= {q[6:0], q[7] ^ q[5] ^ q[4] ^ q[3]}; // polynomial for maximal LFSR
  end
endmodule;
票数 16
EN

Stack Overflow用户

发布于 2009-10-29 23:57:02

您已经有了一些很好的答案,但我只想指出FPGA中LFSR的规范指南在这里:

http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf

它有一些Xilinx特有的地方(这对你的FPGA来说是可以的:),但原理可以移植到其他地方。

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

https://stackoverflow.com/questions/757151

复制
相关文章

相似问题

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