Arquitectura de Microprocesadores y Sistemas Embebidos

MICROPROCESADOR

Dispositivo digital, programable, secuencial e integrado. Consta de UC y ALU (núcleo del micro), Unidad de instrucción (Registro de instrucción, decodificador de instrucciones y contador de programa), FPU (unidad de punto flotante), E/S (por programa y por interrupciones) y DMA (Acceso directo a memoria).

ARQUITECTURA VON NEUMANN

  • Comparten Bus: instrucciones y datos → longitud de la instrucción se ve condicionada por la longitud del dato → Instrucción Compleja (se tiene que realizar varios accesos a Memoria) 1º Se accede a la instrucción y después al dato.
  • Memoria única: gran capacidad, tiempo de latencia alto (tiempo que tarda el dispositivo en tener acceso a una determinada dirección de memoria).

ARQUITECTURA HARVARD

Mayor velocidad pero menor capacidad.

  • Memoria de datos e instrucciones independientes: acceso simultáneo, longitud de instrucción independiente de la longitud del dato.
  • Menor capacidad que la Von Neumann: pero, mucho menos tiempo de latencia, la misma dirección vale para la instrucción y el dato.

TIEMPO DE EJECUCIÓN

Tiempo ejecución = nº Instrucciones * nº CI (Ciclos x instrucción) * Tc (Período de Ejecución). El tiempo de ejecución mejora el Rendimiento. En la arq. CISC (Complex Instruction Set Computer) → ↑nº CI ↑Tc . En la arq. RISC (Reduced Instruction Set Computer) ↓nº CI ↓Tc.

ARQUITECTURA CISC

Juego de instrucciones complejas, Nº instrucciones menor, Formato de instrucción formado por elevados nº bits, ↓Capacidad de direcciones pero necesidad de un mayor tamaño de palabra, Facilidad de compilación, Lentitud ejecución de instrucciones en paralelo (pipeline). Ejemplo: Mult Z,X,Y.

ARQUITECTURA RISC

Instrucciones más simples, Nº Instrucciones mayor, Compilador más complejo, Longitud de instrucciones fijas, Arquitectura Harvard (+velocidad –capacidad), Arquitectura LOAD/STORE. Ejemplo: LOAD A,X / LOAD B,Y / MULT A,B /STORE Z,A.

COMPONENTES uC

REGISTROS INTERNOS

Memoria del tamaño de una palabra de memoria principal que se usa para almacenamiento temporal. Latencia muy baja. Vértice superior de pirámide de jerarquía memoria. Los hay de propósito general, de propósito específico, registros de memoria y registros de datos.

LÓGICA ALU

Unidad aritmético lógica. En el 8051 se encuentra el PSW (Program Status Word). [CY][AC][F0][RS1][RS0][OV][F1][P] == (Acarreo byte, acarreo de la cuaterna, para utilizar el programador, selección del banco de memoria, desbordamiento, pariedad impar).

UNIDAD DE CONTROL

Es la encargada de tomar las instrucciones de memoria, decodificar o interpretarlas instrucciones y ejecutarlas.

  • Reloj: genera una señal pulsatoria (en este caso 0-5V) cuadrada a ↑Frec. Marca los instantes en los que comienzan cada una de las fases de la que consta la instrucción.
  • Secuenciador: genera las señales y ordenes necesarias, que sincronizadas con la señal de reloj, permite que la instrucción se ejecute paso a paso.
  • PC: contador de programa, almacena la dirección de memoria de instrucción donde esta almacenada la siguiente instrucción a ejecutar. En la ejecución secuencial, su contenido se incrementa automáticamente con cada fase de ejecución de la instrucción, se saltos o bifurcaciones se rompe la secuencia.
  • RI: registro de instrucción, almacena el formato de la instrucción que se está ejecutando en ese momento.
  • Decodificador de Instrucción: reconoce la instrucción almacenada en RI y a través del secuenciador envía las señales necesarias para la ejecución de la instrucción.

FORMATO INSTRUCCIÓN

Código de Operación (0 y 1 que informan de la instrucción y modo de direccionamiento) y Dirección u Operando {[Tipo de operando (Fuente: con los que se realiza la operación y Destino: donde se almacena el resultado de la operación) Almacenamiento de los operandos (-En el formato de la instrucción, en los registros de la CPU, en la memoria) ]}

INSTRUCCIÓN SIN DIRECCIÓN

