Beruflich Dokumente
Kultur Dokumente
MICROPROCESADORES
PRÁCTICA EMULADOR
DE 𝑢𝑃
CON MICROCONTROLADOR
INTRODUCCION:
En informática, un emulador es un software que permite ejecutar programas o videojuegos en una plataforma
(sea una arquitectura de hardware o un sistema operativo) diferente de aquella para la cual fueron escritos
originalmente. A diferencia de un simulador, que solo trata de reproducir el comportamiento del programa,
un emulador trata de modelar de forma precisa el dispositivo de manera que este funcione como si estuviese
siendo usado en el aparato original.
La unidad central de procesamiento o unidad de procesamiento central (conocida por las siglas CPU, del
inglés: central processing unit), es el hardware dentro de un ordenador u otros dispositivos programables, que
interpreta las instrucciones de un programa informático mediante la realización de las operaciones básicas
aritméticas, lógicas y de entrada/salida del sistema.
Dos componentes típicos de una CPU son la unidad aritmético lógica (ALU), que realiza operaciones
aritméticas y lógicas, y la unidad de control (CU), que extrae instrucciones de la memoria, las decodifica y las
ejecuta, llamando a la ALU cuando sea necesario.
La unidad aritmética lógica (ALU): sirve para la ejecución de cálculos aritméticos básicos y funciones
lógicas. *La unidad de punto flotante (se escribe FPU), que ejecuta cálculos complejos parciales que la
unidad aritmética lógica no puede realizar.
El registro de estado: son los registros de memoria en los que se deja constancia de algunas condiciones
que se dieron en la última operación realizada y que podrán ser tenidas en cuenta en operaciones
posteriores.
El registro acumulador: es un registro en el que son almacenados temporalmente los resultados
aritméticos y lógicos intermedios que serán tratados por el circuito operacional de la unidad aritmético-
lógica (ALU).
Una unidad de administración del bus (o unidad de entrada-salida) que administra el flujo de información
entrante y saliente, y que se encuentra interconectado con el sistema RAM.
DIAGRAMA DE FLUJO (UML):
PROGRAMA EN C:
#include "mbed.h" case 3: //MUL
{
BusOut address(PTA13,PTD2,PTD4,PTD6); reg1=IR&0X0C;
Serial terminal(USBTX,USBRX); reg1= reg1>>2;
int PC=0; reg2=IR&0X30;
char codes[8]={0X60,0X74,0X91,0XC6,0XC7}; reg2= reg2>>4;
char i=0, IR, inst, rd,reg1,reg2, imm, regs[4]; rd=IR&0XC0;
rd= rd>>6;
class process regs[rd]= (regs[reg1] * regs[reg2]);
{ break;
public: }
void deco(void) }
{
/*Ciclo de búsqueda*/ terminal.printf("\n\r inst=%d regd=%d datoi=%d \n\r",inst,rd,regs[rd]);
IR=codes[i]; }
/*ciclo de decodificacion*/ };
inst=IR&0X03;
int main()
switch (inst) {
{ terminal.printf(" Registros \n\r");
case 0: //MOV terminal.printf("PC IR RO R1 R2 R3 \n\r");
{
rd=IR&0X0C; while(i<=5)
rd=rd>>2; {
imm=IR&0XF0; terminal.printf("%04X ",PC);
imm=imm>>4; terminal.printf("%02X %02X %02X %02X %02X\r",codes[i],regs[0],regs[1],
/*execute*/ regs[2],regs[3]);
regs[rd]=imm;
break; address = PC++;
} process objeto;
case 1: //ADD objeto.deco();
{ i++;
reg1=IR&0X0C; //terminal.getc();
reg1= reg1>>2; wait(0.2);
reg2=IR&0X30; }
reg2= reg2>>4;
rd=IR&0XC0;
rd= rd>>6; terminal.printf("FIN DE EMULADOR \n\r");
regs[rd]= regs[reg1] + regs[reg2]; }
break;
}
case 2: //SUB
{
reg1=IR&0X0C;
reg1= reg1>>2;
reg2=IR&0X30;
reg2= reg2>>4;
rd=IR&0XC0;
rd= rd>>6;
regs[rd]= regs[reg1] -regs[reg2];
break;
}
CONCLUSIONES:
El uso de esta herramienta facilita la explicación de conceptos como son los ciclos de trabajo del cpu; como
busqueda, decodificación, ejecución y write back. El ciclo de memoria no se ve con tanta claridad ya que
ocupamos la memoria interna del microcontrolador.