Forum: FPGA, VHDL & Co. Taktrückgewinnung & Datenempfang über eine Ader


von Michael S. (newby101)


Lesenswert?

Hallo zusammen,

ich benötige mal Hilfe von den Spezialisten hier. Ich möchte mit einem 
Mikrocontroller Daten einlesen, die über ein normales Telefonkabel 
bitseriell übertragen werden. Takt und Daten werden vom Sender gemeinsam 
über einen Leiter übertragen. Der Leitungscode ist so gewählt, dass eine 
Taktrückgewinnung möglich wird, da jedem Bit eine Flanke vorausgeht. Der 
Leitungscode ist allerdings kein gebräuchlicher. Die Frequenz beträgt 
etwa 5 kHz.

Folgende allgemeine Fragen:

1. Welche Methode zur Taktrückgewinnung würdet Ihr mir vorschlagen, ich 
hatte an eine Flankenerkennung gedacht, eignet sich diese Methode?

2. Wenn Flankenerkennung, wie bestimme ich die richtigen Schaltpegel für 
die Komparatoren? Gibt es feste Formeln dazu ?

3. Welche Störeinflüsse können auftreten, hat die Frequenz irgendwelche 
Einflüsse ?

3. Mit welcher Methode würdet Ihr das Bit bzw. die Zeichen anschließend 
abtasten um den logischen Zustand zu bestimmen?

Danke vorab

: Bearbeitet durch User
von Schlumpf (Gast)


Lesenswert?

Michael S. schrieb:
> 1. Welche Methode zur Taktrückgewinnung würdet Ihr mir vorschlagen, ich
> hatte an eine Flankenerkennung gedacht, eignet sich diese Methode?

Vermutlich ja..
Flanke erkennen und dann, abhängig von deinem Leitungscode abtasten

Michael S. schrieb:
> 2. Wenn Flankenerkennung, wie bestimme ich die richtigen Schaltpegel für
> die Komparatoren? Gibt es feste Formeln dazu ?

Das gibt dir doch deine Spezifikation des Signals vor.. Low-Schwelle, 
High-Schwelle.. entsprechend dieser legst du deinen Komparator aus

Michael S. schrieb:
> 3. Welche Störeinflüsse können auftreten, hat die Frequenz irgendwelche
> Einflüsse ?

z.B. kurzzeitige Störungen des Signals. Wenn diese deutlich kürzer als 
eine Bitzeit sind, kann diese entsprechend gefiltert werden

Michael S. schrieb:
> 3. Mit welcher Methode würdet Ihr das Bit bzw. die Zeichen anschließend
> abtasten um den logischen Zustand zu bestimmen?

Mit der für deinen (unbekannten) Leitungscode geeigneten

von Duke Scarring (Gast)


Lesenswert?

Michael S. schrieb:
> 3. Welche Störeinflüsse können auftreten, hat die Frequenz irgendwelche
> Einflüsse ?
Wenn man Signale über Optokoppler schickt (was bei längeren Leitungen 
vorteilhaft ist, um eine galvanische Trennung zu haben), kann die 
Pulsdauer signifikant verändert werden, wenn sich Ein- und 
Ausschaltzeiten des Optokopplers unterscheiden.

Das dürfte bei deinen 5 kHz aber noch keine Rolle spielen, erst so im 
MHz-Bereich.

Duke

von Michael S. (newby101)


Lesenswert?

@Schlumpf: Sry, ich hatte vergessen zu erwähnen, dass dieses Signal drei 
Pegel hat, da alle Empfänger über das Signal auch mit Energie versorgt 
werden. Vor jedem Bit fällt die Spannung ab. Das bedeutet ich benötige 
einen Komparator für den Takt und einen für das Bit.

Bsp: Stell Dir vor Du hast drei Pegel, 12 V für Energie dann eine 
fallende Flanke auf 3 V für High oder 0V für low usw. Legt man die 
Schwellen denn am besten immer genau in die Mitte, zwischen min und max 
oder gibt es da auch theoretische Ansätze die man verfolgen muss?

Danke vorab

: Bearbeitet durch User
von Duke Scarring (Gast)