Asociada a la pila; SP (Puntero Pila: contiene la dirección que almacena el último dato introducido en la pila, Es una registro que se autoincrementa y autodecrementa) ; Pila tipo LIFO (Last In First Out);

MODOS DE DIRECCIONAMIENTO

  • Inmediato: se caracteriza por el símbolo # (MOV A, # 15d A←15d)
  • Registro o Inherente: No tienen que buscar operando sobre el cual actuar ya que uno de los operando es el contenido de un registro (SUBB A,R2 ; DIV AB).
  • Directo: la instrucción contiene la dirección de memoria donde está almacenado el operando (MOV A, 79h).
  • Indirecto: la instrucción contiene la posición (25h) que almacena la dirección (1Fh) donde está almacenado el dato (24d) (ADD A,@25h ; A+[25h(1Fh)].
  • Indexado: muy útil para recorrer tablas. Tablas: son una serie de posiciones consecutivas de memoria (instrucciones o programa). Lo que hace: obtiene la dirección donde está almacenado el dato, al sumarle al registro índice (Acumulador) el contenido de un Registro (DPTR →DPTH Y DPTL) (MOV A,@A+PC).

ESTRUCTURA PIPE-LINE Y ORTOGONALIDAD

La estructura pipe-line es una técnica de realización de procesadores por la cual se solapa la ejecución de las instrucciones. En la arquitectura CISC hay lentitud en la ejecución de instrucciones en paralelo(pipeline). El nivel de ortogonalidad determina que cualquier instrucción pueda utilizar cualquier elemento de la arquitectura como fuente o destino utilizando cualquier modo de direccionamiento.

MEMORIAS ROM

(Read Only Memory): no volatile, solo lectura (Arranque y Bios). PROM: Solo diseñada por el que la hace. EPROM: solo diseñada una vez. EEPROM: borrado y escritura a nivel byte pero tiene problema de fragmentación. FLASH: a nivel de bloques, tiene mayor densidad de integración y velocidad.

MEMORIAS RAM

Lectura y escritura, almacenamiento temporal y volátil.

  • ASÍNCRONAS: (Estática→SRAM y Dinámicas→DRAM) Las SRAM su celda básica es un triestable, ↑Velocidad ↓Densidad de integración. Las DRAM su celda básica es un Cond que cada x tiempo se refresca, ↓Velocidad ↑Densidad de integración)
  • SINCRONAS: (Estática→SSRAM y Dinámicas→SDRAM).

MEMORIA CACHÉ

Poca capacidad de almacenamiento pero mucha velocidad.

BUSES

  1. BUSES PRINCIPALES: – Direcciones (unidireccionales, desde uC al disp.) – Datos (bidireccionales, en ambas direcciones) – Control (líneas independientes, unas en una dirección y otros en otras).
  2. DIRECCIONALIDAD EN LAS TRANSMISION DE INFORMACIÓN: Simplex (en una sola dirección), Half Duplex (ambas direcciones o sentidos pero no simultáneamente, Bus de Datos), Full Duplex (ambas direcciones o sentidos y simultáneamente, Bus de Control)
  3. TEMPORIZACIÓN:
    • Síncrono (Todos los elementos conectados al bus están sincronizados mediante una señal de Reloj, Todos los dispositivos deben trabajar a la misma velocidad, CLOCK SKEW→ desplazamiento de reloj→ debido a la Tª, tiempo de respuesta de diferentes en circuitos intermedios, longitud del cable…)
    • Asíncrono (No reloj→ protocolos de comunicaciones o diálogo entre dispositivos (handshake), Los dispositivos conectados pueden trabajar a diferentes velocidades) PROTOCOLO DE COMUNICACIONES: conjunto de reglas y señales que garantizan que todos los disp. conectados al bus van a comunicarse o entenderse con el mínimo de errores.
  4. TAMAÑO DEL BUS:
    • Separado o Demultiplexado: buses independientes de dimensiones y de datos (solo se necesita un ciclo del bus para enviar la información).
    • Multiplexado: comparten bus para direcciones y datos, Primero se envía la dirección y después el dato →2 ciclos de bus, Necesidad de un dispositivo de almacenamiento intermedio, Mas lento pero el uC se ahorra pines. INCONVENIENTES Y VENTAJAS: Si ↑Longitud del Bus + ↑Nº de dispositivos conectados → Mas posibilidad (cuello de botella). Ventajas : flexibilidad del sistema, economía.

