Hallo, Das neue RPI 4 Modul "CM4" hat eine PCIe gen 2 verausgeführt. Ich kenne mich mit PCIe garnicht so aus aber kann man PCIe Gen 3.0 am CM4 verwenden, also ich meine sind aktuelle PCIe devices Abwärtskompatibel? mfg
Hallo, ja, die höheren Versionen sind abwärtskompatibel. Der Bus/Protokoll handelt das entsprechend aus, was der langsame Teilnehmer noch schafft. Gruß,
Das ist mechanisch narrensicher. Wenn die Karten in den Slot passen, so ist das auch kompatibel.
pcie schrieb: > Das neue RPI 4 Modul "CM4" hat eine PCIe gen 2 verausgeführt. Ich kenne > mich mit PCIe garnicht so aus aber kann man PCIe Gen 3.0 am CM4 > verwenden, also ich meine sind aktuelle PCIe devices Abwärtskompatibel? JEDER PCIe Link startet als Gen1 Link. Per Handshake wird dann auf die nächsthöhere Generation geschaltet, solange beide Linkparner das dann unterstützen. Sagt einer Stop, ist die Aushandlung zuende. Damit ist die Rückwärtskompatibilität gegeben. Beim Pi wirst Du eher ein Treiberproblem haben. Viele PCIe Devices sind nicht beim Kernel dabei. Dazu gibt es noch das BAR-Problem. BAR sind die Base Address Registers, d.h. die Register, wo der Kernel den Karten Adressräume zuordnet. Der Pi hat standardmäßig einen relativ kleinen Adressraum für PCIe-Karten, so dass Du beispielsweise keine PCIe-Grafikkarten zum Laufen bekommen wirst, weil die ein 256MB-Fenster haben wollen, und das gibts halt beim Pi nicht. Manche Treiber enthalten auch x86-Spezialitäten, die es auf ARM so nicht gibt. Das musst Du dann entsprechend per #ifdef anpassen. fchk
Vielen Dank für eure Antworten. Deine Erklärung, fchk war sehr Aufschlussreich. Du sagtest, dass man wird ein Treiberproblem bekommen. Wo kann ich mir ansehen, welche treiber im Kernel implementiert sind? Mit geht es vorallem um eine PCIe-PCIe bridge, da ich noch 4 Lanes, für 4 Devices benötige. Diese sind 3 Mac-Controller (z.b. LAN7430) und eine PCIe zu PCI bridge, z.b. der xio2001. Beide Devices habe ich schonmal gefunden: https://github.com/raspberrypi Auf www.kernel.org finde ich keine BCM2711_defconfig :(
Schau mal hier: https://github.com/geerlingguy/raspberry-pi-pcie-devices Der Typ hat auch einen Youtube Kanal. https://www.youtube.com/watch?v=x0wl3ZaOq_g Er hat sehr viel Arbeit in diese Geschichten investiert. Das ist die Top-Quelle. fchk PS: Für Dein Vorhaben ist ein Jetson Nano oder ein Xavier NX deutlich besser geeignet. Der Jetson Nano hat PCIe Gen2 x4 (also 4 Lanes anstelle nur einer beim Pi), und damit hast Du viermal so viel Bandbreite. Die wird bei dreimal Gigabit Ethernet schon ein Problem. Du wirst die drei Ports eher nicht mit voller Geschwindigkeit betreiben können. Beim Nano kein Problem. Da solltest Du eine i340-basierte 4GBE-Netzwerkkarte mit voller Last bereiten können. Xavier NX hat noch deutlich mehr Rechenleistung und einen PCIe Gen2 x1 extra, den Du z.B. für Deine PCIe-PCI-Brige verwenden kannst.
:
Bearbeitet durch User
Danke sehr fchk, ich bleibe aber bei dem Cm4. Die Ethernetschnittstellen werden nicht vollgebrummt. Außerdem ist der Preis bei RPI4 unschlagbar. Das NVIDIA kostet 10x soviel. Und Wärmeentwicklung ist auch ein thema, da ist RPI4 im Vorteil.
pcie schrieb: > Und Wärmeentwicklung ist auch ein thema, da ist RPI4 > im Vorteil. Woher weißt Du das? Hast Du mal ein Nano in den Fingern gehabt? fchk
Ich hab ein paar sachen im netz gesucht, Leistungsaufnahme. Ja das NVIDIA ist schon sehr sehr schnell aber es braucht auch 15W und das ist für meien Anwendung schon zuviel :) Das RPI4 brauchte dagegen bei volllast 7W. Um welchen faktor das NVIDIA bestimmte sachen schneller rechnet, dazu kannn ich nichts sagen.
Vermeintlich Wissender schrieb: > Der Bus/Protokoll > handelt das entsprechend aus, was der langsame Teilnehmer noch schafft. Das klingt ein wenig so, als wäre PCIe noch ein paralleler Bus zu allen Geräten. Dem ist allerdings nicht so. PCIe sind Point-to-Point Verbindungen zwischen zwei Geräten. Dieser Link kann dementsprechend auf den kleinsten gemiensamen Nenner der beiden Endstellen gebracht werden. Das hat zur Folge, dass auch eine langsame PCIe Karte mit Gen 1 nicht das komplette PCIe System lahmlegt. (Die Aussage PCIe Bus kommt hauptsächlich aus der Software-Ecke, da es die Leute tatsächlich geschafft haben, trotz der massiven Hardware- und Topologieänderungen von PCI zu PCIe die Softwareabstraktion nahezu identisch zu halten)
Wieviel Geräte lassen sich an einer einzelnen Lane anschliesen, wenn man ständig mit PCIe-switches erweitert? Da gibt es doch sicherlich eine begrenzung.
pcie schrieb: > Wieviel Geräte lassen sich an einer einzelnen Lane anschliesen, wenn man > ständig mit PCIe-switches erweitert? Da gibt es doch sicherlich eine > begrenzung. PCIe ist immer und grundsätzlich eine Punkt-zu-Punkt Verbindung. Ein Gerät an einem Ende, eines am anderen. Die Bridge ist auch ein Gerät. Brigdes solltest Du eher nicht kaskadieren, sondern eher eine mit der passenden Anzahl an Downlink-Ports nehmen. Sowas z.B. https://www.diodes.com/assets/Datasheets/PI7C9X2G608EL.pdf Dazu brauchst Du noch EINEN Clock Buffer mit der passenden Anzahl an Ausgängen, der RefClk an die einzelnen Downlinks verteilt. Sowas z.B. https://www.silabs.com/documents/public/data-sheets/Si53156.pdf Oder aber Du nimmst Netzwerk-Controller mit mehreren Ports. Ein Intel i350-AM4 wäre beispielsweise eine übliche Wahl. Marvell und Broadcom haben da auch einiges im Angebot. fchk PS: Die offiziellen PCIe Standards solltest Du gelesen haben. Und beim Leiterplattenentwurf sollten Dir Sachen wie Impedanzkontrolle, Length Matching (auf 0.15mm innerhalb einer Differential Pairs) und die üblichen Layout-Regeln bekannt sein.
:
Bearbeitet durch User
> PS: Die offiziellen PCIe Standards solltest Du gelesen haben. Und beim > Leiterplattenentwurf sollten Dir Sachen wie Impedanzkontrolle, Length > Matching (auf 0.15mm innerhalb einer Differential Pairs) und die > üblichen Layout-Regeln bekannt sein. - Skew kleinhalten bei Leiterpaaren - diffs bei PCIe >= Gen. 2 auf 85 Ohm routen. - single ended Signale bei PCIe >= gen. 2 auf 50 Ohm routen. - bei Switch: -> Clock auftrennen und mit Clock-expander verteilen -> Längenmatching für jedes Lane. (schön gedenglischt) -> Platz zwischen zwei Diff´s >= 2*w+s -> AC-Coupling in alle Transmit diffs? -> hab das an einem Beispiel vom LAN7430 gesehen, ich mutmaße das jedes Transmit paar AC-mäßig entkoppelt wird. Auch das Transmit zwischen Prozessor/PCIe host und PCIe switch? -> müssen die Diff-Signal terminiert werden? -> wieso befinden sich bei diesem Beispiel (siehe link unten) die CAP´s im RX? https://blog.mbedded.ninja/electronics/communication-protocols/pci-express-pcie/pcie-hardware-design-guide/pcie-edge-connector-schematic-symbol-and-example-design.png
pcie schrieb: > - Skew kleinhalten bei Leiterpaaren > - diffs bei PCIe >= Gen. 2 auf 85 Ohm routen. > - single ended Signale bei PCIe >= gen. 2 auf 50 Ohm routen. hier hast Du nur clkreq, wake und perst, und die sind völlig unkritisch. > - bei Switch: > -> Clock auftrennen und mit Clock-expander verteilen > -> Längenmatching für jedes Lane. (schön gedenglischt) > -> Platz zwischen zwei Diff´s >= 2*w+s > -> AC-Coupling in alle Transmit diffs? > -> hab das an einem Beispiel vom LAN7430 gesehen, ich mutmaße > das jedes Transmit paar AC-mäßig entkoppelt wird. Auch das Transmit > zwischen Prozessor/PCIe host und PCIe switch? TX von einer Seite kommen zum RX auff der anderen Seite, und die Kondensatoren (max 0402) kommen immer auf die TX-Seite. > -> müssen die Diff-Signal terminiert werden? nein > -> wieso befinden sich bei diesem Beispiel (siehe link unten) die > CAP´s im RX? Weil das RX von der Karte das TX vom Host ist, und am TX kommen die Cs hin. fchk
Hallo, Wenn ich einen switch verwende, dann muss der CLK durch nen Buffer wie z.b. den Si53156 aufgetrennt werden. Stimmt die grundsätzliche Struktur, wie ich sie auf der Abbildung zeige? Wie lang muss die Clockleitung zwischen Host und Switch sein? Ich mutmaße das die Strecken L_CLK0a + L_CLK0b == L_{Rx, Tx} sein müssen. Wie funktioniert das negotiation? Mal angenommen der Host gang Gen2, der switch könnte Gen3 und drei devices an dem switch könnten Gen1, Gen2 und Gen3. In diesem Fall würde die Kommunikation (mit dem Si53156) nur mit Gen2 funktionieren, also das Device 1 dürfte nicht funktionieren können, da es den höheren Takt nicht kann. Für so einen Fall bräuchte ich dann ein Buffer mit PLL, der die Clocks anpasst, muss ich das dann händisch per I2C machen oder kann das z.b. der P16C20800S übernehmen? Bei meinem Projekt wird es aber so sein, dass ich einen Gen2 Host habe und einen Gen2 Switch verwende. Die devices sind Gen4 oder Gen5. In diesem Fall dürfte einer "dummer" Clockbuffer wie der Si53156 ausreichen.
pcie schrieb: > Wenn ich einen switch verwende, dann muss der CLK durch nen Buffer wie > z.b. den Si53156 aufgetrennt werden. Stimmt die grundsätzliche Struktur, > wie ich sie auf der Abbildung zeige? Ja, alle differentiellen Signale sind immer Punkt-zu-Punkt Verbindungen, da darfst Du keinerlei Verzweigungen oder Stichleitungen haben. Das gilt auch für Refclk. Und: Refclk hat keine AC-Kopplung. > Wie lang muss die Clockleitung zwischen Host und Switch sein? Ich > mutmaße das die Strecken L_CLK0a + L_CLK0b == L_{Rx, Tx} sein müssen. Das ist unkritisch. Der eigentliche Bitclock läuft auf den TX und RX Lanes mit. Und die TX Lanes müssen auch nicht mit den RX Lanes abgeglichen sein. Schau in den PCIe Standard, da steht alles drin. > Wie funktioniert das negotiation? Mal angenommen der Host gang Gen2, der > switch könnte Gen3 und drei devices an dem switch könnten Gen1, Gen2 und > Gen3. In diesem Fall würde die Kommunikation (mit dem Si53156) nur mit > Gen2 funktionieren, also das Device 1 dürfte nicht funktionieren können, > da es den höheren Takt nicht kann. Falsch. Der PCIe RefClk ist immer konstant 100MHz, egal bei welcher PCIe Generation. Die Anforderungen an die Stabilität des Clocks wird mit jeder Generation höher, nicht aber die Frequenz. fchk
Danke sehr fchk, noch zwei Fragen: Wozu wird der refclock benötigt? Alle devices haben eine eigene Taktquelle, außerdem ist der Takt in tx und rx mit eingebettet. Ich lese in den Artikel immer wieder, das man sogar die polarität vertauschen und lanes vertauschen kann. Aber ich bin mir nicht sicher ob das eine besonderheit von Gen4 doer höher ist oder ob das PCIe schon immer konnte.
pcie schrieb: > noch zwei Fragen: Wozu wird der refclock benötigt? Alle devices haben > eine eigene Taktquelle, außerdem ist der Takt in tx und rx mit > eingebettet. Die lokalen Oszilatoren können auseinanderdriften, und dann müsste man in den Datenstrom Bits einfügen oder wegnehmen. Durch einen gemeinsamen Referenztakt vermeidet man das. Der Receiver wird dadurch einfacher realisierbar. > Ich lese in den Artikel immer wieder, das man sogar die polarität > vertauschen und lanes vertauschen kann. Aber ich bin mir nicht sicher ob > das eine besonderheit von Gen4 doer höher ist oder ob das PCIe schon > immer konnte. Das ist unabhängig von der Generation, aber ich bin mir nicht sicher, ob alle Bausteine das unterstützen müssen. Die Idee dahinter ist, dass man das Layout einfacher und aus HF-technischer Sicht besser hinbekommt, denn Du solltest ja nach Möglichkeit möglichst keine Vias haben. Schau in die Datenblätter der beteiligten ICs. fchk
Hallo, ich dachte mir, ich nutze diesen Thread weiter. Ich beschäfftige mich gerade mit dem PI7C9X2G404EL. Im Datenblatt wird leider nicht geklärt wohin IREF mit einem 475 Ohm Widerständ verbunden werden soll.
Frank K. schrieb: > alle differentiellen Signale sind immer Punkt-zu-Punkt Verbindungen CAN, RS485, RS422 ... PTP und differentielle Übertragung sind zwei paar Schuhe.
späte Korrektur schrieb: > Frank K. schrieb: >> alle differentiellen Signale sind immer Punkt-zu-Punkt Verbindungen > > CAN, RS485, RS422 ... > PTP und differentielle Übertragung sind zwei paar Schuhe. Hier ging es ausschließlich um PCIe.
pcie schrieb: > Hallo, > ich dachte mir, ich nutze diesen Thread weiter. Ich beschäfftige mich > gerade mit dem PI7C9X2G404EL. Im Datenblatt wird leider nicht geklärt > wohin IREF mit einem 475 Ohm Widerständ verbunden werden soll. Geht gegen GND. Wenn Du Dich als Firma registrierst, bekommst Du Zugriff auf ein Design Kit zu dem Teil. Da ist auch ein Demoboard als Orcad/Allegro Dateien und als PDF Schaltplan dabei, sowie Errata, Design Guidelines etc. fchk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.