Ethernet-Empfangsprobleme beim CS8900A

M

Michael Dreschmann

Guest
Hallo,

ich bin gerade dabei ein Gerät mit Netzwerkinterface zu entwickeln.
Als Ethernetcontroller kommt dabei ein CS8900A-CQ (10MBit, von
Crystal) zum Einsatz, der von einem M16C angesprochen wird. Der
CS8900A ist über Twisted Pair (isolation transformer = TG42-1406N1)
mit einem 100/10 MBit Switch verbunden. Die Verschaltung des analogen
TP-Parts ist wie im Datenblatt vom CS8900A angegeben. Auch am RES Pin
des Controllers liegt mittlerweile ein echter 4.99KOhm Widerstand
gegen Masse und die Kommunikation M16C <-> CS8900A funktioniert
einwandfrei.
Beim Empfangen (also Switch -> CS8900A) von Ethernet-Frames gibt es
nun folgendes Problem:
Wenn mehrere Frames schnell aufeinander folgen, werden vom CS8900A
nicht alle korrekt empfangen. Etwa jedes 20. Paket geht verloren.
Ich habe mal die Error Flags analysiert und so erfahren, dass der
Controller bei einem solchen "verlorenen" Paket meistens einen
Runt-Error (= Paket zu kurz, < 64 Byte, ist im Ethernet wegen
Kollisionserkennung nicht erlaubt) und (logischerweise auch) einen CRC
Error ausgibt. Manchmal ist es aber auch nur ein CRC Error oder er
registriert gar kein Paket.
Dieser Fehler tritt nur auf, wenn die Ethernet Pakete schnell
aufeinander folgen (bei meinem Test ca. 10ľs Delay zwischen den
Frames) und auch schon, wenn es nur zwei Pakete sind.
Wird zwischen den Paketen hingegen ein grösserer Delay (z.B. 10ms)
eingehalten, so geht keines verloren. (Ein Mp3-Datenstrom lässt sich
z.B. fehlerfrei abspielen.)
Durch die vielen Runt-Errors dachte ich zuerst, der Controller würde
vielleicht manchmal das Preamble eines Frames verpassen, aber dieser
Fehler müsste dann ja auch bei grösseren Delays zwischen den Frames
auftreten.
Daher meine Frage, hatte jemand schon mal ein ähnliches Problem oder
eine Idee, wo ich noch suchen könnte?
Und wenn jemand ein Projekt mit dem CS8900A am Laufen hat, könnte er
mir vielleicht mal die Initialisierungsroutine schicken? Ich könnte
mir vielleicht auch vorstellen, dass es an einer falschen
Initialisierung liegt. Obwohl der Controller ansonsten einwandfrei
funktioniert.

Vielen Dank,
Michael
 
Wi hast Du den CS8900 am M16C hängen und mit welcher TaKtfrequenz?
Der CS8900 ist eventuel zu langsam für den M16C, musste bei mir
Waitstates einfügen.
Könnte aber auch en HF-Design-Problem im Bereich Netzwerkübertrager sein.
Hast Du die Treiber selber geschrieben oder von einem anderen Projekt
übernommen?

Gerald
 
Hallo!

Wi hast Du den CS8900 am M16C hängen und mit welcher TaKtfrequenz?
Der CS8900 ist eventuel zu langsam für den M16C, musste bei mir
Waitstates einfügen.
Die Verbindung läuft über den externen Bus vom M16C. Dieser läuft bei
8 MHz und für den ext. Bus ist ein Waitstate eingestellt. Ausserdem
ist das IO-Ready Signal verbunden. Aber ich bin mir ziemlich sicher,
dass diese Verbindung funktioniert. Wenn die Ethernet Pakete weit
genug von einander entfernt sind funktioniert die Übertragung ja ohne
jegliche Fehler. Ich kann auch alle Config-Register des CS8900A ohne
Probleme lesen bzw. schreiben.

