Hallo zusammen, um einen ADC mit Rauschen zu emulieren möchte ich eine MLS (Maximum Sequence Length) generieren. Kennt jemand eine Seite auf der für unterschiedliche m-werte entsprechende optimale Startwerte des Shieberegisters & Abgriffe am Schieberegister für das Xor-Glied (zur Rückkopplung) für diesen Zweck gelistet sind? Mir würde es auch schon reichen, wenn ich diese Parameter für nur einen m-wert mit m >= 20 hätte. Viele Grüße! FPGA
ich habe eine interessante Arbeit gefunden: http://www.academia.edu/7677217/Design_and_Analysis_of_a_32_Bit_Linear_Feedback_Shift_Register_Using_VHDL Dort gibt es auch eine Tabelle für unterschiedliche Bit-Längen mit den Taps Damit komme ich schonmal weiter. Ev. hat jemand noch eine Zusammenfassung mit Taps & zugehöriger FFT?
http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf Sind aber nur Beispiele, für jedes N gibt es viele andere LFSR-Configs.
Sigi schrieb: > http://www.xilinx.com/support/documentation/applic... > > Sind aber nur Beispiele, für jedes N gibt es viele andere LFSR-Configs. Ah perfekt! genau sowas hatte ich gesucht. Danke
Ich erinnere mich, im Tietze&Schenk gelesen zu haben, dass die Berechnung sehr kompliziert ist. Habe aber auch noch nie ein Berechnungsverfahren gefunden.
Tietze&Schenk ist ja nicht gerade die Anlaufstelle für solche Berechnungen. Nur so ganz grob: Die LFRS-Konfiguration lässt sich als Bitvektor darstellen, der wiederum einem Polynom im algebraischen Sinne entspricht. Für die MaxLänge muss das Polynom gewisse Eigenschaften erfüllen ("Primitivität"). Für ein gegebenes N gibt es jetzt 2^N mögl. Polynome, für eine BruteForce-Suche also viel zu viel. Also macht man Einschränkungen wie z.B. nur wenige XORs, z.B. 2 und hofft auf die Existenz eines Polynoms. Es gibt dann N*(N-1) solcher Polynome (für 3 XORs: N*(N-1)*(N-2) etc.). Die lassen sich relativ schnell überprüfen.
Im englischen Wiki-Artikel zu den LFSRs ist ein PDF mit allen möglichen Längen verlinkt: http://www.eej.ulst.ac.uk/~ian/modules/EEE515/files/old_files/lfsr/lfsr_table.pdf
Primitive Polynome für MLS-LFSR lassen sich auf direkte Weise errechnen. Dazu muß man die Polynome nur faktorisieren und auf die gewünschten Eigenschaften hin analysieren. Mein einfacher PASCAL Code produziert alle LFSRs bis 2^32 innerhalb von Sekunden. Eine Brute Force Suche ist also nicht nötig. Einen optimalen Startwert für MLS gibt es nicht. Jeder beliebige gültige Startwert ist genausogut wie jeder andere. Der "Startwert" stellt ja nur einen "Offset" in die generierte Bitsequenz des LFSRs dar. Gültige Startwerte sind alle Werte deren Bitlänge/Degree zum Polynom passt und die nicht entweder 0 oder -1 sind je nach dewähltem LFSRs Typus. zB. bei einem 0 Vektor in Galois-LFSRs würde ja das LFSR eine 0-Bit Sequenz ausgeben. Ansonsten gibt es keine weiteren zu beachtenden Vorschriften. Das sich ergebenden Spektrum mit all diesen Startwerten ist immer identisch das garantiert schon die Mathematik hinter den LFSRs. Man versucht unter Umständen sogenannte Low-Densitiy-LFSRs zu benutzen, das sind LFSRs mit wenigen Taps um die Komplexität der XOR Register in zB. FPGAs zu reduzieren. Dies stellt aber für heutige FPGAs keine wirkliche Hürde mehr dar. Gruß Hagen
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.