Pregunta sobre la oración en la nota de aplicación: "módulo incrementado-256". Solicitar explicación y aclaración.

2

Contexto: estoy leyendo una nota de aplicación para un transceptor UWB. En él, están describiendo el formato de marco de mensaje típico, de acuerdo con las reglas IEEE. Hay algunas palabras que me confunden y no estoy seguro de si necesito implementar algo en el controlador host, de acuerdo con esta información.

En esta nota de aplicación (pág. 6 de 15)

Dice

  

El octeto del número de secuencia es modulo-256 incrementado para cada trama enviada, según las reglas IEEE. los   las direcciones de origen y destino son números de 64 bits programados de forma única en cada unidad   (durante la fabricación) o direcciones de 16 bits asignadas temporalmente. El FCS de 2 octetos es una trama CRC.   verifique la secuencia siguiendo el estándar IEEE, (esto puede ser generado automáticamente por el DW1000 IC)   y anexado al mensaje transmitido)

En el estándar IEEE (802.15.4-2011) (pág. 59)

Indica:

  

5.2.1.2 campo Número de secuencia

     

El campo Número de secuencia especifica el identificador de secuencia para el marco .       Para una trama de baliza, el campo Número de secuencia especificará un BSN. Para       datos, acuse de recibo, o MAC       marco de comando, el campo Número de secuencia especificará un DSN que se utiliza para       emparejar un reconocimiento       marco a los datos o marco de comando MAC.

Comprendo los principios del módulo aritmético y comprendo (y corríjame si esto es incorrecto) que el número de secuencia se refiere a un cuadro y su orden dentro de una secuencia mayor de cuadros. Sin embargo, la frase "incrementos por módulo-256" me ha arrojado un poco.

¿Significa que cambiará un bit un bit, dentro de un octeto, una vez cada vez que se envíe una trama hasta que se haya enviado un número predefinido de tramas? ¿Necesito procesar esto para juntar la secuencia mayor?

Cualquier ayuda es apreciada.

    
pregunta Medicineman25

2 respuestas

7

Simplemente significa que el número se incrementa. Pero cuando alcance el valor 255, el siguiente valor será 0.

Así, la secuencia será:
0, 1, 2, 3, .... 250, 251, 252, 253, 254, 255, 0, 1, 2, ...

Obtendrá este comportamiento si usa uint8_t ( #include <stdint.h> ) y lo incrementa:

#include <stdint.h>

uint8_t sequence_number=0;
...
   sequence_number++;
    
respondido por el Oldfart
4

Además de lo que dijo Oldfart, significa que este número se mantiene en un contador de 8 bits. Si interpretas el valor de un contador de 8 bits como un binario sin signo normal, obtienes el módulo 256 automáticamente. 8 bits pueden ser 0000 0000 a 1111 1111 (= 255 decimal). Incrementando 1111 1111 se obtiene 1 0000 0000. Sin embargo, el contador no puede almacenar el bit resultante ya que está fuera del final. Solo se mantienen los 8 bits bajos del valor binario, que se transfieren a 0000 0000.

Entonces, si bien el módulo 256 puede parecer algo extraño, en realidad es bastante común ya que es el resultado de representar un valor sin signo en un byte de 8 bits.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas