TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: cdrpo en 04 de Septiembre de 2009, 16:22:39
-
Tengo las siguientes consultas
1: Si un microcontrolador tiene por ejemplo 32KBytes de memoria, implica que puede direccionar 32*1024=32768 direcciones de memoria?
2: Cada dirección de memoria siempre puede almacenar un máximo de 1Byte (8 bits)? y como se relaciona el bus de datos de un microcontrolador con la memoria
3: Existen memorias (en PC o microcontroladores) que por cada dirección de memoria puedan almacenar mas de un Byte es decir 2Bytes (16 bits) etc, por que hay micros o procesadores con un bus de datos de 16 bits 32 bits 64bits y ya habla para un futuro próximo de 128bits
-
Hola
Respondiendo tu pregunta 3, sí. La memoria de programa de los PIC16 tiene palabras de 14 bits de longitud. Es decir que cada dirección de memoria almacena 14 bits.
Y el bus de datos de los PIC16 es de 9 bits.
-
Hola,
1: Si un microcontrolador tiene por ejemplo 32KBytes de memoria, implica que puede direccionar 32*1024=32768 direcciones de memoria?
Exacto !
2: Cada dirección de memoria siempre puede almacenar un máximo de 1Byte (8 bits)? y como se relaciona el bus de datos de un microcontrolador con la memoria
El bus de datos entre otras cosas esta conectado a la memoria para poder leer y escribir en la misma.
3: Existen memorias (en PC o microcontroladores) que por cada dirección de memoria puedan almacenar mas de un Byte es decir 2Bytes (16 bits) etc, por que hay micros o procesadores con un bus de datos de 16 bits 32 bits 64bits y ya habla para un futuro próximo de 128bits
Correcto, si el micro es de 8 bits ( 8051, 6800, Z80 ) requieren memorias externas de 8 bits, los micros de 16 requieren memorias de 16 bits ( D0-D15 ), y asi sucesivamente. Dos cosas para aclarar en este punto:
- Los micros de mas de 32 bits tienen solo uso en ciertas aplicaciones ( graficos, cientificos, etc ) pero no de uso masivo. El porque es que gran parte de los calculos que realiza la mayoria de los programas actuales con un micro de 32 bits alcanza.
- No todo es tan trivial al trabajar con micros de 16 y 32 bits, sobre todo en perifericos, por eso ciertos micros de 32 bits trabajan con algo que se llama "dynamic bus sizing" te permite a un micro de 32 bits conectarles perifericos de 8 o 16 bits, en este caso cambias costo por perfomance
Saludos !
-
Gracias por sus respuestas, pero surgió otra duda
Como sabemos por ejemplo 32KBytes de memoria son 32*1024=32768 Bytes y como un Byte son 8bits entonces
32KB = 262144bits
Si un micro soporta 8bits por dirección se cumple que 32768direcciones*8bits = 262144bits de manipulación
pero si un micro soporta por ejemplo 16bits por dirección y si este tiene 32KBytes de memoria, entonces no podría direccionar 32768 posiciones, si no solo la mitad ya que 16384direcciones*16bits = 262144bits de manipulación
-
Hola, me parece que tenes conceptos confundidos, una cosa es la capacidad de palabra ( 8,16,32 bits ) y otra la capacidad de direccionamiento. En el caso de la capacidad de palabra de un micro de 8 bits, accede ya sea a sus registros internos o a la memoria interna con los 8 bits en parelelo, cada bit de almacenamiento ( tanto en memoria como registros ) es algo parecido a un flip-flop tipo "D" que es justamente un circuito de memoria de un 1 bit. Si el micro es de 8 bits necesita para cada registro o memoria 8 de estos, si es 16 necesita 16 de estos y asi sucesivamente, por eso lo que te decia con respecto a los costos mas capacidad de palabra mas caro es el chip. En el caso de dirreccionamiento si el micro direcciona 16 bits ( algo tipico en los micros de 8 bits ) tenes 2^16 = 65536 posiciones de un 1 byte diferentes de direccionamiento, y eso implica tener un PC y registros indices del mismo tamaño ( ejemplo en los HCS08 el PC, el SP y el HX tiene 16 bits de largo para poder acceder a todo el mapa desde 0x0000-0xFFFF )
Saludos !