Zufallstakterzeugung mit ungleicher 1er- und 0er-Verteilung?

Wir brauchen eine pseudozufällige Uhr mit einer Länge N, so dass aus allen NTaktimpulsen Mzufällig Null gemacht werden sollte ( M<<N). Wir wollen ein Signal zufällig abtasten. Das bedeutet, dass wir von allen NAbtastpunkten (aus dem Nyquist-Gitter) MProben nehmen müssen. Dann werden durch einige Verarbeitung und Annahmen über die Signalstruktur andere nicht abgetastete ( N-MSamples) Punkte wiedergewonnen. Jetzt verwende ich lineare Schieberegister, etwa wie folgt:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Es funktioniert gut, aber ich möchte keine Gleichverteilung für 1s und 0s, ich meine, ich möchte, dass etwa 20% der Taktzyklen 1 und 80% null sind. Um dies zu erreichen, habe ich ANDzwei Schaltkreise wie oben ausgegeben, um die Wahrscheinlichkeit von 50 % für Einsen und Nullen auf 25 % für Einsen und 75 % für Nullen zu ändern (in der Abbildung unten mit unterschiedlichen Startwerten).

schematisch

Simulieren Sie diese Schaltung

Es ist gut auf Kosten der Verdoppelung der Leistung und der Chipfläche: (. Ich suche nach einer Möglichkeit, das System mit nur einer Zufallstaktgeneratorschaltung zum Laufen zu bringen, nicht mit zwei.

  • Ist es möglich, eine spezielle Anfangs-Seed-Change-Wahrscheinlichkeitsverteilung von 1s und 0s in die Ausgabesequenz zu implantieren?
  • Gibt es eine energieeffiziente Methode, um dies zu erreichen?

Ich dachte daran, eine zufällige Binärsequenz (mit einer Länge von N) in einem ROM zu speichern und dann Andmit der Uhr auszugeben, um eine zufällige Uhr zu erstellen.

Hängt davon ab, wie zufällig es sein muss. Wenn das Speichern einer Sequenz in einem ROM kein Problem darstellt, können Sie auch ein LFSR verwenden, um eine Pseudozufallssequenz zu erstellen. Etwas mehr Infos zur Bewerbung wären hilfreich.
Ich stimme dem lfsr zu. Suchen Sie nach "irreduzibles Polynom" und wählen Sie aus, welches die gewünschten Variationen liefert
Die Taktfrequenz beträgt bis zu 1 MHz
erklären "M von ihnen sollte zufällig Null gemacht werden" zufällige Flanke, was min. max. Zeitbereich und kohärent mit 1MHz? Zufällige Phase?
Wäre es nicht einfacher, einfach alle Samples mit voller Taktrate zu nehmen und dann zufällig einige davon zu verwerfen?
@Dave Tweed, gute Idee, aber wir haben das bereits getan, um zu demonstrieren, dass das System im Allgemeinen funktioniert, aber als reales System sollte dieses System effizient sein, daher muss eine minimale Anzahl von Proben erworben werden.
Ich habe die Antwort gefunden, wie @Tom Carpenter und @b degnan mit LFSR erwähnt haben, also ändere ich die Frage, um genauer zu sein.
Ich kann nicht wirklich verstehen, warum das effizient sein muss. Es hört sich an, als würden Sie ein Experiment durchführen, und Ihre Geschwindigkeit ist sehr niedrig. Sind Sie sicher, dass Sie hier keine voreiligen Mikrooptimierungen vornehmen?
@pipe , weil es Teil eines Low-Power-ADC sein wird und wenn es viel Strom verbraucht, wird der ADC nicht mehr als Low-Power bezeichnet.

Antworten (1)

Stellen Sie sich den Inhalt des N-Bit-LFSR als eine N-Bit-Ganzzahl vor. Diese Zahl hat eine gleichmäßige Werteverteilung von 1 bis 2 N - 1. Sie können eine variable Dichte von Maskenbits erzeugen, indem Sie diese Zahl mit einem Schwellenwert vergleichen, den Sie ebenfalls von 1 bis 2 N - 1 variieren. Der Ausgang dieses Komparators ist die Uhrenmaske, die Sie suchen.

Diese Methode ist flexibel bei der Änderung der Verteilung. Wenn ich also etwa 17 % von 1s haben möchte, setze ich den Schwellenwert auf 0,17 * (2 ^ N-1). Ich werde prüfen, ob es auch flächen- und energieeffizient ist.
Die Antwort ist großartig und bietet eine flexible Verteilung, erfordert jedoch immer noch einen Komparator. Ich recherchiere, um herauszufinden, ob ich nur ein paar Bits eines N-Bit-Zufallsgenerators verwende und ihn mit einem Schwellenwert vergleiche, um eine gute Leistung zu erzielen.
Ja, natürlich. Jede Teilmenge von M-Bits aus dem N-Bit-LFSR enthält eine gleichmäßige Verteilung von Werten von 0 bis 2^M - 1. Wenn Sie also nur einen Teil in 2^M-Auflösung in Ihren Schwellenwerteinstellungen benötigen, können Sie einfach ein M verwenden -Bit-Komparator.