読者です 読者をやめる 読者になる 読者になる

さわっても熱くない花火

ちょっとした驚きを食べながら生きています

32bit LFSRをVerilogで作る

研究のメモ Verilog 半導体 HDL

インターンシップの課題で32bit LFSRを書かないといけなくなったので、書いてみました。
たったこの程度のソースコードで作れるなんて良くできた疑似乱数生成器だなぁーまぁ周期が短いし相関が大きいけど。

module lfsr(clk,seed,reseed,out);
    input reseed,clk;
    input[31:0] seed;

    output[31:0] out;

    reg[32:0] r;

    //タップシーケンスとやらは[32,3,2,0] 
    always @(posedge clk)begin
        if(reseed)
            r=seed;
        else begin
            r=(r>>1)|(r[31]^r[2]^r[1]^1'b1)<<15;
        end
    end

    assign out=r;
endmodule

ちなみにタップシーケンスとやらはWikipedia先生から引っ張ってきました。
線形帰還シフトレジスタ - Wikipedia