2016-02-11 4 views
2

Я использовал LFSR, реализованный в соответствии с примитивным полиномом, но, как вы знаете, LFSR создает ряд возможных значений в повторяющемся порядке, что означает, что он не является действительно случайным!Альтернативные алгоритмы генерации случайных значений в VHDL?

Одно из решений, позволяющее использовать LFSR и гарантировать, что оно производит действительно случайное значение, - это использовать какой-то динамический способ считывания значений, выводимых из LFSR, но я не могу понять, как это сделать на аппаратном уровне (VHDL)!

Поэтому я следую альтернативному способу действительно производить случайное неожиданное повторяющееся значение определенной длины, т. Е. 10-бит

Любые предложения? Я планирую реализовать их в VHDL!

+1

Существует ли здесь [конкретное программирование] (http://stackoverflow.com/help/on-topic)? – user1155120

+0

Вместо того, чтобы изобретать случайный генератор каким-то «динамическим способом чтения значений», который может иметь неизвестные артефакты, делая его плохим случайным генератором, вы можете рассмотреть использование [LFSR] (https://en.wikipedia.org/ wiki/Linear_feedback_shift_register), которая больше, чем требуется для случайной последовательности, а затем использовать дополнительные биты для инициализации, например на основе метки времени, MAC-адреса и/или других внешних данных. Тем самым одна и та же последовательность никогда не используется повторно, и вы можете придерживаться хорошо известной технологии, которую легко реализовать. –

+0

@ user1155120 Да Потому что я хочу реализовать решение в VHDL, иначе я бы не поставил «VHDL» в качестве тега! – Aboudi

ответ

3

Создание ИСТИННЫХ случайных чисел на самом деле является областью исследований на своем собственном. В основном вам нужно будет собрать информацию о некоторых, казалось бы, случайных природных явлениях через какой-то датчик. Аппаратное и программное обеспечение на данный момент детерминировано, поэтому при одинаковом входе всегда будет иметься тот же выход. Сбор информации о внешнем датчике может «рандомизировать» ваш вход.

Вот некоторые чтения: https://en.wikipedia.org/wiki/Pseudorandom_number_generator

Кроме того, здесь есть практический пример использования внешнего входного датчика в рецензируемых журнальной статье под названием Random Number Generated from White Noise of Webcam с коротким самородком информации от реферата:

Генераторы случайных чисел играют очень важную роль в современной криптографии, особенно в области личной информационной безопасности. Например, генерировать случайное число из белого шума веб-камеры - это новый подход для персонального устройства. По нашим алгоритмам, 91% генерирующих последовательностей IPcam проходят по меньшей мере четыре статистических теста, 87% проходят все пять из них. По сравнению с веб-камерой и видео соответственно, напротив, возможность для обеих генерирующих последовательностей пройти все пять статистических тестов составляет примерно 80%. В результате подразумевается улучшение алгоритма на персональных устройствах, таких как ноутбук, например, для генерации квалифицированного случайного числа для защиты частной информации.

+0

Это, кажется, имеет большой смысл, однако как насчет того, будет ли мой дизайн собирать любую информацию с внешних датчиков? – Aboudi

+0

возьмите эту информацию в виде числа и отправьте ее через генератор случайных чисел. – bwright

Смежные вопросы