21 votos

Microcontroladores/microprocesadores y diferentes versiones de bits, ¿cuál es la diferencia?

Como aficionado a la ingeniería en general, cada día aprendo más sobre el mundo de los microcontroladores. Una cosa que no acabo de entender es el significado de la versión bit de un microcontrolador.

He estado usando el ATmega8 durante varios meses, y parece funcionar muy bien para mis propósitos. Sé cómo cosas como la velocidad de reloj, la memoria, el número de pines IO, los tipos de buses de comunicaciones, etc. diferencian un micrcontrolador de otro. Pero no entiendo muy bien la importancia de, por ejemplo, 8 bits frente a 16 bits frente a 32 bits. Entiendo que una versión de bits más alta permite al dispositivo almacenar números más grandes, pero, de nuevo, ¿cómo afecta esto a mi decisión? Si estoy diseñando un producto, ¿en qué situación hipotética decidiría que un procesador de 8 bits no es suficiente y que necesito algo más potente?

¿Hay alguna razón para creer que una variante teórica de 32 bits del ATmega8 (en igualdad de condiciones) sería superior a una versión de 8 bits (si tal dispositivo fuera posible)?

Puede que esté diciendo tonterías, pero supongo que es fruto de mi confusión.

0 votos

24voto

Andrew Walker Puntos 9038

No se trata de la anchura del número que puede almacenar, sino de la anchura con la que puede trabajar en una sola operación. Normalmente (pero no necesariamente) esto también tiene un grado de correlación con la anchura del direccionamiento de la memoria nativa, y por lo tanto la cantidad de almacenamiento que se puede asignar fácilmente sin feas soluciones como la segmentación o el cambio de banco.

Los núcleos de 32 bits actuales son superiores a los diseños de 8 en la mayoría de los aspectos (flexibilidad, modelo de memoria plana y, por supuesto, rendimiento), con las excepciones principales de los sistemas heredados, las aplicaciones con un volumen y una presión de precios extremos (de lo contrario, el precio tiende a correlacionarse mejor con el tamaño de la memoria en chip que con la anchura del núcleo) y los efectos secundarios del proceso/densidad. Esto último puede proporcionar cosas como el funcionamiento a 5 V o, posiblemente en algunos casos, una mayor resistencia a la radiación o una ventaja de simplicidad si se intenta demostrar que el diseño de la propia CPU está libre de errores lógicos. Un último efecto secundario de proceso/edad de valor para muchos aficionados es que los núcleos de 8 bits en paquetes DIP son comunes, mientras que los dispositivos de 32 bits en dichos paquetes son más raros (aunque existen).

3 votos

La anchura que puede manejar en una sola operación puede ser importante a la hora de sincronizar partes asíncronas del programa. Si necesitas leer atómicamente un valor de 16 bits en un micro de 8 bits, probablemente necesites desactivar primero las interrupciones, lo que quizá quieras evitar para mantener bajo el tiempo de respuesta del ISR.

0 votos

Otra característica en la que algunos micros de 8 bits pueden ser superiores a los ARM (la arquitectura de 32 bits más popular) es en la manipulación de bits de E/S. Un PIC 18Fxx (8 bits) puede activar o desactivar cualquier bit en el espacio de E/S con una sola instrucción, independientemente de lo que contenga cualquier registro, mientras que un ARM generalmente requiere un proceso de varios pasos. Los chips ARM pueden ejecutar más instrucciones por segundo que los chips PIC disponibles actualmente (Scenix solía ofrecer algunos chips pequeños de 100 MHz compatibles con PIC, pero creo que ya no están disponibles), pero incluso los PIC disponibles pueden realizar algunos tipos de manipulación de bits más rápido.

1 votos

Aunque menos universal, algunos dispositivos ARM tienen cosas como los registros GPIOx_BSRR/GPIOx_BRR en los que se puede escribir para activar o desactivar bits GPIO individuales.

9voto

user9730 Puntos 11

El valor del bit es el bus de datos o el tamaño de la tubería de datos, lo que significa que una MCU de 8 bits (en su mayor parte) sólo puede trabajar con valores de 0 a 255 en cada ciclo de reloj. Piensa que el procesador tiene 8 líneas digitales en paralelo. Y un 16 bits tiene 16 líneas, y 32 bits tiene 32 líneas. Así que, por cada ciclo de reloj, lee estas líneas de datos, y cuantas más líneas más alto es el valor con el que puede trabajar por ciclo de reloj.

8 bits = \$2^8\$ = \$256\$

16 bits = \$2^{16}\$ = \$65,536\$

32 bits = \$2^{32}\$ = \$4,294,967,296\$

Los buses de datos más grandes también permiten al procesador acceder a direcciones de memoria más grandes.

Esto supone una gran diferencia durante las operaciones matemáticas. Un número de 16 bits ofrece mucha más precisión que uno de 8 bits. Los microcontroladores de 16 bits también son más eficaces a la hora de procesar operaciones matemáticas con números más largos que los de 8 bits. Un microcontrolador de 16 bits puede operar automáticamente con dos números de 16 bits, como la definición común de un número entero. Pero cuando se utiliza un microcontrolador de 8 bits, el proceso no es tan sencillo. Las funciones implementadas para operar con dichos números requerirán ciclos adicionales. Dependiendo de la intensidad de procesamiento de tu aplicación y del número de cálculos que realices, esto puede afectar al rendimiento del circuito.

Diferencia entre un microcontrolador de 8 bits y uno de 16 bits

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X