Ich verwende einen GTXE2-Transceiver der Xilinx 7-Serie, der als SATA-Host-PHY konfiguriert ist. Dieser Transceiver ist mit einem SATA-Host-Controller und einem SATA-Gen1-Gerät verbunden.
Während der Initialisierung kann ich COMRESET, COMINIT und COMWAKE von Host und Gerät sehen. Sie wurden auf RXDATA/TXDATA erfasst. TX/RXELECIDLE werden korrekt deaktiviert. Der Host-Controller ist in der Lage, eine vollständige OOB-Sequenz zu empfangen und darauf zu antworten.
Danach sendet der Host D10.2
mit 1,5 Gbit/s, um die Geschwindigkeitsaushandlung zu starten. Das Gerät antwortet mit
Primitive, die mit 1,5 Gbit/s gesendet werden.
Von RXDATA kann ich jedoch nur D27.3 D10.2 D10.2 K28.5
Symbole sehen, die nur für einen Taktzyklus erscheinen, nämlich 20'haaaaa, gefolgt von 20'h5f0e4. Danach sehe ich 20'h55555, gefolgt von 20'h5f0e4. Das D27.3
und K28.5
Zeichen schien korrekt zu sein. D10.2
schien entweder vertauscht oder verschoben zu sein. Weil der GTXE2-Transceiver nicht decodieren kann
, die Geschwindigkeitsaushandlung ist fehlgeschlagen.
Ich habe RXCDR_CFG
auf (72'h0380008BFF40100008) eingestellt. Das FPGA ist mit einem Gen1-Gerät verbunden.
Ich habe ein Steuersignal implementiert, das ausgelöst wird, RXCDRHOLD
wenn ich 20'haaaaa finde, gefolgt von 20'h5f0e4 im Datenstrom. Nachdem ich das hold
Signal losgelassen habe, wird es 20'h55555 und 20'h5f0e4. Wenn ich nicht freigebe RXCDRHOLD
, sehe ich Müll an RXDATA
. Es scheint also, dass das Freigeben RXCDRHOLD
nur einen Teil der verbessert
Figuren. K28.5
und D27.3
hatte recht. D10.2
Bit getauscht oder verschoben wird.
Ich bin auf einen anderen Beitrag gestoßen, in dem der Autor möglicherweise ähnliche Probleme hatte. Er modifizierte RXCDR_CFG
: Konfigurieren eines GTXE2-Transceivers der 7er-Serie für Serial-ATA (Gen1/2/3)
Ich habe mich gefragt, ob jemand dieses Problem mit GTXE2-Transceivern der Xilinx 7-Serie erlebt hat.
Ich habe noch einmal über dein Inversionsproblem nachgedacht. Das Problem ist, dass Sie oder Ihre Platine oder Ihr Gerät die RX+ und RX- Drähte für den Transceiver-Eingang vertauscht haben.
Ihre GTXE2 ist für einen 20-Bit-Bus und keine 8B/10B-Codierung konfiguriert, sodass die direkte Inversion jedes Bits, das in Ihrer Messung angezeigt wird, durch die falsche Polarität an den Eingangspins verursacht wird. Sie können die Polaritätsumkehrung ( RXPOLARITY
) für RX im Transceiver aktivieren. Die Option wird verwendet, um die Pins zu tauschen, da PCB-Designer die Drähte tauschen könnten, um Sprünge und Vias zu reduzieren.
Sie sollten auch in Ihrem Platinenschaltplan nachsehen, ob es einen Hinweis auf vertauschte Drähte gibt.
RXPOLARITY
. Es ist ein Transceiver-Generikum.RXPOLARITY
Parameter und deinem Schaltplan gesucht? Habe ich recht?
Martin Zabel
RDXDATA
, dieRXELECIDLE
,RXCDRHOLD
, und enthältRXCOMWAKEDET
.Paebbels
Paebbels
RXCDRHOLD
? Sie müssen warten, bis die vollständige OOB-Handshake-Phase vorbei ist, weil die OOB-Bursts gefüllt sindsunnitisch
sunnitisch
sunnitisch