Autor Tema: Dudas con: Direcciones de memoria, Bus de datos  (Leído 2954 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cdrpo

  • PIC18
  • ****
  • Mensajes: 317
Dudas con: Direcciones de memoria, Bus de datos
« 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


Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Dudas con: Direcciones de memoria, Bus de datos
« Respuesta #1 en: 04 de Septiembre de 2009, 16:35:37 »
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.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Dudas con: Direcciones de memoria, Bus de datos
« Respuesta #2 en: 04 de Septiembre de 2009, 16:42:31 »
Hola,
Citar
1: Si un microcontrolador tiene por ejemplo 32KBytes de memoria, implica que puede direccionar 32*1024=32768 direcciones de memoria?

Exacto !

Citar
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.

Citar
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 !

Desconectado cdrpo

  • PIC18
  • ****
  • Mensajes: 317
Re: Dudas con: Direcciones de memoria, Bus de datos
« Respuesta #3 en: 04 de Septiembre de 2009, 17:03:50 »
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

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Dudas con: Direcciones de memoria, Bus de datos
« Respuesta #4 en: 04 de Septiembre de 2009, 17:39:15 »
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 !
« Última modificación: 04 de Septiembre de 2009, 17:45:46 por RICHI777 »