From 1a73f830a4ef24b157f563788d05d1ed57bea850 Mon Sep 17 00:00:00 2001 From: WilliamMiceli Date: Thu, 11 Apr 2019 21:56:54 -0400 Subject: [PATCH] Little stuff --- CPU9bits_tb_behav.wcfg | 283 +++++++++++++++++- lab2CA.srcs/sources_1/new/dataMemory.v | 206 ++++++------- lab2CA.srcs/sources_1/new/instructionMemory.v | 80 ++++- lab2CA.xpr | 2 +- 4 files changed, 457 insertions(+), 114 deletions(-) diff --git a/CPU9bits_tb_behav.wcfg b/CPU9bits_tb_behav.wcfg index 56a2585..cc3ec3b 100644 --- a/CPU9bits_tb_behav.wcfg +++ b/CPU9bits_tb_behav.wcfg @@ -11,15 +11,15 @@ - - - + + + - + - + Program Counter label @@ -49,7 +49,6 @@ Fetch Unit label - op_idx op_idx @@ -248,6 +247,253 @@ SIGNEDDECRADIX + + ALU + label + + opcode[3:0] + opcode[3:0] + + + operand0[8:0] + operand0[8:0] + SIGNEDDECRADIX + + + operand1[8:0] + operand1[8:0] + SIGNEDDECRADIX + + + result[8:0] + result[8:0] + SIGNEDDECRADIX + + + result_A[8:0] + result_A[8:0] + SIGNEDDECRADIX + + + result_B[8:0] + result_B[8:0] + SIGNEDDECRADIX + + + result_C[8:0] + result_C[8:0] + SIGNEDDECRADIX + + + result_D[8:0] + result_D[8:0] + SIGNEDDECRADIX + + + result_E[8:0] + result_E[8:0] + SIGNEDDECRADIX + + + result_F[8:0] + result_F[8:0] + SIGNEDDECRADIX + + + result_G[8:0] + result_G[8:0] + SIGNEDDECRADIX + + + result_H[8:0] + result_H[8:0] + SIGNEDDECRADIX + + + result_I[8:0] + result_I[8:0] + SIGNEDDECRADIX + + + result_J[8:0] + result_J[8:0] + SIGNEDDECRADIX + + + result_K[8:0] + result_K[8:0] + SIGNEDDECRADIX + + + result_L[8:0] + result_L[8:0] + SIGNEDDECRADIX + + + result_M[8:0] + result_M[8:0] + SIGNEDDECRADIX + + + result_N[8:0] + result_N[8:0] + SIGNEDDECRADIX + + + result_O[8:0] + result_O[8:0] + SIGNEDDECRADIX + + + result_P[8:0] + result_P[8:0] + SIGNEDDECRADIX + + + cout + cout + + + + EM Module + label + + reset + reset + + + clk + clk + + + PipIn[50:0] + PipIn[50:0] + + + PipOut[61:0] + PipOut[61:0] + + + instr[8:0] + instr[8:0] + + + op1[8:0] + op1[8:0] + + + op0[8:0] + op0[8:0] + + + FUAddr[8:0] + FUAddr[8:0] + + + FUJB[8:0] + FUJB[8:0] + + + PCout[8:0] + PCout[8:0] + + + JBRes[8:0] + JBRes[8:0] + + + FUJ[8:0] + FUJ[8:0] + + + FUB[8:0] + FUB[8:0] + + + AddiOut[8:0] + AddiOut[8:0] + + + AluOut[8:0] + AluOut[8:0] + + + RFIn[8:0] + RFIn[8:0] + + + dataMemOut[8:0] + dataMemOut[8:0] + + + SE1N[8:0] + SE1N[8:0] + + + SE2N[8:0] + SE2N[8:0] + + + SE3N[8:0] + SE3N[8:0] + + + bankOP[8:0] + bankOP[8:0] + + + jumpNeg[8:0] + jumpNeg[8:0] + + + aluOp[3:0] + aluOp[3:0] + + + FU[2:0] + FU[2:0] + + + bankS[1:0] + bankS[1:0] + + + addiS + addiS + + + RegEn + RegEn + + + loadS + loadS + + + fetchBranch + fetchBranch + + + cout0 + cout0 + + + cout1 + cout1 + + + link + link + + + js + js + + + dataMemEn + dataMemEn + + Divider label @@ -447,4 +693,29 @@ SIGNEDDECRADIX + + Pipe 2 + label + + clk + clk + + + reset + reset + + + En + En + + + Din[61:0] + Din[61:0] + + + Dout[61:0] + Dout[61:0] + + + diff --git a/lab2CA.srcs/sources_1/new/dataMemory.v b/lab2CA.srcs/sources_1/new/dataMemory.v index c69b4e8..0e0b528 100644 --- a/lab2CA.srcs/sources_1/new/dataMemory.v +++ b/lab2CA.srcs/sources_1/new/dataMemory.v @@ -6,14 +6,14 @@ module dataMemory( output reg [8:0] readData ); - reg [8:0] memory [1:0]; // Maximum of 512 memory locations + 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 + // Equation Solver Memory memory[0] <= 9'b000000001; memory[1] <= 9'b000000010; @@ -97,107 +97,107 @@ module dataMemory( // Program 1 Test Data - memory[0] <= 9'd100; - memory[1] <= 9'd58; - memory[2] <= 9'd6; - memory[3] <= 9'd12; - memory[4] <= 9'b110110000; // -80 - memory[5] <= 9'd17; - memory[6] <= 9'b111011011; // -37 - memory[7] <= 9'd25; - memory[8] <= -9'd83; // -83 - memory[9] <= -9'd98; // -98 - memory[10] <= -9'd98; // -98 - memory[11] <= -9'd74; // -74 - memory[12] <= 9'd70; - memory[13] <= -9'd38; // -38 - memory[14] <= 9'd52; - memory[15] <= -9'd96; // -96 - memory[16] <= -9'd32; // -32 - memory[17] <= -9'd93; // -93 - memory[18] <= -9'd40; // -40 - memory[19] <= 9'd59; - memory[20] <= 9'd10; - memory[21] <= 9'd81; - memory[22] <= -9'd23; // -28 - memory[23] <=- 9'd99; // -99 - memory[24] <= -9'd41; // -41 - memory[25] <= 9'd33; - memory[26] <= 9'd98; - memory[27] <= 9'd73; - memory[28] <= -9'd1; // -1 - memory[29] <= 9'd28; - memory[30] <= 9'd5; - memory[31] <= -9'd74; // -74 - memory[32] <= -9'd41; // -41 - memory[33] <= 9'd41; - memory[34] <= 9'd39; - memory[35] <= 9'd62; - memory[36] <= 9'd19; - memory[37] <= -9'd40; // -40 - memory[38] <= -9'd8; // -8 - memory[39] <= 9'd92; - memory[40] <= 9'd37; - memory[41] <= 9'd50; - memory[42] <= -9'd72; // -72 - memory[43] <= -9'd5; // -5 - memory[44] <= 9'd19; - memory[45] <= 9'd58; - memory[46] <= -9'd13; // -13 - memory[47] <= 9'd0; - memory[48] <= -9'd97; // -97 - memory[49] <= 9'd54; - memory[50] <= -9'd17; // -17 - memory[51] <= -9'd83; // -83 - memory[52] <= 9'd53; - memory[53] <= 9'd82; - memory[54] <= -9'd94; // -94 - memory[55] <= -9'd77; // -77 - memory[56] <= -9'd74; // -74 - memory[57] <= -9'd52; // -52 - memory[58] <= 9'd85; - memory[59] <= -9'd65; // -65 - memory[60] <= -9'd10; // -10 - memory[61] <= -9'd45; // -45 - memory[62] <= -9'd92; // -92 - memory[63] <= -9'd30; // -30 - memory[64] <= 9'd18; - memory[65] <= -9'd95; // -95 - memory[66] <= -9'd27; // -27 - memory[67] <= -9'd74; // -74 - memory[68] <= 9'd62; - memory[69] <= 9'd64; - memory[70] <= -9'd9; // -9 - memory[71] <= 9'd66; - memory[72] <= -9'd71; // -71 - memory[73] <= -9'd31; // -31 - memory[74] <= 9'd34; - memory[75] <= 9'd12; - memory[76] <= 9'd3; - memory[77] <= 9'd82; - memory[78] <= 9'd13; - memory[79] <= -9'd78; // -78 - memory[80] <= -9'd8; // -8 - memory[81] <= 9'd88; - memory[82] <= 9'd42; - memory[83] <= 9'd42; - memory[84] <= 9'd21; - memory[85] <= -9'd44; // -44 - memory[86] <= 9'd30; - memory[87] <= -9'd93; // -93 - memory[88] <= 9'd2; - memory[89] <= -9'd34; // -34 - memory[90] <= 9'd92; - memory[91] <= -9'd45; // -45 - memory[92] <= 9'd26; - memory[93] <= -9'd79; // -79 - memory[94] <= 9'd43; - memory[95] <= -9'd25; // -25 - memory[96] <= -9'd24; // -24 - memory[97] <= -9'd25; // -25 - memory[98] <= -9'd19; // -19 - memory[99] <= -9'd49; // -49 - memory[100] <= -9'd8; // -8 +// memory[0] <= 9'd100; +// memory[1] <= 9'd58; +// memory[2] <= 9'd6; +// memory[3] <= 9'd12; +// memory[4] <= 9'b110110000; // -80 +// memory[5] <= 9'd17; +// memory[6] <= 9'b111011011; // -37 +// memory[7] <= 9'd25; +// memory[8] <= -9'd83; // -83 +// memory[9] <= -9'd98; // -98 +// memory[10] <= -9'd98; // -98 +// memory[11] <= -9'd74; // -74 +// memory[12] <= 9'd70; +// memory[13] <= -9'd38; // -38 +// memory[14] <= 9'd52; +// memory[15] <= -9'd96; // -96 +// memory[16] <= -9'd32; // -32 +// memory[17] <= -9'd93; // -93 +// memory[18] <= -9'd40; // -40 +// memory[19] <= 9'd59; +// memory[20] <= 9'd10; +// memory[21] <= 9'd81; +// memory[22] <= -9'd23; // -28 +// memory[23] <=- 9'd99; // -99 +// memory[24] <= -9'd41; // -41 +// memory[25] <= 9'd33; +// memory[26] <= 9'd98; +// memory[27] <= 9'd73; +// memory[28] <= -9'd1; // -1 +// memory[29] <= 9'd28; +// memory[30] <= 9'd5; +// memory[31] <= -9'd74; // -74 +// memory[32] <= -9'd41; // -41 +// memory[33] <= 9'd41; +// memory[34] <= 9'd39; +// memory[35] <= 9'd62; +// memory[36] <= 9'd19; +// memory[37] <= -9'd40; // -40 +// memory[38] <= -9'd8; // -8 +// memory[39] <= 9'd92; +// memory[40] <= 9'd37; +// memory[41] <= 9'd50; +// memory[42] <= -9'd72; // -72 +// memory[43] <= -9'd5; // -5 +// memory[44] <= 9'd19; +// memory[45] <= 9'd58; +// memory[46] <= -9'd13; // -13 +// memory[47] <= 9'd0; +// memory[48] <= -9'd97; // -97 +// memory[49] <= 9'd54; +// memory[50] <= -9'd17; // -17 +// memory[51] <= -9'd83; // -83 +// memory[52] <= 9'd53; +// memory[53] <= 9'd82; +// memory[54] <= -9'd94; // -94 +// memory[55] <= -9'd77; // -77 +// memory[56] <= -9'd74; // -74 +// memory[57] <= -9'd52; // -52 +// memory[58] <= 9'd85; +// memory[59] <= -9'd65; // -65 +// memory[60] <= -9'd10; // -10 +// memory[61] <= -9'd45; // -45 +// memory[62] <= -9'd92; // -92 +// memory[63] <= -9'd30; // -30 +// memory[64] <= 9'd18; +// memory[65] <= -9'd95; // -95 +// memory[66] <= -9'd27; // -27 +// memory[67] <= -9'd74; // -74 +// memory[68] <= 9'd62; +// memory[69] <= 9'd64; +// memory[70] <= -9'd9; // -9 +// memory[71] <= 9'd66; +// memory[72] <= -9'd71; // -71 +// memory[73] <= -9'd31; // -31 +// memory[74] <= 9'd34; +// memory[75] <= 9'd12; +// memory[76] <= 9'd3; +// memory[77] <= 9'd82; +// memory[78] <= 9'd13; +// memory[79] <= -9'd78; // -78 +// memory[80] <= -9'd8; // -8 +// memory[81] <= 9'd88; +// memory[82] <= 9'd42; +// memory[83] <= 9'd42; +// memory[84] <= 9'd21; +// memory[85] <= -9'd44; // -44 +// memory[86] <= 9'd30; +// memory[87] <= -9'd93; // -93 +// memory[88] <= 9'd2; +// memory[89] <= -9'd34; // -34 +// memory[90] <= 9'd92; +// memory[91] <= -9'd45; // -45 +// memory[92] <= 9'd26; +// memory[93] <= -9'd79; // -79 +// memory[94] <= 9'd43; +// memory[95] <= -9'd25; // -25 +// memory[96] <= -9'd24; // -24 +// memory[97] <= -9'd25; // -25 +// memory[98] <= -9'd19; // -19 +// memory[99] <= -9'd49; // -49 +// memory[100] <= -9'd8; // -8 diff --git a/lab2CA.srcs/sources_1/new/instructionMemory.v b/lab2CA.srcs/sources_1/new/instructionMemory.v index e9f16a1..9d64986 100644 --- a/lab2CA.srcs/sources_1/new/instructionMemory.v +++ b/lab2CA.srcs/sources_1/new/instructionMemory.v @@ -5,7 +5,7 @@ module instructionMemory( output reg [8:0] readData ); - reg [8:0] memory [8:0]; // Maximum of 512 memory locations + 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 @@ -20,7 +20,7 @@ module instructionMemory( memory[7] <= 9'b111100000; //shift left memory[8] <= 9'b111100000; //shift left -// //Testing all instructions + //Testing all instructions // memory[6] <= 9'b010100011; //sub // memory[7] <= 9'b011001011; //addi // memory[8] <= 9'b011110000; //slt @@ -209,8 +209,80 @@ module instructionMemory( // memory[60] <= 9'b101000110; //banks R0, 3 // memory[61] <= 9'b100100000; //j Win // memory[62] <= 9'b000000000; //Win: halt - - + + + // Basic Instruction Testing + +// memory[0] <= 9'b000000001; // nop +// memory[1] <= 9'b010000000; // zero $a +// memory[2] <= 9'b000000001; // nop +// memory[3] <= 9'b000000001; // nop +// memory[4] <= 9'b000100000; // lb $a, $a +// memory[5] <= 9'b000000001; // nop +// memory[6] <= 9'b000000001; // nop +// memory[7] <= 9'b011000011; // addi $a, 3 +// memory[8] <= 9'b000000001; // nop +// memory[9] <= 9'b000000001; // nop +// memory[10] <= 9'b000101010; // lb $b, $b +// memory[11] <= 9'b000110100; // lb $c, $c +// memory[12] <= 9'b000111110; // lb $d, $d +// memory[13] <= 9'b000000001; // nop +// memory[14] <= 9'b000000001; // nop +// memory[15] <= 9'b011001011; // addi $b, 3 +// memory[16] <= 9'b011010011; // addi $c, 3 +// memory[17] <= 9'b000000001; // nop +// memory[18] <= 9'b011011011; // addi $d, 3 +// memory[19] <= 9'b; // +// memory[20] <= 9'b011000100; // addi $a, -4 +// memory[21] <= 9'b000000001; // nop +// memory[22] <= 9'b000000001; // nop +// memory[23] <= 9'b010110110; // add $c, $d +// memory[24] <= 9'b010101001; // sub $b, $a +// memory[25] <= 9'b000000001; // nop +// memory[26] <= 9'b000000001; // nop +// memory[27] <= 9'b; // +// memory[28] <= 9'b; // +// memory[29] <= 9'b; // +// memory[30] <= 9'b; // +// memory[31] <= 9'b; // +// memory[32] <= 9'b; // +// memory[33] <= 9'b; // +// memory[34] <= 9'b; // +// memory[35] <= 9'b; // +// memory[36] <= 9'b; // +// memory[37] <= 9'b; // +// memory[38] <= 9'b; // +// memory[39] <= 9'b; // +// memory[40] <= 9'b; // +// memory[41] <= 9'b; // +// memory[42] <= 9'b; // +// memory[43] <= 9'b; // +// memory[44] <= 9'b; // +// memory[45] <= 9'b; // +// memory[46] <= 9'b; // +// memory[47] <= 9'b; // +// memory[48] <= 9'b; // +// memory[49] <= 9'b; // +// memory[50] <= 9'b; // +// memory[51] <= 9'b; // +// memory[52] <= 9'b; // +// memory[53] <= 9'b; // +// memory[54] <= 9'b; // +// memory[55] <= 9'b; // +// memory[56] <= 9'b; // +// memory[57] <= 9'b; // +// memory[58] <= 9'b; // +// memory[59] <= 9'b; // +// memory[60] <= 9'b; // +// memory[61] <= 9'b; // +// memory[62] <= 9'b; // + + + + + + + end always @ (address) diff --git a/lab2CA.xpr b/lab2CA.xpr index f36c02f..886719c 100644 --- a/lab2CA.xpr +++ b/lab2CA.xpr @@ -31,7 +31,7 @@