La
sigla PIC significa ”Peripheral
Interface Controller” (Controlador de Interfaz de periféricos), aunque cabe
mencionar que muchos usuarios prefieren interpretar PIC como “Programmable
Integrated Circuit” (Circuito Integrado Programable). La expresión PIC es
empleada para designar una amplia gama de microcontroladores de la empresa
americana Microchip Technology
(www.microchip.com), es decir, no sería apropiada la expresión “tengo un
PIC MOTOROLA”, pues la expresión PIC es inherente a la empresa Microchip.
GENERALITIES OF THE PIC
The acronym PIC stands for "Peripheral Interface Controller", although it is worth mentioning that many users prefer to interpret PIC as "Programmable Integrated Circuit". The expression PIC is used to designate a wide range of microcontrollers of the American company Microchip Technology (www.microchip.com), that is, the expression "I have a PIC MOTOROLA" would not be appropriate, since the expression PIC is inherent to the company Microchip
ARQUITECTURA DE
MICROPROCESADORES
ARQUITECTURA VON NEUMANN: propuesta por John Von Neumann, es la
arquitectura tradicional de sistemas digitales programables. En este modelo la
unidad central de procesamiento (CPU) está conectada a una memoria única que
contiene las instrucciones del programa y los de datos. El tamaño de la unidad
de datos o instrucciones está fijado por el ancho del bus de datos de la
memoria exterior utilizada, que es de 8 bits. Un μP con un bus de 8 bit que lo
conecta con la memoria deberá manejar datos e instrucciones de una o más
unidades de 8 bit de longitud. Cuando deba acceder a una instrucción o dato de
más de 1 byte (8bit) de longitud, deberá realizar más de un acceso a la memoria
(lentitud del proceso). Por otro lado, este bus único limita la velocidad de
operación del microprocesador, ya que no se puede buscar en la memoria una
nueva instrucción antes de que finalicen las transferencias de datos que
pudieran resultar de la instrucción anterior. Los μC Motorola, Intel, Atmel
emplean esta arquitectura en sus uP y uC. La principal ventaja de esta
arquitectura es que simplifica la lógica interna del μP.
Resumiendo,
las principales desventajas de la arquitectura Von Neumann son:
1.
La longitud de las instrucciones está limitada
por la unidad de longitud de los datos, por lo tanto, el μP debe hace varios
accesos a memoria para buscar instrucciones complejas (con longitud superior a
8 bit).
2.
La velocidad de operación está limitada por el
efecto cuello de botella que significa un único bus para datos e instrucciones,
que impide superponer ambos tiempos de acceso.
ARQUITECTURA HARVARD: es la mejora de la arquitectura Von
Neumann, su nombre obedece a la primera computadora que utilizó esta
arquitectura. Se caracteriza por implementar dos memorias separadas con buses
independientes para la memoria de instrucciones (memoria de programa) y para la
memoria de datos (variables y constantes).
Ambos buses son totalmente
independientes y pueden ser de distintos anchos (Wide) (léase uaid), esto
permite que la CPU pueda acceder de forma independiente y simultánea (mayor
velocidad) a la memoria de datos y a la de instrucciones, consiguiendo que las
instrucciones se ejecuten en menos ciclos de reloj.
Resumiendo,
las principales ventajas de la arquitectura Harvard son:
1.
El tamaño de las instrucciones no está
relacionado con el de los datos y, por lo tanto, puede ser optimizado para que
cualquier instrucción ocupe una sola posición de memoria de programa. Así se
logra una mayor velocidad y una menor longitud del programa.
2.
El tiempo de acceso a las instrucciones puede
superponerse con el de los datos, logrando una mayor velocidad de operación.
CLASES DE CPU’S (UNIDAD
CENTRAL DE PROCESAMIENTO)
Las
CPU’s atendiendo al tipo de instrucciones que utilizan pueden clasificarse
fundamentalmente en:
CISC
(Complex Instruction Set Computer): Son Procesadores con un juego de
instrucciones complejo. Su repertorio o número de instrucciones es elevado (más
de 90) y algunas de ellas son muy sofisticadas y potentes (ejemplo multiplicar,
dividir) . Su problema es que requieren de muchos ciclos de reloj para ejecutar
dichas instrucciones, haciendo lento rendimiento general del uP. Un ejemplo de
estos μP son los empleados en los μC motorola gama media que tienen un
repertorio de alrededor de 90 instrucciones (en contraste con los PIC que sólo
tienen 35 la gama media y 75 la gama alta) y algunas son muy sofisticadas como
DIV, MULT. Una ventaja de los procesadores CISC es que ofrecen al programador
instrucciones complejas y potentes que actúan como macros.
RISC
(Reduced Instruction Set Computer): Son μP con un repertorio o número de
instrucciones reducido (ejemplo los PIC sólo usan 35 instrucciones para gama
media y 75 para gama alta). Las instrucciones son muy simples y suelen
ejecutarse en un ciclo de máquina. Los μP RISC suelen tener una estructura
pipeline y ejecutar casi todas las instrucciones en el mismo tiempo (4 ciclos
de reloj para los PIC). Los μP RISC representan un importante avance en el
desarrollo de la arquitectura de los microcontroladores. MICROCHIP decidió
diseñar sus μC PIC con procesadores RISC optimizado para ejecutar a muy alta
velocidad un reducido número de instrucciones. Cuando se requieran
instrucciones sofisticadas o potentes (dividir, multiplicar, etc) se logran
ejecutando un conjunto de instrucciones disponibles en lugar de una única
instrucción como en los μP CISC. Tanto la industria de los computadores
comerciales como la de los microcontroladores están decantándose hacia la
filosofía RISC (Computadores de Juego de Instrucciones Reducido). En estos
procesadores el repertorio de instrucciones máquina es muy reducido y las
instrucciones son simples y, generalmente, se ejecutan en un ciclo. La
sencillez y rapidez de las instrucciones permiten optimizar el hardware y el
software del procesador.
SISC
(Specific Instruction Set Computer): Poseen un juego de instrucciones
específico para cada aplicación. Están destinados a aplicaciones muy
concretas. En los microcontroladores
destinados a aplicaciones muy concretas, el juego de instrucciones, además de
ser reducido, es “específico”, o sea, las instrucciones se adaptan a las
necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el
nombre de SISC (Computadores de Juego de Instrucciones Específico).
ARQUITECTURA, CPU Y
CARACTERISTICAS FUNCIONALES DEL PIC
ARQUITECTURA
HARVARD: Bus y memoria
separado para memoria de programa (bus 16 hilos o Wide instructions = 16 bit
para 18FXXXX, bus 14 hilos para 16FXXX) y bus y memoria separado para memoria
de dato (bus de 8 hilos u ocho bits).
Los PIC 12XXX, 16XXX, 18XXXX manejan una longitud de 8 bit para la memoria de datos.
CPU
TIPO RISC
PROCESADOR
SEGMENTADO O PIPELINE: realiza
simultáneamente la ejecución de una instrucción y la búsqueda de código de la
siguiente, de esta manera se puede ejecutar una instrucción en un ciclo.
(recuerde que un ciclo de máquina equivale a 4 ciclos de reloj para un PIC). Es
obvio que esta característica insufla alta velocidad de procesamiento al o μC.
Se aplica la técnica de segmentación (“pipe-line”) en la ejecución de las instrucciones.
La segmentación permite al procesador realizar al mismo tiempo la ejecución de
una instrucción y la búsqueda del código de la siguiente. De esta forma se
puede ejecutar cada instrucción en un ciclo (un ciclo de instrucción equivale a
cuatro ciclos de reloj). Las instrucciones de salto ocupan dos ciclos al no
conocer la dirección de la siguiente instrucción hasta que no se haya
completado la de bifurcación.
ARQUITECTURA
ORTOGONAL: en un μP con
arquitectura ortogonal una instrucción puede utilizar cualquier elemento de la
arquitectura como fuente o destino. Esto se evidencia en el uso del registro
W (Work) para los PIC y el uso del
registro A (acumulador) para los demás tipos de μC (Atmel, Motorola, Intel).
Como consecuencia el PIC tiene una gran ventaja por tener arquitectura
ortogonal y poder guardar el resultado de una operación aritmética en el
registro de trabajo W o directamente en cualquier registro de la memoria de
dato. Los demás μC siempre guardan el resultado de una operación ALU en el
registro acumulador, teniendo que emplear otro comando o instrucción para
pasarla a una variable de la memoria de dato, esto implica mayor demora o
lentitud en el proceso.
FORMATO DE
INSTRUCCIONES – ANCHO DE INSTRUCCIONES (WIDE INSTRUCTIONS). El formato de todas las instrucciones
es de la misma longitud. Todas las instrucciones de los microcontroladores de
la gama baja tienen una longitud de 12 bits. Las de la gama media tienen 14
bits y 16bit los de la gama alta 18FXXXX. Esta característica es muy ventajosa
en la optimización de la memoria de instrucciones y facilita enormemente la
construcción de ensambladores y compiladores.
JUEGO DE
INSTRUCCIONES DEL PIC: Los modelos
de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la
gama media y 75 los de la alta.
ARQUITECTURA
BASADA EN UN “BANCO DE REGISTROS”: Esto
significa que todos los objetos del sistema (puertas de E/S, temporizadores,
posiciones de memoria, etc.) están implementados físicamente como registros.
MODOS DE
DIRECCIONAMIENTO DE UN PIC: Los modos de
direccionamiento aluden a las diferentes formas de acceder a la memoria de
datos e instrucciones de un uP.
1.
Direccionamiento Inmediato: El valor del dato
inmediato (su valor como constante) lo contiene el mismo código de operación
que, en la ejecución de la instrucción, se carga en el registro W para su
posterior procesamiento. Por ejemplo:
IORLW .5
2.
Direccionamiento Directo: La dirección de
memoria RAM se encuentra en el mismo código de operación. Por ejemplo: ADDWF
VAR1.
3.
Direccionamiento de Bit: Procesa datos de un
bit. La dirección del dato es un bit. Por ejemplo:
BCF
STATUS,RP0.
4.
Direccionamiento Indexado: Utilizado para el
manejo de tablas mediante la instrucción:
ADDWF
PCL,F.
5.
Direccionamiento Indirecto: La dirección del
dato se encuentra contenida en el registro INDF. Cada vez que se hace
referencia éste, se utiliza el contenido del registro FSR para direccionar el
operando.
TIPOS DE DATOS DE
UN MICROCONTROLADOR SEGÚN LA LONGITUD:
1)
Bit: 1 ó 0
2)
Nibble: 4 bit : 0 a 15 en decimal
3)
Byte: 8 Bit: 2 Nibble : 0 a 255 en decimal
4)
Word: 16 bit: 4 nibble: 2 Byte : 0 a 65535 en
decimal
5)
Double Word: 32 bit: 8 Nibble: 2 Byte: 2 Word :
0 a 4.294’967.296 en decimal
6)
ASCII: 7 bit