www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik suche Lookup Tabelle (asm) weises rauschen


Autor: Commtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

ich möchte eine Lookup tabelle schreiben für weises Rauschen.
8 Bit breite(256 werte) für ATMega16.

Kennt sich jemand da aus?
Reichen dafür 256 werte?

c.u
commtel

Autor: egberto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber sehr weise ist das Rauschen bei 256 Werten nicht ;-)

SCNR

egberto

Autor: Jorge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest eine MLS nehmen, bei 256 Bytes sind es damit wenigstens 2048 
Werte.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmiere einen Pseudozufallsgenerator.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Travel Rec. wrote:
> Programmiere einen Pseudozufallsgenerator.
Geht ganz einfach und heißt LFSR (Linear-Feedback-Shift-Register)

Oder sowas:
http://en.wikipedia.org/wiki/Linear_congruential_generator

Autor: commtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für die antworten

hört sich alles interesant an

hat jemand schon nen Pseudozufallsgenerator auf einen atmega 
geschrieben?

c.u
commtel

Autor: egberto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Programmiersprache solls denn sein?

egberto

Autor: egberto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach so ja... im Threadtitel steht es ja........ist halt noch früh

z.B. hier - das sollte auf einen Mega portierbar sein

Beitrag "Random"

Viele Grüße,

egberto

Autor: commtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten morgen egberto

ich hab mir den link durchgelesen und das mit dem pseudo generator
ist denk ich alles machbar.

Doch was kommt dem weissen rauschen oder pinken rauschen eher nahe?

c.u
commtel

Autor: egberto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin da nicht so der Theoretiker....
aber deine Menge an (Pseudo)Zufallswerten(die du mit dem 
Zufallsgenerator erzeugen kannst) entspricht dem rosa Rauschen (unter 
den gegebenen Rahmenbedingungen (Wertebereich, Quantisierung).

Was willst du denn damit machen??

Viele Grüße,

egberto

Autor: commtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo egberto

muste erstmal andere stoßdämpfer in mein auto einbauen.
Tüv meinte die alten seien undicht.

Zurück zum thema
Bauen will ich ein DDS Generator mit dem AD9835(siehe ELV).
Nur bei all den DDS s die es da gibt fehlt ein zusätzlicher interner 
Generator für die AM Modulation.
Meine idee war diese mit einem ATmega48 (klein,preiswert,20MHZ)zur 
erzeuegen.
Sinus,Dreieck,Sägezahn vorwärts & rückwärts läuft soweit.Rechteck mit 
einstellbaren puls/pausen verhältnis kommt noch.
Vll nen Timer vom ATMega48 nehmen oder so.

Wozu das rauschen?
Ganz einfach ich möchte in nächster zeit mich mit PSK modulation 
beschätigen
und dabei die auswirkungen des rauschens auf den empfänger testen.

Ich hätte noch ca 40% im AT48 frei für das rauschen als lookup.
Theoretiker bin ich auch nicht aber ich denk mal der pseudo generator 
wird zufälliger sein als eine 8bit lookup tabelle mit 256 werten

Autor: Hagen Re (hagen)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Im Attachment 2 LFSRs für WinAVG GCC. Der eine ist ein 32Bit LFSR mit 
einstellbarem Polynom. Der andere ist ein SG-LFSR mit einstellbaren 
Polynomen  und hat eine garantiert maximale Periode von 2^63-2 wenn man 
als Polynome diejenigen des Includes benutzt (Liste aus 1000 nicht 
reduzierbaren Polynomen). Mit 2^63-2 Bits Periode hast du dein 
technisches weißes Rauschen.

Im Grunde basieren beide Implementierungen auf einander. Zu Fuß könnte 
man den LSFR im Ordner SG-LFSR auch aus dem im Ordner LFSR bauen. Sie 
basieren beide auf 32Bit.

Lookup Tabelle ist also unnötig und sie wäre im Vergleich riesig.

Gruß hagen

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder man nimmt einfach die rand() aus der stdlib.h

http://www.nongnu.org/avr-libc/user-manual/group__...

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist ein LCG und der hat wesentlich schlechtere statistische 
EIgenschaften, gerade wenn es um weißes Rauschen geht.

Wenn du einen LCG nimmst und dessen Bit Output in eine Monochrome Bitmap 
umwandelst und dann die Zeilen pixelweise zueinander verschiebst wirst 
du irgendwann ein schönes wiederkehrendes Muster erkennnen. Das wirst du 
mit LFSRs nicht finden.

Gruß Hagen

Autor: Commtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank Hagen für die source.
Die LFSRs werde ich am WE auf den ATmega umsetzen.

@Hagen was hast du mit LFSRs schon gemacht?

@all sobald ich fertig bin werde ich meine source auch zur verfügung 
hier stellen.Wird aber noch ein weilchen dauern

c.u
Commtel

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Output in eine Monochrome Bitmap umwandelst und dann die Zeilen
> pixelweise zueinander verschiebst wirst du irgendwann ein schönes
> wiederkehrendes Muster erkennnen. Das wirst du mit LFSRs nicht finden.
Diese Behauptung finde ich gewagt.
Wenn du z.B. schlechte/ungeeignete Taps beim LFSR hast, nutzt du nur 
einen kleinen Teil der möglichen Kombinationen aus. Und ein zu kurzes 
LFSR wird dir genausolche Muster wie ein zu schmaler LCG bescheren.

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich beziehe mich auf LCG nd LFSRs mit gleicher und maximaler Periode. 
Dh. bei den LFSRs sind es immer MLS = Maximum Length Sequence und somit 
math. schon korrekt gewählt. Das bei einem LCG und/oder LFSR mit sehr 
kurzer Periode dieses Verhalten bei beiden auftritt ist klar es tritt 
aber bei LCGs auch bei längen Perioden auf. Deshalb gelten ja LCGs als 
statistisch betrachtet nicht als die bessere Wahl.

Gruß hagen

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@Hagen was hast du mit LFSRs schon gemacht?

Einiges, sie laufen dir ja auch überall über den Weg. Im 
kryptographischen Sinne habe ich mit ihnen am meisten beschäftigt sowohl 
in der Theorie und Praxis. Zb. eben die BasicCards, programmierbare 
Chipkarten benutzten solche LFSRs. Damals ging es darum zu beweisen das 
deren Benutzung zum Schutz der BasicCard vor "illegaler" Benutzung nicht 
ausreichend ist. Kurz: ich habe den Updateschutz der BasicCards v3.x 
geknackt und konnte so die eingebauten Sperren gegen 
seblstmodifizierenden Code aushebeln, eg. jeden beliebigen Maschiencode 
über die BasicCard Software einspielen.
Parallel dazu habe ich das DEC = Delphi Encryption Compendium 
geschrieben, bei dem es auch in kleinen Teilen um LFSRs ging. 
Hauptsächlich "spare LFSRs" mit sehr großen Perioden von 2^128-1 bis 
2^2038-1 Bits.
Naja, und ansonsten trifft man ja auch in vielen anderen Breichen auf 
GF(x) Arithmetik zb. eben CRCs oder Elliptische Kurven Kryptographie in 
GF(m^n) auf MCUs. Ist letzendlich immer die gleiche Mathematik dahinter.
Im Hobby habe ich diese LFSRs auf allen AVR Projekten benutzt die einen 
RNG brauchten, siehe hier in der CodeLib meine Nokia6100 GCLD oder das 
Glühwürmchen Projekt.

Du wählst einfach eines der 32Bit Polynome aus LFSR.inc und schon ist 
die maximale Periode mathematisch garantiert. Falls du noch mehr solcher 
Polynome brauchst so könnte ich den Code auf meiner HD raussuchen und 
weitere berechnen. Ürbigens der Einwand von Lothar ist berechtigt unter 
der Annahme das man eben keine nicht reduzierbaren Polynome für LFSRs 
benutzt, aber das ist eben bei meinen Aussagen nicht der Fall. Alle 
Polynome in LFSR.inc sind nicht reduzierbare Polynome und erzeugen als 
LFSRs MLS. Die effiziente Berechnung solcher Polynome ist ja das worum 
es letzendlich ging bei meiner Arbeit. Und wenn ich LFSRs meine dann 
immer die mit maximaler Länge.

Gruß Hagen

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lothar:

ürbigens diese Muster der LCGs sind nicht 1 zu 1 sich wiederholende 
Muster, logisch dann wäre es kein LCG mit maximaler Periode. Aber es 
sind definitiv leicht erkennbare und zyklische Muster die man so bei 
LFSRs mit maximaler Periode garantiert nicht finden wird. Konkret ging 
es um 32Bit LFSRs und LCGs bei meinen Untersuchungen. Die Bitmap größe 
schwankte von 512x512 bis 1024x1024 Pixel, also nur ein kleiner 
Ausschnitt des Bit Stromes dieser RNGs.

Gruß Hagen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.