Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 11.07.2016, 11:00   #1
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,847
Вес репутации: 3528/76
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию pic32 генератор случайных чисел

Здравствуйте.
меня интересует дешевая реализация генератора случайных чисел на базе pic32, у которого нет аппаратного RNG.
кто как реализует?
как мне лучше сделать?
в целом я могу истратить ножку или 2 на rng, однако конечно хотелось бы обойтись внутренними ресурсами МК.

смотрел статьи в интернетах - прохладная.
besogon вне форума   Ответить с цитированием
Старый 11.07.2016, 11:14   #2
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,140
Вес репутации: 4450/124
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: pic32 генератор случайных чисел

Цитата:
Сообщение от besogon Посмотреть сообщение
Здравствуйте.
меня интересует дешевая реализация генератора случайных чисел на базе pic32, у которого нет аппаратного RNG.
кто как реализует?
как мне лучше сделать?
в целом я могу истратить ножку или 2 на rng, однако конечно хотелось бы обойтись внутренними ресурсами МК.

смотрел статьи в интернетах - прохладная.
в стеке микрочиповцы заводят АЦП от встроенного rc генератора и замеряют системным таймером.
Проводят несколько итераций, чего-то там считают...

файл Helpers.c

насколько это близко к истинно случайному - не берусь сказать.
__________________

Vanizma вне форума   Ответить с цитированием
Старый 11.07.2016, 11:53   #3
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,847
Вес репутации: 3528/76
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: pic32 генератор случайных чисел

как мало помыслив я вижу.
random_init(void);
random_get();
random_ctl();
ctl в свободное время наполняет пул неплохо сгенерированных с помощью аппаратного АЦП случайных числел. (просто по последнему биту набирает).
random_get() излекает очередное неплохо сгенерированное, если числа есть в пуле, или если пул исчерпан, а числа снова нужны - псевдослучайное опираясь на последнем нормальном.
besogon вне форума   Ответить с цитированием
Старый 11.07.2016, 12:06   #4
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,140
Вес репутации: 4450/124
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: pic32 генератор случайных чисел

Цитата:
Сообщение от besogon Посмотреть сообщение
как мало помыслив я вижу.
random_init(void);
random_get();
random_ctl();
ctl в свободное время наполняет пул неплохо сгенерированных с помощью аппаратного АЦП случайных числел. (просто по последнему биту набирает).
random_get() излекает очередное неплохо сгенерированное, если числа есть в пуле, или если пул исчерпан, а числа снова нужны - псевдослучайное опираясь на последнем нормальном.
ты хочешь измерять АЦП какой-то сигнал? Шумы еще получить нужно...
По мне все таки у микрочип лучше реализовано
__________________

Vanizma вне форума   Ответить с цитированием
Старый 11.07.2016, 15:00   #5
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,847
Вес репутации: 3528/76
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: pic32 генератор случайных чисел

Vanizma
Шумы еще получить нужно... - да. у меня пробелы в знаниях. не могу с ходу понять, как мне лучше получить шум не выходя за пределы кристалла pic32, не затрачивая особой энергии и.т.д.

я ознакомился с примерами microchip. странно все это выглядит. аппаратная долго генерирует и они позиционируют как только источник seed для псевдослучайных.
besogon вне форума   Ответить с цитированием
Старый 13.07.2016, 13:15   #6
xepp
Senior Member
 
Аватар для xepp
 
Регистрация: 24.04.2007
Адрес: Kazan
Возраст: 40
Сообщений: 564
Вес репутации: 924/56
xepp is a splendid one to beholdxepp is a splendid one to beholdxepp is a splendid one to beholdxepp is a splendid one to beholdxepp is a splendid one to beholdxepp is a splendid one to beholdxepp is a splendid one to beholdxepp is a splendid one to behold
Отправить сообщение для xepp с помощью ICQ
По умолчанию Re: pic32 генератор случайных чисел

