From 31f0d8a9fc1aaea541ca131ec71ed14d5071c1d4 Mon Sep 17 00:00:00 2001 From: WilliamMiceli Date: Sat, 6 Apr 2019 14:18:43 -0400 Subject: [PATCH] Enabled Bubble Sort for testing --- lab2CA.srcs/sources_1/new/instructionMemory.v | 143 +++++++++--------- 1 file changed, 72 insertions(+), 71 deletions(-) diff --git a/lab2CA.srcs/sources_1/new/instructionMemory.v b/lab2CA.srcs/sources_1/new/instructionMemory.v index d4af570..2675e30 100644 --- a/lab2CA.srcs/sources_1/new/instructionMemory.v +++ b/lab2CA.srcs/sources_1/new/instructionMemory.v @@ -5,16 +5,17 @@ module instructionMemory( output reg [8:0] readData ); - reg [8:0] memory [512:0]; + reg [8:0] memory [100:0]; // Maximum of 512 memory locations + // Vivado will give warnings of unconnected ports on the "address" bus if they are unused initial begin - //Equation Solver - memory[0] <= 9'b000000000; - memory[1] <= 9'b000100000; //load - memory[2] <= 9'b000101000; //load - memory[3] <= 9'b010100010; //add - memory[4] <= 9'b111100000; //shift left - memory[5] <= 9'b111100000; //shift left +// //Equation Solver +// memory[0] <= 9'b000000000; +// memory[1] <= 9'b000100000; //load +// memory[2] <= 9'b000101000; //load +// memory[3] <= 9'b010100010; //add +// memory[4] <= 9'b111100000; //shift left +// memory[5] <= 9'b111100000; //shift left // //Testing all instructions // memory[6] <= 9'b010100011; //sub @@ -75,69 +76,69 @@ module instructionMemory( // memory[39] <= 9'b000000000; -// Bubble Sort -// memory[0] <= 9'b000000001; // nop -// // Setup -// memory[1] <= 9'b010000000; // zero $a -// memory[2] <= 9'b000100000; // lb $a, $a -// memory[3] <= 9'b010001000; // zero $b -// memory[4] <= 9'b010010000; // zero $c -// memory[5] <= 9'b010011000; // zero $d -// memory[6] <= 9'b101001000; // banks $b, $0 -// memory[7] <= 9'b101001010; // banks $b, $1 -// memory[8] <= 9'b100100011; // jf EndChk -// // Increment current index to compare next pair of values -// // Inc: -// memory[9] <= 9'b101001001; // bankl $b, $0 -// memory[10] <= 9'b011001001; // addi $b, 1 -// memory[11] <= 9'b101001000; // banks $b, $0 -// // Check if at the end of the array -// // EndChk: -// memory[12] <= 9'b101001001; // bankl $b, $0 -// memory[13] <= 9'b011101000; // slt $b, $a -// memory[14] <= 9'b110001001; // beq $b, JSC -// memory[15] <= 9'b100100001; // jf LoadNext -// // JSC: -// memory[16] <= 9'b100110100; // jf SwapChk -// // Load next values for comparison -// // LoadNext: -// memory[17] <= 9'b101001001; // bankl $b, $0 -// memory[18] <= 9'b011001001; // addi $b, 1 -// memory[19] <= 9'b000110010; // lb $c, $b -// memory[20] <= 9'b011001001; // addi $b, 1 -// memory[21] <= 9'b000111010; // lb $d, $b -// // Compare loaded values to see if they need to be swapped -// memory[22] <= 9'b101011110; // banks $d, $3 -// memory[23] <= 9'b011111100; // slt $d, $c -// memory[24] <= 9'b110011001; // beq $d, JI -// memory[25] <= 9'b100100001; // jf Swap -// // JI: -// memory[26] <= 9'b101110010; // jb Inc -// // Swap values in array -// // Swap: -// memory[27] <= 9'b101001001; // bankl $b, $0 -// memory[28] <= 9'b011001001; // addi $b, 1 -// memory[29] <= 9'b101011111; // bankl $d, $3 -// memory[30] <= 9'b001011010; // sb $d, $b -// memory[31] <= 9'b011001001; // addi $b, 1 -// memory[32] <= 9'b001010010; // sb $c, $b -// memory[33] <= 9'b010001000; // zero $b -// memory[34] <= 9'b011001001; // addi $b, 1 -// memory[35] <= 9'b101001010; // banks $b, $1 -// memory[36] <= 9'b101111100; // jb Inc -// // Check to see if any swaps have been made in the last iteration -// // SwapChk: -// memory[37] <= 9'b101001011; // bankl $b, $1 -// memory[38] <= 9'b110001001; // beq $b, JE -// memory[39] <= 9'b100100001; // jf Reset -// // JE: -// memory[40] <= 9'b100100011; // jf End -// // Reset: -// memory[41] <= 9'b010001000; // zero $b -// memory[42] <= 9'b101001000; // banks $b, $0 -// memory[43] <= 9'b101111011; // jb LoadNext -// // End: -// memory[44] <= 9'b000000000; // halt + //Bubble Sort + memory[0] <= 9'b000000001; // nop + // Setup + memory[1] <= 9'b010000000; // zero $a + memory[2] <= 9'b000100000; // lb $a, $a + memory[3] <= 9'b010001000; // zero $b + memory[4] <= 9'b010010000; // zero $c + memory[5] <= 9'b010011000; // zero $d + memory[6] <= 9'b101001000; // banks $b, $0 + memory[7] <= 9'b101001010; // banks $b, $1 + memory[8] <= 9'b100100011; // jf EndChk + // Increment current index to compare next pair of values + // Inc: + memory[9] <= 9'b101001001; // bankl $b, $0 + memory[10] <= 9'b011001001; // addi $b, 1 + memory[11] <= 9'b101001000; // banks $b, $0 + // Check if at the end of the array + // EndChk: + memory[12] <= 9'b101001001; // bankl $b, $0 + memory[13] <= 9'b011101000; // slt $b, $a + memory[14] <= 9'b110001001; // beq $b, JSC + memory[15] <= 9'b100100001; // jf LoadNext + // JSC: + memory[16] <= 9'b100110100; // jf SwapChk + // Load next values for comparison + // LoadNext: + memory[17] <= 9'b101001001; // bankl $b, $0 + memory[18] <= 9'b011001001; // addi $b, 1 + memory[19] <= 9'b000110010; // lb $c, $b + memory[20] <= 9'b011001001; // addi $b, 1 + memory[21] <= 9'b000111010; // lb $d, $b + // Compare loaded values to see if they need to be swapped + memory[22] <= 9'b101011110; // banks $d, $3 + memory[23] <= 9'b011111100; // slt $d, $c + memory[24] <= 9'b110011001; // beq $d, JI + memory[25] <= 9'b100100001; // jf Swap + // JI: + memory[26] <= 9'b101110010; // jb Inc + // Swap values in array + // Swap: + memory[27] <= 9'b101001001; // bankl $b, $0 + memory[28] <= 9'b011001001; // addi $b, 1 + memory[29] <= 9'b101011111; // bankl $d, $3 + memory[30] <= 9'b001011010; // sb $d, $b + memory[31] <= 9'b011001001; // addi $b, 1 + memory[32] <= 9'b001010010; // sb $c, $b + memory[33] <= 9'b010001000; // zero $b + memory[34] <= 9'b011001001; // addi $b, 1 + memory[35] <= 9'b101001010; // banks $b, $1 + memory[36] <= 9'b101111100; // jb Inc + // Check to see if any swaps have been made in the last iteration + // SwapChk: + memory[37] <= 9'b101001011; // bankl $b, $1 + memory[38] <= 9'b110001001; // beq $b, JE + memory[39] <= 9'b100100001; // jf Reset + // JE: + memory[40] <= 9'b100100011; // jf End + // Reset: + memory[41] <= 9'b010001000; // zero $b + memory[42] <= 9'b101001000; // banks $b, $0 + memory[43] <= 9'b101111011; // jb LoadNext + // End: + memory[44] <= 9'b000000000; // halt // Binary Search