Spørgsmål:
Fjernelse af digital støj i software
jeremy
2010-05-06 16:27:57 UTC
view on stackexchange narkive permalink

Jeg har et design, der forventer en TTL-niveau firkantbølge fra en radiomodtager, der føres ind i en mikrocontroller. Der er noget TTL-niveau støj, da der ikke foretages nogen kodning i sendeenden. Jeg spekulerede på, om nogen havde nogle tip til, hvordan du kunne mindske støj i software? (Jeg forstår, at der er en række hardwareløsninger, men jeg er mere interesseret i at lære) Jeg leder ikke efter nogen, der kan løse mit problem for mig, bare for nogle råd.

Navne / artikler / emner ville vær fantastisk!

Når du siger 'TTL niveau støj', mener du så at signalet holder sig godt væk fra TTL forbudte zone, at det bare skifter uventet? Hvis det er tilfældet, er det isolerede pigge eller som switchbounce? Eller bruger signalet tid på at gå rundt mellem 0,8 og 2,4? Løsningen afhænger af typen af ​​støj.
Jeg taler om isolerede pigge fra 0-5V og tilbage, der forekommer tilfældigt, men potentielt ret ofte (op til 25% af signalet)
Så du forventer en ren firkantbølge, men der er også fejl i signalet, der har meget kortere varighed end den forventede periode med firkantbølgen?
det er korrekt
Fem svar:
ajs410
2010-05-07 20:49:32 UTC
view on stackexchange narkive permalink

Fra din seneste kommentar vil jeg foreslå at overprøve input. Optag flere på hinanden følgende prøver, og derefter skal din output være uanset størstedelen af ​​de registrerede prøver.

Sig for eksempel, at du optager 10 prøver. Hvis du får en støjspids, vil kun en eller to af prøverne blive beskadiget, mens størstedelen af ​​dem er den korrekte værdi. Hvis du får faktiske data, vil 1'erne til sidst være større end 0'erne, og output vil ændre sig.

Kortuk
2010-05-06 16:55:10 UTC
view on stackexchange narkive permalink

Der er mange måder at arbejde med støj i software på, og de bliver mere og mere effektive til at implementere i software i stedet for hardware, hvilket reducerer systemomkostningerne.

I stedet for at forsøge at forklare det selv, jeg vil give dig videre til Jack Ganssle, en integreret systemkonsulent, som jeg er vokset fra at læse artiklerne om.

Han har en liste over sine artikler online, den første jeg gerne vil have dig til handler om analog støj i indlejrede systemer. Den anden artikel, som jeg skal linke dig til, handler om brug af software til at reducere støj i dit system.

Jeg vil også foreslå hans artikel om udjævning af digitale indgange og selvkalibrerende systemer. Efter at have brugt tid på at arbejde med indlejrede systemer hentede jeg hårdt nogle af disse oplysninger ud fra mine egne fejl, men jeg nød virkelig at læse hans måder at tænke på. Det selvkalibrerende system var meget indlysende for mig, men den måde, han foreslog at gå på det, var værdifuldt for mig. Du har muligvis ikke brug for oplysningerne, men hans artikler har hjulpet mig.

pingswept
2010-05-06 17:13:40 UTC
view on stackexchange narkive permalink

Jeg har fundet Digital Signal Processing og Microcontroller af Grover og Deller som den eneste bog om filtre, som jeg kan forstå. Desværre er det svært at finde billigt.

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

Jeg vil se, om jeg kan få en bordkopi, anmeldelserne synes gode!
Ikke særlig relevant for det originale spørgsmål IMHO.OTOH, du vil måske prøve http://dspguide.com/. Den er tilgængelig som en gratis PDF-download, men jeg ejer stolt en kopi. Det er virkelig fantastisk til at lære DSP.
JustJeff
2010-06-02 08:29:25 UTC
view on stackexchange narkive permalink

Afstemmer din software dette input, eller bruger du en afbrydelsesplan til at behandle det?

Hvis du afstemmer, læser du formodentlig input meget hurtigere end de forventede ændringer i signal. Hvis støjen er godt adskilt, meget højfrekvente pigge, vil disse derefter se ud som isolerede prøver af den 'forkerte' polaritet. Du kan afhjælpe dette ved at gemme de seneste N-prøver og beslutte at læse input som den polaritet, der er størst. F.eks. Hvis N = 5, så hvis du har 3, 4 eller 5 '1' bits, er din input en '1'; hvis du har 0, 1 eller 2 '1' bits, er din input en '0'. Dette er egentlig bare en slags lavpasfilter i software.

Hvis du bruger input til at udløse afbrydelser ved ændring (begge kanter), kan du få afbrydelsesrutinen (ISR) til at starte en timer til forårsage et andet afbrydelse kort tid senere, men længere end støjspidsetiden. I stedet for at indgangsstiften ISR direkte akkumulerer signalbits, har du timeren ISR til at gøre det. For eksempel, hvis signalet er lavt, og der kommer en høj spids, starter den stigende kant timeren, men inden timertællingen udløber, nulstiller den faldende kant af spidsen den, så når timerafbrydelsen endelig går ud, ser på signalet, ikke støj. Signalet vil på den anden side starte timeren kun én gang, og timeren ISR vil være i stand til at få fat i det nye signalniveau.

Af disse to, Pollet vs Interrupt, personligt ville jeg gå for den pollede tilgang er b / c (1) interrupts bare mere komplicerede, og (2) et patologisk placeret par pigge kan stadig give dig falsk input.

Leon Heller
2010-05-06 19:15:02 UTC
view on stackexchange narkive permalink

Måske er "støj" et problem forårsaget af manglende kodning. Enkle sendere og modtagere kræver NRZ - Manchester-kode bruges ofte.

Jeg er sikker på, at disse sendere ikke bruger nogen kodningsmekanismer, og jeg er ikke i stand til at ændre senderen, derfor er mit problem.
Du skal tilføje kodning, så hvis NRZ er påkrævet.
desværre kan jeg ikke tilføje eller ændre noget i sendeenden, så der er ingen måde at tilføje kodning på
Du koder dataene, inden de sendes til senderen.
Han specificerede, at han ikke kunne ændre, hvordan transmissionen blev gjort, jeg tror, ​​det betyder, at Penjuin ikke kan ændre de data, der sendes til den.
Kodning fjerner ikke pigge, og penjuin vil stadig have problemer med at fortælle sit signal bortset fra støj. En god dekoderalgoritme vil hjælpe, men dette gælder for enhver form for kodning.


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 2.0-licens, den distribueres under.
Loading...