640 Mbit/s gennem et 2 meter langt hår?

fre jun 08, 2007 (Anders Enggaard)

Kan man det? Mærkeligt spørgsmål. Man kan hvad man vil! :-) Nå, men i virkeligheden startede historien lidt anderledes. Kunden ville have 640 Mbit/s mellem to low-cost FPGA’er (Altera Cyclone II) forbundet med et 2m langt og meget tyndt kabel.

Et micro coax kabel fra Hitachi er vildt fascinerende fra en ingeniørmæssig vinkel. En coax, hvor inderlederen er 90um i diameter. Og så er den viklet af 7 tråde!!! Med teflon isolation, skærm og kappe er kablet bare 0.4mm tykt. Det er rigtig tyndt – så hvordan presser vi 640 Mbit/s igennem det kabel?

SI Simulering

Vi starter med en simulation for at sikre at løsningen holder vand. Opbygger en ækvivalent simuleringsmodel af kablet, finder modeller af drivere og receivere, og etablerer på den måde et virtuelt test-setup, som kan forudsige signal-integriteten i forbindelsen. Et super-vigtigt trin, fordi det sparer os for at opbygge og teste noget som alligevel ikke vil fungere i worst-case hjørnet.

640 mbit/s

Så meget tab har forbindelsen gennem det hår-tynde kabel
(blå er driver og rød er receiver)…

Med worst-case simuleringen af signalet koblet sammen med en detaljeret timing-analyse kunne løsningen godkendes på det teoretiske niveau. I et parallel forløb (glemte jeg at sige, at kunden til en afveksling havde et ekstremt tidspres? :-) , blev en kompakt seriel link-engine opbygget i FPGA logik. Interface til kundens egen FPGA-kode foregår gennem et parallel interface i 16 bit bredde, mens kommunikationen over kablet klares med 3 signal-forbindelser (clock, data-out og data-in) lidt lige som en SPI-bus, men med 640 Mbit/s.

Et lille trick

Løsningen endte på LVDS drivere og receivere i Cyclone-II pga. forskellige andre bindinger. Og low-end FPGA’er som Cyclone og Spartan har en dejlig low-cost-agtig måde at implementere LVDS drivere på. Det kom til stor gavn i det her projekt. For at opnå “rigtige” LVDS-niveauer med sådan en low-cost FPGA, skal der monteres et eksternt modstands-netværk som dæmper signalet. Men i det her projekt, hvor der er et stort tab mellem driver og receiver pga. det meget tynde kabel, kan det udnyttes til delvis at kompensere for tabet. Det trick kan ikke bruges på de dyrere FPGA familier som f.eks. Stratix II, hvor det hele er integreret – så her performer den billige FPGA bedre!

Sikkert i mål

Så samlet set en løsning, som opfylder de lidt ekstreme krav:

  • To-vejs 640 Mbit/s gennem bare 3 signal-par.
  • Ultra-tyndt 2m langt kabel.
  • Kompakt link-engine i VHDL med ord- og ramme-synkronisering.
  • Lav pris ved optimal udnyttelse af low-cost FPGA’er.
  • Gode EMC egenskaber (coax!).

Det hele blev simuleret, udviklet og testet i hardware på 6 uger. Kan du bruge det lille LVDS-trick til noget smart, så fortæl om din historie.

Kommentar

Hvad mener du?