Mpu y Mcu
Mpu y Mcu
Mpu y Mcu
Especificaciones:
En esas fechas ya existían los circuitos integrados de aplicación específica, tales como
circuitos con compuertas, sumadores, registros de corrimiento, memorias, etc., pero el
cliente quería todo en un solo circuito integrado.
Así, en 1971 surge el chip de calculadora 4004 que reemplazaba a seis circuitos
integrados de aplicación específica. El cuatro en la denominación indicaba que el
circuito integrado procesaba 4 bits simultáneamente.
Evolución: Costo
1971: 4004 => 4 bit y lo especificado por el cliente original 300 dólares Cap. X
Unidad aritmética
y lógica (ALU)
Unidad de Unidad de
Unidad de
memoria salida
entrada
Unidad de
Control
El Microprocesador.
Bus de Direcciones
Bus de Datos
Bus de Control
En el sistema anteriormente expresado, las memorias y las unidades de entrada/salida,
son circuitos integrados independientes, así como el microprocesador (MPU). Ejemplos
de unidades de entrada/salida son PIA, ACIA, UART, USART, etc., conectados mediante
tres medios:
El Micro controlador.
MPU (CPU)
Memoria (ROM, RAM, EPROM, E2PROM, FLASH)
Oscilador y reloj internos
Puertos de entrada/salida paralela
Puertos de entrada/salida serie asíncrona y síncrona
Unidad de tiempo (temporizadores)
Convertidor Analógico-Digital (ADC)
Convertidor Digital Analógico (DAC)
Sensores
Protocolos de comunicación, etc.
Un micro controlador varia en costo y aplicación según los atributos con los que
cuente, pero debe incluir al menos el MPU y los puertos de entrada/ salida
Las señales.
Para los sistemas digitales: magnitud física de naturaleza eléctrica codificada en código
binario y normalizado en unidades llamadas palabras.
Las instrucciones.
Programa Ensamblador
Traductor (assembler) Compilador
Programa en Programa en
Programa
lenguaje de lenguaje de
Objeto
máquina máquina
Nomenclatura.
Modelo de programación.
Registros:
Apuntador de pila principal (main stack pointer o MSP) para operación del software del
sistema.
Apuntador de pila de proceso (process stack pointer o PSP) para operación del
software de usuario (externo).
Sólo un apuntador de pila esta activo a la vez, en nuestro caso, siempre se considera el
MSP.
Al hablar de un apuntador de pila, tenemos que definir la pila a la que apunta, ahora
bien, la pila o Stack es una región definida en la memoria del micro controlador, de
propósito específico y acceso aleatorio, en donde el apuntador se decrementa o
incrementa automáticamente según si los datos entran o salen de la pila.
Memoria
R14: Registro de liga (Link Register), almacena la dirección de retorno al programa principal de
una subrutina o interrupción.
R15: Contador de programa (Program Counter), apunta a la instrucción en curso del programa.
Registros especiales:
PSR: Registro de estados del programa (Program Status Register) o registro de banderas
31 0
PSR
Como EPSR, los bits 31 a 27 se consideran reservados, los bits 26 y 25 ocupan las
banderas ICI/IT respectivamente, ICI es “instrucciones e interrupciones continuas”, IT
es “instrucciones del tipo Si-Entonces en lenguaje C”, el bit 24 es siempre 1 e indica
que el microprocesador ejecuta el set de instrucciones corto (Thumb Instructions), los
bits 23 a 16 se consideran reservados incluyendo los bits 19 a 16 (GE), los bits 15 a 10
ocupan también las banderas IC/IT respectivamente y los bits 9 a 0 se consideran
reservados para ésta invocación.
31 567 0
BASEPRI: Sólo se ocupan los bits 5, 6 y 7, para definir la prioridad en la ejecución del
software, en donde 000 es la más alta prioridad y 111 es la última prioridad.
0x000FFFFF
0X20000000
256K SRAM
0X2003FFFF
0X40000000
I/O PORTS
0X400FFFFF
0XE0000000
Internal I/O
Private Peripheral
Bus PPB
0XE0041FFF
0XFFFFFFFF
Modos de Operación
ARM ISR-NUMBER
Foreground (main program) => Thread mode 0
Background (interrupt service routine) => Handler mode X
Lenguaje Ensamblador
Los campos del Código de Operación y Operando son obligatorios, mientras que los
campos de Etiqueta y Comentarios son opcionales a elección y conveniencia del
programador y el proceso a controlar.
Para aplicar el formato de las instrucciones, se definirán los llamados Modos de
Direccionamiento
Modos de Direccionamiento.
Inmediato.
De forma tal que si, por ejemplo, la instrucción está grabada en la dirección 0x0…0268,
significa “mueve al registro R0 el número 0x64, ya que 100 10 = 6416 (operando).
F04F es el código de la instrucción MOV R0 en forma inmediata (operador).
Así, el dato a ser procesado reside en la instrucción misma.
*En cambio, la instrucción MOV R0, #0x100; mueve al registro R0 el numero 100 16
PC = 0x00000268 F04F0064
LDR R0, [R1]; R0 se carga con el dato que reside en la dirección de memoria que
apunta R1, así, si R1 apunta a la dirección de memoria 0x20000004, y el contenido de
esta es, por ejemplo, 2F6A, entonces R0= 0x00002F6A.
LDR R0, [R1, #4]! ; primero R1 se incrementa en 4, entonces R0 se carga con el dato
que reside en la dirección de memoria que apunta R1 sin incremento
LDR R0, [R1], #4; primero R1 se carga con el dato que reside en la dirección de
memoria que apunta R1, entonces R1 se incrementa en 4
LDR R0, [R1, R2]; R0 se carga con el dato que reside en la localidad de memoria que
apunta R1 + R2
Registro.
Los datos a ser procesados y los resultados de las instrucciones residen en los registros
ADD R2, R0; Suma el contenido de R0 a R2, R2 = R2 + R0; R2 pierde su valor original
Registro lista.
Las instrucciones “PUSH” y “POP” que atañen a la pila del stack, operan sobre un
registro o sobre una lista de registros: Sabemos que SP = R13, LR = R14, PC = R15
POP R1- R3, PC; Recupera R1, R2, R3 y PC con sus valores originales
Realizar los siguientes ejercicios, considerar una longitud de palabra de 32 bits para el
área de datos de memoria RAM
PC 0x00000144 xxxxxx
Si R1 = 0x20000004 y R2 = 0x0000000C
Y se tiene la instrucción LDR R0, [R1, R2]
Determinar la dirección de la cual se cargara el dato y en donde se almacenara
Notas: 1 Recordar que en hexadecimal los número 0 al 9 son igual que en decimal
2 Cada digito hexadecimal ocupa 4 bits, por lo tanto 8 caracteres
hexadecimales abarcan 32 bits
3 La memoria normalmente se direcciona cada 16 o 32 bits, lo que ocasiona
que el PC tenga un avance siempre par
4 El microprocesador siempre procesa los datos en hexadecimal