Sie sind auf Seite 1von 7

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA


INGENIERIA EN COMUNICACIONES Y ELECTRONICA

MICROPROCESADORES

PRÁCTICA EMULADOR
DE 𝑢𝑃
CON MICROCONTROLADOR

NOMBRE DEL ALUMNO: Sánchez Hernández Gustavo Angel


GRUPO: 6CM7
OBJETIVO:
Realizar un emulador de un microprocesador basado en microcontroladores con procesador ARM; que
permitirá contar con una herramienta didáctica para el estudio y comprensión de los conceptos de la
arquitectura de una computadora.

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.

El procesador se compone de un grupo de unidades interrelación o unidades de control. Aunque la


arquitectura del microprocesador varía considerablemente de un diseño a otro, los elementos principales del
microprocesador son los siguientes:
 Una unidad de control que vincula la información entrante para luego decodificarla y enviarla a la unidad
de ejecución: La unidad de control se compone de los siguientes elementos: Secuenciado (o unidad lógica
y de supervisión), que sincroniza la ejecución de la instrucción con la velocidad de reloj. También envía
señales de control: Contador ordinal, que contiene la dirección de la instrucción que se está ejecutando
actualmente.
 Registro de instrucción que contiene la instrucción siguiente a ejecutar.
 Unidad de ejecución (o unidad de procesamiento), que cumple las tareas que le asigna la unidad de
instrucción. La unidad de ejecución se compone de los siguientes elementos:

 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.

Das könnte Ihnen auch gefallen