Lesenswert?

Ich würde die Schwelle in die Mitte legen. Spricht ja erstmal nix 
dagegen.

Duke

von Route_66 H. (route_66)


Lesenswert?

Michael S. schrieb:
> Bsp: Stell Dir vor Du hast drei Pegel

Mach hier keine Rateshow, wo sich jeder etwas Anderes vorstellen könnte, 
sondern nenne Ross und Reiter!

Serielle Übertragung über eine einzelne Ader gibt es, seitdem es 
Telegrafie gibt.
Welches Prinzip bzw. Protokoll sollen wir für dich betrachten?

von Bürovorsteher (Gast)


Lesenswert?

> Der Leitungscode ist so gewählt, dass eine Taktrückgewinnung möglich wird,

Und ohne Kenntnis des Leitungscodes lässt sich rein gar nichts zur 
Taktrückgewinnung sagen.

von Schlumpf (Gast)


Lesenswert?

Michael S. schrieb:
> Bsp: Stell Dir vor Du hast drei Pegel, 12 V für Energie dann eine
> fallende Flanke auf 3 V für High oder 0V für low usw. Legt man die
> Schwellen denn am besten immer genau in die Mitte, zwischen min und max
> oder gibt es da auch theoretische Ansätze die man verfolgen muss?

und zwischen den Bits geht das Signal immer wieder auf 12V zurück?

Also
12V -> 3V = Logisch 1
12V -> 0V = Logisch 0
3V -> 12V = Keine Information
0V -> 12V = Keine Information

Richtig so?

Wenn das so ist, dann würde ich zwei Komparatoren verwenden.
Einer hat die Schwelle bei 5V (Komparator A)und einer bei 1,5V 
(Kpmparator B)

Dann kannst du anhand der Zustände des aktuellen und des vorangegangenen 
Abtastzyklus feststellen, ob eine steigende oder fallende Flanke 
aufgetreten ist und welche Pegel dabei anlagen.

Aber Achtung: bei einer Flanke 12 -> 0 sind ja theoretisch beide 
Komparatoren aktiv. Wenn du aber genau während der Flanke abtastest kann 
sein, dass gerade erst Komparator A geschaltet hat und B noch nicht. 
Daher solltest du auf jeden Fall ein weiteres mal abtasten und das 
Ergebnis auf plausibilität prüfen.

von Kichererbse (Gast)


Lesenswert?

Route 6. schrieb:

> Mach hier keine Rateshow, wo sich jeder etwas Anderes vorstellen könnte,
> sondern nenne Ross und Reiter!

Verdirb doch den devoten und diensteifrigen Usern des Froums nicht den 
Spaß.

von Michael S. (newby101)


Lesenswert?

Danke erstmal allen, dass das überhaupt wieder so schnell geht ...

@Schlumpf: Das Signal sieht genau so aus wie Du es beschrieben hast, 
zwischen den Bits geht es auf 12 V zurück. Die Bitzeit und die Zeit für 
die Pause ist im übrigen gleich lang. Nach den Datenrahmen sind etwas 
längere 12 V strecken zur Resynchronisation vorhanden. Ich werde den 
Ansatz mit der Flankenerkennung jetzt weiter verfolgen.

>"Aber Achtung: bei einer Flanke 12 -> 0 sind ja theoretisch beide
>Komparatoren aktiv. Wenn du aber genau während der Flanke abtastest kann
>sein, dass gerade erst Komparator A geschaltet hat und B noch nicht.
>Daher solltest du auf jeden Fall ein weiteres mal abtasten und das
>Ergebnis auf plausibilität prüfen."

Nachdem ich den Takt an einem digitalen Eingang aufnehme, habe ich vor, 
eine Zeit zu warten und dann erst mit (Komparator B) abzutasten und dann 
mehrmals, dann sollte es ja passen.

Nochmal ein paar (ja vielleicht) blöde Fragen zum theoretischen 
Verständnis. Zunächst mal diese hier.

bei Wikipedia steht:

"Grundsätzlich kommen zur Taktrückgewinnung zwei verschiedene Verfahren 
zum Einsatz:

    -Nichtlineare Verzerrung des Eingangssignals
    -Entscheidungsrückgekoppelte Verfahren mit adaptiven Filtern."

