Перейти к содержанию
    

Генератор случайных чисел

Надо сделать на ПЛИС генератор случайных чисел (например 16-разрядных)

1. Можно ли для этого просто взять выходы 16-р (или более длинного) сдвигового регистра (генератора м-последовательности)?

2. Как затем получить нормальное распределение имея на входе равномерное?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2. Как затем получить нормальное распределение имея на входе равномерное?

Есть такая предельная теорема - сумма большого числа (фиксированного) случайных чисел с любым распределением - дает гауссово распределение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо сделать на ПЛИС генератор случайных чисел (например 16-разрядных)

1. Можно ли для этого просто взять выходы 16-р (или более длинного) сдвигового регистра (генератора м-последовательности)?

2. Как затем получить нормальное распределение имея на входе равномерное?

 

1 - Можно, но генератор выйдет так себе. Почитайте про Mersienne twister

2 - Посмотрите на Box-Muller transform и Ziggurat algorithm

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо! нет ли какой нибудь ссылки?

https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%...%B5%D0%BC%D0%B0

Так и называется - центральная предельная теорема

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 - Можно, но генератор выйдет так себе. Почитайте про Mersienne twister

2 - Посмотрите на Box-Muller transform и Ziggurat algorithm

 

1.- так себе - это значит - обычная псп, а не более крутая, как например коды Голда?

если да, то это сойдет, т.к. цель - создать шум и замешать его с сигналом; то есть получим поток из (2^n -1) 16-р. чисел с равномерным распределением?

2- спасибо, посмотрю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

process
begin
  if ct(22)'event and ct(22) = '1' then
      if rnd(6) = rnd(0) then
        rnd(7 downto 1) <= rnd(6 downto 0);
        rnd(0) <= '1';
      else
        rnd(7 downto 1) <= rnd(6 downto 0);
        rnd(0) <= '0';
    end if;
  end if;
end process;

только регистр делайте не 16, а 15 или 17 бит

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

понятно, что 15р и 17р регистры требуют для псп меньше обратных связей , чем 16р.

 

я только не понял, о чем код: если это про 8р псп , то вроде бы не те обратные связи (должны быть с 4 выходов)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо сделать на ПЛИС генератор случайных чисел (например 16-разрядных)

1. Можно ли для этого просто взять выходы 16-р (или более длинного) сдвигового регистра (генератора м-последовательности)?

2. Как затем получить нормальное распределение имея на входе равномерное?

А какую "символьную частоту" требуется получить?

Делал на макс10 генератор псевдослучайных чисел используя 16-ть конгруэнтных генераторов с периодом 2^16 каждый на одном умножителе 18*18.

Получил среднее 32768 с эксцессом 2,97 (у НР 3).

Символьная получилась чуть выше 250 тыс. значений в секунду.

Если использовать 16 умножителей - скорость можно поднять до 4..5 миллионов/с.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

весьма советую ознакомится, во-первых с XAPP052 (July 7,1996)

https://www.xilinx.com/support/documentatio...tes/xapp052.pdf

там есть прекрасная таблица полиномов для PRBS-генераторов.

post-72596-1486400892_thumb.png

во-вторых, есть прекрасная технология получения случайных промежутков времени, используя время захвата частоты PLL.

т.е. между сбросом PLL и установлением сигнала Locked - время недетерминированное. читай - случайное.

исходя из этого можно заряжать новый цикл длинного PRBS новым числом.

 

дальше я думаю разжёвывать смысла нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Xilinx есть пример как сделать защиту прошивки ПЛИС от копирования при помощи DS2432 (1-wire EEPROM with SHA-1 engine).

В проекте ПЛИС, в том числе, сделан генератор случайных чисел: LFSR работающий от двух генераторов на инверторах с линиями задержки.

За счет того, что частота генераторов "гуляет" от напряжения и температуры случайные числа получаются не псевдослучайными, а случайными...

xapp780 архив

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1.- так себе - это значит - обычная псп, а не более крутая, как например коды Голда?

если да, то это сойдет, т.к. цель - создать шум и замешать его с сигналом; то есть получим поток из (2^n -1) 16-р. чисел с равномерным распределением?

 

Период короткий. Не получите. Если брать весь регистр состояния каждый такт, то биты в соседних числах будут сильно статистически связаны. Поэтому получите только 2^n-1 псевдослучайных бит (Ну т.е. (2^n-1)/16 16-ти битных чисел). На высокой частоте период будет пролетать очень быстро. Для сравнения, период твистера Мерсенна 2^19937−1 32-разрядных чисел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо сделать на ПЛИС генератор случайных чисел (например 16-разрядных)

1. Можно ли для этого просто взять выходы 16-р (или более длинного) сдвигового регистра (генератора м-последовательности)?

2. Как затем получить нормальное распределение имея на входе равномерное?

Таких тем на форуме уже было полно: Генератор псевдослучайных чисел..

 

"Ищите и обрящете.." :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Таких тем на форуме уже было полно: Генератор псевдослучайных чисел..

 

я, само собой, сначала потыркал 'поиском', но этой ссылки (за которую отдельное спасибо), и ничего похожего - не выскочило.

 

Спасибо всем за ответы. Во всяком случае теперь есть отправные точки. Надо переварить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...