2009-07-14 1 views
5

Come generare un numero pseudo casuale in FPGA?Come generare un numero pseudo casuale in FPGA?

+1

Per quelli che fanno ricerche per numeri casuali in FPGA, essi saranno in grado di gran lunga trovare più facilmente a questa domanda. Pertanto, non voterò per chiudere come duplicato. – AlbertoPL

+0

Forse chi è alla ricerca di FPGA in stackoverflow vorrebbe sapere di un sito specifico: [Proposta di progettazione logica] (http://area51.stackexchange.com/proposals/20632/logic-design?referrer=YVw0qLaS2iiFAaI1gMp5oQ2) – woliveirajr

+0

oh, bene che è stato chiesto qui e non in questo sito Area 51. E 'stato cancellato;) –

risposta

3

Se non è per la crittografia o altre applicazioni con un avversario intelligente (per esempio il gioco d'azzardo) userei un approccio linear feedback shift register.

Utilizza solo esclusivi o shift, quindi è molto semplice da implementare nell'hardware.

4

C'è una nota eccellente sull'applicazione Xilinx sulla generazione di sequenze di numeri pseudo-casuali in modo efficiente in un FPGA. È XAPP052.

0

Come altri hanno già detto, gli LFSR possono essere utilizzati per numeri pseudo casuali in un FPGA. Ecco un'implementazione VHDL di un LFSR a 32 bit di lunghezza massima.

process(clk) 

    -- maximal length 32-bit xnor LFSR based on xilinx app note XAPP210 
    function lfsr32(x : std_logic_vector(31 downto 0)) return std_logic_vector is 
    begin 
    return x(30 downto 0) & (x(0) xnor x(1) xnor x(21) xnor x(31)); 
    end function; 

begin 
    if rising_edge(clk) then 
    if rst='1' then 
     pseudo_rand <= (others => '0'); 
    else 
     pseudo_rand <= lfsr32(psuedo_rand); 
    end if; 
    end if; 
end process;