Conectar tableros Zynq de manera rápida y determinista

0

Estoy tratando de hacer un clúster con placas Zynq-7010 para una aplicación en tiempo real. Uno de ellos será el maestro, y controlará ocho tableros de clientes. La placa maestra también recogerá los datos de los clientes. Intenté usar una conexión Ethernet de 100Mbit para conectar los nodos, pero no fue tan rápido como lo necesito. Además, no fue determinista debido al comportamiento indeterminista del cambio. ¿Podría darme una idea de cómo conectarlos de manera rápida y determinista? Editar: Cada nodo tiene una interfaz RS-485 al exterior. Los nodos hacen comunicación RS-485 hasta 10Mbit / s. El nodo maestro tiene que recopilar datos de 500 bytes de cada uno de ellos cada milisegundo. Las marcas de tiempo de cada nodo deben ser idénticas (+ -2us). Los nodos deben comenzar a responder al maestro en 20us.

    
pregunta zontragon

2 respuestas

1

Básicamente, es probable que estés fuera de suerte. Un poco más de información podría ayudar. Cuando un esclavo informa al maestro, ¿cuál es el tamaño del paquete? Su cifra de 20 usec para la latencia de los datos sugiere un máximo de 10 bytes o menos por paquete, y si eso es así, simplemente se hose.

Comience con los requisitos básicos. 500 bytes / ms de tiempo 1000 ms / segundo veces 8 unidades esclavas proporciona una velocidad de datos básica al maestro de 4 MB / s, o 32 Mbit / s. Obviamente, un bus RS485 de 10 Mbit / seg no hará el trabajo.

¿Funcionará Ethernet de 100 Mbit? Probablemente no. Debe comprender primero los requisitos generales . Suponiendo que UDP, cada paquete de datos (hasta 1518 máximo) debe ir acompañado de los siguientes campos de encabezado:

12 bytes - Interframe gap  8 bytes - Preámbulo y SFG 14 bytes - encabezado de Ethernet  4 bytes - S-tag  4 bytes - etiqueta C 20 bytes - encabezado IP  8 bytes - encabezado UDP  4 bytes - CRC 74 bytes en total

Tenga en cuenta que este requisito se aplica a todos y cada uno de los paquetes enviados por todos y cada uno de los esclavos.

Entonces, si está intentando enviar paquetes de 10 bytes, cada paquete contendrá un mínimo de 84 bytes. Y tampoco se puede invocar una estructura de encabezado minimalista personalizada. Dado que el maestro tiene que dar servicio a 8 esclavos, se requerirá un enrutador o un interruptor, y esta unidad solo responderá a un protocolo convencional.

No ha especificado exactamente lo que representa el tiempo de los datos. Una velocidad de datos de 500 kB combinada con un requisito de marca de hora de 2 usec sugiere algo así como 500 kHz / 1 byte por muestra o 250 kHz / 2 bytes por velocidad de adquisición de muestras, pero esto es totalmente una conjetura de mi parte. Y, como he dicho, su requisito de latencia de 20 usec sugiere que usted desea un tamaño de paquete pequeño. ¿Pero qué sucede si permite un tamaño de paquete grande, como 500 bytes / paquete?

Lo que podría funcionar es el uso de una disposición de pulsos de sincronización escalonada. Proporcionarías 9 líneas desde el maestro hasta los esclavos. El primero sería un reloj de adquisición a 500 kHz o 250 kHz (suponiendo que mi corazonada es correcta) que se transmitiría a todos los esclavos. Como supongo que es relativamente corto (por ejemplo, menos de 10 metros) entre esclavos, la sincronía del reloj de los esclavos sería mucho menor que su 2 usec. Las otras 8 líneas son pulsos de sincronización con una frecuencia de 1 kHz, pero espaciadas a 125 usec. Cada pulso de sincronización va a un esclavo. Cada esclavo usa una estructura de almacenamiento de datos con doble búfer, y al recibir un impulso de sincronización transmite un paquete de datos de 500 bytes al maestro utilizando Ethernet de 100 MHz. al mismo tiempo que adquiere los datos del siguiente paquete. El tiempo para cada muestra de datos está implícito en la velocidad de reloj de adquisición y la ubicación de la muestra dentro del paquete, con cada paquete que tiene un desplazamiento conocido, un múltiplo de 125 usec. Dado que el paquete Ethernet total es de 574 bytes, la sobrecarga no interferirá con el requisito de rendimiento.

    
respondido por el WhatRoughBeast
0

Supondré que, al tener nodos, están muy separados. Podría proporcionar un GPSDO (oscilador disciplinado por gps) y pps en sus nodos. De esta manera, puede proporcionar en lógica un segundo y un contador de tics del reloj para una marca de tiempo precisa. Si está en un edificio, necesitará una caída de cable de las antenas. Entonces tu precisión es lo bueno que es tu oscilador. En general, la mayoría de los relojes se pueden configurar para que sean muy precisos en uno o dos segundos, pero si necesita una precisión de holdover grande (GPS / sincronización de sincronización), más larga y precisa determinará el costo. Para grandes restos, los relojes de rubidio son muy agradables.

    
respondido por el johnnymopo

Lea otras preguntas en las etiquetas