11

Spartan-3E FPGAで遺伝的アルゴリズムの疑似乱数を生成する必要があり、それをVerilogに実装したいと思います。これに関するポインタを教えてください。

4

6 に答える 6

16

もちろん、Adamによるランダムジェネレーターは合成できません!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;
于 2009-05-17T01:01:10.710 に答える
9

すでにいくつかの良い答えがありますが、FPGAのLFSRの標準的なガイドがここにあることを指摘しておきます。

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

場所によってはザイリンクス固有のものですが(FPGAでは問題ありません:)、原則は他の人に譲渡できます。

于 2009-10-29T15:57:01.877 に答える
3

通常、IEEE.math_realユニフォーム関数を使用します

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

しかし、疑似乱数ジェネレーター(PRNG)について少し調べてみると、単純なLFSRである多くのバリアントが見つかります。これはCRCジェネレーターと非常によく似ています。

既存の動作中のPRNGから始めて独自のリソースを作成する場合は、次のリソースを使用してください。

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

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

これがCRCVHDLコードジェネレータです。

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

于 2009-04-16T17:30:35.263 に答える
3

疑似乱数ジェネレータ用のVerilogまたはVHDLコードを生成できるオンラインツールがあります。OutputLogic.comにあります

于 2009-06-24T06:43:05.947 に答える
2

上記のOpenCoresへのポインターには、verilogフォルダーにrng.vというファイルがあります。

私はSpartan-3ANでそれを使用しました、そしてそれは素晴らしい働きをします。私のコードは、パーツをプログラムした後、乱数ジェネレーターを使用してランダムPWMを選択し、選択可能なすべてのPWMをカバーしました。

于 2009-05-26T14:48:18.043 に答える
0

LFSRに同意します。以前に作成したことがあり、暗号化に使用されます。

于 2009-07-04T07:03:08.213 に答える