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