代码之家  ›  专栏  ›  技术社区  ›  akosch

斯巴达-3e上的随机数生成

  •  11
  • akosch  · 技术社区  · 16 年前

    我需要在spartan-3e FPGA上为我的遗传算法生成伪随机数,我想在verilog中实现它:你能给我一些关于这个的指针吗?

    6 回复  |  直到 11 年前
        1
  •  2
  •   GEOCHET S.Lott    16 年前

    通常你会使用 IEEE.math_real 均匀函数

    use IEEE.math_real.all;
    procedure UNIFORM (variable Seed1,Seed2:inout integer; variable X:out real);
    

    但是对伪随机数生成器(prng)做一点研究,你会发现许多简单的变体 LFSR S-看起来非常类似于CRC发电机。

    如果您想从现有的工作流程开始,滚动您自己的资源如下:

    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

        2
  •  16
  •   Roman Starkov    14 年前

    当然,亚当的随机生成器是不可合成的!您必须显式地创建 LFSR .

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

    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;
    
        3
  •  9
  •   Martin Thompson    11 年前

    您已经得到了一些很好的答案,但我将指出fpgas中LFSRS的规范指南如下:

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

    在某些地方它有点Xilinx特有(这对您的FPGA来说是可以的:)但是这些原则可以转移到其他人身上。

        4
  •  3
  •   OutputLogic    16 年前

    有一个在线工具可以为伪随机数生成器生成verilog或vhdl代码。这是关于 OutputLogic.com

        5
  •  2
  •   yan bellavance    16 年前

    我同意LFSR。我以前做过一个用于加密。

        6
  •  2
  •   hanleyp    14 年前

    上面指向OpenCores的指针在verilog文件夹中有一个文件,名为: rng.v

    我在斯巴达-3AN中使用过,效果很好。我的代码使用随机数发生器来选择一个随机的脉宽调制后,我编程的部分,它涵盖了所有可选的脉宽调制。