TEMPORIZADOR DE ENCENDIDO(MCLRE): activo por defecto, si la V baja, se produce un reset en el uc, si vuelve y se activa debe estar activo el MCLRE. SLEEP, desbor perro guardian, reset pic o generar instrucción. REGISTROS EN FLASH-RAM: Registro TBLPTR:(TBLPTRL—BYTE BAJO, TBLPTRH—BYTE ALTO, TBLPTRU—BYTE SUPERIOR),(REGISTRO TABLAT: (TBLRD—LECTURA DE TABLA, TBLWT—ESCRITURA DE TABLA) 2 CM. BUS CAN: Controlador (enlace entre el micro y e transreceptor),transreceptor(transmisor/receptor que acondiciona las señales para que puedan transmitirse), dos resistencias y cables, la transmisión se divide en mensajes, cada mensaje (tipo de dispo, prioridad). TOTEM POLE, consta de dos transistores emisor-colector, uno de ellos conduce y el otro en corte, nunca saturan, mayor velocidad de conmutación y menor consumo. El puerto P0 dispone esta salida. MULTICAST, es un método de envio simultaneo de paquetes que será recibido solo por un grupo de receptores. ATENCION INTERRUPCION, solicitud de interrupción, reconocimiento de la interrrup, ejecución de la rutina de servicio de interrupción, retorno de la rsi y continua la ejecución del programa. SDRAM, tiene interfaz síncrona, es dinámica, pierde información cuando se quita alimentación, su celda es un condensador, necesita refresco, mayor densidad integración, mas barata, menor consumo. SRAM, almacenamiento por biestable, no necesita refresco, menor densidad de integración, mas rapidas, mas consumo, más cara, utilizada en PIC18F4520

SISTEMA EMPOTRADO O EMBEBIDO

Sistema electrónico, realiza una determinada función, es parte de una entidad mayor, su núcleo (uP,uP,FPGA,DSP), tareas (- Procesamiento de información generada por sensores. – Control de determinados actuadores). Objetivos: Minimizar el tamaño y el coste, Maximizar el rendimiento y la fiabilidad, tener una respuesta en tiempo real.

REDISEÑO DEL SISTEMA COMPLETO

Diseño Inicial ; Diseño Hardware // Diseño Software; Prototipo PCB // Prototipo Software ; Integración Hardware-Software Prototipo ; Pruebas y depuración; Producto final.

LENGUAJE ENSAMBLADOR

Ejecución de instrucciones en el orden en que aparecen en el programa, Intermedio entre C y máquina, Ensamblar: ensamblador a máquina.

INSTRUCCIONES

  • ORIENTADAS A BYTE [MOVWF f,a // ADDWF f,d,a]
  • ORIENTADAS A BIT [BCF f,b → pone a “0” el “bit b” del “registro f” //BTSS f,b → lee “b” y si=1 se salta una instrucción]
  • CONTROL [GOTO n // PUSH →mete un dato en la pila //POP→ saca un dato de la pila]
  • LITERALES [ADDLW k →suma a la literal //RETLW k →retorno de una subrutina//SUBLW k→resta a la literal]
  • MEMORIA DE PROGRAMA [TBLRD*+ // TBLRD* // TBLWT+* ]
  • DIRECTIVAS [EQU→ Igual que en direcciones // END→fin //ORG→Origen]
  • RRNFC f,d,a → rotación a la derecha sin acarreo del registro de trabajo, rota W si d=0, sino rota f.
  • INCF f,d,a → incrementa una unidad el contenido de f.
  • XORLW k → XOR entre literal y W (registro trabajo).
  • MOVLW k → carga el valor de la literal en el registro de trabajo.

PROGRAMACIÓN DEL PIC

BOOTLOADER: es un cargador de arranque, diseñado para preparar en el uC todo lo que necesita para que se ejecute o modifiquemos nuestro programa. Reside en la memoria flash y se ejecuta cada vez que se reinicia (pulsador reset) el uC. Permite que se pueda cargar a través del USART el programa diseñado sin tener que utilizar un programado HW, pero necesita la interfaz de programación tiny Bootloader. PROGRAMADOR: en nuestro caso tenemos PicKit 2, PicKit 3, etc. Los terminales del programador se conectan a los pines específicos de programación del uC.

INTERRUPCIÓN

Condición o evento, que puede causar en un instante determinado, la suspensión temporal del programa que se está ejecutando, para posteriormente el uC tratarla o atenderla. Se activa RSI (Rutina de Servicio de Interrupción) TIPOS DE INTERRUPCIONES SW: Simulados → por ejemplo cada “x tiempo” comprobar el estado de una o varias banderas. Producidas por un evento interno → Finalización de la escritura en la EEPROM, Desbordamiento del contador/temporizador. ATENCIÓN DE INTERRUPCIÓN: 1) Solicitud de la interrupción: si existe por varios periféricos, el uC atiende al de mayor prioridad. 2) Reconocimiento de la Interrupción: se salva PC y todos los contenidos de registros que sean necesarias para que pueda seguir ejecutando el programa principal donde se dejó. 3) Atención de la interrupción: ejecución de la RSI (se atiende al periférico). 4) Retorno de la interrupción: comienza a ejecutarse el PP en el punto en el que lo dejó. FORMA DE CARGAR LA PILA: con la instrucción CALL, se origina una interrupción→ se carga en el PC el “vector de interrupción”. INSTRUCCIONES EN EL PIC PARA RECUPERAR LO ALMACENADO EN LA PILA: Para ello debe finalizar la RSI. RETURN: retorno de la interrupción (PC←PILA). RETLW: retorno de la interrupción (PC←PILA, W←L). RETFIE: retorno de la interrupción (PC←PILA, GIE=1→Se habilitan globalmente todas las interrupciones).

METODO E/S CONTROLADA POR PROGRAMA

Ya no se utiliza, ya que no se optimiza, hay tiempos muertos. No existe anidamiento de interrupciones ni esquemas de prioridades. Si durante la ejecución de una instrucción se produce otra petición de instrucción de mayor prioridad que la primera, el uC pasa a atender esta última y posteriormente continuará con la ejecución de la primera.

METODO E/S CONTROLADA POR INTERRUPCIONES

Si la interrupción es de máxima prioridad, el uC atiende esta instantáneamente. SI es asíncrona significa que no está controlada por programa sino directamente por interrupciones. Puede ser enmascarable (asociada a un bit habilitador) y no enmascarable (máxima prioridad). .INTIO1, modo de funcionamiento del pic para usar su oscilador interno, libera las patillas 13 y 14. La salida será fosc/4. Ra6, habilitada como salida, ra7 habilitada como e/s. UART, conversión de datos paralelos a serie y vice, genera el bit de start, inserta el bit stop, comprueba la paridad de dato, almacenamiento temporal, controla bit de dato, genera velocidad. USB 2.0 Y 3.0, half dúplex y full dúplex. SFR GENERAL, son los registros direccionados en la parte alta de la ram interna del uc8051, determinan el funcionamiento del uc, hay un total de 21 sfrs (acumulador, control pot,puertos…). CODIGOC: 1:LIBRERÍA DEL PIC, 2-3: DEFINIMOS LAS MASCARAS DEL BYTE ALTO Y BYTE BAJO, 4 UNSIG: CALCULA EL INICIO DEL CODIGO RSI EN EL VECTOR DE INTERRUPCION. SE ASIGNA EL VALOR DE LA INTERRUCION ALTO O BAJO EQUIVALENTE AL ORG EN EL ENSAMBLADOR. 5: para que el compilador entienda que la función requerida es RSI. RB3-FINAL: si la bandera de actuación de timer 1 se activa, se cambia el valor de RSI y se guardara en la parte alta y baja del registro del Timer 1. Es el valor necesario para el timer o tiempo de la interrupción.

TIPOS INTERRUPCIONES PIC 18F4520

  • EXTERNAS: (conectados a los pines (manuales con interruptores) por cambio de estado, interrupción del T0).
  • INTERNAS: (MSSP,T1,T2,T3, Fallo oscilador y 2 que no son enmascarables, la escritura EEPROM y la detención de anomalías en VDD).

IPEN=1→DOS NIVELES DE PRIORIDAD (Baja Prioridad con puntero en la dirección 0x18, Alta Prioridad con puntero en la dirección 0x08). IPEN=0 (todas son fuentes de altas prioridad). G1EH (habilitador de todas instrucciones de alta prioridad). G1EL (habilitador de todas instrucciones de baja prioridad).

CONCEPTO DE COMUNICACIONES

La coordinación entre el transmisor y el receptor se realiza siguiendo un protocolo de comunicaciones (conjunto de reglas que aseguran una transferencia de datos). Hay 2 formas:

  • PARALELO: transmisión simultánea velocidad de transferencia alta, varias líneas de transmisión, una por cada bit, atenuación a medida que aumenta la distancia entre emisor y receptor. Se usa para circuitos o componentes cercanos.
  • SERIE:
    • Asíncrona: reloj local, bits de start y stop y una línea.
    • Síncrona: señal de reloj común, dos línea, mayor velocidad. Hay 2 tipos:
      • FULL DUPLEX: transmisor y receptor al mismo tiempo, simultaneo.
      • HALF DUPLEX: 1º se transmite, 2º se recibe.

SCI o USART

SCI (Interfaz de Comunicación Serie) o USART (Transmisor/Receptor, Asíncrono/Síncrono Universal). Lo que hace es hacer compatible las señales del uC con el protocolo RS232/RS485 para comunicarse con el exterior. Tres modos de funcionamiento (Asincrono Full Duplex, Sincrono Maestro (half dúplex), Sincrono Esclavo (half dúplex))

SPI (SERIAL PERIPHERAL INTERFACE)

EJEMPLO COMUNICACIÓN ENTRE MAESTRO Y ESCLAVO:

  1. El maestro genera una frecuencia/velocidad de transmisión < velocidad máxima que puede soportar el esclavo de peor prestación.
  2. El maestro pondrá a nivel bajo la señal SS del esclavo con el que se va a comunicar. Si es necesaria una demora en transmisión/recepción, el maestro debe generar un retardo entre transmisión/recepción.
  3. Transmision/Recepción de un bit de datos con cada pulso de reloj. El nº de pulsos va a depender de la longitud de la palabra.
  4. Termina la transmisión/recepción, el maestro deja inactivo su SCLK y pondrá SS a nivel alto.

I2C (INTER-INTEGRATED CIRCUITS)

MAESTRO VA A RECIBIR UN DATO DE 2BYTES:

  1. Después de la condición START, el maestro envía la dirección del esclavo con el que se va a comunicar. El octavo bit de dirección indica: R/W=1 →Esclavo a maestro
  2. En el noveno pulso de reloj, el esclavo reconoce que está preparado para la comunicación, poniendo la línea SDA=0 (ACK).
  3. Esclavo envía el primer byte y termina con la línea SDA=0(ACK).
  4. Igual con el 2º byte.
  5. El maestro genera la condición STOP, es decir, termina la transmisión.

BUSY FLAG

Bandera correspondiente a la lcd que indica si está ocupada. Cuando el Busy Flag se encuentra a 1 no se puede atender nada.

CPOL y CPHA

Son dos bits de configuración en la interfaz SPI, la primera es la polaridad del reloj y la segunda es la fase. Hay por tanto 4 combinaciones incompatibles entre sí.

FORMULAS → TRELOJ=1/FRELOJ © TCM=TRELOJ*12 © Tiempo Ejecucion=xCM*TCM AUTORECARGA PARA SM0D=0 → THI=256 – (FOSC * 2SMOD)/(BAUDIOS*32*12) TEMPORIZACIÓN DE 4us CON EL TEMP0 → TMAX=(12/Xtal)*2n © Desb=TDES/TMAX © Valor Precarga(V)=2n * (1-Desb) © Aveces TDES=1/FONDA CUADR *2 CODIGOS CON FOR → for*for=incrementos © TRELOJ=1/FRELOJ © TCM=TRELOJ * 4 © retardo=TCM * incrementos TEMPORIZACIÓN MAX (T0=8 ó 16 bit, T1=16, T2=8, T3=16)→ TMAX=2n * Valor Prescaler * TCM © TOSC=1/FOSC © TCM=TOSC*4 GENERAR RETARDO 1ms → 1)Tmax llega al retraso? © 2) FPRES=Valor Prescaler(ej:1/4 o 1/32)*(FOSC/4) © 3) FINT=1/TRETRASO © 4) Cuenta=FPRES/FINT © 5)Valor a cargar THROL=2n-cuenta © 6) TREAL=(1/FPRES)*cuenta VALOR CARGA BRG → 1)Poner SPBRGH=SPBRGL © 2)Valor a cargar n=[(FRELOJ/Baudios)/64 ]-1 © 3) Velocidad trans real BRG=FOSC/64 (n+1) © 4) %error=(BRG-baudios)/baudios