¿Debo modelar un decodificador de mensajes Ethernet con un byte basado en un bit?

0

La interfaz de vaporización (por ejemplo, el Avalon ST)

input logic data[255:0] in_data; // a 256 bits input stream data

Las señales locales de datos como esta:

logic[255:0] bit_data;           // local signal for the input data

Tengo mensajes comerciales con una longitud máxima = 1500 bytes (12000 bits)

Entonces, tengo que modelar un número entero para representar la longitud del mensaje en BIT:

logic[13:0] msg_bit_len; // 14 bits unsigned int with max value = 16383

Si modelo los datos con BYTE basado:

typedef logic[7:0] logic8x32_t [31:0]; // a 32 bytes structure

logic[7:0] byte_data [31:0]; // local signal for the input data
byte_data = logic8x32_t'(in_data);

con BYTE basado, puedo modelar msg_byte_len (max = 1500) con un número menor de bits.

logic[10:0] msg_byte_len; // 11 bits unsigned integer with max value = 2047

En este caso, se guardan 3 bits en comparación con BIT.

Suena bien, pero me temo que si existe algún problema con el diseño de la base de bytes (por ejemplo, los datos entrantes no están en el byte completado).

Por favor avise.

    
pregunta Ken Tsang

1 respuesta

0

Depende, por ejemplo:

  • si modela un trabajo sobre MII, necesita representar un paquete como un flujo de nibbles consecutivos, nibble = la mitad de un byte de 8 bits = 4 bit;
  • si lo modelas sobre GMII, puedes representar un paquete como un flujo de octetos consecutivos directamente, octeto = byte de 8 bits;
  • etc ...

Si modela un trabajo sobre un bus paralelo ancho (N x 8 en el caso que se muestra), dicho bus debe contener señales de enmascaramiento (N en el caso de un byte de 8 bits) para indicar qué (es) byte (s) en el bus contiene información (s) durante un ciclo de transferencia y que no lo hace.

    
respondido por el asndre

Lea otras preguntas en las etiquetas