mikrocontroller.net

Forum: FPGA, VHDL & Co. Oversampling, Taktrückgewinnung


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wir programmierten in der Schule einen seriellen Sender. Dazu brauchten 
wir beim Empfänger ein Oversampling zur Taktrückgewinnung. Jedoch 
versteh ich nicht ganz, wie man den Takt dabei rückgewinnt.


Vielleicht kann mir wer helfen..

mfg

Autor: Oskar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PLL - gfs ein händisch programmierte.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>Wir programmierten in der Schule einen seriellen Sender. Dazu brauchten
>wir beim Empfänger ein Oversampling zur Taktrückgewinnung. Jedoch
>versteh ich nicht ganz, wie man den Takt dabei rückgewinnt.

Schau dir mal die Funktionsweise eines UART an. Dort wird mit 
Überabtastung gearbeitet.

Siehe auch Baud, Baudratenquarz.

http://pdfserv.maxim-ic.com/en/an/AN2141.pdf

MfG
Falk

P.S.

@ Oskar (Gast)

>PLL - gfs ein händisch programmierte.

http://video.google.de/videoplay?docid=763949850889929695

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm...

Es gibt eine Abtastfrequenz - das ist mir schon klar und bei unserem 
Beispiel beträgt die 32.6 kHz. Das Startbit sagt dem Empfänger, dass nun 
Daten übertragen werden, und eine halbe Bitlänge später kann er das 
erste Datenbit abtasten, eine weitere Bitlänge später dass 2. Datenbit ? 
So richtig ?

Was ich da jetzt nicht ganz verstehe - Das Oversampling besteht aus 
folgenden  Teilen: Übertragen vom Sender wird immer 1 Bit(insgesamt 
ergeben 10 Bits ein e Übertragung, sprich 10 Bits gehören immer 
zusammen), dann folgt ein Flankendetektor und danach ein 12-Bit-Counter. 
Wenn aus dem Flankendetektor '1' rauskommt, wird der Counter 
zurückgesetzt. Nach dem Counter folgt schließlich noch einmal ein 
Flankendetektor.

Was hat der Counter hier für eine Aufgabe bzw warum wird er 
zurückgesetzt, wenn eine Flanke aus dem 1. Flankendetektor komm ?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>So richtig ?

Ja.

>Was ich da jetzt nicht ganz verstehe - Das Oversampling besteht aus
>folgenden  Teilen: Übertragen vom Sender wird immer 1 Bit(insgesamt
>ergeben 10 Bits ein e Übertragung, sprich 10 Bits gehören immer
>zusammen),

Arbeite mal an deinen Formulierungen. Das klingt ziemlich verdreht.

>Was hat der Counter hier für eine Aufgabe bzw warum wird er
>zurückgesetzt, wenn eine Flanke aus dem 1. Flankendetektor komm ?

Zeichne das mal. Sonst reden wir aneinander vorbei. Poste die Zeichnung 
unter Beachtung der Bildformate.

MFG
Falk

Autor: Gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hm der untere Teil mit den 3 Flip Flops und einem XOR soll der 
NRZI-Decoder sein.


PS: Habs jetzt nur schnell mitn Paint gezeichnet, hab nichts anderes auf 
dem PC ;-)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>Hm der untere Teil mit den 3 Flip Flops und einem XOR soll der
>NRZI-Decoder sein.

Passt im Prinzip.

>PS: Habs jetzt nur schnell mitn Paint gezeichnet, hab nichts anderes auf
>dem PC ;-)

Aber leider nicht die Bildformate beachtet. :-(

Nun, der erste Flankendetektor synchronisiert den Zähler auf die 
Flankenwechsel im Signal, der zweite generiert aus dem Zählerüberlauf 
von 2047 auf 2048 einen Übernahmepuls. D.h. deine Daten müssen 4096 
Takte lang sein, bei 32,6 kHz Takt sind das dann ~ 8 Bit/s. Kann man so 
machen.

MFG
Falk

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm

Und was macht nun der Counter genau? Dient der zur Abtastung und alle 
2^12(=4096) ns wird abgetastet?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>Und was macht nun der Counter genau? Dient der zur Abtastung und alle
>2^12(=4096) ns wird abgetastet?

Erstmal sind das keine ns, sondern Takte! Und der stellt, wie bereits 
gesagt, eine sycnhrone Zeitbasis zu Abtastung der Daten zur Verfügung. 
Wenn der Zähler einfach frei laufen würde, wäre die Phase von Zähler und 
Datenstrom undefiniert, asynchron. D.h. der Zählerstand Null würde nicht 
genau mit dem Start eines Bit zusammenfallen. Durch den Flankendetektor 
wird er nun aber immer zum Beginn eines Bits zurückgesetzt, sprich mit 
dem Datenstrom synchronisiert. Nun läuft er erstmal für eine Weile 
synchron (im Gleichschritt) mit den ankommenden Daten. Das geht eine 
Weile gut. Nach ein paar Bits kann es aber passieren (und es WIRD 
passieren!), dass der Zähler zu weit oder zu wenig gezählt hat. Nicht 
weil er sich verzählt, sondern weil der Takt vom Zähler und der Takt vom 
Datenstrom nie 100%ig gleich sind. Also muss in regelmässigen Abständen 
der Zähler durch eine Flanke im Datenstrom neu synchronisiert werden. 
Die NRZI Kodierung ist dabei hilfreich.

MfG
Falk

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.