Ich möchte mit einem solchen Register ein möglichst gutes weisses
Rauschen erzeugen. Bei der Durchsicht der einschlägigen Dokumente (WP,
XI, ED) sowie etlicher universitärer Schriften findet sich immer das
Postulat, dass mit eben jenen LFSR ein weisses Rauschen zu erzeugen sei,
allerdings fehlt überall der Beleg oder formelle Beweis. Ich hätte mir
einen Screenshot eines Spektrum Analyzers gewünscht, denn es kann kaum
sein, dass alle Registerformen und Rückkoppelungen genau Dasselbe
liefern. Leider ist auch bei offiziellen Publikationen von Instituten
kaum etwas Genaues zu finden. Die Bandbreite der vorgestellten
Schaltungsvarianten reicht vom 5BIT- über ein 32er mit gold code für AES
bis hin zu einem 168er für Sateliten-Rauschsignal-Codierung.
Ich nehme an, dass längere Shift-Register mit mehr Rückkopplungen ein
besseres Resultat liefern, kann das aber auch nicht mathematisch
belegen, daher habe ich begonnen, mit einigen zu experimentieren, finde
aber alles andere, als ein glattes weisses Rauschen. Es gibt fast immer
starke einzelne peeks im Spektrum, je nachdem, wie man das Bit
auswertet. Da scheint es auch unterschiedliche Ansätze zu geben: Ich
habe es bisher einfach selbst als Ausgang genommen, benutze also das
digitale Signal in Vollaussteuerung und bekomme von einem SR ein Signal
mit der maximalen Bandbreite i.A. der eingespeisten HF-Taktfrequenz. Nun
gibt es aber auch Implementierungen, welche mehrere solcher LFSR
parallel benutzen, um gleich mehrere Bits in time zu erzeugen, welche
dann zusammengefügt, ein z.B. 8 Bit Rauschen ergeben.
Welches wäre der ideale Weg, um ein möglichst breitbandiges Rauschen zu
erzeugen, welches ich dann anschließend filtern kann?
Die Bandbreite sollte mindestens 10MHz haben und optimalerweise bis nach
0 herunterreichen. Als Taktgenerator steht ein 10MHz-Frequenznormal zur
Verfügung. Da ein FPGA eingesetzt werden darf, wäre auch eine PLL
machbar, mit der ein 300MHz-System laufen könnte. Mehrere LFSR sind
ebenfalls kein Problem. Wir haben Platz ohne Ende, brauchen nur eine
brauchbare Lösung. Als Filter wären sowohl digitale Filter, als auch
Quarzfilter in Analogtechnik oder eben beides zulässig.
Vergiss LFSR.
Nimm ein Verfahren, dass die Maechtigkeit* des reellen Zahlenraums
nutzt.
Das Suchwort zum Testen: "diehard".
*) das ist eine zahlentheoritische Definition
Markus W. schrieb:> Ich nehme an, dass längere Shift-Register mit mehr Rückkopplungen ein> besseres Resultat liefern, kann das aber auch nicht mathematisch> belegen, daher habe ich begonnen, mit einigen zu experimentieren, finde> aber alles andere, als ein glattes weisses Rauschen. Es gibt fast immer> starke einzelne peeks im Spektrum, je nachdem, wie man das Bit> auswertet. Da scheint es auch unterschiedliche Ansätze zu geben: Ich> habe es bisher einfach selbst als Ausgang genommen,
Dafür sollte die Wiederholrate (1/Zykluszeit) weit unter der von dir
gewünschten, unteren Grenzfrequenz liegen, bedingt also ein langes LFSR.
Was die Lage der Abgriffe angeht, gibt es tatsächlich "schlechte"
Kombinationen, die nicht den gesamten Wertebereich ausschöpfen.
Ausgewählte "gute", auch bei sehr langen Registern, findet man in dieser
AN:
http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
Wenn du das dann mit 300MHz laufen lassen kannst, dann reicht es
tatsächlich, ein beliebiges Bit abzugreifen und durch einen 10MHz
Tiefpass zu schicken.
Moin,
ein LFSR liefert ein Kammspektrum, Abstand der Spektrallinien ist
1/Periodendauer. Mit einer sehr langen Sequenz bekommt man die
Spektrallinien nah zusammen.
Außerdem fällt das Spektrum zur Abtastrate hin ab. Wenn man die
Abtastrate deutlich höher wählt, als für die gewünscht Bandbreite
erforderlich, bekommt man ein recht flaches Spektrum - aber das wurde
weiter oben schon angesprochen.
Sebastian
Den Kammfilter habe ich auch noch in Erinnerung und soweit mein
Verständnis dafür reicht, würde ich annehmen, dass man mehrere solcher
Generatoren analog mischen (addieren!) können sollte. Sofern abweichende
Generatorfrequenzen benutzt werden (300, 290, ...) , müssten sich die
resultierenden Frequenzen in den Bändern verdichten.
Markus W. schrieb:> Ich möchte mit einem solchen Register ein möglichst gutes weisses> Rauschen erzeugen. Bei der Durchsicht der einschlägigen Dokumente (WP,> XI, ED) sowie etlicher universitärer Schriften findet sich immer das> Postulat, dass mit eben jenen LFSR ein weisses Rauschen zu erzeugen sei,> allerdings fehlt überall der Beleg oder formelle Beweis.
Dan haste weder im Studium aufgepasst (oder eh das Falsche an der
falschen Hochschule studiert) oder in die falschen Bücher geschaut.
Meine Empfehlung:
ISBN 978-3-322-99220-8
... schrieb:> Nimm ein Verfahren, dass die Maechtigkeit* des reellen Zahlenraums> nutzt.
Die Frage wäre, welches. (?
Die DIEHARD Test-Batterie hatte ich auch gefunden. Die wurde sogar hier
im Forum schon behandelt, nur seltsamerweise ins OT verschoben.
Beitrag "Feststellen wie zufällig Zufallszahlen sind"Ingo W. schrieb:> Wenn du das dann mit 300MHz laufen lassen kannst, dann reicht es> tatsächlich, ein beliebiges Bit abzugreifen und durch einen 10MHz> Tiefpass zu schicken.
Kann ich. Die Lösung klingt ja schon einmal nicht schlecht.
Sebastian B. schrieb:> ein LFSR liefert ein Kammspektrum,
Ich nehme an, die Abtastrate in der Grafik liegt bei 3G?
IQ130+ schrieb:> Dan haste weder im Studium aufgepasst (oder eh das Falsche an der> falschen Hochschule studiert)
Man kann nicht alles studieren, was einem später als Anforderung über
den Weg läuft. Aber du kannst wahrscheinlich alles perfekt.
Dieter H. schrieb im Beitrag #6678114:
> weißes Rauschen ist über eine konstante spektrale Leistungsdichte> definiert. Nach einem wichtigen Theorem
Das ist jetzt wieder sehr theoretisch. Habe es trotzdem nachgelesen und
denke ich auch, verstanden. Nur: Das Wissen um die Verteilung des
weissen Rauschens (die Definition war mir durchaus geläufig) führt mich
noch nicht zum idealen LFSR.
Ich bin aber nun immerhin so weit gediehen, dass ich eine Publikation
gefunden habe, die aussagt, dass LFSR durchaus den DIEHARD Test von
Marsaglia überstehen können, wobei es auf die Rückführungen ankommt.
(wer hätte das gedacht). Einfache LFSR erfüllen die Kriterien nicht.
Leider schweigt sich auch dieses Dokument über ein geeignetes Beispiel
aus.
Das von oben gelinkte Dokument der Firma Xilinx, welche eine
Zusammenstellung von Codes bis 168 aufführt (und sich dabei auf Arbeiten
einer Person aus den 1970er Jahren bezieht) hatte ich bereis eingangs
mit erwähnt. Die meisten Anordnungen dort arbeiten mit 2-4, maximal 6
Rückführungen. Über die Qualität wird aber keine Aussage getroffen und
vom Autor ist auch nichts zu finden.
Ist das ein weißer Fleck?
Ist es das eventuell deshalb, weil es damals noch keine Hardware gab,
mit der man so rasch und billig Schieben konnte? Die meisten
PRG-Verfahren, die genannt werden, sind vergleichsweise aufwändige
Software-Operationen und damit sehr langsam, so intelligent sie auch
sein mögen.
Moin,
Markus W. schrieb:> Ist es das eventuell deshalb, weil es damals noch keine Hardware gab,> mit der man so rasch und billig Schieben konnte?
Sicher nicht. Da wurde wahrscheinlich deutlich mehr berechnet und
weniger ausprobiert (Der LDPC Code, der z.b. in DVB-S2 statt Viterbi
verwendet wird, ist auch iirc irgendwann in den 1960er Jahren entwickelt
worden. Gab aber lange keine DSPs, die das mit dem noetigen Speed bei
wenig Leistung/Kosten rechnen konnten, daher wurde der erst bei DVB-S2
eingesetzt und nicht bei DVB-S).
Grad' zu den klassischen LFSR muesst's schon ordentlich viel Literatur
geben. Kann mich noch dran erinnern, dass da mal was dazu in einer
Regelungstechnikvorlesung an mir vorbeigezogen ist. iirc gab' da auch
irgendeine Transformation dazu...
Und soo zufaellig sind diese Folgen eben nicht, da kann man (also ich
grad' natuerlich nicht) ziemlich genau ausrechnen, wie die
zusammengesetzt sind - also wieviel gleiche bits hintereinander kommen,
etc. bla.
Was aber nicht bedeuten muss, dass da das Rauschen "schlecht" waere.
Gruss
WK
Dergute W. schrieb:> Gab aber lange keine DSPs, die das mit dem noetigen Speed bei> wenig Leistung/Kosten rechnen konnten,
Exakt das meinte ich.
Dergute W. schrieb:> Grad' zu den klassischen LFSR muesst's schon ordentlich viel Literatur> geben.
Dachte ich auch, aber auch da scheitert es an der Rechenleistung, denke
ich. Das rein mathematisch zu untersuchen, mit z.B. MATLAB, ist sicher
schwierig, wegen der Datenmengen. Die langen LFSR laufen ja selbst in
Echtzeit ewig.
Wenn ich mehr Zeit hätte, würde ich mich mal dran machen. Eigentlich
braucht er nur eine Schleife, die die Länge und Struktur der LFSRs
umkonfiguriert, eine FFT laufen lässt und die Ergebnisse raustut, bzw
bewertet.
Ich orientiere mich fürs erste mal an der Xilinx-Tabelle. Wegen der
Bandbreite wäre die Idee, einfach unterschiedlich lange Ketten parallel
laufen zu lassen und so gleich mehrere Bits in einem Takt zu bekommen.
Wäre noch die Frage offen, womit man am Besten filtert?
Moin,
Markus W. schrieb:> Dachte ich auch, aber auch da scheitert es an der Rechenleistung, denke> ich. Das rein mathematisch zu untersuchen, mit z.B. MATLAB, ist sicher> schwierig, wegen der Datenmengen.
Aeh - das waere nicht rein mathematisch. Rein mathematisch geht z.B. mit
Karoblock und Bleistift oder Tafel und Kreide. Aber jeweils nur als
Auslagerungsdatei fuer den menschlichen Hauptprozessor :-)
Hab' grad mal geguckt: Ich hab' da ein Vorlesungsscript Regelungstechnik
und Systemtheorie II, 4. Auflage 1994 (n. Chr. ;-) ) , Kapitel 4:
Operatorenrechnung fuer zeitdiskrete Systeme. Da gehts um Galoiskoerper
und V-Transformation.
Und da wird als "anschauliche Anwendung" der Operatorenrechnung auf
Schieberegister und "davon als wichtigster Spezialfall die
maximalperiodischen Schieberegister" eingegangen.
Das hatte ich im Hinterkopf.
Da wird die Autokorrelation aber nur mal kurz gestreift; auf
irgendwelche weiteren Rauscheigenschaften wird nicht eingegangen.
Sowas von dem Kaliber, nur vielleicht didaktisch besser aufbereitet,
meinte ich.
Gruss
WK
Markus W. schrieb:> Wäre noch die Frage offen, womit man am Besten filtert?
üblicherweise wird es mit einem CIC dezimiert. Dessen unvollständige
Oberwellendämpfung wäre zu beachten. Man kann das Signal auch
runtersampeln /runtergesampelt addieren und so die Spiegelfrequenzen
nutzen: Dann wird das nach oben abflachende Spektrum um Nyquist herum
nach unten geklappt und der Gesamtverlauf noch etwas flacher. Des
weiteren gibt es die Option, sich das Spektum zurechtzubiegen, also mit
blauem Rauschen (anderer NG + HP) aufzufüttern.
Markus W. schrieb:> Das von oben gelinkte Dokument der Firma Xilinx, welche eine> Zusammenstellung von Codes bis 168 aufführt (und sich dabei auf Arbeiten> einer Person aus den 1970er Jahren bezieht) hatte ich bereis eingangs> mit erwähnt. Die meisten Anordnungen dort arbeiten mit 2-4, maximal 6> Rückführungen. Über die Qualität wird aber keine Aussage getroffen und> vom Autor ist auch nichts zu finden.
die Xilinx-Tabelle gibt an, welche Rückführungen gebraucht werden, um
eine MLS=Maximum Length Sequence zu erhalten.
Wenn man beispielsweise ein 10 Bit Schieberegister sich anschaut, dann
ist die maximale Anzahl möglicher Zustände 2^10. Die MLS ist genau 1023
Bits lang. Entsprechend lang wäre die MLS bei 168 Bits.
Die Stellen, wo Anzapfungen sein müssen, damit man eine MLS erhält,
lassen sich berechnen bzw. man kann prüfen, ob ein bestimmtes Set an
Anzapfungen eine MLS erzeugt oder nicht. Und zwar lassen sich die
Anzapfungen als Polynom beschreiben, beispielsweise entspricht eine
Anzapfung bei den Bits 0, 4 und 5 dem Polynom x^5 + x^4 + 1. Dieses
Polynom erzeugt genau dann eine MLS, wenn es primitiv ist. Das bedeutet
nach meiner Erinnerung, dass es sich nicht als Produkt zweier Polynome
geringeren Grads schreiben lässt. Zum Beispiel
(x+1)*(x^2+x+1)=x^3+2x^2+2x+1
da wir im binären System arbeiten, müssen die Koeffizienten noch mod 2
gerechnet werden, also bekommt man x^3+1. Und offenbar ist dieses
Polynom nicht primitiv, da man es als Produkt zweier Polynome mit Grad 1
bzw. 2 schreiben kann. Wenn man also ein LFSR bauen würde mit Anzapfung
bei Bit 0 und Bit 3, dann ergäbe sich irgend eine Sequenz, aber sicher
keine MLS.
Soweit ich mich noch erinnere, gab es auch irgend ein Verfahren, aus dem
Polynom die Sequenz zu berechnen. Da war irgend eine "d-Transformation"
die das ermöglicht. Bei Interesse kann ich versuchen, meine
diesbezüglichen Notizen wiederzufinden. War in einem Kurs über
Kryptographie.
vielleicht hilft dieses Beispiel
von Helmut für das allgemeine Verständnis weiter ?!
Rückkopplungen und Taktfrequenzen können einfach graphisch erzeugt
werden ....
Beitrag "Schieberegister für LTSpice"
Michel M. schrieb:> vielleicht hilft dieses Beispiel
Bedingt. Es enthält zumindest einen interessanten link:
https://www.digikey.at/en/articles/use-readily-available-components-generate-binary-sequences-white-noise
Dort wird u.a. erwähnt, wie man das entstehende Spektrum begradigt und
in ein echtes (flaches) weißes Rausches überführt, indem die "digitale
Abstastfrequenz herausgefiltert" wird. So ganz verstanden habe ich die
Schaltung aber nicht. Die Ankopplung der Signalausgänge ist mir nicht
plausibel.
Das sieht so aus, als würden viele Bits aus einem
LFSR zusammenkombiniert um weißes Rauschen zu erzeugen.
Das funktioniert nicht wirklich, weil die Bits in einem
LFSR untereinander stark korreliert sind.
Das Bit n+1 ist meist das Bit n vom Takt davor, wenn
man nicht gerade an einer feedback-Stelle ist.
"Möglichst zufällige" Bits aus mehreren verschiedenen
LFSRs auf einen DAC zu geben hat hier übrigens schon
mal ganz gut funktioniert um ein moduliertes Signal
im Rauschen ersaufen zu lassen. Der Spektrumanalyzer
hatte nix dran auszusetzen.
Aufwärtszahler als LFSR sind einfach und wegen der
simplen Rückkopplung auch schnell.
Gibt es eigentlich einen Algorithmus, wie man von
einem Vorwärtszähler zu den richtigen Taps für
rückwärts kommt, für vorwärts/rückwärts?
Gruß, Gerhard
Moin,
Gerhard H. schrieb:> Das sieht so aus, als würden viele Bits aus einem> LFSR zusammenkombiniert um weißes Rauschen zu erzeugen.> Das funktioniert nicht wirklich, weil die Bits in einem> LFSR untereinander stark korreliert sind.
Hier wurde das Ding und was das Filter macht, schonmal durchgekaut:
Beitrag ""analoge" FIR Filterung"Gerhard H. schrieb:> Gibt es eigentlich einen Algorithmus, wie man von> einem Vorwärtszähler zu den richtigen Taps für> rückwärts kommt, für vorwärts/rückwärts?
Ich kenne keinen, halte es aber schon fuer moeglich, dass es sowas gibt.
Gruss
WK
Dergute W. schrieb:> Hier wurde das Ding und was das Filter macht, schonmal durchgekaut:
Interessant! Die Frage ist jetzt: geht es oder geht es nicht? Laut des
anderen threads ist die Filterung unzureichend gelöst. Im o.g. Artikel
(und auch im gelinkten Thema) wird erwähnt, dass dies auch mit einem
digitalen FIR zu machen wäre. Macht das Sinn? Der Aufwnad sollte sich in
Grenzen halten, wenn möglich.
Gerhard H. schrieb:> "Möglichst zufällige" Bits aus mehreren verschiedenen> LFSRs
Das war auch mein Ansatz. Ich möchte mehrere Schieberegister benutzen,
um unkorrellierte Bits zu bekommen, die ich zeitgleich nutzen kann. So
soll vor allem die Bandbreite erhöht werden: Angenommen ich filtere
einen LFSR-Ausgang (wie auch immer) und erhalte eine erhöhte Auflösung
von sagen wir 10 Bits, dann sollte man das
niederwertigeste/höchstwertigste(?) davon nehmen können, um einen
Ausgang zu treiben. Mal angenommen, die Taktfrequenz beträgt 250MHz,
dann braucht es 4 Einheiten, um 1Gs zu erzeugen und auszugeben (SERDES).
Gerhard H. schrieb:> Aufwärtszahler als LFSR sind einfach und wegen der> simplen Rückkopplung auch schnell.
Wie sieht das konkret aus?
Markus W. schrieb:> und erhalte eine erhöhte Auflösung> von sagen wir 10 Bits, dann sollte man das> niederwertigeste/höchstwertigste(?) davon nehmen können,
Nach meinem Gefühl müsste es das niederwertigste sein, weil dies die
höchste Frequenz hat.
> angenommen, die Taktfrequenz beträgt 250MHz,> dann braucht es 4 Einheiten, um 1Gs zu erzeugen
Die 4 resultierenden Bits sollen dann interlaced werden, oder was?
Des wäre ein Art runtermischung um Faktor 16 und Addition 4er solcher
Ströme.
Asic-Bauer schrieb:> Die 4 resultierenden Bits sollen dann interlaced werden, oder was?
So ist es. Ich brauche 1 GS. Eventuell nehme ich auch 5 mit 200 MHz.
> Das wäre eine Art Runtermischung um Faktor 16 und Addition 4er solcher> Ströme.
Warum wäre es das?
Und wäre das ein Problem?
ich denke schon, weil das Rauschen mit einem Viertel der Geschwindigkeit
"abgespielt" wird. Das ergibt keine 1 GHz sondern 4x 250 MHz addierend
gemischt.
Das ist nicht das gleiche wie ein vollständiger Generator auf 1Ghz
(und auch der hat kein glattes Spektrum bis 1Ghz).
Der HP 3582A FFT-Analyzer hatte sowas drin:
PN-Generator (rückgekoppeltes Schieberegister), an den
Register-Ausgängen hing das "sin(x)/x"-Filter in Form von bewerteten
Widerständen.
Ich fand die Lösung damals einfach genial.
Markus W. schrieb:>> Die 4 resultierenden Bits sollen dann interlaced werden, oder was?> So ist es. Ich brauche 1 GS. Eventuell nehme ich auch 5 mit 200 MHz.>>> Das wäre eine Art Runtermischung um Faktor 16 und Addition 4er solcher>> Ströme.> Warum wäre es das?> Und wäre das ein Problem?
Durch das wechselnde Verwenden der Bits wird aber mit der
Wechselfrequenz multipliziert und das führt zu einer multiplikativen
Mischung der Frequenzen und damit zur Faltung des Oberwellenspektrums.
Da das Wechseln effektiv Rechtecke sind und die Daten ebenso, kann man
das Spektrum nach Maßgabe der Fourierfrequenzen sogar direkt berechnen
und hinschreiben. Die Grundwelle dieses Spektrums hat meiner Meinung
durchaus 1 GHz. Aaaaber:
Damit werden die Rauschsignale "gemultiplexed" und diese Frequenz hat
man dominant im Signal drin - es sei denn, sie würde durch die
entstehende Mischung gut genug maskiert oder ist so hochfrequent, dass
sie irrelevant ist. Das wäre sie wenn man das Spektrum nur bis deutlich
unterhalb der 1GHz nutzt, was man ohnehin tun muss, weil das
LFSR-Rauschen nicht einmal bis 200MHz nutzbar ist. Ich benutze solche
Schieberegisterdinger bis ans Ende das analogen Audiospektrums.
Um mehre Bits -> derselben Funktion <- parallel zu bekommen, muss man 2
oder mehr Funktionen parallel arbeiten lassen und mathematisch einmal
einen- und einmal 2 Schritte ausformulieren. Bei den Schieberegistern
geht das sehr einfach, wenn man das nächste- und das übernächste
Ergebnis, also das 2-fache Weitertakten inklusive XORs berechnet. Dann
hätte man zwei Bits je Takt, einmal die geraden und einmal die
ungeraden. So eine Technik des parallelen Rechnens wenden wir beim
Parallelprozessieren öfters an. Im FPGA ist der Trick allerdings dadurch
begrenzt, dass die Rechnung schnell so kompliziert wird, dass sie nicht
mehr in einem Takt zu machen ist. Die Lösung hier wäre somit eher, alles
voraus zu rechnen und in einem RAM hinterlegen, was wiederum beim
Rauschen nicht mehr so super schlau ist, weil man dann gleich alles
hinterlegen könnte :-)
Ich würde deshalb eher raten, gleich genug Generatoren parallel zu
nehmen und die Bits direkt zu füttern. Das kommt einer bewerteten
Addition gleich. Wenn man das niedrigst frequenteste Rausch-bit auf das
LSB legt, bekommt man so eine Art blue noise. Das integriert, gibt
ungefähr weißes Rauschen bis zur Taktfrequenz.
Für die Erhöhung der Bandbreite und das Umschalten müsste das Rauschen
untersucht werden, inwieweit die unkorrellierten Bits aus mehreren
Linien solcher Generatoren wirklich noch unkorrelliert sind.
jo schrieb:> Der HP 3582A FFT-Analyzer hatte sowas drin:>> PN-Generator (rückgekoppeltes Schieberegister), an den> Register-Ausgängen hing das "sin(x)/x"-Filter in Form von bewerteten> Widerständen.>> Ich fand die Lösung damals einfach genial.
Super Tip :-)
https://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1978-09.pdf
Das Museum ist immer ein Besuch Wert :-)
Markus W. schrieb:> Ich nehme an, dass längere Shift-Register mit mehr Rückkopplungen ein> besseres Resultat liefern, kann das aber auch nicht mathematisch> belegen
Die Anzahl der Rückkopplungen sagt überhaupt nichts. Entscheidend ist,
dass sie an den richtigen Stellen abgreifen. Du brauchst ein Polynom,
das dein Schieberegister alle 2^n - 1 Zustände annehmen lässt.
Polynome, die dass mit wenig Rückkopplungen erreichen, laufen unter
"dünn besetzte Generatorpolynome".
https://de.wikipedia.org/wiki/Linear_r%C3%BCckgekoppeltes_Schieberegister#Polynomauswahl