Diseño de sistema de transmisión de datos Gigabit Ethernet basado en FPGA
Escrito sobre las ventajas de la transmisión Ethernet. En comparación con el puerto serie, la velocidad de transmisión es lenta y no se puede transmitir a largas distancias. PCIE no puede transmitir a largas distancias, por lo que la elección de Ethernet se basa en la velocidad de transmisión y el uso flexible del sistema.
Las ventajas de elegir la placa de desarrollo FPGA xc7vx485T VC707 de Xilinx.
1 Integre el núcleo duro MAC y la interfaz SGMII, que puede completar la implementación de funciones de capa MAC e interfaces de capa PHY.
2. El chip integrado de la capa PHY puede completar las funciones de la capa PHY.
3. Integra recursos DDR3 de 1gb y puede almacenar datos en caché.
El esquema de diseño general se muestra en la figura, en la que la interfaz SGMII entre la capa MAC y la capa PHY se puede implementar llamando directamente a IP.
El módulo receptor
Acepta la solicitud ARP del host, extrae la dirección MAC y la dirección IP del host, recibe el paquete UDP del host y extrae el mensaje.
Módulo de envío
Envía respuesta ARP a la computadora host, encapsula los datos a enviar, agrega encabezado UDP, encabezado IP y encabezado de trama Ethernet, y los envía al núcleo IP de la capa MAC.
Módulo de control DDR3
Los datos en el FIFO de recepción se almacenan en DDR3 y se leen desde DDR3 al FIFO de transmisión durante la transmisión.
Transmitir/recibir FIFO
El reloj de trabajo de Ethernet es de 125 MHZ y el reloj de trabajo de DDR3 es de 200 MHZ. Estos dos FIFO se utilizan para resolver problemas de dominios de reloj cruzado.
Núcleo IP de la capa MAC
Completa la encapsulación y desencapsulación del preámbulo de la trama Ethernet y el delimitador de inicio de la trama.
Flujo de trabajo específico: al enviar datos, el sistema encapsula los datos en DDR3 a través del núcleo IP de la lógica de envío y la capa MAC, y luego envía los datos de salida al chip PHY a través del núcleo IP del SGMII. interfaz En la capa PHY Después de completar la codificación de datos, los datos se envían a la computadora host a través de la interfaz RJ45 y el sistema recibe los datos en el proceso inverso al envío de datos. Los datos enviados por la computadora host llegan al chip PHY a través de la interfaz RJ45 y se reciben y emiten a través de la interfaz SGMII después de ser decodificados en la capa PHY.
El núcleo IP y el módulo lógico de recepción enviados a la capa MAC completan la extracción de datos o la ejecución de instrucciones, y los datos se almacenan en DDR3.
El protocolo ARP se introducirá más adelante, sin mencionar el protocolo IP y el protocolo UDP.
ARP consiste en obtener la dirección MAC de destino para que se puedan enviar IP y UDP al destino correctamente.
Este módulo se utiliza principalmente para distinguir si el módulo recibido es ARP o UDP.
Hay tres puntos clave para identificar ARP:
1. Determine si la dirección MAC de destino es FF-FF-FF-FF-FF-FF.
2. Determine si el tipo de trama es 0X0806.
3. Determine si el código de operación es 1.
En caso afirmativo, se genera la señal ARP_request, se extraen la dirección MAC y la dirección IP de la computadora host y se envían al módulo de procesamiento ARP.
Al determinar si es UDP:
1. ¿El campo de protocolo en el encabezado del datagrama IP es 0x11?
2. ¿La dirección IP de destino del paquete IP es la misma que la dirección local?
3. ¿El número de puerto de destino en el encabezado udp es el mismo que el número de puerto local?
Si se aprueba el juicio, los datos UDP se almacenan en el FIFO receptor y la longitud de los datos registrados es frame_cnt.
Hay dos tipos de datos que se enviarán: respuesta ARP y datos leídos de DDR encapsulados en datos de trama MAC UDP.
La máquina de estados se muestra en la figura.
1. Cuando el módulo de procesamiento ARP genera ARP_reply, ingresa al estado de trama de respuesta ARP. Una vez completada la respuesta, ingresa al estado inactivo. En este momento, el módulo de procesamiento ARP debe proporcionar la MAC. dirección y dirección IP de la computadora host en el estado de respuesta.
2. Cuando la máquina de estado detecta la señal DDR_RD_CPL, es decir, cuando los datos DDR3 se almacenan en el FIFO de transmisión, comienza a agregar el encabezado MAC, el encabezado IP y el encabezado udp, y finalmente lee los datos. en FIFO y la máquina de estado entra en estado inactivo.
Finalmente, hay algunos cálculos debido a que el destino, la MAC de origen, la IP y el número de puerto han cambiado, es necesario volver a calcular la suma de verificación de IP, la suma de verificación de UDP y la longitud de los datos estadísticos y encapsular los resultados. paquetes de datos.
Finalmente, la nueva ganancia es que en modo full-duplex, la longitud de los datos de la trama Ethernet no puede exceder los 1500 bytes, menos el encabezado IP de 20 bytes y el encabezado UDP de 8 bytes, luego los datos UDP. La longitud debe ser inferior a 1472 bytes.