Недавно я спросил здесь, как генерировать случайные числа в аппаратном обеспечении и было сказано использовать LFSR. Он будет случайным, но начнет повторяться после определенного значения.Почему выходы этого генератора псевдослучайных чисел (LFSR) настолько предсказуемы?
Проблема в том, что генерируемые случайные числа настолько предсказуемы, что следующее значение можно легко догадаться. Например, проверьте ниже моделирование:
Следующее «случайное» число можно угадать, добавив предыдущий номер с +1 самих по себе. Может кто-то, пожалуйста, проверьте, нормально ли это и что ожидать.
Вот код, я использовал для LFSR:
module LFSR(
input clock,
input reset,
output [12:0] rnd
);
wire feedback = rnd[12]^rnd[3]^rnd[2]^rnd[0];
reg [12:0] random;
always @ (posedge clock or posedge reset)
begin
if (reset)
random <= 13'hF; //An LFSR cannot have an all 0 state, thus reset to FF
else
random <= {random[11:0], feedback}; //shift left the xor'd every posedge clock
end
assign rnd = random;
endmodule
Расположение битов в XOR подобраны здесь: The table page 5
Подождите, пока «1 достигнет MSB, а затем посмотрите, все ли последующие номера« предсказуемы »... –
Приношу свои извинения. Я ответил поспешно и рассердился. Это было явно неуместно с моей стороны. –