문제

스파르탄 -3E FPGA에서 유전자 알고리즘에 대한 의사 랜덤 숫자를 생성해야하며 Verilog에서 구현하고 싶습니다. 이것에 대한 포인터를 줄 수 있습니까?

도움이 되었습니까?

해결책

일반적으로 당신은 사용합니다 IEEE.MATH_REAL 균일 한 기능

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

그러나 의사 랜덤 번호 생성기 (PRNG)에 대한 연구를 조금만 보면 간단한 많은 변형을 찾을 수 있습니다. LFSRS- CRC 생성기와 매우 유사하게 보입니다.

기존의 작업 PRNG에서 시작하여 자신의 출발을하려는 경우 몇 가지 리소스가 있습니다.

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

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

CRC VHDL 코드 생성기는 다음과 같습니다.

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

다른 팁

물론 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;

당신은 이미 좋은 답을 얻었지만 FPGA의 LFSR에 대한 표준 가이드를 지적하겠습니다.

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

그것은 장소에서 약간 xilinx에 특화되어 있습니다 (FPGA에 적합합니다 :) 원칙은 다른 사람에게 전송할 수 있습니다.

의사 랜덤 번호 생성기에 대한 Verilog 또는 VHDL 코드를 생성 할 수있는 온라인 도구가 있습니다. 켜졌 어 outputlogic.com

LFSR에 동의합니다. 나는 전에 하나를 만들었고 암호화에 사용됩니다.

OpenCores에 대한 위의 포인터에는 Verilog 폴더에 파일이 있습니다. rng.v

나는 그것을 스파르탄 -3AN에서 사용했고 그것은 훌륭하게 작동합니다. 내 코드는 무작위 번호 생성기를 사용하여 부품을 프로그래밍 한 후 임의의 PWM을 선택하고 선택 가능한 모든 PWM을 다루었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top