martes, 22 de mayo de 2012

Arquitectura de PIC

La programación de PIC es más sencilla si nosotros hacemos antes de realizar un proyecto, una comprensión de la arquitectura que se maneja internamente en el microcontrolador, por lo que estos varían de los sistemas de computación a los cuales ya estamos acostumbrados a programar, en esta entrada voy a hablar de las arquitecturas más importantes, al igual que los ventajas y desventajas en sistemas integrados.

Existen dos arquitecturas principales, la Von Newmann y la arquitectura Harvard.

Arquitectura Von Neumann

Esta arquitectura es la manera mas común para crear un sistema, en donde los buses de dirección y los datos son comunes para todos los accesos de memoria, el programa o código y los datos existen en un intervalo de memoria, junto con los periféricos asignados en memoria, podemos decir algunos ventajas y desventajas de esta arquitectura.



Es importante recalcar que la unidad de aritmética y lógica  (ALU) y la unidad de control se denominan colectivamente en la CPU, por lo que un microprocesador es solo una CPU en un solo chip, un microcontrolador es básicamente, un ordenador en un chip, por lo que la CPU, memoria, etc, estan todos ellos en un chip.

Ventajas
  • Se simplifica el hardware, tanto de circuitos de diseño como de elaboración
  • Es más facil de generar código, lo que hace que la multitarea sea más facil.

Desventajas
  • Las instrucciones deben ser múltiplos de la anchura del bus de datos, pudiendo ser ineficiente
  • Existe un número variable de ciclos necesarios para poder obtener instrucciones, por ejemplo, una instrucción en donde se requiere datos de la memoria, debe esperar al menos otro ciclo antes de que pueda completarse, mientras que algunas instrucciones se ejecutan mucho más rápido, pudiendo ser un problema para aplicaciones en donde necesitamos las cosas rápido.

Arquitectura de Harvard

Esta es una arquitectura en donde se espera no tener cuello de botella en la memoria por la división de la memoria en instrucciones de código y en áreas de datos, entonces estas se acceden a través de datos por separado y buses de direcciones.



Esta es la arquitectura que se utiliza en el microprocesador Armel AVR.

Ventajas
  • Los datos y buses de dirección pueden tener diferentes anchuras, por lo que la memoria del programa puede ser lo suficientemente amplia como para poder incorporar una instrucción y datos fijos en una sola instrucción.
    • La mayoria de las instrucciones se ejecutan en un solo ciclo de reloj
Desventajas
  • Es más confuso 
  • El hardware es más complicado.
Podemos decir que la memoria del programa es diferente a la memoria de datos, por ejemplo en la serie de PIC16FXX, la memoria del programa es de 14 bits de ancho mientras que la memoria de datos en una forma más convencional es de 8 bits de ancho y PIC es un procesador de 8 bits.

La arquitectura Harvard tiene una memoria del programa y la memoria de datos como memorias separadas y se accede desde buses separados, esto mejora el anchi de banda más tradicional de la von neumann, en la que el programa y los datos se obtienen de la misma memoria usando un mismo bus, para ejecutar una instrucción, una maquina de von Neumann debe acceder una o más veces a través del bus de 8 bits para recuperar la instrucción, mientras que en la arquitectura de harvard, la instrucción se recupera en un solo ciclo de instrucción los 14 bits, mientras que la memoria del programa se puede accedar, de manera independiente, como la memoria de datos donde se puede leer y escribir, permitiendo una instrucción para ejecutar la siguiente.


En esta imagen podemos ver una arquitectura básica del PIC16C74A, en donde vemos que se compone de la memoria del programa, los registros de archivos y la memoria RAM, ALU y registros de la CPU, es importante señalar que el contador de programa es de 13 bits y la memoria de programa está organizado como 14 bits, teniendo una capacidad de 8K x 14 bits, por lo que cada instrucción de el PIC 16C74A es de 14 bits de largo.


Espero que esta entrada ayude a las personas a comprender como está compuesto un PIC y así programar con una mayor eficiencia cualquier proyecto PIC que tengamos en algún futuro profesional.

Puedes encontrar la tarjeta de referencia de este PIC aqui
Más información sobre las arquitecturas aquí

1 comentario: