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

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

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

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

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

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

Цифровые сигнальные процессоры Вопросы, связанные с применением цифровых сигнальных процессоров: программирование, отладочные средства, алгоритмы...

 
Опции темы
Непрочитано 10.07.2010, 15:50  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Быстрый генератор белого шума 8 бит

Посоветуйте пожалуйста быстрый псевдослучайный генератор белого шума, на выходе которого имеется байт (8 бит) при каждом вызове функции генерации.

Желательно чтобы он не выходил за пределы байтовой/двухбайтовой арифметики, так как требуется большая скорость.

Период повторения последовательности не имеет значения, главное чтобы выходной шум был белый, т.е. нормально-распределенный или как это иногда называют - униформный.
Реклама:
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 10.07.2010, 17:09  
Falconist
Супер-модератор
 
Аватар для Falconist
 
Регистрация: 08.09.2007
Адрес: Kyiv, Ukraine
Сообщений: 7,967
Сказал спасибо: 429
Сказали Спасибо 3,939 раз(а) в 1,690 сообщении(ях)
Falconist на пути к лучшему
По умолчанию Re: Быстрый генератор белого шума 8 бит

Уважаемый alexgap, Хоровиц и Хилл "Искусство схемотехники", 2-й том (по 3-му изд.), самый первый раздел из него. Сам делал по нему псевдослучайную "мигалку" для сценического света. На 255 и на 63 шага (вложение). 256-й или 64-й не используются, т.к. комбинация всех нулей ИЛИ всех единиц (зависит от логики) является "запрещенной" и из последовательности элиминируется схемотехнически, т.к. генератор, попав в это состояние, из него уже сам не выходит.

Как Вы, надеюсь, понимаете, 255 шагов - слишком мало для действительно случайного 8-разрядного кода. Поэтому обычно делают генератор бОльшей разрядности, а код снимают с любого удобного выхода сдвигового регистра, ведь для формирования "белого шума" нужен всего один вывод, сигнал с которого подается на широтный модулятор (обычная RC-цепочка).
Миниатюры:
Нажмите на изображение для увеличения
Название: ГПСП-63.GIF
Просмотров: 519
Размер:	14.2 Кб
ID:	9693  
__________________
Выслушай и противную сторону, даже если она тебе и противна!..
Falconist вне форума  
Сказали "Спасибо" Falconist
alexgap (10.07.2010)
Непрочитано 10.07.2010, 20:19  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Быстрый генератор белого шума 8 бит

Спасибо Falconist, ваша схема заставила вспомнить о регистрах сдвига с линейной обратной связью.

Нашел статью в Википедии, там есть примеры кода для 16 и 32 бит, и есть все распространенные полиномы для разной битности. Используя эту справочную информацию я написал функцию, которая реализует 8-битовый регистр сдвига с линейной обратной связью на основе характеристического полинома x^8 + x^6 + x^5 + x^4 + 1. Вот код на C, может быть кому-нибудь еще пригодится:
Код:
static unsigned char GaloisLfsr(unsigned char lfsr)
{
	return (lfsr ›› 1) ^ (0 - (lfsr & 1u) & 0xb8u);
}
Эта функция используется так:
Код:
unsigned char lfsr = 1;

lfsr = GaloisLfsr(lfsr);
/* Получили в lfsr первое псевдослучайное число */

lfsr = GaloisLfsr(lfsr);
/* Получили в lfsr второе псевдослучайное число */

...

/* и так далее сколько угодно раз */
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Сказали "Спасибо" alexgap
E-Male (22.11.2010)
Непрочитано 10.07.2010, 22:32  
smg123
Гражданин KAZUS.RU
 
Регистрация: 13.07.2005
Сообщений: 602
Сказал спасибо: 14
Сказали Спасибо 40 раз(а) в 19 сообщении(ях)
smg123 на пути к лучшему
По умолчанию Re: Быстрый генератор белого шума 8 бит

Почитайте в этой ветке:
http://vrtp.ru/index.php?showtopic=5667&st=60
Тут материал про М последовательности:
http://vrtp.ru/index.php?showtopic=9500
При тактовой 9,6 МГц для tiny13 на асме мне удалось получить полосу шума 240кГц при 32 разрядном "регистре сдвига" (правда немного отвлекала задача получения пилообразного напряжения с помощью ШИМ).

ps ZX Spectrum у меня был и есть...

Последний раз редактировалось smg123; 10.07.2010 в 22:56.
smg123 вне форума  
Сказали "Спасибо" smg123
alexgap (10.07.2010)
Непрочитано 10.07.2010, 22:57  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Быстрый генератор белого шума 8 бит

Спасибо, уже сделал, работает как надо.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти схему генератора "Розового шума" Dizartius Поиск схем. Делимся схемами 25 24.10.2009 01:13
Генератор розового шума как средство от бессоницы Dizartius Производственное оборудование 3 03.10.2009 13:20


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


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