Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

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

 
Опции темы

Быстрый генератор белого шума 8 бит

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

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

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

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

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 10.07.2010, 17:09  
Falconist
Супер-модератор
 
Аватар для Falconist
 
Регистрация: 08.09.2007
Адрес: Kyiv, Ukraine
Сообщений: 8,017
Сказал спасибо: 434
Сказали Спасибо 3,981 раз(а) в 1,714 сообщении(ях)
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.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
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.RUN
 
Регистрация: 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.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
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, время: 12:58.


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