R2000.H
Este archivo nos define la clase R2000 que es la clase que
define el microprocesador que luego implementamos en el archivo R2000.c y que
ejecutamos en SIMULADOR.C.
class r2000
{
WIRE inst[32],pcin[32],pcout[32],mi_in[32],RegDst,ALUSrc,MemToReg,
RegWrite,RegWrite2,MemRead,MemWrite,MemWrite2,Branch,AluOp[2],Salir, Jump,
dato1[32],dato2[32],regdata[32],control_in[6],reg1[5],reg2[5],reg3[5],dir[16],mux0in[2],
mux0out[5],mux1in[2],mux1out[32],mux2in[2],mux2out[32], mux4in[2],mux4out[32],
extdir[32],alucin[6],alusel[3],alures[32],overflow,carry_out,zero,md_out[32],
mux3in[2],mux3out[32],cuatro[32],add0out[32],carry_out2,
add1out[32],andout,bngate,a_op[2],d_addr[6];
MUX_2_1 mux[134];
ALU_32BIT_CLA alu;
ADD32 add[2];
REG_32 pc;
SRAM_64x32 mi;
SRAM_64x32 md;
FR_32x32 reg;
CONTROL control;
ALUCON alucon;
AND p_and, p_and2, p_and3;
void inicializar_elementos(void); // Sirve para poner el PC a cero
void r2000::decimal_binario(int decimal, WIRE binario[],int tamano); //Sirve para pasar de decimal a binario
public:
void run(void); // Ejecuta el procesador
void cargar_meminst(char archivo[]); // Carga un programa en la memoria de instrucciones
// desde un archivo.
void cargar_instruccion(WIRE instruc[32],WIRE pc[6]);// Carga una instrucción en memoria de instrucciones
void cargar_datos(int dato, int direccion); // Carga los datos en la memoria de datos
void printb(char texto[],WIRE bus[],int tamano); // Imprime un texto a continuación el bus con el tamaño.
void printb(char texto[],WIRE bus); // Imprime un texto a continuación un bus de 1 bit
void imprimir_buses (void); // Imprime todos los buses del sistema
void cargar_registro(WIRE direccion[5], WIRE dato[32]); //para meter números en los registros.
void imprimir_registros(void); // Imprime todo el contenido de la memoria de registros
void r2000::imprimir_meminst(void); // Imprime todo el contenido de la memoria de instrucciones
void r2000::imprimir_memdatos(void); // Imprime todo el contenido de la memoria de datos
};