projekte:rtty-demodulator:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
projekte:rtty-demodulator:start [2014/02/20 13:54] – [Entwicklungsumgebung] thasti | projekte:rtty-demodulator:start [2015/11/17 09:26] (aktuell) – thasti | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== RTTY-Demodulator ====== | ====== RTTY-Demodulator ====== | ||
+ | ~~NOTOC~~ | ||
+ | <WRAP 30% right> | ||
+ | ^ RTTY-AFSK-Demodulator ^^ | ||
+ | | Ein AtMega demoduliert RTTY, Verwendbar für den DWD oder die AFu-Bänder. || | ||
+ | | **Mitarbeiter** | Stefan, DK3SB \\ Sebastian, DL3YC | | ||
+ | | **Status** | Konzept erstellt, Simulation durchgeführt, | ||
+ | </ | ||
+ | |||
===== Zielstellung ===== | ===== Zielstellung ===== | ||
- | Es soll für das Studienfach Mikroprozessortechnik | + | Es soll ein FSK-Demodulator entwickelt werden. Die Umsetzung soll in Assembler auf einem AtMega-Prozessor passieren, die dahinführende Entwicklung wird hier dokumentiert werden. |
Einsatzzweck für das Gerät ist entweder RTTY der Funkamateure bzw des DWD. Als HF-Frontend zum praktischen Einsatz ist die Verwendung eines gewöhnlichen Transceivers geplant, sodass die Demodulation einer AFSK erfolgt, die Demodulation einer evtl. vorhandenen FM, SSB, AM usw wird vom Funkgerät durchgeführt. | Einsatzzweck für das Gerät ist entweder RTTY der Funkamateure bzw des DWD. Als HF-Frontend zum praktischen Einsatz ist die Verwendung eines gewöhnlichen Transceivers geplant, sodass die Demodulation einer AFSK erfolgt, die Demodulation einer evtl. vorhandenen FM, SSB, AM usw wird vom Funkgerät durchgeführt. | ||
Zeile 110: | Zeile 118: | ||
===== Arbeitspakete und Milestones ===== | ===== Arbeitspakete und Milestones ===== | ||
Es sind folgende, grundlegende Arbeitspakete zu bewältigen | Es sind folgende, grundlegende Arbeitspakete zu bewältigen | ||
- | * UART Inbetriebnahme | + | * UART Inbetriebnahme |
* Loopback-Test | * Loopback-Test | ||
* Einbindung in Matlab | * Einbindung in Matlab | ||
Zeile 117: | Zeile 125: | ||
* ADC Inbetriebnahme - **ok** | * ADC Inbetriebnahme - **ok** | ||
* Loopback @ 12kHz | * Loopback @ 12kHz | ||
- | * Mathematikoperationen | + | * Mathematikoperationen |
* saturierende Addition | * saturierende Addition | ||
* saturierende Subtraktion | * saturierende Subtraktion | ||
Zeile 123: | Zeile 131: | ||
* Fraction Division | * Fraction Division | ||
* per Matlab testen (Eingabe: 2 Operanden, Ausgabe: 1 Ergebnis) | * per Matlab testen (Eingabe: 2 Operanden, Ausgabe: 1 Ergebnis) | ||
- | * Sinus/ | + | * Sinus/ |
* per UART und Matlab testen | * per UART und Matlab testen | ||
* Eingabe: phi, Ausgabe: sin(phi), cos(phi) | * Eingabe: phi, Ausgabe: sin(phi), cos(phi) | ||
- | * Arkustangens (LUT mit Interpolation) | + | * Arkustangens (LUT mit Interpolation) |
* per UART und Matlab testen | * per UART und Matlab testen | ||
* Eingabe: x, Ausgabe: atan(x) | * Eingabe: x, Ausgabe: atan(x) | ||
- | * NCO (Oszillator für IQ-Mischung) | + | * NCO (Oszillator für IQ-Mischung) |
* Phasenakkumulator per UART validieren (Eingabe: step, Ausgabe: Wert --> Sinus in Matlab) | * Phasenakkumulator per UART validieren (Eingabe: step, Ausgabe: Wert --> Sinus in Matlab) | ||
* Phasenakkumulator am DSO validieren (FCW -> Ausgangsfrequenz) | * Phasenakkumulator am DSO validieren (FCW -> Ausgangsfrequenz) | ||
* Phasenakkumulator mit Sinus und Kosinus am DSO validieren (FCW -> Ausgangsfrequenz) | * Phasenakkumulator mit Sinus und Kosinus am DSO validieren (FCW -> Ausgangsfrequenz) | ||
* Phasenverschiebung des komplexen NCO bestimmen (frequenzunabhängig 90°) | * Phasenverschiebung des komplexen NCO bestimmen (frequenzunabhängig 90°) | ||
- | * CORDIC (Phasenwinkelbestimmung) / Division | + | * CORDIC (Phasenwinkelbestimmung) / Division |
* per Matlab testen (Eingabe: I, Q, Ausgabe: phi) | * per Matlab testen (Eingabe: I, Q, Ausgabe: phi) | ||
- | * BiQuad-Filter (für I/ | + | * BiQuad-Filter (für I/ |
* passenden Koeffizientensatz berechnen | * passenden Koeffizientensatz berechnen | ||
* per DSO und Sig-Generator testen | * per DSO und Sig-Generator testen | ||
- | * RC-Filter (für Fehlersignal) | + | * RC-Filter (für Fehlersignal) |
* per DSO und Sig-Generator testen | * per DSO und Sig-Generator testen | ||
- | * Baudot-Code Dekodierung (2x LUT) | + | * Baudot-Code Dekodierung (2x LUT) **todo** |
* per UART testen (Eingabe: Baudot, Ausgabe: ASCII) | * per UART testen (Eingabe: Baudot, Ausgabe: ASCII) | ||
===== Interna ===== | ===== Interna ===== | ||
Systemdaten: | Systemdaten: | ||
- | * verwendeter MCU: AtMega8 | + | * verwendeter MCU: AtMega48 |
* Systemtakt: 16MHz | * Systemtakt: 16MHz | ||
* ADC Samplerate (Timer): 12kHz | * ADC Samplerate (Timer): 12kHz | ||
Zeile 151: | Zeile 159: | ||
Bitbreite verschiedener Register: | Bitbreite verschiedener Register: | ||
- | * ADC-Input: | + | * ADC-Input: |
* NCO-PAC: 16bit, unsigned | * NCO-PAC: 16bit, unsigned | ||
- | * NCO-sin/ | + | * NCO-sin/ |
- | * Mischer: Input 16bit signed * 16bit, signed, Output 16bit, signed | + | * Mischer: Input 8bit signed * 8bit, signed, Output 16bit, signed |
- | * RC-Filter: Input 16bit, signed, Output 16bit Signed (16*16 und 16 bit abschneiden oder nur 8*8 rechnen?) | + | * RC-Filter: Input 16bit, signed, Output 16bit Signed (intern 24bit) |
- | * BiQuad-Filter: | + | * BiQuad-Filter: |
Rechenintensive Operationen: | Rechenintensive Operationen: | ||
- | * Sin/ | + | * Sin/ |
* Division: 255 Takte (16/16 signed), 103 Takte (8/8 signed) | * Division: 255 Takte (16/16 signed), 103 Takte (8/8 signed) | ||
projekte/rtty-demodulator/start.txt · Zuletzt geändert: 2015/11/17 09:26 von thasti