Könnte aber auch en HF-Design-Problem im Bereich Netzwerkübertrager sein.
Hast Du die Treiber selber geschrieben oder von einem anderen Projekt
übernommen?
Ich habe allen Code selbst geschrieben. Im Moment gehts ja nur darum
den Controller zu initialisieren und dann die korrekt empfangenen
Pakete bzw. die Errors zu zählen. Aber mittlerweile denke ich auch,
dass das Problem am analogen HF-Teil liegt, und zwar aus folgendem
Grund:

Ich habe mir mal die Statuswords der Error-Frames angeschaut und dabei
festgestellt, dass fast immer das Bit für Dribblebits gesetzt ist (das
CRC Error Bit natürlich auch, sonst wärs ja kein Error-Frame). Laut
Datenblatt liegt ein Alignment-Error vor, wenn CRC-Error und
Dribblebits gleichzeitig auftreten und laut einer Webseite hat ein
Alignment-Error oft folgende Gründe:
---------------------
Mögliche Ursachen:
Dämpfungsfehler (falscher Kabeltyp; zu lange Kabel).
Geknicktes Kabel (Twisted Pair).
Kollision (tritt gemeinsam auf mit CRC error und packet short).

Alignment errors treten hauptsächlich bei nachlässigen oder
beschädigten Twisted-Pair-Verkabelungen auf, wenn der vorgeschriebene
Drill der Ader-Paare beschädigt wird...
.... durch Unterschreiten des zulässigen Biegeradius;
.... durch Zuglast bei hängenden Kabeln im Schacht;
.... durch Quetschung z.B. mit Kabel-Schellen.
-------------------

Hat also wohl was mit dem Analogteil der Übertragung zu tun.

Die Empfangsschaltung am CS8900A sieht ja folgendermassen aus:
Rx+ und Rx- von der RJ45 Buchse gehen direkt zum Isolation Transformer
und von dort aus gehts dann direkt zum CS8900A. Ausserdem liegt
zwischen den beiden Rx Leitungen zum CS noch ein 110 Ohm Widerstand
und der Mittelabgriff vom Isolationtransformer ist über 100nF geerdet.

Nun habe ich mal testweise den 110 Ohm Widerstand entfernt und
plötzlich enthielt nicht mehr jedes zehnte Paket einen Error sondern
nur noch jedes 500. Das ist zwar schon ein Fortschritt, aber
eigentlich immer noch viel zu viel. Ausserdem hat der Widerstand dort
ja auch sicher einen Grund. Die Frage ist nun, kann es vielleicht
sein, dass der Isolationtransformer defekt ist (die Spule hat nur
einen Widerstand von etwa 0.6 Ohm) oder ist mein Layout Mist?

Das Layout kann man sich hier anschauen:
http://home.rz-online.de/~wdreschm/bild.jpg (Achtung, 1.9 MB)
Der Netzwerkteil befindet sich rechts oben. Man sieht, dass die RJ45
Buchse direkt an den Überträger angeschlossen ist und an diesem gehen
oben rechts die beiden Receiveleitungen ab. R42 ist der 110 Ohm
Widerstand.
Ich hoffe man kann genug erkennen, ansonsten kann ich auch nochmal
versuchen ein Bild ohne diesen weisen Fleck vom Quarz zu machen bzw.
auch das Eagle File hochladen.

Vielen Dank schon mal für alle Tipps.

Michael
 
On Sun, 01 Aug 2004 23:00:02 GMT, michaeldre@gmx.de (Michael
Dreschmann) wrote:
[...]
Mögliche Ursachen:
Dämpfungsfehler (falscher Kabeltyp; zu lange Kabel).
Geknicktes Kabel (Twisted Pair).
Kollision (tritt gemeinsam auf mit CRC error und packet short).
Kurzum: Probleme im analogen Teil, genau das, was
ich hier auch vermute:

Das Layout kann man sich hier anschauen:
http://home.rz-online.de/~wdreschm/bild.jpg (Achtung, 1.9 MB)
Der Netzwerkteil befindet sich rechts oben. Man sieht, dass die RJ45
Buchse direkt an den Überträger angeschlossen ist und an diesem gehen
oben rechts die beiden Receiveleitungen ab. R42 ist der 110 Ohm
Widerstand.
Sehe ich es richtig, dass Du das auf einer doppelseitigen Platine
mit Andeutungen von Power Planes machst ?!

