Генерация случайных часов с неравным распределением 1 и 0?

Нам нужны псевдослучайные часы с длиной N, такие, что из каждых Nтактовых импульсов Mдолжны быть случайным образом равны нулю ( M<<N). Что мы хотим сделать, так это сэмплировать сигнал случайным образом. Это означает, что из каждой Nточки выборки (из сетки Найквиста) нам нужно взять Mвыборки. N-MЗатем посредством некоторой обработки и предположений о структуре сигнала восстанавливаются другие точки без дискретизации ( выборки). Теперь я использую регистры линейного сдвига, как показано ниже:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Это работает хорошо, однако я не хочу равного распределения для 1 и 0, я имею в виду, что хочу, чтобы что-то вроде 20% тактовых циклов было 1, а 80% - нулем. Для этого я сделал ANDвывод двух схем, как показано выше, чтобы изменить вероятность с 50% для единиц и нулей до 25% для единиц и 75% для нулей (на рисунке ниже, с разными начальными значениями).

схематический

смоделируйте эту схему

Это хорошо ценой удвоения мощности и площади чипа :( . Я ищу способ заставить систему работать только с 1 схемой случайного тактового генератора, а не с двумя.

  • Возможно ли за счет имплантации некоторого специального начального распределения вероятности изменения начальных значений 1 и 0 в выходной последовательности?
  • Есть ли какой-либо эффективный метод для достижения этой цели?

Я думал сохранить случайную двоичную последовательность (длиной N) в ПЗУ, а затем Andвывести ее с часами, чтобы сделать случайные часы.

Зависит от того, насколько случайным он должен быть. Если хранение последовательности в ПЗУ не является проблемой, вы также можете использовать LFSR для создания псевдослучайной последовательности. Немного больше информации о приложении не помешало бы.
Я второй lfsr. найдите «неприводимый многочлен» и выберите, какой из них дает нужные вам варианты
Тактовая частота до 1 МГц
объясните, что «M из них должны быть случайным образом сделаны нулевыми», случайным краем, какой минимальный максимальный временной диапазон и согласованный с 1 МГц? Случайная фаза?
Не проще ли просто взять все образцы на полной тактовой частоте, а затем случайным образом отбросить некоторые из них?
@Dave Tweed, хорошая идея, но мы уже сделали это, чтобы продемонстрировать, что система работает в целом, но как реальная система, эта система должна быть эффективной, поэтому необходимо получить минимальное количество образцов.
Я нашел ответ, как упомянули @Tom Carpenter и @b degnan, используя LFSR, поэтому я изменил вопрос, чтобы он был более конкретным.
Я не могу понять, почему это должно быть эффективным. Похоже, вы проводите эксперимент, и ваша скорость очень низкая. Вы уверены, что не делаете здесь преждевременную микрооптимизацию?
@pipe , потому что он будет частью маломощного АЦП, и если он потребляет огромную мощность, АЦП больше не будет называться маломощным.

Ответы (1)

Думайте о содержимом N-битного LFSR как о N-битном целом числе. Это число будет иметь равномерное распределение значений от 1 до 2 N - 1. Вы можете сгенерировать переменную плотность битов маски, сравнив это число с порогом, который вы также варьируете от 1 до 2 N - 1. Выход этого компаратора Маска часов, которую вы ищете.

Этот метод является гибким в изменении распределения, поэтому, когда мне нужно 17% от 1, я устанавливаю пороговое значение 0,17 * (2 ^ N-1). Я проверю, чтобы выяснить, является ли он эффективным по площади и энергопотреблению.
Ответ отличный и обеспечивает гибкое распределение, однако для него по-прежнему требуется компаратор. Я исследую, чтобы выяснить, использую ли я только несколько бит N-битного случайного генератора и сравниваю его с пороговым значением, могу ли я добиться хорошей производительности.
Да, конечно. Любое подмножество M битов из N-битного LFSR будет содержать равномерное распределение значений от 0 до 2^M - 1. Поэтому, если вам нужна только одна часть с разрешением 2^M в ваших пороговых настройках, вы можете просто использовать M -битный компаратор.