From 8e724093865fe73728b1ce3743d7e269068975a7 Mon Sep 17 00:00:00 2001 From: WilliamMiceli Date: Sun, 24 Mar 2019 16:54:06 -0400 Subject: [PATCH] Added Bubble Sort instructions and initial data memory --- lab2CA.srcs/sources_1/new/dataMemory.v | 67 +++++-- lab2CA.srcs/sources_1/new/instructionMemory.v | 177 +++++++++++------- 2 files changed, 160 insertions(+), 84 deletions(-) diff --git a/lab2CA.srcs/sources_1/new/dataMemory.v b/lab2CA.srcs/sources_1/new/dataMemory.v index d88881c..95b0a21 100644 --- a/lab2CA.srcs/sources_1/new/dataMemory.v +++ b/lab2CA.srcs/sources_1/new/dataMemory.v @@ -27,27 +27,54 @@ module dataMemory( // memory[14] <= 9'b000000000; // memory[15] <= 9'b000000000; + // Bubble Sort Initial Memory + + memory[0] <= 9'b000011000; + memory[1] <= 9'b000000000; + memory[2] <= 9'b000100000; + memory[3] <= 9'b010001000; + memory[4] <= 9'b010010000; + memory[5] <= 9'b010011000; + memory[6] <= 9'b101001000; + memory[7] <= 9'b101001010; + memory[8] <= 9'b000100011; + memory[9] <= 9'b101001001; + memory[10] <= 9'b011001001; + memory[11] <= 9'b001001000; + memory[12] <= 9'b101001001; + memory[13] <= 9'b011101000; + memory[14] <= 9'b110001010; + memory[15] <= 9'b000100001; + memory[16] <= 9'b100110100; + memory[17] <= 9'b000001001; + memory[18] <= 9'b011001001; + memory[19] <= 9'b000110010; + memory[20] <= 9'b000000001; + memory[21] <= 9'b000111010; + memory[22] <= 9'b101011110; + memory[23] <= 9'b011111100; + // Binary Search Memory - memory[0] <= 9'b000000000; - memory[1] <= 9'b000000111; - memory[2] <= 9'b000000001; - memory[3] <= 9'b000000010; - memory[4] <= 9'b000000011; - memory[5] <= 9'b000000100; - memory[6] <= 9'b000000101; - memory[7] <= 9'b000000110; - memory[8] <= 9'b000000111; - memory[9] <= 9'b000001000; - memory[10] <= 9'b000001001; - memory[11] <= 9'b000001010; - memory[12] <= 9'b000001011; - memory[13] <= 9'b000001100; - memory[14] <= 9'b000001101; - memory[15] <= 9'b000001110; - memory[16] <= 9'b000001111; - memory[17] <= 9'b000010000; - memory[18] <= 9'b000010001; - memory[19] <= 9'b000010010; +// memory[0] <= 9'b000000000; +// memory[1] <= 9'b000000111; +// memory[2] <= 9'b000000001; +// memory[3] <= 9'b000000010; +// memory[4] <= 9'b000000011; +// memory[5] <= 9'b000000100; +// memory[6] <= 9'b000000101; +// memory[7] <= 9'b000000110; +// memory[8] <= 9'b000000111; +// memory[9] <= 9'b000001000; +// memory[10] <= 9'b000001001; +// memory[11] <= 9'b000001010; +// memory[12] <= 9'b000001011; +// memory[13] <= 9'b000001100; +// memory[14] <= 9'b000001101; +// memory[15] <= 9'b000001110; +// memory[16] <= 9'b000001111; +// memory[17] <= 9'b000010000; +// memory[18] <= 9'b000010001; +// memory[19] <= 9'b000010010; end diff --git a/lab2CA.srcs/sources_1/new/instructionMemory.v b/lab2CA.srcs/sources_1/new/instructionMemory.v index e6210eb..2071903 100644 --- a/lab2CA.srcs/sources_1/new/instructionMemory.v +++ b/lab2CA.srcs/sources_1/new/instructionMemory.v @@ -75,72 +75,121 @@ module instructionMemory( // memory[38] <= 9'b101111000; // memory[39] <= 9'b000000000; + + // Bubble Sort + memory[0] <= 9'b000000001; + memory[1] <= 9'b010000000; + memory[2] <= 9'b000100000; + memory[3] <= 9'b010001000; + memory[4] <= 9'b010010000; + memory[5] <= 9'b010011000; + memory[6] <= 9'b101001000; + memory[7] <= 9'b101001010; + memory[8] <= 9'b100100011; + memory[9] <= 9'b101001001; + memory[10] <= 9'b011001001; + memory[11] <= 9'b101001000; + memory[12] <= 9'b101001001; + memory[13] <= 9'b011101000; + memory[14] <= 9'b110001010; + memory[15] <= 9'b100100001; + memory[16] <= 9'b100110100; + memory[17] <= 9'b101001001; + memory[18] <= 9'b011001001; + memory[19] <= 9'b000110010; + memory[20] <= 9'b011001001; + memory[21] <= 9'b000111010; + memory[22] <= 9'b101011110; + memory[23] <= 9'b011111100; + memory[24] <= 9'b110011010; + memory[25] <= 9'b100100001; + memory[26] <= 9'b101110010; + memory[27] <= 9'b101001001; + memory[28] <= 9'b011001001; + memory[29] <= 9'b101011111; + memory[30] <= 9'b001011010; + memory[31] <= 9'b011001001; + memory[32] <= 9'b001010010; + memory[33] <= 9'b010001000; + memory[34] <= 9'b011001001; + memory[35] <= 9'b101001010; + memory[36] <= 9'b101111100; + memory[37] <= 9'b101001011; + memory[38] <= 9'b110001001; + memory[39] <= 9'b100100001; + memory[40] <= 9'b100100011; + memory[41] <= 9'b010001000; + memory[42] <= 9'b101001000; + memory[43] <= 9'b101111011; + memory[44] <= 9'b000000000; + + // Binary Search - - memory[0] <= 9'b000000000; - memory[1] <= 9'b000000000; - memory[2] <= 9'b000000000; - memory[3] <= 9'b000000000; - memory[4] <= 9'b000000000; - memory[5] <= 9'b000000000; - memory[6] <= 9'b011001011; //addi R1, 3 (N = 3) - memory[7] <= 9'b011001011; //addi R1, 3 (N = 3) - memory[8] <= 9'b011001011; //addi R1, 3 (N = 3) - memory[9] <= 9'b011001011; //addi R1, 3 (N = 3) - memory[10] <= 9'b011001011; //addi R1, 3 (N = 3) - memory[11] <= 9'b011010010; //addi R2, 2 (inputAddr = 2) - memory[12] <= 9'b000111110; //lb R3, R3 - memory[13] <= 9'b101011010; //banks R3, 1 - memory[14] <= 9'b011001011; //addi R1, 3 (N = 3) - memory[15] <= 9'b101000000; //loop: banks R0, 0 - memory[16] <= 9'b011100010; //slt R0, R1 - memory[17] <= 9'b110000001; //beq R0, Exit - memory[18] <= 9'b100100001; //j Skip0 - memory[19] <= 9'b100101110; //Exit: j Loose - memory[20] <= 9'b010101000; //Skip0: add R2, R0 - memory[21] <= 9'b010101010; //add R2, R1 - memory[22] <= 9'b111110000; //sll R2 - memory[23] <= 9'b101011011; //bankl R3,1 - memory[24] <= 9'b010111100; //add R3, R2 - memory[25] <= 9'b101001100; //banks R1, 2 - memory[26] <= 9'b000100110; //lb R0, R3 - memory[27] <= 9'b010001000; //zero R1 - memory[28] <= 9'b011001010; //addi R1, 1 (numAddr = 1) - memory[29] <= 9'b000101010; //lb R1, R1 - memory[30] <= 9'b100100001; //j SkipU - memory[31] <= 9'b101110001; //j TransLoop - memory[32] <= 9'b101010110; //SkipU: banks R2, 3 - memory[33] <= 9'b100100001; //j SkipD - memory[34] <= 9'b100110111; //j TransLoose - memory[35] <= 9'b010010000; //SkipD: zero R2 - memory[36] <= 9'b010110010; //add R2, R1 - memory[37] <= 9'b010101001; //sub R1, R0 - memory[38] <= 9'b110001001; //beq R1, Go1 - memory[39] <= 9'b100100001; //j Skip1 - memory[40] <= 9'b100101001; //Go1: j Win - memory[41] <= 9'b010001000; //Skip1: zero R1 - memory[42] <= 9'b010101100; //add R1, R2 - memory[43] <= 9'b011100010; //slt R0, R1 - memory[44] <= 9'b110001001; //beq R1, Go2 - memory[45] <= 9'b100100110; //j Skip2 - memory[46] <= 9'b010000000; //Go2: zero R0 - memory[47] <= 9'b011000010; //addi R0, 1 - memory[48] <= 9'b101001111; //bankl R1,3 - memory[49] <= 9'b010100010; //add R0, R1 - memory[50] <= 9'b101001101; //bankl R1,2 - memory[51] <= 9'b101110101; //j loop - memory[52] <= 9'b010001000; //Skip2: zero R1 - memory[53] <= 9'b011001111; //addi R1, -1 - memory[54] <= 9'b101000111; //bankl R0, 3 - memory[55] <= 9'b010101000; //add R1, R0 - memory[56] <= 9'b101000001; //bankl R0,0 - memory[57] <= 9'b101111011; //j loop - memory[58] <= 9'b010000000; //Loose: zero R0 - memory[59] <= 9'b011000111; //addi R0, -1 - memory[60] <= 9'b101000110; //banks R0, 3 - memory[61] <= 9'b100100000; //j Win - memory[62] <= 9'b000000000; //Win: halt + +// memory[0] <= 9'b000000000; +// memory[1] <= 9'b000000000; +// memory[2] <= 9'b000000000; +// memory[3] <= 9'b000000000; +// memory[4] <= 9'b000000000; +// memory[5] <= 9'b000000000; +// memory[6] <= 9'b011001011; //addi R1, 3 (N = 3) +// memory[7] <= 9'b011001011; //addi R1, 3 (N = 3) +// memory[8] <= 9'b011001011; //addi R1, 3 (N = 3) +// memory[9] <= 9'b011001011; //addi R1, 3 (N = 3) +// memory[10] <= 9'b011001011; //addi R1, 3 (N = 3) +// memory[11] <= 9'b011010010; //addi R2, 2 (inputAddr = 2) +// memory[12] <= 9'b000111110; //lb R3, R3 +// memory[13] <= 9'b101011010; //banks R3, 1 +// memory[14] <= 9'b011001011; //addi R1, 3 (N = 3) +// memory[15] <= 9'b101000000; //loop: banks R0, 0 +// memory[16] <= 9'b011100010; //slt R0, R1 +// memory[17] <= 9'b110000001; //beq R0, Exit +// memory[18] <= 9'b100100001; //j Skip0 +// memory[19] <= 9'b100101110; //Exit: j Loose +// memory[20] <= 9'b010101000; //Skip0: add R2, R0 +// memory[21] <= 9'b010101010; //add R2, R1 +// memory[22] <= 9'b111110000; //sll R2 +// memory[23] <= 9'b101011011; //bankl R3,1 +// memory[24] <= 9'b010111100; //add R3, R2 +// memory[25] <= 9'b101001100; //banks R1, 2 +// memory[26] <= 9'b000100110; //lb R0, R3 +// memory[27] <= 9'b010001000; //zero R1 +// memory[28] <= 9'b011001010; //addi R1, 1 (numAddr = 1) +// memory[29] <= 9'b000101010; //lb R1, R1 +// memory[30] <= 9'b100100001; //j SkipU +// memory[31] <= 9'b101110001; //j TransLoop +// memory[32] <= 9'b101010110; //SkipU: banks R2, 3 +// memory[33] <= 9'b100100001; //j SkipD +// memory[34] <= 9'b100110111; //j TransLoose +// memory[35] <= 9'b010010000; //SkipD: zero R2 +// memory[36] <= 9'b010110010; //add R2, R1 +// memory[37] <= 9'b010101001; //sub R1, R0 +// memory[38] <= 9'b110001001; //beq R1, Go1 +// memory[39] <= 9'b100100001; //j Skip1 +// memory[40] <= 9'b100101001; //Go1: j Win +// memory[41] <= 9'b010001000; //Skip1: zero R1 +// memory[42] <= 9'b010101100; //add R1, R2 +// memory[43] <= 9'b011100010; //slt R0, R1 +// memory[44] <= 9'b110001001; //beq R1, Go2 +// memory[45] <= 9'b100100110; //j Skip2 +// memory[46] <= 9'b010000000; //Go2: zero R0 +// memory[47] <= 9'b011000010; //addi R0, 1 +// memory[48] <= 9'b101001111; //bankl R1,3 +// memory[49] <= 9'b010100010; //add R0, R1 +// memory[50] <= 9'b101001101; //bankl R1,2 +// memory[51] <= 9'b101110101; //j loop +// memory[52] <= 9'b010001000; //Skip2: zero R1 +// memory[53] <= 9'b011001111; //addi R1, -1 +// memory[54] <= 9'b101000111; //bankl R0, 3 +// memory[55] <= 9'b010101000; //add R1, R0 +// memory[56] <= 9'b101000001; //bankl R0,0 +// memory[57] <= 9'b101111011; //j loop +// memory[58] <= 9'b010000000; //Loose: zero R0 +// memory[59] <= 9'b011000111; //addi R0, -1 +// memory[60] <= 9'b101000110; //banks R0, 3 +// memory[61] <= 9'b100100000; //j Win +// memory[62] <= 9'b000000000; //Win: halt end