Forum: FPGA, VHDL & Co. PCIe Switch mit FPGA


von Lars (Gast)


Lesenswert?

Hi zusammen,

mit welchem FPGA könnte man eigentlich einen PCIe 2.x switch bauen?

Wie leistungsstark muss das Teil sein? Reicht da eventuell auch ein 
CPLD?

Danke
Grüsse
Lars

von Flo (Gast)


Lesenswert?

Warum willst du das tun?
Gibt spezialisierte Chips dafür, z.b.
https://www.microchip.com/en-us/products/interface-and-connectivity/pcie-switches

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Lars schrieb:
> mit welchem FPGA könnte man eigentlich einen PCIe 2.x switch bauen?

Die Mindestvoraussetzung ist schon einmal, dass das FPGA eine 
entsprechende Anzahl von PHYs für die gewünschte Anzahl von PCIe-Lanes 
aufweisen muss und diese PHYs auch explizit für PCIe spezifiziert 
sind.

> Wie leistungsstark muss das Teil sein?

PCIe-taugliche PHYs und IPs findet man zwar grundsätzlich schon ab z.B. 
Xilinx 7 Series, aber ob sie sich für Switches eignen, muss man im 
Einzelfall schauen. Für den entsprehcneden IP von Rambus heißt es:

- Xilinx UltraScale+ series : up to Gen4 x8 on each port
- Altera 10 series (Arria, Stratix): up to Gen3 x8 on each port
- Older device families (ex. Altera V-series, Xilinx 7-series) can be
  supported upon request

https://www.plda.com/cn/node/231

Von Intel (Altera) gibt es auf jeden Fall einen IP zu kaufen, mit dem 
ein PCIe Switch realisiert werden kann:

https://www.intel.de/content/www/de/de/products/details/fpga/intellectual-property/interface-protocols/pcie-scalable-switch.html

> Reicht da eventuell auch ein CPLD?

Nein.

Neben der reinen Implementierung solltest Du Dir aber auch überlegen, 
wie Du den ganzen Kram testen willst. Ein hierfür benötigter Gerätepark, 
z.B. Oszilloskop mit PCIe-Dekoder oder ein PCIe-Protokolltester, kosten 
mindestens ein Sümmchen im oberen fünfstelligen Bereich. Und sie sind 
auch nicht ganz einfach zu bedienen.

Vor einigen Jahren entwickelte ich für einen Kunden eine Baugruppe mit 
einem fertigen PCIe Switch von PLX/Broadcom. Um das Ding in Betrieb zu 
nehmen, mussten wir dann ein Oszilloskop samt zugehörigem Techniker 
mieten, der die Messungen durchführte und interpretierte. Das ganze war 
auch gleichzeitig eine Schulung über die entsprechende Messtechnik. Und 
wohlgemerkt ging es nur darum, für einen fertigen PHY die optimalen 
Parameter zu finden und die Qualität des Leiterplattenlayouts zu 
beurteilen. Es hätte mehrerer Wochen an Einarbeitungszeit benötigt, um 
auch nur ansatzweise damit zurechtzukommen. Und dann benötigt man auch 
noch entsprechende Detailkenntnisse, um die entsprechenden Protokolle 
der Dekodersoftware verstehen und beurteilen zu können.

Bevor Du Dich also daran machst, einen eigenen PCIe Switch zu 
implementieren, solltest Du auch einmal versuchen, solch einen fertigen 
Baustein zu integrieren und konfigurieren.

von M. Н. (Gast)


Lesenswert?

Lars schrieb:
> Hi zusammen,
>
> mit welchem FPGA könnte man eigentlich einen PCIe 2.x switch bauen?

Da du es bei PCIe auch mit einem anspruchsvollen physical layer zu tun 
hast, bracuhst du einen FPGA der die notwenigen gigabit Transceiver mit 
entpsrechenden IO Standards unterstützt. Ein Artix 7 bspw. könnte das 
prinzipiell.

Wenn wir jetzt mal arbiträr von einer PCIe Lane pro Port ausgehen dann 
brauchst du für einen Switch mindestens 3 TX und 3 RX Kanäle, sonst 
macht es ja auch keinen Sinn. Da findet sich auch was.

Das größere Problem könnte sein, dass eventuell die ganzen IP Core 
Landschaften der FPGA Hersteller mehr auf PCIE Rootcomplex / Device 
ausgelegt sind. Sprich im worst case musst du viel Logik selbst 
implementieren. Da kenne ich mich aber nicht aus. Habe PCIe im FPGA nur 
als device mit klicki-Bunti IP cores gemacht.

Lars schrieb:
> Wie leistungsstark muss das Teil sein? Reicht da eventuell auch ein
> CPLD?

Nein. Zum einen wegen den fehlenden IO-Kapazitäten und zum anderen wegen 
der Logik-Menge.

von DSGV-Violator (Gast)


Angehängte Dateien:

Lesenswert?

M. H. schrieb:
> Lars schrieb:

> Da du es bei PCIe auch mit einem anspruchsvollen physical layer zu tun
> hast, bracuhst du einen FPGA der die notwenigen gigabit Transceiver mit
> entpsrechenden IO Standards unterstützt. Ein Artix 7 bspw. könnte das
> prinzipiell.

Bei Xilinx sind es die sogenannten T-Typen (T in der Typbezeichnung) die 
die für PCIe- nötiogen schnellen Transceiver mitbringen. Da gibt es wohl 
auch in der Spartan6-Reihe Typvarianten dafür. Bei Spartan6 ist auch ein 
Hardcore für PCIe inklusive, allerdings für 1.1 .

> mit welchem FPGA könnte man eigentlich einen PCIe 2.x switch bauen?
Arsch hoch, Griff zum telefon und den (Xilinx-)FAE befragen. Oder auf 
ner Messe mal die Stände der FPGA-Hersteller abklappern. Die warten 
darauf solche Kundenanfragen zu beantworten.

von J. S. (engineer) Benutzerseite


Lesenswert?

> Bei Spartan6 ist auch ein
> Hardcore für PCIe inklusive
Einen Spartan 6 sollte man echt nicht mehr einsetzen. Abgesehen von dem 
Problem, dass es kleinen kleinen Artixe im großen Gehäuse gibt, steht 
man sich mit dem Artix deutlich besser. Das P/L Verhältnis in Sachen 
Resourcen / Kosten ist Faktor 1.5 ... 2.0 besser und besonders für 
Signalverarbeitung:

Mein MUL_TEST-Design liefert für einen 128-Bit-MUL beim Spartan z.B. 64 
verbrauchte DSP-Elemente und 6000 FFs, läuft aber nur auf 80MHz. Der 
Artix braucht nur 4500 FFs sowie ebenfalls 64 DSP-Elemente und läuft auf 
über 150MHz - mit dem gleichen Design!

Noch besser ist der Artix Ultra Scale Plus: Der nutzt mehr LUTRAM, 
belegt nur 2700 FFs und braucht nur 50 DSP-Elemente. Nicht erwähnt 
werden muss, dass die Artixe obendrein generell das 2-4 fache an MULs 
haben und der größe UltraScale nochmals das Doppelte.

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.