Ich habe eine ähnliche Frage gestellt, die einige Ablehnungen erhalten hat, also formuliere ich meine Aufgabe neu (hofft, diese gibt mehr Klarheit).
Ich plane, eine serielle Hochgeschwindigkeitsverbindung (3 Gpbs Vollduplex) zwischen zwei FPGA-Karten herzustellen (Abstand zwischen den Chips < 15 cm, einschließlich der Anschlüsse), genauer gesagt zwischen Spartan 6- und Artix 7-Geräten ( diese sind nicht absolut Anforderungen, scheinen aber die billigsten mit integrierten Transceivern zu sein).
Ich bin mir nicht sicher, welches Protokoll ich wählen soll. Ich habe mich in letzter Zeit mit den RapidIO-Spezifikationen beschäftigt, aber es sieht so aus, als müsste ich einen Switch-Chip verwenden, um Geräte anzuschließen, aber Switches sind ziemlich teuer (~ $ 150 / Stück) und führen mindestens 100 ns Verzögerung sowie mehr als 10 Schichten ein PCB-Anforderung ( Beispiel ).
PCIExpress ist keine Option (obwohl der Anschluss nett ist), da es eine Verzögerung von etwa 500 ns einführt, und idealerweise untersuche ich eine Übertragungslatenz von unter 100 ns (vom parallelen Stream in einem FPGA zum parallelen Stream in einem anderen). Aufgrund der hohen Latenzzeiten ist 10-Gbit-Ethernet ebenfalls keine Option.
Es gibt auch ein Aurora-Protokoll von Xilinx ( Link ), aber ich kann keine PHY-Layer-Definitionen und Verzögerungsnummern finden. Mehr noch, obwohl alle Hochgeschwindigkeits-Serdes-Anwendungen mit niedrigen Pinzahlen werben, verwenden alle Entwicklungsplatinen mit eingebetteten Transceivern entweder SMC-, optische oder kryptische Mezzanine-Kartenanschlüsse mit 400 Pins. Gibt es eine andere Möglichkeit? Wie etwa 50-poliger Stecker oder weniger. Also, um das zusammenzufassen, sind die Fragen:
Jeder Vorschlag wird sehr geschätzt!
Aurora scheint eine vernünftige Wahl zu sein; Im Grunde sieht es so aus, als würden Sie bauen, wenn Sie versuchen würden, eine generische Schnittstelle aus Hochgeschwindigkeits-SERDES zu bauen. Es hat eine Flusskontrolle. Es hat sogar Channel-Bonding, was anscheinend von Xilinx-Hardware unterstützt wird. Das sollte Ihnen Ihre erforderliche Geschwindigkeit von theoretisch einem einzelnen Verbindungspaar in jede Richtung bei maximal 3 Gpbs geben.
Dieser Link gibt einige Latenzzahlen für einen Loopback-Link an. Die Platine-zu-Platine-Latenz hängt offensichtlich von der Leitungsverzögerung ab.
Es sollte keinen komplexeren Aufbau als das FPGA selbst erfordern (normalerweise mindestens 4?). Ich würde vorschlagen, die PCIe-Anschlüsse zu verwenden, auch wenn Sie das Protokoll nicht verwenden. Alternativ bieten SATA-Anschlüsse möglicherweise eine gute Option für kurze Kabel.
Sie spezifizieren den PHY überhaupt nicht, aber diese App-Note gibt ein Beispiel dafür, wie zwei Evaluierungskarten verbunden werden. Sie sind nur mit Mini-Koaxialkabeln mit SMA-Anschlüssen verdrahtet, also schätze ich, dass die erforderliche Impedanz die üblichen 50 Ohm ist?
Sie sollten unbedingt die Gigabit-Transceiver verwenden. Mit Spartan 6 können Sie mit einem Transceiver bis zu 3,125 Gbps senden, das ist also kein Problem.
Diese Transceiver funktionieren sehr gut und sind sehr einfach zu implementieren.
Wenn Sie SFP-Anschlüsse auf beiden Platinen haben, müssen Sie nur ein SFP-Kupferdrahtkabel kaufen, um die beiden Platinen zu verbinden. Wenn Sie SMA haben, müssen Sie nur vier SMA-Kabel kaufen. Es gibt auch SFP-zu-SMA-Kabel.
Wenn ich diese Art von Projekt durchgeführt habe, definiere ich normalerweise mein eigenes Protokoll, aber Sie müssen einige K-Wörter senden, um die Bytes im seriellen Strom auszurichten. Sie müssen auch eine Leerlaufsequenz für den elastischen Puffer definieren. Normalerweise verwende ich das gleiche K/D wie für Ethernet definiert.
pjc50
Tony Stewart EE75
David Tweed
Andi aka
Benutzer37741
Benutzer37741
Benutzer37741
Benutzer37741
Benutzer37741
Tony Stewart EE75
Andi aka
Tony Stewart EE75
pjc50
Tony Stewart EE75
CapnJJ