我需要在Spartan-3E FPGA上为我的遗传算法生成伪随机数,我想用verilog实现它:你能给我一些关于这方面的建议吗?
发布于 2009-04-16 17:30:35
通常,您将使用IEEE.math_real uniform函数
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
发布于 2009-05-17 01:01:11
当然,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-10-29 23:57:02
您已经有了一些很好的答案,但我只想指出FPGA中LFSR的规范指南在这里:
http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
它有一些Xilinx特有的地方(这对你的FPGA来说是可以的:),但原理可以移植到其他地方。
https://stackoverflow.com/questions/757151
复制相似问题