Forum: FPGA, VHDL & Co. RNG - exponentiell verteilte impulselängen


von Maik (Gast)


Lesenswert?

Hallo,
hatte gestern schon mal im DSP Forum gepostet, aber mittlerweile 
gemerkt, dass die Frage hier besser aufgehoben ist. Ich such einen Weg 
zufällige Impulslängen zu erzeugen. Die Länge der Impulsfolgen bezogen 
auf eine Clock sollte exponetiell verteilt sein, d.h lange Folgen von 
Pulsen kommen seltener vor wie kurze.  Hat jemand ne Idee wie man so 
etwas realisieren könnte ? Das ganze sollte FPGA tauglich zu 
implementieren sein. Vielen Dank & Gruss, Maik

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Da es keine halben Impulse gibt, geht es also um Integerarithmetik. Über 
wieviele Dekaden soll sich diese exponentielle Verteilung denn 
erstrecken? Ich würde von einer (linearen) Gleichverteilung ausgehen und 
dann irgendwie eine Exponentialfunktion auf die Werte anwenden, damit 
sie exponentiell gleichverteilt werden. Ich nehme an, Pseudozufall aus 
einem rückgekoppelten Schieberegister ist gleichmäßig genug?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Mich verwirrt allerdings die Aussage, zuerst gehts um Impulslängen ( die 
könnten beliebig gestuft sein) und dann die Länge einer Impulsfolge, das 
hieße die Anzahl der Impulse, die in einem Paket enthalten ist - darauf 
bezieht sich meine erste Antwort. Was denn nun?

von Morin (Gast)


Lesenswert?

Viel zu kompliziert gedacht, Christoph ;)

Zunächst stimmt es schon, was Chrstoph gesagt hat: Die Frage ist nicht 
ganz klar gestellt. Ich gehe deshalb hier davon aus, dass eine zufällige 
Impulslänge gemeint ist. Soll heißen: Lange Impulse kommen seltener 
vor als kurze, und die Impulslängen sind Exponentiell abnehmend 
verteilt.

Dazu brauchst du:
- Einen Zufallsgenerator (z.B. LFSR), ausreichende Breite sowohl für die 
Kettenlänge der Zufallswerte als auch für die Genauigkeit des Exponenten 
-> einfach "lang genug"
- Einen Vergleicher, der besagt, ob der aktuelle Zufallswert größer als 
eine vorgegebene Konstante ist
- eine trivial-einfache State Machine: Zwei Zustände. Zustand 0 ist 
Ruhe, Zustand 1 ist aktiver Impuls (d.h. dieser Zustandswert ist auch 
gleich das Ausgangssignal).

Zunächst löst ein bestimmtes Ereignis einen Impuls aus (aus unserer 
Sicht ein Eingangssignal). Der Zustand wechselt zu 1. Danach wird in 
jedem Takt eine neue Zufallszahl erwürfelt und durch den Vergleicher 
geschickt. Ist die Zahl zu groß, wechselt der Zustand zu 0. Das wars.

Der Trick: Bei N möglichen Zufallszahlen und Vergleicherkonstante K 
besteht in jedem Takt eine Wahrscheinlichkeit von K/N, dass der Puls 
weitergeht. Die Wahrscheinlichkeit, dass der Puls mindestens i Takte 
lang geht, ist also (K/N)^i -> exponentielle Abnahme. Etwas Rechnerei 
sollte dann auch die gewünschten K, N für die gewollte Exponentialkurve 
liefern.

von Philip (Gast)


Lesenswert?

Alternativ über zentralen Grenzwertsatz:
eine Summe von n unabhängigen, identisch verteilten Zufallsvariablen im 
Grenzwert [math]n\rightarrow\infty[math] folgt der Normalverteilung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.