Обычно шум раздражает. Но иногда он может быть ценным инструментом. Удивительно, но существует целая палитра цветов шума [1]. В этой статье показаны хорошие способы получения наиболее распространенных и полезных цветов: белого [2] и розового [3] и опционально коричневого [4]. В его основе лежит микроконтроллер, запрограммированный на формирование исходного белого шума, и значительно улучшенный фильтр, преобразующий его в розовый.
Источники случайного электронного шума встречаются слишком часто. Наиболее управляемым источником белого шума, вероятно, является хорошо известная псевдослучайная двоичная последовательность (pseudo-random binary sequence, PBRS) [5], генерируемая сдвиговым регистром с обратной связью, и это будет нашей отправной точкой. Достаточно стандартная реализация с использованием логических микросхем показана на Рисунке 1.
![]() |
|
Рисунок 1. | Генератор псевдослучайной последовательности (PRSG), построенный на стандартных логических микросхемах, формирует широкополосный белый шум. |
Три 8-разрядных устройства (или сдвоенных 4-разрядных, как в этой схеме) объединяются в 23-разрядный сдвиговый регистр. Выходные данные разрядов 18 и 23 объединяются по схеме «исключающее ИЛИ» и инвертируются (или «исключающее ИЛИ-НЕ») и подаются обратно на вход, создавая последовательность битов, которая кажется случайной, хотя и повторяется каждые 223–1 такта, что при тактовой частоте 240 кГц происходит примерно каждые 35 секунд. Эта «–1» соответствует запрещенному, заблокированному состоянию, состоящему из одних единиц, от которого защищает простая схема сброса. На частотах до десятых долей тактовой частоты спектр практически идентичен спектру чистого и идеального белого шума. Он имеет одинаковую интенсивность в любой заданной полосе частот: его спектр плоский. Для получения других цветов нам нужно просто отфильтровать его соответствующим образом.
Из дешевого микроконтроллера получается хороший генератор PRSG
Пока что все обычно. Но зачем использовать 62 вывода микросхем и как минимум десять дискретных компонентов, если достаточно одного корпуса с 8 выводами (или даже меньше)? Схема для этого слишком скучна, чтобы ее показывать, – представьте себе прямоугольник, на который подается питание (развязанное одним конденсатором) и имеющий вывод GPIO, из которого выходит PRBS, – но в разделе «Загрузки» есть код на языке ассемблера MPASM для реализации этого алгоритма на микроконтроллере Microchip PIC12F1501. (Он должен без проблем открываться в Блокноте). Код логически и функционально идентичен схеме на Рисунке 1 и может быть легко модифицирован для использования в различных микросхемах PIC низкого уровня, а лежащая в основе логика может быть перенесена на любой другой подходящий микроконтроллер. (В свое время National Semiconductor выпустила 15-вольтовую, 8-выводную PMOS микросхему MM5837 – источник белого шума на основе 17 каскадов. Она давно устарела, но могла бы быть хорошей заменой).
Теперь у нас есть псевдослучайный белый шум со спектром примерно от 30 мГц до нескольких МГц, что на несколько октав больше, чем нам нужно. (Есть нули на частотах, кратных частоте передачи битов, которая для данной версии PIC составляет 267 кГц). Он все еще имеет вид импульсного потока, который необходимо ограничить по полосе, прежде чем мы получим действительно полезный белый шум. Для розового шума необходима дополнительная фильтрация, чтобы все октавы (или другие соотношения частот) имели одинаковую интенсивность, – то, что нам и нужно для использования в аудио. Схема, позволяющая сделать все это, показана на Рисунке 2.
![]() |
|
Рисунок 2. | Характеристики псевдослучайного сигнала – белого шума – приводятся в соответствие звуковому диапазону, а затем сигнал фильтруется для получения розового шума. |
В генераторе PRSG можно использовать дискретную логику, показанную на Рисунке 1, но версия с микроконтроллером электрически тише (ха!), компактнее и, если не учитывать затраты на программирование, дешевле. Цепь формирования импульсов преобразует поток прямоугольных импульсов с размахом от шины до шины в трапеции с определенным уровнем (около 1.2 В пик-пик) и со скоростью нарастания, меньшей, чем у последующих операционных усилителей. Фильтр нижних частот на 20 кГц делает то, что написано на схеме. (Эти «20 кГц» – не его частота излома по уровню 3 дБ, а обозначение его функции). Теперь для получения белого шума в пределах звукового спектра и с уровнем чуть выше –10 дБн требуется только фильтрация верхних частот примерно от 20 Гц.
Новая и улучшенная цепь розового шума
Розовый шум немного сложнее и требует более сложного фильтра, чтобы обеспечить необходимый наклон в 3.01 дБ на октаву (10 дБ на декаду). В большинстве опубликованных решений используются четыре секции RC, а также основные R и C, показанные на Рисунке 2 как R10 и C11, а в некоторых – и того меньше. (И многие из них, по-видимому, являются клонами). Шаг номиналов этих RC-элементов пропорционален √10, но некоторые размышления и эксперименты с LTspice показали, что гораздо лучшие результаты достигаются при использовании еще нескольких каскадов и шага, близкого к кубическому корню из 10. На Рисунке 3 показан расчетный отклик семикаскадной цепи на Рисунке 2 без дополнительных фильтров верхних или нижних частот. Даже при номиналах компонентов, выбранных из ряда E12, он представляет собой почти прямую линию, в отличие от откликов клонов.
![]() |
|
Рисунок 3. | Характеристика нового семикаскадного фильтра розового шума, взятого в отдельности. |
Усилительный каскад доводит среднеквадратичный уровень розового шума до –10 дБн, чтобы он соответствовал уровню белого, а переключатель выбора, регулятор уровня, выходной буфер и источник виртуальной земли (A2d и т.д.) завершают конструкцию. На Рисунке 4 показаны рассчитанные характеристики и наихудшие отклонения от идеала.
![]() |
|
Рисунок 4. | Рассчитанные характеристики готовой конструкции, показывающие маску соответствия стандарту IEC 60268-1 и максимальные ошибки фильтров. |
Теперь выходной спектр в пределах ±0.2 дБ соответствует идеальному в диапазоне от 24 Гц до 21 кГц. С немного более мягкими фильтрами верхних и нижних частот это даже можно было бы улучшить, но фильтры были рассчитаны в соответствии с требованиями стандарта IEC 60268-1, который регламентирует характеристики, тестирование и применение аудиосистем.
Некоторые дополнительные замечания по схеме
Схема на Рисунке 2 была разработана (и протестирована) для использования при номинальном напряжении шины 5 В, или ±2.5 В, (для чего же нужны дешевые внешние аккумуляторы или избыточные токи портов USB?), но крайние значения 2.7 В (три отслуживших свой срок элемента AA) и 5.5 В (предел USB) допускают другие варианты питания.
Цепь формирования импульсов гарантирует, что выходной сигнал будет настолько постоянным, насколько постоянны напряжения шин питания, а уровни сигнала –10 дБн предотвращают ограничение даже при низком напряжении питания. При гарантированном питании 5 В A2c до начала ограничения может иметь около 7 дБ дополнительного усиления. Выходной пик-фактор – отношение пикового значения к среднеквадратичному – довольно высок, около 5:1 или 14 дБ.
В качестве A1a используется усилитель MCP6022, а не MCP6004 (или, конечно, MCP6002), поскольку последний может справиться только со сформированными импульсами и заметно искажает их. Необходимое усиление после цепи розового шума довольно велико, поэтому A1b – это также MCP6022; он быстрее и с меньшим входным смещением. Во всех остальных каскадах схемы MCP6004 работает отлично. Компоненты между A2c и выходом не обязательны – это просто хорошая практика.
Ток, потребляемый в ненагруженном состоянии, составлял около 6 мА.
Генерация коричневого (броуновского) шума
Добавить генерацию коричневого (или красного, или броуновского) шума очень просто, как видно из Рисунка 5. Все, что для этого нужно, – RC-цепь, с ростом частоты дающая спад 6.02 дБ на октаву (20 дБ на декаду), за которой следует каскад с большим усилением. (В некоторых источниках для розового шума указываются две каскадно соединенные цепи по 3 дБ на октаву – но ведь это дороже и менее точно?) Приведенные значения номиналов обеспечивают выходной сигнал –10 дБн (примерно 2.6 В пик-пик), что соответствует откликам источников других шумов. Очевидно, что если вы хотите это добавить, показанную на Рисунке 2 коммутацию режимов необходимо изменить. Для отдельного использования перед ним следует установить ФВЧ на частоту не менее 20 Гц, иначе ваши низкочастотные динамики могут попытаться имитировать небольшое землетрясение.
![]() |
|
Рисунок 5. | Эта простая схема преобразует белый шум в броуновский. |
Реализация псевдослучайных последовательностей другой длины
Генератор PRSG на основе PIC (или другого микроконтроллера) может иметь и другие применения, требующие другой длины последовательности. Изменить код несложно, пока требуются только два отвода от (виртуального) сдвигового регистра; для большего количества отводов потребуется больше кода «исключающее ИЛИ-НЕ». По ссылке [6] можно загрузить подробную таблицу, показывающую необходимые отводы, а также содержащую много полезной справочной информации.
Для более длинных последовательностей просто нужны дополнительные регистры, каждый из которых добавляет один процессорный цикл; реализация логики «исключающее ИЛИ-НЕ» занимает больше времени (12 циклов), чем сдвиги. Цепочка из восьми регистров с обратной связью от битов 62 и 63 даст последовательность, которая повторяется только примерно через 1.2 миллиона лет, если тактовая частота равна 16 МГц (частота инструкций 4 МГц). Использование 10 регистров с отводами от битов 70 и 79, увеличивает это время примерно до 77 миллиардов лет. Достаточно долго? Если нет, то приведенная выше ссылка [6] даст много решений с двумя отводами для количества бит до 167. Тогда вам, возможно, стоит вложить деньги в ультрадолговечные батареи или в очень, очень надежный ИБП.
Ссылки
- Цвета шума
- Белый шум
- Фликкер-шум
- Красный шум
- Псевдослучайная двоичная последовательность
- Efficient Shift Registers, LFSR Counters, and Long Pseudo-Random Sequence Generators