[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/Th3Hunger/CA-Cache-processor/master/src/hardware/ControlUnit.java [Back]  [Original]

package hardware;

/**
 * RegDst,Branch,MemRead,MemtoReg,ALUOP,MemWrite,ALUSrc,RegWrite // 8
 * 
 *
 */

public class ControlUnit {
	public static String Branch = "";
	public static String MemRead = "";
	public static String MemtoReg = "";
	public static String MemWrite = "";
	public static String ALUOP = "";
	public static String ALUSrc = "";
	public static String RegWrite = "";
	public static String Jump = "0";
	public static String ALUCONT_OP = ""; // control to be passed to ALU;

	public static void MainControl(String flag, String opcode) {
		// Op or funct
		if (flag.equalsIgnoreCase("0")) {
			RegWrite = "1";
			Jump = "0";
			Branch = "0";
			ALUSrc = "0";
			MemtoReg = "0";
			MemWrite = "0";
			MemRead = "0";
			if (opcode.equalsIgnoreCase("0000000000000000")) {
				// ADD
				ALUOP = "000";
			} else if (opcode.equalsIgnoreCase("0000000000000001")) {
				ALUOP = "001";
			} else if (opcode.equalsIgnoreCase("0000000000000010")) {
				ALUOP = "010";
			} else if (opcode.equalsIgnoreCase("0000000000000011")) {
				ALUOP = "011";
			} else if (opcode.equalsIgnoreCase("0000000000000100")) {
				ALUOP = "100";
			}

		} else if (flag.equalsIgnoreCase("1")) {
			// funct
			if (opcode.equalsIgnoreCase("00000")) {
				// lw
				ALUOP = "000";
				RegWrite = "1";
				Jump = "0";
				Branch = "0";
				ALUSrc = "1";
				MemtoReg = "1";
				MemWrite = "0";
				MemRead = "1";
			} else if (opcode.equalsIgnoreCase("00001")) {
				// sw
				ALUOP = "000";
				RegWrite = "0";
				Jump = "0";
				Branch = "0";
				ALUSrc = "1";
				MemtoReg = "X";
				MemWrite = "1";  // changed
				MemRead = "0";
			} else if (opcode.equalsIgnoreCase("00010")) {
				ALUOP = "000";
				RegWrite = "1";
				Jump = "0";
				Branch = "0";
				ALUSrc = "1";
				MemtoReg = "0";
				MemWrite = "0";
				MemRead = "0";
			} else if (opcode.equalsIgnoreCase("00011")) {
				ALUOP = "101";
				RegWrite = "1";
				Jump = "0";
				Branch = "0";
				ALUSrc = "1";
				MemtoReg = "0";
				MemWrite = "0";
				MemRead = "0";
			} else if (opcode.equalsIgnoreCase("00100")) {
				ALUOP = "001";
				RegWrite = "0";
				Jump = "0";
				Branch = "1";
				ALUSrc = "0";
				MemtoReg = "X";
				MemWrite = "0";
				MemRead = "0";
			} else if (opcode.equalsIgnoreCase("00101")) {
				ALUOP = "100";
				RegWrite = "0";
				Jump = "0";
				Branch = "1";
				ALUSrc = "0";
				MemtoReg = "X";
				MemWrite = "0";
				MemRead = "0";
			} else if (opcode.equalsIgnoreCase("00110")) {
				ALUOP = "XXX";
				RegWrite = "0";
				Jump = "1";
				Branch = "0";
				ALUSrc = "X";
				MemtoReg = "X";
				MemWrite = "X";
				MemRead = "X";
			} else if (opcode.equalsIgnoreCase("0000000000000111")) {
				ALUOP = "110";
				RegWrite = "1";
				Jump = "0";
				Branch = "0";
				ALUSrc = "0";
				MemtoReg = "0";
				MemWrite = "0";
				MemRead = "0";
			} else if (opcode.equalsIgnoreCase("0000000000001000")) {
				ALUOP = "111";
				RegWrite = "1";
				Jump = "0";
				Branch = "0";
				ALUSrc = "0";
				MemtoReg = "0";
				MemWrite = "0";
				MemRead = "0";
			}
		}

	}

}

Web Proxy Viewer  |  New URL  |  Original Page