Если интересует генератор псевдослучайных чисел, то вот так реализована rand() в С++. Это будет равномерно распределённая целочисленная величина. Из неё несложно получить вещественную, а затем и нормально распределённую. Главных недостатков два. Это псевдослучайность, конечный период последовательности, а также одинаковый её вид при каждом включении МК.
Первое в генераторе а-ля rand() побороть совсем нельзя, но можно улучшить. Чтобы побороть второе используют генерацию seed. Сам seed каждый раз не получают, потому что кто же его в точности знает, какое у него вообще распределение и являются ли последовательно сгенерированные seed независимыми. И ещё потому что долго.
Вам из этого всего что конкретно нужно?
xepp вне форума   Ответить с цитированием
Старый 13.07.2016, 13:59   #7
alxdr
Senior Member
 
Регистрация: 03.01.2009
Сообщений: 128
Вес репутации: 394/40
alxdr is just really nicealxdr is just really nicealxdr is just really nicealxdr is just really nice
По умолчанию Re: pic32 генератор случайных чисел

Я делаю генераторы случайных чисел на сдвиговых регистрах. Реализуются просто, работают быстро и можно сделать неповторяющуюся последовательность какой угодно длины.
alxdr вне форума   Ответить с цитированием
Старый 13.07.2016, 14:23   #8
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,428
Вес репутации: 4737/110
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: pic32 генератор случайных чисел

1. выборка шума с нужной характеристикой в памяти.
2 псевдослучайный генератор (белого шума) для индексации из выборки пункта 1.
ampersant вне форума   Ответить с цитированием
Старый 13.07.2016, 14:31   #9
alxdr
Senior Member
 
Регистрация: 03.01.2009
Сообщений: 128
Вес репутации: 394/40
alxdr is just really nicealxdr is just really nicealxdr is just really nicealxdr is just really nice
По умолчанию Re: pic32 генератор случайных чисел

Или так:
1. Запустить обычный счетчик, инкрементируемый с каждым шагом на 1.
2. Подвергнуть результат шифрованию каким-нибудь известным шифром.

Результатом будет последовательность с хорошими статистическими характеристиками, так как надежная система шифрования устраняет какие-либо закономерности в исходных данных.
alxdr вне форума   Ответить с цитированием
Старый 18.05.2018, 13:42   #10
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,847
Вес репутации: 3528/76
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: pic32 генератор случайных чисел

концепт простенького генератора на температурном диоде при старте, - потом псевдослучайный.
Код:
/**
 * get random seed
 * warning! blocking function
 * make random seed from ad conversion
 */
void random_init(void)
{
	pic32mx_ctmu->con = _CTMUCON_ON_M | (0b11 << _CTMUCON_IRNG_P);
	pic32mx_adc0->con1 = _ADCON1_ON_M | (0x07 << _ADCON1_SSRC_P) | _ADCON1_CLRASAM_M;
	pic32mx_adc0->con2 = _ADCON2_CSCNA_M;
	pic32mx_adc0->con3 = _ADCON3_ADRC_M | (0x03 << _ADCON3_SAMC_P) | (0x07 << _ADCON3_ADCS_P);
	pic32mx_adc0->chs = (TEMPERATURE_ACHANNEL << _ADCHS_CH0SA_P);
	pic32mx_adc0->cssl = 1 << TEMPERATURE_ACHANNEL;
	/* use ADC for get chaos value */
	chaos_value = 0;

	for(uf pos = 32; pos; --pos){
		pic32mx_adc0->con1clr = _ADCON1_DONE_M;
		chaos_value <<= 1;
		pic32mx_adc0->con1set = _ADCON1_SAMP_M;
		while(!((pic32mx_adc0->con1) & _ADCON1_DONE_M));
		chaos_value |= (pic32mx_adc0->buff[0].data)&0x01;
	}
	pic32mx_ctmu->conclr = _CTMUCON_ON_M;
	pic32mx_adc0->con1clr = _ADCON1_ON_M;
}

/**
 * get pseudo random value
 * @return pseudo random value 
 */
