Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Как реализовать на ATmeg8 или ATtiny датчик случайных чисел

Непрочитано 23.04.2008, 10:05  
Don_Ambrosio
Вид на жительство
 
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Don_Ambrosio на пути к лучшему
По умолчанию Как реализовать на ATmeg8 или ATtiny датчик случайных чисел

не прибегая к огромным таблицам.
Хочу реализовать захват магистрали методом случайного доступа
Реклама:
__________________
Дон Амброзио благодарит алфавит за любезно предоставленные буквы
Блин!! Морковь в 2,5 раза подорожала!!!
Don_Ambrosio вне форума  
Непрочитано 23.04.2008, 10:37  
OttoStirliz
Частый гость
 
Регистрация: 29.12.2007
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 2 сообщении(ях)
OttoStirliz на пути к лучшему
По умолчанию

Вы имеете в виду программную генерацию равномерно распределенной последовательности?
__________________
Otto
OttoStirliz вне форума  
Непрочитано 23.04.2008, 11:06  
Don_Ambrosio
Вид на жительство
 
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Don_Ambrosio на пути к лучшему
По умолчанию

Сообщение от OttoStirliz
Вы имеете в виду программную генерацию равномерно распределенной последовательности?
Да. Программную генерацию псевдослучайной равномерно распределённой последовательности
__________________
Дон Амброзио благодарит алфавит за любезно предоставленные буквы
Блин!! Морковь в 2,5 раза подорожала!!!
Don_Ambrosio вне форума  
Непрочитано 23.04.2008, 11:48  
OttoStirliz
Частый гость
 
Регистрация: 29.12.2007
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 2 сообщении(ях)
OttoStirliz на пути к лучшему
По умолчанию

В компиляторе есть стандартный генератор:
int rand(void)- returns a pseudo random number between 0 and RAND_MAX.
Только насчет равномерности они лукавят.
Во времена Спектрумов и БК можно было легко проверить равномерность - 1-е случайное число подаем на X, 2-е на Y, 3-е на COLOR и рисуем на экране точки.
Так вот, эти точки ложатся вблизи диагонали экрана.
Меня не устраивали ни их равномерность, ни использование плавучей арифметики. Нужен был компактный и быстрый код.

Вот моторольный ассемблер: (b=R3 - 2байта вход и выход)

MOV #5,R0 ; цикл до 5
$1: MOV R3,R2 ; c = b
ROL R3 ; b = b ‹‹ 1
ADD R3,R2 ; c = c + b
INC R3 ; b = b + 1
XOR R2,R3 ; b = b ^ c
ASL R3 ; b = b ‹‹ 1
ADD R2,R3 ; b = b + c
ADD #771,R3 ; b = b + 771
SWAB R3 ; поменять местами байты
SOB R0,$1 ; повторить еще 4 раза
; выход (результат в R3)

Вот на Модуле:

