Forum: FPGA, VHDL & Co. 8b/10b Kodierung mit XILINX CPLD


von Camel (Gast)


Lesenswert?

Um einen Ethernet Transceiver anzusprechen muss ich eine 8b/10b
Kodierung durchführen. Das würde ich gerne mit einem CPLD von XILINX
erledigen. In der XAPP336 bzw. 391 wird ein entsprechender
Encoder/Decoder vorgestellt, den VHDL-Code gibt es auch dazu.

Das Problem: Laut der Simulation mit ModelSim braucht der Encoder 6
clock cycles um einen 8Bit Wert in den entspr. 10Bit Wert umzuwandeln.
D.h. dass mein CPLD mind. 6 Mal schneller getaktet sein muss als mein
8Bit-Bus. Sehe ich das richtig?

Was mache ich nun wenn mein Bus 40MHz hat? Das CPLD läuft leider nicht
mit 240 MHz ggg

von Matthias (Gast)


Lesenswert?

Hi

8b/10b ist doch, wenn ich nicht irre, GigaBit-Ethernet auf Glasfaser?

AFAIK ist doch die Kodierung 8b/10b nur eine statische Geschichte die
sich mit einer Look-Up-Table erschlagen lassen sollte. Kannst du den
VHDL-Code mal posten?

Matthias

von Camel (Gast)


Angehängte Dateien:

Lesenswert?

>>8b/10b ist doch, wenn ich nicht irre, GigaBit-Ethernet auf Glasfaser?

Ja, das ist korrekt.


Im Anhang ist der VHDL Code für das Encoding. Das ganze läuft über 3
oder 4 Statemachines. Die eigentliche Kodierung wurde kombinatorisch
gelöst. Hat natürlich den Vorteil, dass das selbst in einen XC9536
passen würde. Aber eben mit einer Latency von 6 Cycles. Leider auch
nicht pipelined, d.h. ich kann den nächsten Wert erst nach 6 Takten
einlesen.

Evtl. lassen sich mehrere Encoder parallel betreiben?


Ich denke dass eine entsprechende Look Up Table nicht in ein CPLD
passt. Das wäre wohl eher was für ein FPGA?

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.