¿Por qué la primitiva SATA ALIGN se cambia o cambia en la salida RXDATA del transceptor GTXE2 de la serie 7?

1

Estoy usando un transceptor GTXE2 serie 7 de Xilinx configurado como SATA host PHY. Este transceptor está interactuando con un controlador SATA Host y un dispositivo SATA Gen1.

Durante la inicialización, puedo ver COMRESET, COMINIT y COMWAKE desde el host y el dispositivo. Han sido capturados en RXDATA / TXDATA. TX / RXELECIDLE se anulan correctamente. El controlador del host puede recibir y responder a la secuencia OOB completa.

Después de eso, el host envía D10.2 a 1,5 Gbps para iniciar la negociación de velocidad. El dispositivo está respondiendo con \ $ ALIGN_p \ $ primitivas, que se envían a 1.5 Gbps.

Sin embargo, desde RXDATA, solo puedo ver los símbolos D27.3 D10.2 D10.2 K28.5 que aparecen para un solo ciclo de reloj, que es 20'haaaaa, seguido de 20'h5f0e4. Después de eso, estoy viendo 20'h55555, seguí por 20'h5f0e4. Los caracteres D27.3 y K28.5 parecían ser correctos. D10.2 parece haber sido cambiado o cambiado. Debido a que el transceptor GTXE2 no puede decodificar \ $ ALIGN_p \ $, la negociación de velocidad falló.

He establecido RXCDR_CFG a (72'h0380008BFF40100008). El FPGA está conectado a un dispositivo Gen1.

He implementado una señal de control para liberar RXCDRHOLD cuando encuentro 20'haaaaa seguido por 20'h5f0e4 en el flujo de datos. Después de liberar la señal hold , se convierte en 20'h55555 y 20'h5f0e4. Si no libero RXCDRHOLD , veo basura en RXDATA . Así que parece que la liberación de RXCDRHOLD solo mejora parte de los caracteres \ $ ALIGN_p \ $. K28.5 y D27.3 tenían razón. D10.2 es un bit intercambiado o cambiado.

Me he encontrado con otra publicación, en la que el autor puede haber experimentado problemas similares. Él modificó RXCDR_CFG : Configuración de un transceptor GTXE2 serie 7 para Serial-ATA (Gen1 / 2/3)

Me preguntaba si alguien ha experimentado este problema con los transceptores GTXE2 de la serie 7 de Xilinx.

    
pregunta sunni

1 respuesta

2

Pensé de nuevo en tu problema de inversión. El problema es que usted o su PCB o su dispositivo intercambiaron los cables RX + y RX- por la entrada del transceptor.

Su GTXE2 está configurado para un bus de 20 bits y sin codificación 8B / 10B, por lo que la inversión directa de cada bit visto en su medición se debe a la polaridad incorrecta en los pines de entrada. Puede habilitar la inversión de polaridad ( RXPOLARITY ) para RX en el transceptor. La opción se usa para intercambiar los pines, porque los diseñadores de PCB podrían intercambiar los cables para reducir saltos y vías.

También debe consultar el esquema de sus tableros si hay una sugerencia de cables intercambiados.

    
respondido por el Paebbels

Lea otras preguntas en las etiquetas