Das will man nicht, weil so die Leitungen in den Bereichen, in
denen keine Masse liegt, als Induktivitäten wirken und dort,
wo Masse ist, bei den dünnen Leitungen im Verhältnis zur
Materialdicke der Leiterkarte der Wellenwiderstand
ziemlich hoch ist.

Hinzu kommt, dass die CPU einen Haufen Störungen auf der
Masse produziert, welche Dein Analogteil bei dieser Art von
Layout voll abbekommt. Die Andeutung einer Masse im
Netzwerkteil wird alles sein, nur nicht Masse. Und mangels
gegenüberliegender Versorgungsplane gibt es auch
keinerlei zusätzliche Abblockung durch das Layout.

100 Base T ist zwar noch nicht GHz-HF (GigE schon ;-), aber
durchaus anfällig auf Layoutprobleme.

Nicht umsonst werden auch die billigen LAN Produkte aus Asien
jedenfalls auf 4 Lagen Multilayer gefertigt.
Sparen führt hier nur zu doppelter Geldausgabe, nämlich einmal
für das Zweilagenwegwerfmuster und dann nochmals für
das richtige Vierlagenboard.

Für eine genaue Problemklärung kann man entweder beliebig lange
rumdoktoren, oder Du suchst Dir jemanden mit einem High Speed
DSO mit *tiefem* Sequenz- und Signalspeicher. Damit wird man
sehr schnell sehen, was Sache ist.
Mein Tipp ist Ärger mit der Versorgung wie in fast 90% aller Fälle,
wenn die Leute nicht wahrhaben wollen, dass Zweilagenboards
ohne durchgehende Masse- und Versorgungsplane für schnelle
Digitaldesigns IMO völlig untauglich sind.

Gruß Oliver

--
Oliver Bartels + Erding, Germany + obartels@bartels.de
http://www.bartels.de + Phone: +49-8122-9729-0 Fax: -10
 
michaeldre@gmx.de (Michael Dreschmann) wrote:

Die Empfangsschaltung am CS8900A sieht ja folgendermassen aus:
Rx+ und Rx- von der RJ45 Buchse gehen direkt zum Isolation Transformer
^^^^^^^^^
Wenn Du die Leitung von Pin 78 des CS8900 zu R38 direkt an den
buchsenseitigen Anschlüssen des Übertragers vorbei ziehst, kannst Du
"Isolation" vergessen. Für 2000V Isolationsspannung ist der halbe
Millimeter Luft-/Kriechstrecke zu wenig.


und von dort aus gehts dann direkt zum CS8900A. Ausserdem liegt
zwischen den beiden Rx Leitungen zum CS noch ein 110 Ohm Widerstand
und der Mittelabgriff vom Isolationtransformer ist über 100nF geerdet.
Der Widerstand soll zwar so nah wie möglich am IC leigen, das kurze
stück sollte hier aber nicht stören. Was mich eher stört, ist der
Kondensator C24, der noch zwischen die RX-Leitungen gewürgt wurde und
dort die Symmetrie versaut. Den würde ich rechts neben den Übertrager
legen.