Welchem Verfahren wird die Flankenerkennung denn nun zugeordnet, oder 
sprechen wir überhaupt nicht über eine Taktrückgewinnung, sondern gibt 
es eine andere Bezeichnung?

@Route 66: Kann ich leider nicht ...

Danke vorab

: Bearbeitet durch User
von Route_66 H. (route_66)


Lesenswert?

Michael S. schrieb:
> @Route 66: Kann ich leider nicht ...

Keine Arme (Info) -> keine Kekse (Hilfe).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Michael S. schrieb:
> Welchem Verfahren wird die Flankenerkennung denn nun zugeordnet, oder
> sprechen wir überhaupt nicht über eine Taktrückgewinnung, sondern gibt
> es eine andere Bezeichnung?
Du brauchst den Takt doch gar nicht zurückgewinnen, denn der wird ja 
bei jedem einzelnen Bit mitübertragen...

> sprechen wir überhaupt nicht über eine Taktrückgewinnung, sondern gibt
> es eine andere Bezeichnung?
Ich würde es einfach "Signalauswertung" nennen.

Michael S. schrieb:
> 2. Wenn Flankenerkennung, wie bestimme ich die richtigen Schaltpegel für
> die Komparatoren? Gibt es feste Formeln dazu ?
Was für Komparatoren? Du musst das Signal eigentlich nur so 
konditionieren, dass du es mit einem schnarchlangsamen µC-Pin abtasten 
kannst.

> Der Leitungscode ist allerdings kein gebräuchlicher.
Zeig doch einfach mal ein Bild davon...

> 3. Mit welcher Methode würdet Ihr das Bit bzw. die Zeichen anschließend
> abtasten um den logischen Zustand zu bestimmen?
Hinreichend schnell.

BTW: was hat die Frage eigentlich mit "FPGA, VHDL & Co." zu tun?

von Schlumpf (Gast)


Lesenswert?

Lothar M. schrieb:
> Was für Komparatoren? Du musst das Signal eigentlich nur so
> konditionieren, dass du es mit einem schnarchlangsamen µC-Pin abtasten
> kannst.

Das Signal kann 3 Pegel annehmen..
Das wird mit einem µC-Pin schwierig, wenn man nicht nen AD-Wandler 
nehmen will..

Lothar M. schrieb:
> BTW: was hat die Frage eigentlich mit "FPGA, VHDL & Co." zu tun?

Hab ich mich auch schon gefragt :-)

von Falk B. (falk)


Lesenswert?

@Michael S. (newby101)

>Leitungscode ist allerdings kein gebräuchlicher.

Welcher ist es denn? Siehe Netiquette!

>1. Welche Methode zur Taktrückgewinnung würdet Ihr mir vorschlagen, ich
>hatte an eine Flankenerkennung gedacht, eignet sich diese Methode?

Kann man ohne Kenntnis des Leitungscode nicht sagen. Aber die Flanken 
müssen so oder so erkannt werden, denn das sind die einzigen Zeitmarken 
die du hast ;-)

>2. Wenn Flankenerkennung, wie bestimme ich die richtigen Schaltpegel für
>die Komparatoren? Gibt es feste Formeln dazu ?

Ohne die Kodierung kann man da gar nicht sagen. Du mußt aber 2 Stufen 
trennen.

1.) Analoge Signalaufbereitung (Filterung) + AD-Wandlung. Da kann ein 
Komparator reichen, ggf. braucht man mehrere oder gar einen AD-Wandler. 
Kommt auf den Code an.

2.) Digitale Verarbeitung mit Flankenerkennung und Dekodierung.

>3. Welche Störeinflüsse können auftreten,

Viele.

> hat die Frequenz irgendwelche Einflüsse ?

NIEMALS! (wait . . .)

>3. Mit welcher Methode würdet Ihr das Bit bzw. die Zeichen anschließend
>abtasten um den logischen Zustand zu bestimmen?

Siehe oben.

>Danke vorab

Hausaufgaben? Projektarbeit?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.