¿Por qué la salida de datos de algunos IC está en forma de complemento a dos?

1

He estado investigando algunos circuitos integrados ahora. Algunos de ellos tienen el resultado calculado (datos) en forma de complemento a dos, colocados en el registro para ser leídos por otro IC. ¿Cuál es la lógica detrás de la conversión de los datos en dos formas complementarias antes de su lectura?

Los ejemplos son como

  1. Convertidor analógico a digital (página 30 Formato de datos de salida). LINK
  2. Acelerómetro digital (Página 1 Descripción general). LINK

He visto un comportamiento similar en el cálculo de CRC para IEEE 802.3. Por ejemplo, si calculamos el CRC de 32 bits (utilizando x32 + x26 + x23 + x22 + x16 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 polinomio) el CRC calculado se invierte en bits y complementado antes de la transmisión.

Bueno, la pregunta es ¿por qué está formateado en forma de complemento? ¿No se puede leer sin que se complementen los datos?

    
pregunta Osaid

3 respuestas

5

Para un ADC cuyo formato natural es offset binario, el complemento de 2 es la forma natural de representar números firmados. Todo lo que tiene que hacer es invertir el MSB.

    
respondido por el Brian Drummond
2

La mayoría de los microcontroladores y microprocesadores representan números negativos en forma de complemento a 2. Y muchos ADC están diseñados para su uso en sistemas de tiempo real con limitaciones de tiempo. Tener un formato de complemento a 2 en un ADC (u otro sensor) significa que los números negativos están representados de una manera que su procesador puede usar directamente, sin tener que gastar ciclos haciendo la conversión de algún otro formato.

En un CRC, sospecho que el resultado simplemente se complementa (invertido a nivel de bit, también conocido como "complemento de 1"). Un CRC es un cálculo puramente entero y no implica números negativos, por lo que no tiene ningún sentido hacer un complemento de 2 con ese número. No puedo decir por qué lo complementaría con 1, pero debería hacer una pequeña diferencia para el usuario.

    
respondido por el The Photon
2

La pregunta se reduce a cómo representar números negativos, ya que los números positivos son los mismos en la mayoría de las representaciones binarias. Para la mayoría de los casos, el complemento 2s es la forma más conveniente de representar números negativos en binario. Esto es casi seguro que el procesador que tiene que manipular la lectura A / D hace sus cálculos, por lo que presentarlo en el complemento 2s directamente en las marcas A / D es fácil para el procesador.

Algunos A / D solo miden voltajes positivos. Aquellos pueden usar binarios sin firmar. Si no te gusta el complemento 2s para valores negativos, ¿qué preferirías? Parece que la mayoría de las alternativas causaría más complicaciones.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas