реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> RNG в ПЛИС
count_enable
сообщение May 30 2014, 17:38
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Доброго времени суток.
Делаю генератор стохастического процесса с раскладом Пуассона.
Если не говорить мудрено, то на вход блока приходит вероятность (0-100%), а на выходе надо получить ответ ДА/НЕТ для данной вероятности. В матлабе это пишется одной строчкой if(X>rand()), y=1;
Особой "рандомности" не нужно - это не криптоакселератор. Равномерное распределение всё же желательно. Но вот размер и скорость критичны, надо несколько сотен таких малюток в чипе.
На ум приходят два ГСЧ: псевдорандом на LSFR, 32 бита с хорошей инициализацией или Ring Oscillator. Первый хорошо изучен и довольно простой. Ring Oscillator еще проще, но не уверен что смогу правильно его использовать в данном случае. Мне приходит на ум 7 RO из трёх инверторов и защелка которая по сигналу будет захватывать состояние на одном из инверторов каждого RO. Это нам даст 7-битное число. потом только пересчёт 127 в 100% и готово. Что скажете?
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение May 30 2014, 19:27
Сообщение #2


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



1. Ring Oscillator мы рассматривать не будем по причине невозможности его моделирования. Иными словами: понять, что во всем диапазоне условий окружающей среды (температура, давление, время суток, солнечная активность и т.п.) он дает нужные вам статистические свойства, невозможно.

2. "LSFR с хорошей инициализацией" не понятно, что такое. Любая ненулевая инициализация сгодится и невырожденный LFSR генератор пройдет через любое ненулевое значение.

3. Если нужно большое количество независимых ГСЧ, то, наверное, есть смысл не дублировать их многократно, а сделать, например, 10 LFSR с разной длинной, а их выходы скомбинировать по xor. получив, таким образом 1023-канальный rng. Надо будет только проверить стат. свойства каждого комбинированного выхода с помощью Diehard, и, возможно, не использовать совсем уж "плохие" выходы.

4. Наряду с LFSR, в этом комбинировании использовать cellular automaton rng.

5. По моим наблюдениям, использование выражения "доброго времени суток" обычно является вторичным симптомом недостатка йода в организме. Я надеюсь, что у вас с этим всё в порядке.


Цитата(count_enable @ May 30 2014, 22:48) *
Go to the top of the page
 
+Quote Post
count_enable
сообщение May 31 2014, 03:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



"LSFR с хорошей инициализацией" означает что буду устанавливать начальное значение каждый раз разное, чтобы не было повторяющихся последовательностей.

Не совсем понял как из одного 1023-битного получить хотя бы тысячу 7-битных чисел. Если хорить каждый раз те самые биты, то выходы будут взаимно зависимы (например если выход ГСЧ №4 парное число, то выход ГСЧ №23 всегда непарный). Это нежелательно.

Цитата
По моим наблюдениям, использование выражения "доброго времени суток" обычно является вторичным симптомом недостатка йода в организме. Я надеюсь, что у вас с этим всё в порядке.
Видимо я отстал от жизни, в фидо и первых интернетах это было стандартное приветствие sm.gif.

Спасибо за идею с клеточным автоматом - всегда полезно узнать что-то новенькое.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение May 31 2014, 04:00
Сообщение #4


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Вы можете накапливать 1битовые значения 7 тактов, а можете использовать все или некоторые разряды регистра rng (lfsr или ca) в качестве многоразрядного выхода.

Что значит "парное-непарное", " те самые биты" и чем это плохо, я пока не понимаю. Объясните. Взаимная независимость двух процессов проверяется, рассматривая макс. значения взаимно-корреляционной функции. При последовательностях конечной длины берем циклическую свертку. Умозрительно при таком построении рнг она не должна быть "плохой", с большими выбросами. Хотя опять же, надо проверять. (Циклические свертки хорошо делать в частотной области)

RNGout[n] = a[m-1]*rng[m-1] xor ... xor a[0]*rng[0]

n = 1...2^m - 1,
a[i] ={0, 1}, кроме случая, когда все a[i] =0. Я бы еще убрал случай, когда еднинственная a[i] из всех равна 1. Тогда мы лишаемся "коротких" последовательностей, и можно укоротить длины регистров элементарных rng
rng[i] - многоразрядный выход одного из "элементарных" rng. lfsr или ca.

В вашем случае разрядность выхода rng 7, m=10, n=1023

Длины регистров элементарных rng хорошо бы взять взаимно простые.

Цитата(count_enable @ May 31 2014, 08:15) *
...я отстал от жизни,
...в фидо и первых интернетах
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 18:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016