Nun habe ich mal testweise den 110 Ohm Widerstand entfernt und
plötzlich enthielt nicht mehr jedes zehnte Paket einen Error sondern
nur noch jedes 500. Das ist zwar schon ein Fortschritt, aber
eigentlich immer noch viel zu viel. Ausserdem hat der Widerstand dort
ja auch sicher einen Grund. Die Frage ist nun, kann es vielleicht
sein, dass der Isolationtransformer defekt ist (die Spule hat nur
einen Widerstand von etwa 0.6 Ohm) oder ist mein Layout Mist?
Hier ergibt sich ein Feld für Spekulationen.
Der geringe Gleichstromwiderstand des Übertragers sollte passen, das
sind nur einige wenige Windungen CuL auf einem winzigen Ringkern
(manchmal von unten mit klarem Silikon-Kautschuk eingegossen; sieht
recht possierlich aus).
Interessant ist, ob Du den richtigen Übertrager hast, und ob er richtig
angeschlossen ist. Es gibt da eine ganz nette Auswahl an Ünertragungs-
und entsprechend Impedanzverhältnissen bei den Dingern, die zum
Transceiver-Baustein passen müssen.
Wenn laut Datenblatt des CS8900 zweimal 1:1 gefordert ist, ist es
trivial.
Falls aber z.B. für TX das Verhältnis 1:1,41 oder gar 1:2 benötigt wird,
und Du den Trafo verkehrt herum eingebaut hast, könntest Du Dir im
RX-Pfad nicht nur eine verkorkste Impedanzanpassung, sondern auch noch
einen viel zu kleinen Empfangspegel (je nachdem, ob dann hoch oder
runter transformiert wird) einhandeln. Ohne R24 ist die
Impedanzanpassung dann zwar noch schlechter, was bei kurzem Kabel aber
vielleicht weniger stört, als der geringe Pegel, der ohne R24 nicht mehr
ganz so stark bedämpft wird.


Ich hoffe man kann genug erkennen, ansonsten kann ich auch nochmal
versuchen ein Bild ohne diesen weisen Fleck vom Quarz zu machen bzw.
Ich würde - generell - für so eine Ausgabe die Sperrflächen und die
Bauteilwerte abschalten, das wird wesentlich übersichtlicher. Die
Outlines der Bauteile und ihre Bezeichnungen sollten ausreichen (die
Bauteilwerte gibt's in der Stückliste).



Grüße,

Günther
 
Oliver Bartels schrieb:

Nicht umsonst werden auch die billigen LAN Produkte aus Asien
jedenfalls auf 4 Lagen Multilayer gefertigt.
Also ich hab hier noch so ein Billigprodukt (2 Layer), 10/100MBit/s noch
mit ISA-Bus. Am alten 10MBit/s Hub lief die einwandfrei, bei 100MBit/s
als ob Kaugummi in der Leitung wäre.


Sparen führt hier nur zu doppelter Geldausgabe, nämlich einmal
für das Zweilagenwegwerfmuster und dann nochmals für
das richtige Vierlagenboard.
Zum Glück nichts dafür bezahlt, aber selbst das war noch zuviel, eine
halbe Stunde Fehlersuche hats nämlich gekostet.

Insofern einfach nur: ACK.



Gruß Dieter
 
Günther Dietrich schrieb:
^^^^^^^^^
Wenn Du die Leitung von Pin 78 des CS8900 zu R38 direkt an den
buchsenseitigen Anschlüssen des Übertragers vorbei ziehst, kannst Du
"Isolation" vergessen. Für 2000V Isolationsspannung ist der halbe
Millimeter Luft-/Kriechstrecke zu wenig.
Deshalb gibts detaillierte Designregeln von den Trafo- bzw.
Chipherstellern.


Gruß Dieter
 
Hallo!

Vielen Dank für die Antwort.

Sehe ich es richtig, dass Du das auf einer doppelseitigen Platine
mit Andeutungen von Power Planes machst ?!
Ja, ist leider auf dem Bild nicht ausgefüllt worden.

Das will man nicht, weil so die Leitungen in den Bereichen, in
denen keine Masse liegt, als Induktivitäten wirken und dort,
wo Masse ist, bei den dünnen Leitungen im Verhältnis zur
Materialdicke der Leiterkarte der Wellenwiderstand
ziemlich hoch ist.

Hinzu kommt, dass die CPU einen Haufen Störungen auf der
Masse produziert, welche Dein Analogteil bei dieser Art von
Layout voll abbekommt. Die Andeutung einer Masse im
Netzwerkteil wird alles sein, nur nicht Masse. Und mangels
gegenüberliegender Versorgungsplane gibt es auch
keinerlei zusätzliche Abblockung durch das Layout.
D.h., wenn ich die Massefläche da entfernen würde, könnte das schon
eine Verbesserung bringen? Sind denn bei zweiseitigen Layouts
Masseflächen generell schlecht oder nur im Bereich von Analogteilen?

100 Base T ist zwar noch nicht GHz-HF (GigE schon ;-), aber
durchaus anfällig auf Layoutprobleme.
Ähm, es handelt sich hier "nur" um 10 Base T und da dachte ich, das
wird schon nicht so kritisch sein. Ich gebe zu, ich hab von High Speed
Design keine Ahnung... :)
Das ganze ist ja auch nur ein Hobbyprojekt und die Platine im Keller
selbest geätzt:
http://home.rz-online.de/~wdreschm/hemp2.jpg (1.69 MB)
Ich dachte, wenn es hier
(http://www.embeddedethernet.com/ -> "Application Notes")
funktioniert, müsste das doch auch bei mir gehen.

Für eine genaue Problemklärung kann man entweder beliebig lange
rumdoktoren, oder Du suchst Dir jemanden mit einem High Speed
DSO mit *tiefem* Sequenz- und Signalspeicher. Damit wird man
sehr schnell sehen, was Sache ist.
Ok, werde das Teil mal mit in die Uni nehmen und ein bischen
nachforschen.

Mein Tipp ist Ärger mit der Versorgung wie in fast 90% aller Fälle,
wenn die Leute nicht wahrhaben wollen, dass Zweilagenboards
ohne durchgehende Masse- und Versorgungsplane für schnelle
Digitaldesigns IMO völlig untauglich sind.
Wie gesagt, ist handgemacht und 4 Lagen sind im Keller halt
schwierig...

Viele Grüsse,
Michael
 
Hallo!

Wenn Du die Leitung von Pin 78 des CS8900 zu R38 direkt an den
buchsenseitigen Anschlüssen des Übertragers vorbei ziehst, kannst Du
"Isolation" vergessen. Für 2000V Isolationsspannung ist der halbe
Millimeter Luft-/Kriechstrecke zu wenig.
Hast natürlich Recht. Habe das schon auf die Änderungsliste gesetzt.

Der Widerstand soll zwar so nah wie möglich am IC leigen, das kurze
stück sollte hier aber nicht stören. Was mich eher stört, ist der
Kondensator C24, der noch zwischen die RX-Leitungen gewürgt wurde und
dort die Symmetrie versaut. Den würde ich rechts neben den Übertrager
legen.
Ok, auch etwas, was man mal ausprobieren kann.

Interessant ist, ob Du den richtigen Übertrager hast, und ob er richtig
angeschlossen ist. Es gibt da eine ganz nette Auswahl an Ünertragungs-
und entsprechend Impedanzverhältnissen bei den Dingern, die zum
Transceiver-Baustein passen müssen.
Habe den TG42-1406N1
(http://www.haloelectronics.com/pdf/smd10baset.pdf)
Sollte laut dieser Webseite für den CS8900A passen und die
Einbaurichtung stimmt auch mit der auf
http://www.embeddedethernet.com
überein.

Ich würde - generell - für so eine Ausgabe die Sperrflächen und die
Bauteilwerte abschalten, das wird wesentlich übersichtlicher. Die
Outlines der Bauteile und ihre Bezeichnungen sollten ausreichen (die
Bauteilwerte gibt's in der Stückliste).
Ok, werde ich in Zukunft so machen.
Vielen Dank für die Tipps.

Viele Grüsse,
Michael
 
| >Wenn Du die Leitung von Pin 78 des CS8900 zu R38 direkt an den
| >buchsenseitigen Anschlüssen des Übertragers vorbei ziehst, kannst
Du
| >"Isolation" vergessen. Für 2000V Isolationsspannung ist der halbe
| >Millimeter Luft-/Kriechstrecke zu wenig.

Habt ihr das gesehen, die wollen dafür auch noch richtig Geld...

MArtin
 
Michael Dreschmann schrieb:

Interessant ist, ob Du den richtigen Übertrager hast, und ob er richtig
angeschlossen ist. Es gibt da eine ganz nette Auswahl an Ünertragungs-
und entsprechend Impedanzverhältnissen bei den Dingern, die zum
Transceiver-Baustein passen müssen.


Habe den TG42-1406N1
(http://www.haloelectronics.com/pdf/smd10baset.pdf)
Sollte laut dieser Webseite für den CS8900A passen und die
Einbaurichtung stimmt auch mit der auf
http://www.embeddedethernet.com
überein.

Ohne jetzt genauer nachzuschauen 3,3V und 5V - Technik/Bauteile hast
Du nicht zufällig durcheinandergewirbelt?

Gerald
 
Hi!

Ohne jetzt genauer nachzuschauen 3,3V und 5V - Technik/Bauteile hast
Du nicht zufällig durcheinandergewirbelt?
Nein, leider nicht, die 3V Version hat ein -3 hinter dem CQ bzw. IQ...

Michael
 
Hallo,

Für eine genaue Problemklärung kann man entweder beliebig lange
rumdoktoren, oder Du suchst Dir jemanden mit einem High Speed
DSO mit *tiefem* Sequenz- und Signalspeicher. Damit wird man
sehr schnell sehen, was Sache ist.
Mein Tipp ist Ärger mit der Versorgung wie in fast 90% aller Fälle,
wenn die Leute nicht wahrhaben wollen, dass Zweilagenboards
ohne durchgehende Masse- und Versorgungsplane für schnelle
Digitaldesigns IMO völlig untauglich sind.
Ich habe jetzt mal ein paar Details der Empfangsdaten mit einem DSO
aufgenommen. Wobei ich allerdings nicht so genau weiss, wonach ich
suchen muss:

- home.rz-online.de/~wdreschm/oszi1.jpg
Preamble eines Einzelpaketes

- home.rz-online.de/~wdreschm/oszi2.jpg
Die ersten Bits eines Einzelpaketes

- home.rz-online.de/~wdreschm/oszi3.jpg
Eine Stelle mitten in einem Einzelpaket

- home.rz-online.de/~wdreschm/oszi4.jpg
Ein ganzes einzelnes Paket

- home.rz-online.de/~wdreschm/oszi5.jpg
Ende eines Einzelpaketes

Bis hierhin waren alle Messungen ohne den 100 Ohm Widerstand, ab jetzt
sind alle mit diesem Widerstand

- home.rz-online.de/~wdreschm/oszi6.jpg
Einzelpaketanfang

- home.rz-online.de/~wdreschm/oszi7.jpg
Bei vielen langen aufeinanderfolgenden Paketen war das zu sehen, ich
denke jedoch, das ist ein Abtastfehler.

- home.rz-online.de/~wdreschm/oszi8.jpg
Im vorigen Bild an der Mittellinie hineingezoomt.

- home.rz-online.de/~wdreschm/oszi9.jpg
Bei zwei schnell aufeinanderfolgenden Paketen (also das was Probleme
macht) der Inter-Paket Delay.

- home.rz-online.de/~wdreschm/oszi10.jpg
Bei zwei schnell aufeinanderfolgenden Paketen der Anfang des zweiten
Paketes.

Einzelpaket bedeutet hier, dass sowohl vor dem Paket als auch danach
recht lange Zeit (mehrere Millisekunden) kein anderes kommt, während
"schnell aufeinanderfolgend" bedeutet, dass zwei Pakete sehr schnell
hintereinander kommen.
Vielleicht hat ja noch jemand eine Idee. Für mich sieht das alles
relativ richtig aus.
Übrigens, überall wo bei Tastkopf 1X steht muss die Spannung für
Channel 1 verzehnfacht werden. Hab das am Anfang vergessen auf 10X zu
stellen.
Die Störpegel auf Vcc im Bereich des CS8900A sind übrigens ca. 200mV
und auf GND ca. 170mV.

Viele Grüsse,
Michael
 

Welcome to EDABoard.com

Sponsor

Back
Top