PROCEDURE RND(b:INTEGER):INTEGER;
VAR
c,d : INTEGER;
BEGIN
FOR d:=1 TO 5 DO
c := b; b := b * 2; c := c + b;
b := ( INTEGER(BITSET(b + 1) / BITSET(c)) ‹‹ 1 ) + c + 303H;
b := (b ‹‹ + (b ›› ;
END;
RETURN b;
END RND;

Я сейчас попытаюсь портировать с Модулы на C:

int RND(int b) {
int c,d;
for (d=1;d‹=5;d++) {
c = b; b = b ‹‹ 1; c = c + b;
b = ((b + 1) ^ c) ‹‹ 1 ) + c + 0x0303;
b = (b ‹‹ + (b ›› ;
}
return b;
}

1-й вызов - с базовым значением последовательности (можно использовать в кач-ве пароля при кодировании данных этим генератором):
..
r = RND(100);
последующие вызовы - обязательно подставлять предыдущий результат:
r = RND(r);
__________________
Otto
OttoStirliz вне форума  
Непрочитано 23.04.2008, 11:56  
OttoStirliz
Частый гость
 
Регистрация: 29.12.2007
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 2 сообщении(ях)
OttoStirliz на пути к лучшему
По умолчанию

В догонку. При проверке равномерности кода этого генератора весь экран заполняется точками, а не только его диагональ.
Недостаток - нет нормализации. Приходится ее лепить где-то сбоку. Если нужен диапазон значений 0..9, то здесь просто - берем остаток от деления.
Короче, надо думать в каждом конкретном случае.
__________________
Otto
OttoStirliz вне форума  
Непрочитано 23.04.2008, 11:58  
Don_Ambrosio
Вид на жительство
 
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Don_Ambrosio на пути к лучшему
По умолчанию

Сообщение от OttoStirliz
Во времена Спектрумов и БК можно было легко проверить равномерность - 1-е случайное число подаем на X, 2-е на Y, 3-е на COLOR и рисуем на экране точки.
Так вот, эти точки ложатся вблизи диагонали экрана.
Было дело.. Тоже так баловался.. А за развёрнутый ответ спасибо.. Бум изучать Ваш код
__________________
Дон Амброзио благодарит алфавит за любезно предоставленные буквы
Блин!! Морковь в 2,5 раза подорожала!!!
Don_Ambrosio вне форума  
Непрочитано 23.04.2008, 12:01  
Don_Ambrosio
Вид на жительство
 
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Don_Ambrosio на пути к лучшему
По умолчанию

Сообщение от OttoStirliz
Если нужен диапазон значений 0..9, то
Нужен диапозон 1..8 , т.к. на магистрали будут висеть 8 девайсов
__________________
Дон Амброзио благодарит алфавит за любезно предоставленные буквы
Блин!! Морковь в 2,5 раза подорожала!!!
Don_Ambrosio вне форума  
Непрочитано 25.04.2008, 00:25  
smg123
Гражданин KAZUS.RUN
 
Регистрация: 13.07.2005
Сообщений: 602
Сказал спасибо: 14
Сказали Спасибо 40 раз(а) в 19 сообщении(ях)
smg123 на пути к лучшему
По умолчанию

Делал на тиньке15 генератор белого шума на базе регистра с обратными связями. Организуем из 4-х 8 битных регистров 32 разрядный регистр сдвига. Заносим ненулевое значение. Cигналы с 17 и 31 разрядов через XOR подаём во флаг переноса. Крутим по кругу через флаг переноса.
smg123 вне форума  
Непрочитано 25.04.2008, 01:45  
di_halt
Прописка
 
Аватар для di_halt
 
Регистрация: 17.10.2006
Сообщений: 147
Сказал спасибо: 2
Сказали Спасибо 22 раз(а) в 11 сообщении(ях)
di_halt на пути к лучшему
По умолчанию

Сообщение от smg123
Делал на тиньке15 генератор белого шума на базе регистра с обратными связями. Организуем из 4-х 8 битных регистров 32 разрядный регистр сдвига. Заносим ненулевое значение. Cигналы с 17 и 31 разрядов через XOR подаём во флаг переноса. Крутим по кругу через флаг переноса.
Так просто? Реально белый шум был? Или нечто похожее?
__________________
Мой блог по электронике - www.easyelectronics.ru
di_halt вне форума  
Непрочитано 25.04.2008, 04:31  
domowoj
Почётный гражданин KAZUS.RUN
 
Аватар для domowoj
 
Регистрация: 09.12.2007
Адрес: Новосибирск
Сообщений: 1,019
Сказал спасибо: 10
Сказали Спасибо 71 раз(а) в 63 сообщении(ях)
domowoj на пути к лучшему
По умолчанию

Сообщение от smg123
Делал на тиньке15 генератор белого шума на базе регистра с обратными связями. Организуем из 4-х 8 битных регистров 32 разрядный регистр сдвига. Заносим ненулевое значение. Cигналы с 17 и 31 разрядов через XOR подаём во флаг переноса. Крутим по кругу через флаг переноса.
С какой частотой "выталкивал" наружу псевдокод?
domowoj вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Attiny 2313 - Как правильно сжечь порты electric123 Микроконтроллеры, АЦП, память и т.д 42 07.09.2009 08:53
Как реализовать искробезопасную цепь на RS-485 alag57 Автоматика и аппаратура связи 4 07.07.2009 12:47
Ищу схему генератора случайных чисел на PIC maverick5334 Поиск схем. Делимся схемами 6 31.03.2008 11:07
Как реализовать блок-памяти electronic-v Микроконтроллеры, АЦП, память и т.д 0 26.12.2007 12:51
генератор случайных чисел ZyXEL Микроконтроллеры, АЦП, память и т.д 1 26.02.2006 08:49


Часовой пояс GMT +4, время: 01:38.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.