Estructura de Microprocesadores

Anuncio
Estructura de Microprocesadores
Introducción al diseño de sistemas
electrónicos basados en microcontrolador
Profesor Ing. Johan Carvajal Godínez
JCG-2009
Agenda de clase
• Definición de microcontrolador
• Características de un MCU
• Arquitecturas de MCU
• Protocolos de comunicación usados
por MCU
JCG-2008
¿Que es un microcontrolador?
• Es un sistema computacional
integrado en un chip (SOC)
–Núcleo de procesamiento
–Memoria para datos, código
–Dispositivos periféricos básicos
–Orientado a aplicaciones específicas
JCG-2008
CPU vrs MCU
JCG-2008
Arquitectura típica de un MCU
JCG-2008
Orientación en diseño con MCU
• Se enfoca el diseño en una aplicación
especifica solventa un problema en un
proceso
• Bajo consumo de energía
• Soporta el ambiente de trabajo para el que
fue diseñado
• Mínima interacción Humano-MCU, sistemas
muy autónomos
JCG-2008
Características necesarias un MCU
• Respuesta en tiempo real
• Manejo versátil de interrupciones: Priorización
• Eficiente uso de la memoria de programa
• Capacidad de interacción con señales
analógicas. ADC integrados
• Capacidad de comunicación con sistemas
basados en microprocesador, RS232, USB,ET
JCG-2008
¿Que debo conocer en un MCU?
• Arquitectura y modelo de programación
• Administración de la memoria: Mapa,
métodos de acceso, etc
• Protocolos de comunicación interna y externa
que soporta el MCU
• Administración de I/O: mapeo, interacción
con los buses, interrupciones, configuración,
resolución, etc.
JCG-2008
Arquitectura y modelo de programación
• Nivel de complejidad en manejo de
datos y operaciones
• Las arquitecturas favoritas
–ARM
–MIPS
–AVR
–PIC
JCG-2008
ARM: Diagrama de la arquitectura
•Arquitectura
RISC de 32 bits
•El 75% de todas
los sistemas
empotrados usan
ARM core!!!
JCG-2008
Arquitectura MIPS
JCG-2008
Evolución de los PIC
JCG-2008
ARQUITECTURA DEL PIC
•Arquitectura Harvard
● Velocidad de
operación 40 MHz
•Memoria:
•Arquitectura
Harvard
•Programa: 65536
bytes
•Datos: 3328 bytes
•Datos (EEPROM):
1024 bytes
JCG-2008
Arquitectura AVR
Arquitectura
Harvard de 8
bits
Usa flash en
lugar de
XPROM
JCG-2008
Protocolos de comunicación en MCU
• Los MCU necesitan comunicar su núcleo con
memorias y periféricos para ellos usa
protocolos comerciales
• I2C
• SPI
• UART
• USB
JCG-2008
Protocolos I2C y SPI
Protocolos de comunicación en
serie
• Diseñados para transmisiones
a corta distancia: “inside the
box”
• Fácil implementación
• Bajo costo
• Velocidad baja ( unos cuantos
Mbps)
JCG-2008
¿Que es I2C?
• Es la abreviación en ingles para : “Inter-integrated
circuit bus”
• Desarrollada en los 80´s por Philips Semiconductor
para TV
• Entre los dispositivos que se comunican por I2C se
encuentran EEPROMS, sensores térmicos, RTC
• Se usa en aplicaciones con conexión a subprocesos.
Por ejemplo sintonizadores, codificadores
decodificadores
• Se puede operar en tres rangos de velocidad:
– Slow (hasta 100 Kbps)
– Fast (400 Kbps)
– High-speed (3.4 Mbps) – I2C v.2.0
• El alcance esta limitado a tres metros punto a
multipunto
JCG-2008
Configuración del bus I2C
•El bus consiste en dos cables: Serial data
(SDA) y Serial clock (SCL)
•Half-duplex, síncrono, multi-master bus
•No se requiere lógica de selección de chip ni
arbitraje del bus.
JCG-2008
Operación del protocolo I2C
1.
2.
3.
4.
5.
Nodo maestro envía señal de inicio (start= S) y controla
la señal de reloj.
Seguidamente se envía un identificador de 7 bits que
representa al nodo con el que se va a establecer
conexión.
El nodo maestro envía un bit de WR/!R para indicar el tipo
de operación del nodo con maestro.
WR/!R = 0 Nodo esclavo recibe
Nodo receptor emite una señal de acknowledge (ACK)
Nodo transmisor (maestro o esclavo) transmite un byte de
datos.
JCG-2008
Operación del protocolo I2C (cont.)
6. El Nodo que recibe el byte envía un bit de ACK cuando se
completa la transmisión
7. Repita pasos 5 y 6 tantas veces como bytes a transmitir
8.1 Cuando el nodo que transmite es el nodo maestro, este
controla la finalización de la transmisión [F bit] luego del ultimo
byte a transmitir
8.2 Cuando el nodo que recibe es el maestro, este no notifica el
ultimo byte sino que transmite el bit de paro [F bit] para indicar
al transmisor que la comunicación se finaliza
JCG-2008
Control de señalización I2C
S
1
0
F
• Start: cambio de alto a bajo en SDA con SCL
en alto
• Stop: Cambio de bajo a alto en SDA con SCL
fijo en Alto
• ACK: el nodo receptor pone SDA en bajo
mientras el transmisor lo deja libre y lo lee
• Datos: se lleva a cabo cuando SCL esta en
bajo, y se valida mientras SCL esta en alto.
JCG-2008
Características adicionales de I2C
• “Clock stretching”: Cuando un dispositivo
esclavo (RX) necesita mas tiempo para
procesar un bit, este puede sostener SCL en
bajo y el Maestro (TX) espera a que SCL sea
liberado por nodo RX para enviar un nuevo
bit
• “General call” broadcast: permite
transmisión multipunto del TX a los RX
• Direccionamiento extendido: para ambientes
de operación con muchos nodos se
implemento direccionamiento extendido a
10 bits.
JCG-2008
Ejemplo de I2C en MCUs: ATMEL
Atmel implementó su interfaz I2C denominada “Twowire Serial Interface” (or TWI) en todos sus MCU de 8
bits AVR, excepto en el AT90.
Por ejemplo en el ATmega323 TWI se puede acceder
configurando el registro del puerto C:
PC0=SCL, PC1=SDA
Registros que se afectan durante el servicio:
•TWBR – Se configura ¨bit rate¨
•TWCR – Señales de control: start, stop, ack , M/S,
T/R
•TWDR – Contiene el byte transmitido/recibido
•TWAR – Contiene dirección de nodo esclavo por
acceder
•TWSR – estado del bus TWI (start, ACK received, …
hasta 26 estados diferentes
JCG-2008
ATmega32
3
I2C en pocas palabras…
Ventajas:
• Muy eficiente en comunicación de
dispositivos (SOC) que son accedidos
ocasionalmente.
• Direccionamiento simple de implementar
• El costo y la complejidad son fijos al
aumentar el numero de dispositivos.
Desventajas:
• La complejidad de interactuar con
componentes de software es elevada vrs
otros esquemas de comunicación serie.
JCG-2008
¿Que es SPI?
• Es un protocolo de comunicación serie que
viene del ingles: “Serial Peripheral Interface”
• Creado por Motorola para su familia de
microcontroladores MC68HCxx
• Velocidad de operación de varios Mbps
(mejor rendimiento en velocidad que I2C)
Aplicaciones:
• Comunicación con dispositivos de memoria
EEPROM, Flash, RTC, etc.
• Excelente rendimiento en aplicaciones que
generan cadenas de datos, ejemplo ADC
• Comunicación Full duplex, mejora el
rendimiento en comunicaciones con
subsistemas dentro de la aplicación
JCG-2008
Configuración de un bus SPI
•Enlace serial síncrono funcionando en full duplex de punto a
punto.
•Relación maestro - esclavo
•Dos señales para datos
–MOSI – Master data Output, Slave data Input
–MISO – Master data Input, Slave data Output
•Dos señales de control
–SCLK – Reloj
–!SS – Selección de punto (Slave Select)
JCG-2008
SPI vs. I2C
•Para comunicaciones punto a punto, SPI es
simple y eficiente
–Mas efectividad del ancho de banda, y comunicación
bidireccional
•SPI tiene limitaciones de escalamiento debido
al control de acceso al bus individual por
dispositivo (!SSX).
JCG-2008
¿Como funciona SPI?
•Dos parámetros, Clock Polarity (CPOL) y Clock Phase
(CPHA), determinan el flanco activo del reloj
•Para establecer la comunicación el maestro y el
esclavo deben acordar los parámetros de enlace.
CPOL
CPHA
Flanco
activo
0
0
Positivo
0
1
Negativo
1
0
Negativo
1
1
Positivo
JCG-2008
Protocolo SPI (Cont.)
•La
La interfase SPI solamente define cuales son las líneas de
comunicación y el flanco de reloj en que estas son activas.
•No
No existe control de flujo, ni ACK para confirmar la recepción de
un dato.
•La implementación en hardware se hace
con un registro de corrimiento!!!!
JCG-2008
Resumen de comparación I2C vrs. SPI
• I2C y SPI proveen un buen soporte para
comunicaciones con periféricos lentos
que son accedidos intermitentemente,
especialmente EEPROMS y RTC.
• I2C permite extensión de dispositivos
conectados al bus sin incrementar
complejidad del hardware para
accederlos.
• SPI ofrece mejor desempeño en
velocidad pero posee problemas de
escalamiento.
JCG-2008
Para Pensar!!!!
• Como elegir un microcontrolador?
• Como se podría optimizar el diseño de
un MCU?
• Cuanta es la memoria optima que debe
tener un MCU?
JCG-2008
Caso de estudio
PICmicro 18LF4550
JCG-2009
Características generales del MCU
•
•
•
•
•
•
•
•
Capaz de manejar USB
Tecnología de ahorro de energía
Osciladores con frecuencia variable
Módulos de E/S con características optimas:
EUSART, ECCP, ADC, MSSP
Arquitectura optimizada para programación en C
Auto programable
Varias fuentes de interrupción con prioridad
WDT, ICSP, etc
JCG-2009
Empaquetado
JCG-2009
Diagrama de bloques
JCG-2009
Configuracion del Oscilador
• Para poder utilizar el USB a maxima velocidad el
PIC18F4550 tiene un sistema que le permite generar
un frecuencia de hasta 48 MHZ
• La operación del oscilador se controla por dos
registros:
– CONFIG1L
– CONFIG1H
• Existen doce modos de operación de los osciladores,
algunos de los cuales requieren el uso de dos tipos
de oscilador a la vez
JCG-2009
Generador de temporización
JCG-2009
Modos de consumo de energía
• EL MCU maneja 7 modos de operación que se pueden
ajustar para optimizar el consumo de energía
• Se puede definir tres modos principales de operación
que afectan el consumo de energía:
– RUN MODE
– IDLE MODE
– SLEEP MODE
• La selección del modo de operación depende la
configuración de las fuentes de reloj seleccionadas en el
registro OSCON (IDLEN<7>, SCS1:SCS0 <1:0>)
JCG-2009
Proceso de re inicialización (RESET)
• El proceso de reinicio del MCU se puede dar debido a
múltiples razones:
–
–
–
–
–
–
–
–
POR
MCLR!: durante operación normal
MCLR!: durante un estado de bajo consumo de potencia
WDT
BOR
Pila llena
Desbordamiento de la pila
Por software
• El Registro RCON permite llevar un control y establecer la
fuente que origino el reinicio del MCU
JCG-2009
Lógica de generación del RESET
JCG-2009
Organización de la memoria
• La arquitectura del PIC es Harvard, por lo que maneja
memoria de datos y de código de manera separada
• Los tres tipos de memoria implementados en el MCU
son:
– Memoria de programa
– Memoria RAM
– Memoria EEPROM
• Existe un contador de programa ¨PC¨ que permite
acceder a la memoria de programa, este contador de
programa esta contenido en tres registros de 8 bits:
PCL, PCH, PCU
JCG-2009
Mapa de memoria
JCG-2009
Manejo de la pila
• La pila opera por medio de una serie (31) de registros
RAM de 21 bit de ancho que son manejados por un
puntero de pila (STKPTR) de 5 bits
• Una operación de CALL origina un PUSH mientras que una
operación de RETURN ocasiona un POP
• El contenido de la ultima dirección en la pila (TOS) es
accesible en el conjunto de registros TOSU:TOSH:TOSL
• Cuando se desea acceder a la pila es recomendable
deshabilitar las interrupciones para evitar problemas de
corrupción de la información
JCG-2009
Ciclo de instrucción
JCG-2009
Organización de las instrucciones
• Un ciclo de instrucción consiste de 4 ciclos: Q1 -> Q4 que
son usados para leer, decodificar y ejecutar una
instrucción.
• Debido al ¨pipelining¨ de la arquitectura del MCU todas
las instrucciones toman se completan en un ciclo de
reloj, excepto aquella que requieran saltos.
• Las instrucciones se organizan en bytes y cada
instrucción normalmente se almacena en dos bytes,
excepto las de saltos y las de transferencia de memoria a
memoria que requieren 4 bytes
JCG-2009
Organización de las instrucciones
JCG-2009
Organización de la memoria de datos
• La memoria de datos se implementa como un banco de
registros RAM.
• Se pueden mapear 4KB registros divididos en 16 bancos
de 256 KB
• La memoria de datos se divide en SFR y GPR
• Para agilizar los procesos de escritura/lectura de la
memoria de datos se maneja un esquema de bancos
administrados por el registro BSR
• El conjunto BSR:REG permite generar una dirección para
acceder la memoria de datos
JCG-2009
Mapeo de la memoria de datos
JCG-2009
Registros de función especial
JCG-2009
Modos de direccionamiento
• Las instrucciones solo son accesibles a través del PC
• Los datos pueden ser accedidos de acuerdo al tipo de
instrucción que se quiere realizar y se ubican 4 modos de
direccionamiento posibles:
–
–
–
–
Inherente
Literal
Directo
Indirecto
• Existe otro modo de direccionamiento poco común que
se llama direccionamiento indexado con desplazamiento
literal (activo si XINT bit esta activo)
JCG-2009
Set de instrucciones
• EL MCU 18F4550 posee 79 instrucciones las
cuales se pueden agrupar de acuerdo a la
manipulación de la información requerida o al
tipo de función en 4 grupos:
–
–
–
–
Operaciones orientadas a byte
Operaciones orientadas a bit
Operaciones con literales
Operaciones de control
JCG-2009
Formato de las instrucciones
JCG-2009
Instrucciones orientadas a byte
JCG-2009
Instrucciones orientadas a bit y control
JCG-2009
Instrucciones con literales y memoria
JCG-2009
Tarea
• Conectar el PIC18F4550 con un cristal
de 8 MHz y su respectiva lógica de Reset
• Instalar MPLAB v8.30
JCG-2009
Descargar