Tarjeta vertical PCIe: ¿Genera un reloj PCI local en la placa vertical?

¿Alguien sabe si una "tarjeta vertical PCI" genera un reloj PCIe local en la placa vertical que es asíncrono con el reloj PCI en la placa base, o si el reloj PCIe proviene solo del cable adaptador que se conecta a la placa base de la PC (USB azul cable con conector pcie 1x para placa base de PC)?

la razón por la que pregunto es porque tenía curiosidad por saber si podía usar una tarjeta vertical para conectar una "tarjeta Xilix FPGA con conector de borde PCIe" para obtener un reloj PCI, específicamente, sin conectar el cable tipo USB a la Ranura PCIe de la placa base de la PC para obtener el reloj PCIe de la placa base.

Espero que haya un chip de puente PCIe en la tarjeta vertical, con un circuito de generación de reloj pcie local... ¿así funciona una tarjeta vertical? ¿Alguien sabe dónde puedo encontrar un esquema de una tarjeta vertical típica?

Tarjeta vertical PCIe 1 a 4

Este no es un producto estándar, y es muy poco probable que siga de cerca la especificación PCIe dados los trucos en su lugar. Deberá inspeccionarlo usted mismo para determinar qué circuitos integrados y otros componentes están integrados y luego determinar si alguno de ellos genera relojes de forma independiente sin estar conectado a un complejo raíz. El reloj de referencia se puede generar con la misma facilidad para cada enlace y almacenarlo en el búfer, e incluso si se genera a bordo, eso solo puede ocurrir cuando la placa está conectada.
Las preguntas sobre el uso de la electrónica están fuera de tema. No existe un requisito para que los dispositivos PCIe compartan un reloj de referencia común, por lo que no se puede determinar si esa placa distribuye o no el reloj de la placa base o genera el suyo propio sin un esquema (muy poco probable que esté disponible) o ingeniería inversa (no posible a partir de una foto).
Esto es solo un equipo estándar de criptomonedas en estos días... Seguramente alguien sabe cómo se ve el esquema de una tarjeta tan simple sin tener que comprar una para inspeccionarla...

Respuestas (2)

El uso del reloj de referencia en el conector PCIe es bastante opcional, el reloj real se recupera por separado para cada carril y el único requisito es que los carriles paralelos se deriven del mismo reloj base para que los datos se puedan intercalar y desentrelazar de manera confiable.

El cable USB tiene un par de transmisión y otro de recepción, y no existe una conexión de reloj independiente.

La tarjeta debe contener un puente PCIe para permitir que funcionen todas las ranuras, y ese puente IC tendrá que recuperar el reloj de enlace para recibir datos. No se especifica si reutiliza ese reloj o genera el suyo propio para las conexiones descendentes.

El puente IC contiene FIFO que cruzan el dominio del reloj de todos modos para permitir la comunicación de dispositivo a host y de dispositivo a dispositivo, por lo que no hay forma de saber si alimentar este dispositivo generaría un reloj y lo alimentaría a una placa FPGA.

Dado que su placa FPGA debería tener una fuente de reloj independiente de todos modos (las máquinas de estado para el entrenamiento de enlaces necesitan un reloj independiente), le sugiero que lo use y lo ejecute a través de un PLL para generar la frecuencia que necesita.

Lo más probable es que sea una fuente de 40 o 50 MHz, por lo que puede obtener fácilmente 100 MHz con buena estabilidad.

Por lo que vale, el núcleo PCIE que viene con Xilinx Vivado 2020 no permite el uso de un reloj de referencia PCIe generado internamente. por lo tanto, el reloj de referencia debe provenir de la placa... Sin embargo, sin enchufar la tarjeta Xilinx en una ranura PCIe, no tiene un reloj para ejecutar el núcleo lógico PCIe... Simplemente colgará los buses AXI internos conectado al núcleo PCIe, y no proporcionará acceso a ningún registro del núcleo PCIe...
Según lo que dice, supongo que es seguro asumir que la tarjeta vertical genera su propio reloj de referencia para ser compatible con PCIe, y este reloj de referencia puede ser asíncrono en fase con la tarjeta de referencia del complejo raíz, pero eso no importa porque el el reloj se recupera de todos modos de las transiciones de datos del paquete PCIe en el Phy en el receptor... lo que es más importante es la precisión del reloj... por lo que el espaciado de los bits es idéntico entre el transmisor y el receptor phy (+/- un período constante de un bit)...
Buen punto sobre el cable USB... solo dos pares diferenciales para datos TX, RX y sin posibilidad de enviar reloj...
@BillMoore, ¿cuál es su objetivo aquí? ¿Qué espera que suceda cuando activa el núcleo PCIe HIP sin nada conectado al bus PCIe?
Quiero decir, una tarjeta que no ha recibido la primera solicitud de CfgWr para establecer el indicador Enable en el registro de estado de PCI no se supone que hable con el bus ni conozca su propia dirección. El núcleo PCIe no puede hacer mucho sin una conexión de bus.
Los cables USB tienen tres pares: el suyo es el emparejamiento D+/D- que podría usarse para un reloj. Aunque supongo que probablemente se usaría para la señal PERSTn.
Simon, es porque estoy escribiendo un código nuevo y no tengo nada a lo que conectar la tarjeta FPGA... Quiero que la lógica que estoy probando se ejecute sincrónicamente con el reloj del núcleo PCIe... pero, por supuesto, ahora sé que puedo comprar una tarjeta elevadora PCIe barata y usarla como un soporte de tarjeta FPGA y obtener un reloj para controlar la FPGA también. En este punto, estoy de acuerdo con que el núcleo PCIe no se conecte a nada.
@BillMoore, todavía esperaría que la tarjeta FPGA tuviera un reloj independiente de todos modos, consulte su manual. Eso podría ser más confiable que depender de una placa externa que puede derivar o no su reloj de otra placa externa.

La tarjeta vertical incluirá un búfer de reloj para redistribuir el reloj PCIe.

Si bien un punto final PCIe puede recuperar su propio reloj de referencia del flujo RX entrante, esta capacidad es opcional y no se garantiza que sea compatible con ningún punto final determinado. De hecho, es raro que un punto final no requiera un reloj de referencia. Esto incluye otros usos de PCIe, como tarjetas NVMe y unidades de factor de forma U.2.

Tenga en cuenta que el reloj de referencia es diferente del reloj RX SERDES, que de hecho se recupera del flujo de datos, alineado mediante un bucle de bloqueo de retardo. El reloj de referencia es para el resto del sistema aguas arriba del SERDES: asegura que se conocen los comportamientos FIFO del punto final. El lado TX usa el reloj de referencia para hacer el reloj SERDES de transmisión, independientemente de si se suministra como un par separado o se recupera del RX SERDES.