§ Верхний уровень

/*
 * Генератор 32-х битных случайных чисел
 * marsohod.org/projects/proekty-dlya-platy-marsokhod3/325-random-gen
 */

wire [31:0] rnd;

rand32 RANDOM32
(
    .clock (clk), // 100 Mhz
    .rnd   (rnd)  // 32 bit
);

§ rand32.v

module rand32
(
    input  wire        clock,
    output reg  [31:0] rnd
);

initial rnd = 32'h00000001;

// Следующий бит случайности
wire next_bit = rnd[31] ^ rnd[30] ^ rnd[29] ^ rnd[27] ^ rnd[25] ^ rnd[0];

// Генератор
always @(posedge clock) rnd <= { next_bit, rnd[31:1] };

endmodule
1 июл, 2020
© 2007-2022 Все права ништяково получены