Guten Morgen,
ich bin dabei einen Vortrag demnächst über FireWire zu halten, und da
sind ein paar Hürden die ich nicht überwinden kann.
Um anzufangen geht es um die Version 1394b des FireWire-Busses, wo als
Signalcodierung 8b10b benutzt wird. Bei diesem Standard sind sehr hohe
Datenraten möglich, aber eben mittels dieser 8b10b-Codierung!(habe das
auf einer Seite gelesen)
Frage: WIE ermöglicht diese Codierung solche 'hohe' Datenraten?
Ich habe auch sehr viel über dieses Codierverfahren recherchiert , aber
verstanden habe ich es bis jetzt immer noch nicht. ZB ist von 'running
disparity' dauernd die Rede, aber warum das notwendig ist wird mir nicht
klar. Oder warum dieser 'Gleichspannungsausgleich' so wichtig ist und
wie man den Takt rückgewinnen kann? Die Erklärungen auf Google sind, für
mich zumindest, relativ unverständlich und ziemlich kompliziert
erklärt(man findet nicht viele konkrete Beispiele mit Erklärungen dazu).
Hat jemand von euch eine Ahnung von diesem Codierverfahren im
Zusammenhang mit FireWire?
Wenn meine Frage hier beantwortet wurde, dann hätte ich noch ein paar
andere Fragen zum Thema 'FireWire' :) Bin für jeden Lösungsvorschlag
dankbar! :)
Und noch was: ich habe wirklich echt viel recherchiert und einfach keine
verständliche Erklärung zu diesem Codierverfahren gefunden. Wenn jemand
jetzt doch noch eine Seite finden sollte wo es echt gut erklärt ist,
dann entschuldige ich mich schon im vorraus dass ich diese Seite
übersehen habe.
Liebe Grüsse,
Tommy
8b10b ist doch auf Wikipedia ganz gut erklärt. Das sollte für
Normalmenschen völlig ausreichen.
Wenn du es noch genauer willst, kommt man leider nicht um heftige
Mathematik drumherum.
Es ist aber genau das was ich gesagt habe, dass wikipedia es nicht gut
genug für mich erklärt. Diese deutsche Version zeigt nicht einmal die
Code-Tabellen, und in der engl. Version fehlen Details wie zB welchen
Wert hat die Running Disparity am Anfang?
Wiki ist nicht dein Banknachbar. Du mußt dann schonmal Google
weiterbenutzen.
Hatte ich zufällig vor ein paar Wochen gemacht und mir waren es mehr als
genug Infos. Allerdings hatte ich auch genug Vorkenntnisse, die mir
halfen die Infos richtig einzuordnen.
Hier mal ein Stichwort: Ethernet "wander"
Hab Google GANZ durchgewühlt aber vergebens! Und ich habe nicht viel
Vorkenntnisse, ausser dass ich in der Zwischenzeit beim durchwühlen
gelesen habe dass Ethernet usw solche Codierungsverfahren benutzen, aber
das ist keine Antwort auf meine Frage.
schon bei der "Quelle" direkt gefragt
wird ja wohl irgendwer spezifiziert haben...
oder im "linux -firewire -kernel developer board.." ;-) (oder im
sourcecode)
ps. warum ist das eigetlich "wichtig" für dich..
wichtig ist doch nur, dass einsen und nullen a) Geleichverteilt sind,
und b) möglich oft zwischen eins und Null gewechselt wird..
grund ist ja auch klar: damit man den tackt nicht verliert..
wie das jetzt bis ins letzte detail sichergestellt wird, ist doch
"nebensächlich"??
Ich trage ein Vortrag vor über FireWire und bei 1394b wird 8B10B
verwendet um auf diese hohen Taktraten zu kommen. Der Professor stellt
dann typische fragen wie:
"Wie ist es möglich mittels dieses Codierungsverfahren eine hohe
Taktrate zu erhalten?"
Oder
"Wie funktioniert 8B10B?"
und einsen und nullen sind nicht gleichverteilt, hab sowas gelesen dass
dann zB entweder 5 nullen und 5 einsen, oder 6 nullen und 4 einsen oder
4 nullen und 6 einsen gesendet werden.
Und wenn dadurch ja der Takt wiedergeswonnen wird, wie gewinnt man dann
die versendeten Daten wieder zurück?
> oder 6 nullen und 4 einsen oder>4 nullen und 6 einsen gesendet werden.
ich hätte aus den wiki Einträgen heraus gelesen dass eben "running
disparity" genau das macht
die mit 6 nullen und die mit 4 nullen abzuwechseln, dass es in summe
gleich verteilt ist..
kann aber auch nicht stimmen..
> wie gewinnt man dann>die versendeten Daten wieder zurück?
vermutlich so wie "überall" Prüfsumme + nochmal "anfordern"
hat aber jetzt nicht direkt mit 8b10b zu tun, da muss wohl wo anders
suchen..
aber wie du siehst, ich kann dir da auch nicht weiter helfen, deshalb ja
der Vorschlag direkt in der Spezifikation (wo auch immer man die
bekommt, vielleicht muss man auch aktiv nachfragen, google hat halt auch
nicht alles..) nach zuschauen
genau das habe ich ja auch dort gelesen, aber ich bin mit diesem
'running disparity' genau so unsicher wie du...
> vermutlich so wie "überall" Prüfsumme + nochmal "anfordern"
habe nicht wirklich erfahrung mit codierverfahren, kann sowas dann also
nicht wissen.
> > aber wie du siehst, ich kann dir da auch nicht weiter helfen, deshalb ja> der Vorschlag direkt in der Spezifikation (wo auch immer man die> bekommt, vielleicht muss man auch aktiv nachfragen, google hat halt auch> nicht alles..) nach zuschauen
hm, hatte gedacht dass evtl jemand hier ein skript oder einen powerpoint
von einem Professor über 8B10B hätte, und mir so weiterhelfen könnte...
> Hab Google GANZ durchgewühlt aber vergebens!
Böldsinn!!!
Und Google ist auch nicht das Internet oder gar ne Bibliothek.
> Und ich habe nicht viel Vorkenntnisse,...
Ja, das stimmt als 1. Schritt zur Selbsterkenntis ;-)
Vermutlich ist 1992 dein Baujahr? Hm. Ich habe 1. keine Lust endlos zu
schreiben, 2. kann ich dir auch vieles nicht erklären bzw. mathematisch
herleiten (Ich stelle meine Arbeit immer an einem bestimmten Punkt zu
einem Thema ein. Nämlich dann wenn es für mein Ziel ausreichend ist), 3.
kenne ich kein Skript und wenn es das gäbe, bräuchte man deine Arbeit ja
nicht mehr.
Du mußt einfach lernen richtig zu suchen. Hier lese mal die nächsten
Tage bis du keine Lust mehr hast:
http://www.google.de/search?hl=de&source=hp&q=ieee+8b10b&gbv=1
8B10B ermöglicht keine hohen Datenraten bzw. der Satz ist so einfach
sinnverkehrend. Vermutlich sollst du es mit dem alten 10MBit-Ethernet
vergleichen, dann macht es eher Sinn:
Dort wurde pro Datenbit sehr viel Taktanteil übertragen, nämlich genau
die Hälfte der übertragenen Energie pro Bit für die Taktung verbraten.
Bei 8B10B ist deutlich (Ich vermeide hier extra das Wort viel oder
'hohe')weniger Takt enthalten. Das siehst du am Verhältnis 10 zu 8. Wie
das Verhältnis bei Uralt-Ethernet ist, darfst du dir als Hausaufgabe
selbst überlegen. Gutes Stichwort ist auch Symbol bzw. Baud vs. Bit. Und
dann schau dir die entstehenden Spektren und Lock-Zeiten für die
Taktregenerierung mal an.
Zu meiner Zeit gabs eben noch kein Internet. Daher ist meine Generation
aus deiner Sicht unglaublich störrich und anspruchsvoll.
(bissl viel heiße luft...)
>Bei 8B10B ist deutlich weniger Takt enthalten. Das siehst du am Verhältnis >10 zu
8.
und wieviel "takt" ist dann in 64b66b (also 64 zu 66) enthalten ;-)
vielleicht kannst das etwas technischer ausdrücken, damit man versteht
was du meinst..
>8B10B ermöglicht keine hohen Datenraten
hast du z.b. die überschriften deiner google-hits gelesen
der 2. ist
"A new 8B10B block code for high speed data transmission"
An dieser Stelle verschwimmen die Unterschiede zwischen den klassischen
Betrachtungsweisen von Codierung und Modulation.
10MBit Ethernet kann man als Leitungscode 2B1B betrachten. Andere Name
für gleiche Sache ist Biphase. 1 Bit wird in zwei Bits 'Blöcke'
aufgeteilt, wobei beide Blöcke genau gegensätzlich sind und die Grenze
zwischen beiden Blöcken nun fallend oder steigend sein kann und mit
dieser Eigenschaft das wahre übertragene Bit codiert ist.
http://de.wikipedia.org/wiki/Manchester-Code
(Wobei es bei Biphase diverse Varianten und Namen gibt, absolut,
differentiell usw. Auswirkung auf das notwendige SN-Verhältnis ist nicht
oder kaum gegeben. FM ist mehr oder weniger auch das gleiche. Der
Unterschied ist nicht mehr als ca. 2dB, was recht wenig ist wenn man es
mit anderen Codierungen vergleicht)
Aus informationstheoretischer Sicht zählt nur die notwendige Energie pro
Einzelbit aus dem Basisband bei einem bestimmten gewünschten
Signal-Rauschabstand.
Durch die Umcodierung verschiebt und komprimiert man das sich ergebende
Spektrum hin zu einem optimalen zu übertragenen Frequenzbereich.
Bisserl hochnäsig für so wenig Wissen seit ihr schon. ciao!