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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 11.07.2016, 11:00   #1
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 1,937
Вес репутации: 3528/78
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
Возраст: 32
Сообщений: 1,937
Вес репутации: 3528/78
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
Возраст: 32
Сообщений: 1,937
Вес репутации: 3528/78
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
Сообщений: 566
Вес репутации: 1087/58
xepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud of
Отправить сообщение для xepp с помощью ICQ
По умолчанию Re: pic32 генератор случайных чисел

Если интересует генератор псевдослучайных чисел, то вот так реализована rand() в С++. Это будет равномерно распределённая целочисленная величина. Из неё несложно получить вещественную, а затем и нормально распределённую. Главных недостатков два. Это псевдослучайность, конечный период последовательности, а также одинаковый её вид при каждом включении МК.
Первое в генераторе а-ля rand() побороть совсем нельзя, но можно улучшить. Чтобы побороть второе используют генерацию seed. Сам seed каждый раз не получают, потому что кто же его в точности знает, какое у него вообще распределение и являются ли последовательно сгенерированные seed независимыми. И ещё потому что долго.
Вам из этого всего что конкретно нужно?
xepp вне форума   Ответить с цитированием
Старый 13.07.2016, 13:59   #7
alxdr
Senior Member
 
Регистрация: 03.01.2009
Сообщений: 128
Вес репутации: 394/41
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,436
Вес репутации: 4737/111
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/41
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
Возраст: 32
Сообщений: 1,937
Вес репутации: 3528/78
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
Возраст: 43
Сообщений: 218
Вес репутации: 425/48
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
Адрес: Барнаул
Возраст: 33
Сообщений: 1,493
Вес репутации: 826/64
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
Возраст: 43
Сообщений: 218
Вес репутации: 425/48
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,275
Вес репутации: 2351/109
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, время: 09:50.


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