Ethernet-Empfangsprobleme beim CS8900A

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

Reply to
Michael Dreschmann
Loading thread data ...

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

Reply to
Gerald Oppen

Hallo!

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.

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:

formatting link
(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

Reply to
Michael Dreschmann

On Sun, 01 Aug 2004 23:00:02 GMT, snipped-for-privacy@gmx.de (Michael Dreschmann) wrote: [...]

Kurzum: Probleme im analogen Teil, genau das, was ich hier auch vermute:

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
Reply to
Oliver Bartels

^^^^^^^^^ 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.

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.

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 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

Reply to
Günther Dietrich

Oliver Bartels schrieb:

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.

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

Reply to
Dieter Wiedmann

Günther Dietrich schrieb: ^^^^^^^^^

Deshalb gibts detaillierte Designregeln von den Trafo- bzw. Chipherstellern.

Gruß Dieter

Reply to
Dieter Wiedmann

Hallo!

Vielen Dank für die Antwort.

Ja, ist leider auf dem Bild nicht ausgefüllt worden.

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?

Ä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:
formatting link
(1.69 MB) Ich dachte, wenn es hier
formatting link
-> "Application Notes") funktioniert, müsste das doch auch bei mir gehen.

Ok, werde das Teil mal mit in die Uni nehmen und ein bischen nachforschen.

Wie gesagt, ist handgemacht und 4 Lagen sind im Keller halt schwierig...

Viele Grüsse, Michael

Reply to
Michael Dreschmann

Hallo!

Hast natürlich Recht. Habe das schon auf die Änderungsliste gesetzt.

Ok, auch etwas, was man mal ausprobieren kann.

Habe den TG42-1406N1

formatting link
Sollte laut dieser Webseite für den CS8900A passen und die Einbaurichtung stimmt auch mit der auf
formatting link
überein.

Ok, werde ich in Zukunft so machen. Vielen Dank für die Tipps.

Viele Grüsse, Michael

Reply to
Michael Dreschmann

| >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

Reply to
Martin Schönegg

Michael Dreschmann schrieb:

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

Gerald

Reply to
Gerald Oppen

Hi!

Nein, leider nicht, die 3V Version hat ein -3 hinter dem CQ bzw. IQ...

Michael

Reply to
Michael Dreschmann

Hallo,

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

Reply to
Michael Dreschmann

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.