__attribute__((leaf, noinline)) uint32_t random32(void)
{
	chaos_value = (chaos_value & 0x01) ? (((chaos_value^0x80000057) >> 1) | 0x80000000) : (chaos_value >> 1);
	return chaos_value;
}
besogon вне форума   Ответить с цитированием
Старый 21.05.2018, 15:28   #11
paul
Senior Member
 
Регистрация: 23.08.2007
Адрес: Lipetsk
Возраст: 42
Сообщений: 211
Вес репутации: 425/47
paul is just really nicepaul is just really nicepaul is just really nicepaul is just really nicepaul is just really nice
По умолчанию Re: pic32 генератор случайных чисел

Цитата:
Сообщение от alxdr Посмотреть сообщение
Или так:
1. Запустить обычный счетчик, инкрементируемый с каждым шагом на 1.
2. Подвергнуть результат шифрованию каким-нибудь известным шифром.

Результатом будет последовательность с хорошими статистическими характеристиками, так как надежная система шифрования устраняет какие-либо закономерности в исходных данных.
Давно хочу попробовать аккустический шум - банально мкрофон с нормализацией на ОУ. В тишине, правда работать не будет, а в шумном месте может получиться достаточно не плохо. В крайнем случае в качесве seed использовать.
paul вне форума   Ответить с цитированием
Старый 21.05.2018, 16:00   #12
masterzx
Senior Member
 
Аватар для masterzx
 
Регистрация: 21.09.2007
Адрес: Барнаул
Возраст: 32
Сообщений: 1,489
Вес репутации: 826/63
masterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to beholdmasterzx is a splendid one to behold
Отправить сообщение для masterzx с помощью ICQ
По умолчанию Re: pic32 генератор случайных чисел

Цитата:
Сообщение от paul Посмотреть сообщение
Давно хочу попробовать аккустический шум - банально мкрофон с нормализацией на ОУ. В тишине, правда работать не будет, а в шумном месте может получиться достаточно не плохо. В крайнем случае в качесве seed использовать.
Посмотрите в сторону генераторов белого шума.
http://bip-mip.com/generator-belogo-...uma-sxema.html
__________________
Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.
masterzx вне форума   Ответить с цитированием
Старый 21.05.2018, 17:43   #13
paul
Senior Member
 
Регистрация: 23.08.2007
Адрес: Lipetsk
Возраст: 42
Сообщений: 211
Вес репутации: 425/47
paul is just really nicepaul is just really nicepaul is just really nicepaul is just really nicepaul is just really nice
По умолчанию Re: pic32 генератор случайных чисел

Цитата:
Сообщение от masterzx Посмотреть сообщение
Посмотрите в сторону генераторов белого шума.
http://bip-mip.com/generator-belogo-...uma-sxema.html
При напряжении 3-5 вольт наверное не будет хорошо шуметь, придется городить повышающий преобразователь. А с микрофоном даже не попадались хотя бы какие-нибудь исследования. Или шум плохой, или затраты слишком велики.
paul вне форума   Ответить с цитированием
Старый 21.05.2018, 17:53   #14
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 42
Сообщений: 4,260
Вес репутации: 2351/108
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: pic32 генератор случайных чисел

Там же есть наверное какой то встроенный низкочастотный таймер, типа wdt,ilo и тд?..Так просто в программе инкременируют некую переменную, а по прерыванию от того таймера снимают ее значение как случайное..Из за низкой точности таймера и многократного переполнения переменной значение будет случайным..
maagalex вне форума   Ответить с цитированием
Ответ

Метки
pic32 rng


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC32 Starter Kit & внутрений генератор gontharov Продукция MICROCHIP 16 04.06.2012 15:07
Генератор случайных чисел PANYTA Продукция MICROCHIP 4 07.03.2012 11:18
Генератор случайных чисел для PIC16f84 testament Вопросы начинающих 1 11.01.2010 10:22
Реверсирование генератора случайных чисел IgorV Общетехнические вопросы 6 07.01.2009 11:15
Генератор псевдослучайных чисел Vidocq Вопросы начинающих 6 28.09.2008 22:16


Часовой пояс GMT +3, время: 22:56.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot