Digitales Rauschen in der Software entfernen

7

Ich habe ein Design, das eine Rechteckwelle mit TTL-Pegel von einem Funkempfänger erwartet, der in einen Mikrocontroller eingespeist wird. Es gibt ein gewisses TTL-Pegelrauschen, da auf der Sendeseite keine Codierung erfolgt. Ich habe mich gefragt, ob jemand Hinweise darauf hat, wie Sie das Rauschen in der Software verringern können. (Ich verstehe, dass es eine Reihe von Hardwarelösungen gibt, aber ich bin mehr am Lernen interessiert.) Ich suche niemanden, der mein Problem für mich löst, nur um Ratschläge.

Namen / Artikel / Themen wären toll!

Jeremy
quelle
1
Wenn Sie "TTL-Pegelrauschen" sagen, meinen Sie damit, dass das Signal weit außerhalb der verbotenen TTL-Zone bleibt und nur unerwartet umschaltet? Wenn ja, handelt es sich um isolierte Spikes oder um Switch Bounce? Oder bewegt sich das Signal, das Zeit verbringt, zwischen 0,8 und 2,4? Die Lösung hängt von der Art des Rauschens ab.
JustJeff
Ich spreche von isolierten Spitzen von 0-5 V und zurück, die zufällig, aber möglicherweise ziemlich häufig auftreten (bis zu 25% des Signals)
Jeremy
Sie erwarten also eine reine Rechteckwelle, aber es gibt auch Störungen im Signal, deren Dauer viel kürzer ist als die erwartete Periode der Rechteckwelle?
Endolith
das ist richtig
Jeremy

Antworten:

8

Aus Ihrem letzten Kommentar würde ich vorschlagen, die Eingabe zu überabtasten. Nehmen Sie mehrere aufeinanderfolgende Samples auf, und Ihre Ausgabe sollte unabhängig von der Mehrheit der aufgenommenen Samples sein.

Angenommen, Sie zeichnen 10 Samples auf. Wenn Sie eine Rauschspitze erhalten, werden nur ein oder zwei der Samples beschädigt, während die meisten von ihnen den richtigen Wert haben. Wenn Sie tatsächliche Daten erhalten, sind die Einsen möglicherweise höher als die Nullen, und die Ausgabe ändert sich.

ajs410
quelle
6

Es gibt viele Möglichkeiten, mit Rauschen in Software zu arbeiten, und die Implementierung in Software anstelle von Hardware wird immer effektiver, wodurch die Systemkosten gesenkt werden.

Anstatt zu versuchen, es selbst zu erklären, werde ich Sie an Jack Ganssle weitergeben , einen Berater für eingebettete Systeme, den ich durch das Lesen der Artikel von gewachsen bin.

Er hat eine Auflistung seiner Artikel online. Der erste, den ich möchte, ist analoges Rauschen in eingebetteten Systemen . Der zweite Artikel, auf den ich Sie verlinken muss, befasst sich mit der Verwendung von Software zur Reduzierung von Rauschen in Ihrem System .

Ich würde auch seinen Artikel über die Glättung digitaler Eingänge und selbstkalibrierender Systeme vorschlagen . Nachdem ich einige Zeit mit eingebetteten Systemen gearbeitet hatte, habe ich einige dieser Informationen aus meinen eigenen Fehlern herausgesucht, aber ich habe es wirklich genossen, seine Denkweisen zu lesen. Das selbstkalibrierende System war für mich sehr offensichtlich, aber die Art und Weise, wie er es vorschlug, war für mich wertvoll. Sie brauchen die Informationen vielleicht nicht, aber seine Artikel haben mir geholfen.

Kortuk
quelle
5

Ich habe festgestellt, dass die digitale Signalverarbeitung und der Mikrocontroller von Grover und Deller das einzige Buch über Filter sind, das ich verstehen kann. Leider ist es schwer billig zu finden.

http://www.google.com/books?id=GzVmQgAACAAJ

pingswept
quelle
1
Ich werde sehen, ob ich eine Schreibtischkopie bekommen kann, die Bewertungen scheinen gut zu sein!
Kortuk
Nicht sehr relevant für die ursprüngliche Frage IMHO. OTOH möchten Sie vielleicht dspguide.com versuchen . Es ist als kostenloser PDF-Download erhältlich, aber ich bin stolz darauf, eine Kopie zu besitzen. Es ist wirklich großartig, um DSP zu lernen.
JPC
4

Fragt Ihre Software diese Eingabe ab oder verwenden Sie ein Interrupt-Schema, um sie zu verarbeiten?

Wenn Sie abfragen, lesen Sie den Eingang vermutlich mit einer viel höheren Rate als die erwarteten Signaländerungen. Wenn das Rauschen gut getrennt ist, sehr hochfrequente Spitzen, würden diese wie isolierte Abtastwerte mit der "falschen" Polarität aussehen. Sie können dies abschwächen, indem Sie die neuesten N Abtastwerte beibehalten und den Eingang so lesen, wie die Polarität in der Mehrzahl ist. Dh wenn N = 5 ist, dann ist Ihre Eingabe eine '1', wenn Sie 3, 4 oder 5 '1' Bits haben; Wenn Sie 0, 1 oder 2 '1' Bits haben, ist Ihre Eingabe eine '0'. Dies ist wirklich nur eine Art Tiefpassfilter in der Software.

Wenn Sie den Eingang verwenden, um Interrupts bei Änderung (beide Flanken) auszulösen, kann die Interruptroutine (ISR) einen Timer starten, um kurze Zeit später einen zweiten Interrupt zu verursachen, der jedoch länger als die Rauschspitzenzeit ist. Anstatt dass der Eingangspin ISR Signalbits direkt akkumuliert, muss der Timer ISR dies tun. Wenn beispielsweise das Signal niedrig ist und eine hohe Spitze auftritt, startet die ansteigende Flanke den Timer, aber bevor die Timeranzahl abläuft, setzt die fallende Flanke der Spitze sie zurück. Wenn also der Timer-Interrupt endgültig ausgelöst wird, sind Sie es Ich schaue auf das Signal, nicht auf das Rauschen. Das Signal hingegen startet den Timer nur einmal und der Timer ISR kann den neuen Signalpegel erfassen.

Von diesen beiden, Polled vs Interrupt, würde ich persönlich den Polled-Ansatz wählen, b / c (1) Interrupts sind nur komplizierter, und (2) ein pathologisch platziertes Paar von Spikes könnte Ihnen immer noch falsche Eingaben geben.

JustJeff
quelle
0

Vielleicht ist das "Rauschen" ein Problem, das durch die fehlende Codierung verursacht wird. Einfache Sender und Empfänger benötigen NRZ - Manchester-Code wird häufig verwendet.

Leon Heller
quelle
Ich bin sicher, dass diese Sender keine Codierungsmechanismen verwenden und ich den Sender nicht modifizieren kann, daher mein Problem.
Jeremy
Sie müssen dann eine Codierung hinzufügen, wenn NRZ erforderlich ist.
Leon Heller
2
Leider kann ich am Sendeende nichts hinzufügen oder ändern, so dass es keine Möglichkeit gibt, eine Codierung hinzuzufügen
Jeremy
Sie codieren die Daten, bevor sie in den Sender eingegeben werden.
Leon Heller
Er gab an, dass er nicht ändern könne, wie die Übertragung durchgeführt wurde. Ich denke, dass Penjuin die an ihn gesendeten Daten nicht ändern kann.
Kortuk