스파르탄 -3E FPGA에서 내 유전 알고리즘에 대한 의사 난수를 생성해야하고이를 Verilog로 구현하고 싶습니다.이 점에 대해 알려줄 수 있습니까?Spartan-3E에서 난수 생성
답변
일반적으로 당신은 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.easics.be/webtools/crctool
:http://www.opencores.org/?do=project&who=systemc_rng
여기 http://verificationguild.com/modules.php?name=Downloads&d_op=viewdownload&cid=3
는 CRC VHDL 코드 생성기 : 당신은 기존의 작업 PRNG는에서 자신의 시작을 롤하려면 여기
여러 자원이다
물론 Adam의 임의 생성기는 합성 할 수 없습니다! 명시 적으로 LFSR을 만들어야합니다.
다음 예는 도움이 될 수 있습니다. 이 8 비트 최대 LFSR 포인터 OpenCores이라는 Verilog를 폴더에있는 파일이 위
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;
이다 : 나는 스파르탄 - 3AN에서 그것을 사용했다 rng.v
을하고 그것을 잘 작동합니다. 내 코드는 난수 생성기를 사용하여 임의의 PWM을 선택하고 부품을 프로그래밍 한 다음 모든 선택 가능한 PWM을 처리했습니다.
의사 난수 생성 프로그램에 Verilog 또는 VHDL 코드를 생성 할 수있는 온라인 도구가 있습니다. 켜기 OutputLogic.com
나는 LFSR에 동의합니다. 나는 전에 그것을 만들었고 그것은 암호화에 사용됩니다.
LFSR은 의사 난수 생성에 유용하지만 실제 암호화 체계에서는 사용하기에 적합하지 않습니다. – wjl
이미 좋은 답변을 있어요,하지만 난 단지의 FPGA에서의 LFSR에 정식 가이드를 지적하는 것은 여기에 있습니다 :
http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
그것은 OK입니다 장소에서 조금 자일링스 특정 (의 귀하의 FPGA 용 :)하지만 원칙은 다른 사람에게 양도 할 수 있습니다.
OP가 필요한 verilog -하지만 LFSR을 보는 당신의 제안은 건전합니다. 내 관심사를 위해서, UNIFORM 절차를 종합 할 수 있습니까? 그것은 무엇에 합성됩니까? – Marty