Showing
31 changed files
with
1204 additions
and
627 deletions
| ... | @@ -4,14 +4,15 @@ input clk; | ... | @@ -4,14 +4,15 @@ input clk; |
| 4 | input[31:0] aluin1, aluin2; | 4 | input[31:0] aluin1, aluin2; |
| 5 | input[3:0] aluctrl; | 5 | input[3:0] aluctrl; |
| 6 | output reg[31:0] aluout; | 6 | output reg[31:0] aluout; |
| 7 | -output alubranch; | 7 | +// output alubranch; |
| 8 | +output reg[5:0] alubranch; | ||
| 8 | 9 | ||
| 9 | reg overflow; | 10 | reg overflow; |
| 10 | reg[63:0] temp; | 11 | reg[63:0] temp; |
| 11 | reg[31:0] HI, LO; // HI, LO register for multiplication and division. | 12 | reg[31:0] HI, LO; // HI, LO register for multiplication and division. |
| 12 | reg[31:0] tempHI, tempLO; // temporary HI, LO register for multiplication and division. | 13 | reg[31:0] tempHI, tempLO; // temporary HI, LO register for multiplication and division. |
| 13 | 14 | ||
| 14 | -assign alubranch = aluout == 32'h00000000 ? 1'b1 : 1'b0; | 15 | +// assign alubranch = aluout == 32'h00000000 ? 1'b1 : 1'b0; |
| 15 | 16 | ||
| 16 | initial begin | 17 | initial begin |
| 17 | temp = 64'h0000000000000000; | 18 | temp = 64'h0000000000000000; |
| ... | @@ -33,6 +34,12 @@ case(aluctrl) | ... | @@ -33,6 +34,12 @@ case(aluctrl) |
| 33 | 4'b0110: begin // sub | 34 | 4'b0110: begin // sub |
| 34 | aluout = aluin1 - aluin2; | 35 | aluout = aluin1 - aluin2; |
| 35 | overflow = aluin1[31]!=aluin2[31] && aluin1[31]!=aluout[31] ? 1'b1 : 1'b0; // overflow detection. | 36 | overflow = aluin1[31]!=aluin2[31] && aluin1[31]!=aluout[31] ? 1'b1 : 1'b0; // overflow detection. |
| 37 | + alubranch[0] = (aluout == 32'd0) ? 1'b1 : 1'b0; // beq | ||
| 38 | + alubranch[1] = (aluout != 32'd0) ? 1'b1 : 1'b0; // bne | ||
| 39 | + alubranch[2] = (aluin1 > 32'd0) ? 1'b1 : 1'b0; // bgtz | ||
| 40 | + alubranch[3] = (aluin1 < 32'd0) ? 1'b1 : 1'b0; // bltz | ||
| 41 | + alubranch[4] = (aluin1 >= 32'd0) ? 1'b1 : 1'b0; // bgez | ||
| 42 | + alubranch[5] = (aluin1 <= 32'd0) ? 1'b1 : 1'b0; // blez | ||
| 36 | end | 43 | end |
| 37 | 44 | ||
| 38 | 4'b0111: begin // slt | 45 | 4'b0111: begin // slt | ... | ... |
| 1 | -module Control(opcode, funct, regdst, regwrite, alusrc, aluctrl, memread, memwrite, memtoreg, branch, jump, jumpreg); | 1 | +module Control(opcode, rt, funct, regdst, regwrite, alusrc, aluctrl, memread, memwrite, memtoreg, branch, jump, jumpreg); |
| 2 | 2 | ||
| 3 | input[5:0] opcode; | 3 | input[5:0] opcode; |
| 4 | +input[4:0] rt; | ||
| 4 | input[5:0] funct; | 5 | input[5:0] funct; |
| 5 | -output reg regdst, regwrite, alusrc, memread, memwrite, memtoreg, branch, jump, jumpreg; | 6 | +output reg regdst, regwrite, alusrc, memread, memwrite, memtoreg, jump, jumpreg; |
| 6 | output reg[3:0] aluctrl; | 7 | output reg[3:0] aluctrl; |
| 8 | +output reg[2:0] branch; | ||
| 7 | 9 | ||
| 8 | always @(*) begin | 10 | always @(*) begin |
| 9 | case(opcode) | 11 | case(opcode) |
| ... | @@ -14,7 +16,7 @@ always @(*) begin | ... | @@ -14,7 +16,7 @@ always @(*) begin |
| 14 | memread = 1'b0; | 16 | memread = 1'b0; |
| 15 | memwrite = 1'b0; | 17 | memwrite = 1'b0; |
| 16 | memtoreg = 1'b0; | 18 | memtoreg = 1'b0; |
| 17 | - branch = 1'b0; | 19 | + branch = 3'b000; |
| 18 | jump = 1'b0; | 20 | jump = 1'b0; |
| 19 | jumpreg = 1'b0; | 21 | jumpreg = 1'b0; |
| 20 | case(funct) | 22 | case(funct) |
| ... | @@ -41,7 +43,7 @@ always @(*) begin | ... | @@ -41,7 +43,7 @@ always @(*) begin |
| 41 | memread = 1'b0; | 43 | memread = 1'b0; |
| 42 | memwrite = 1'b0; | 44 | memwrite = 1'b0; |
| 43 | // memtoreg = 1'bx; | 45 | // memtoreg = 1'bx; |
| 44 | - branch = 1'b0; | 46 | + branch = 3'b000; |
| 45 | jump = 1'b1; | 47 | jump = 1'b1; |
| 46 | jumpreg = 1'b1; | 48 | jumpreg = 1'b1; |
| 47 | end | 49 | end |
| ... | @@ -57,7 +59,7 @@ always @(*) begin | ... | @@ -57,7 +59,7 @@ always @(*) begin |
| 57 | memread = 1'b0; | 59 | memread = 1'b0; |
| 58 | memwrite = 1'b0; | 60 | memwrite = 1'b0; |
| 59 | memtoreg = 1'b0; | 61 | memtoreg = 1'b0; |
| 60 | - branch = 1'b0; | 62 | + branch = 3'b000; |
| 61 | jump = 1'b0; | 63 | jump = 1'b0; |
| 62 | jumpreg = 1'b0; | 64 | jumpreg = 1'b0; |
| 63 | end | 65 | end |
| ... | @@ -70,7 +72,7 @@ always @(*) begin | ... | @@ -70,7 +72,7 @@ always @(*) begin |
| 70 | memread = 1'b0; | 72 | memread = 1'b0; |
| 71 | memwrite = 1'b0; | 73 | memwrite = 1'b0; |
| 72 | memtoreg = 1'b0; | 74 | memtoreg = 1'b0; |
| 73 | - branch = 1'b0; | 75 | + branch = 3'b000; |
| 74 | jump = 1'b0; | 76 | jump = 1'b0; |
| 75 | jumpreg = 1'b0; | 77 | jumpreg = 1'b0; |
| 76 | end | 78 | end |
| ... | @@ -83,20 +85,88 @@ always @(*) begin | ... | @@ -83,20 +85,88 @@ always @(*) begin |
| 83 | memread = 1'b0; | 85 | memread = 1'b0; |
| 84 | memwrite = 1'b0; | 86 | memwrite = 1'b0; |
| 85 | memtoreg = 1'b0; | 87 | memtoreg = 1'b0; |
| 86 | - branch = 1'b0; | 88 | + branch = 3'b000; |
| 87 | jump = 1'b0; | 89 | jump = 1'b0; |
| 88 | jumpreg = 1'b0; | 90 | jumpreg = 1'b0; |
| 89 | end | 91 | end |
| 90 | 92 | ||
| 91 | 6'b000100: begin // beq instruction | 93 | 6'b000100: begin // beq instruction |
| 92 | - // regdst = 1'bx; // don't care | 94 | + // regdst = 1'bx; |
| 95 | + regwrite = 1'b0; | ||
| 96 | + alusrc = 1'b0; | ||
| 97 | + aluctrl = 4'b0110; // sub | ||
| 98 | + memread = 1'b0; | ||
| 99 | + memwrite = 1'b0; | ||
| 100 | + // memtoreg = 1'bx; | ||
| 101 | + branch = 3'b001; | ||
| 102 | + jump = 1'b0; | ||
| 103 | + jumpreg = 1'b0; | ||
| 104 | + end | ||
| 105 | + | ||
| 106 | + 6'b000101: begin // bne instruction | ||
| 107 | + // regdst = 1'bx; | ||
| 108 | + regwrite = 1'b0; | ||
| 109 | + alusrc = 1'b0; | ||
| 110 | + aluctrl = 4'b0110; // sub | ||
| 111 | + memread = 1'b0; | ||
| 112 | + memwrite = 1'b0; | ||
| 113 | + // memtoreg = 1'bx; | ||
| 114 | + branch = 3'b010; | ||
| 115 | + jump = 1'b0; | ||
| 116 | + jumpreg = 1'b0; | ||
| 117 | + end | ||
| 118 | + | ||
| 119 | + 6'b000111: begin // bgtz instruction | ||
| 120 | + // regdst = 1'bx; | ||
| 121 | + regwrite = 1'b0; | ||
| 122 | + alusrc = 1'b0; | ||
| 123 | + aluctrl = 4'b0110; // sub | ||
| 124 | + memread = 1'b0; | ||
| 125 | + memwrite = 1'b0; | ||
| 126 | + // memtoreg = 1'bx; | ||
| 127 | + branch = 3'b011; | ||
| 128 | + jump = 1'b0; | ||
| 129 | + jumpreg = 1'b0; | ||
| 130 | + end | ||
| 131 | + | ||
| 132 | + 6'b000001: begin | ||
| 133 | + case(rt) | ||
| 134 | + 5'b00000: begin // bltz instruction | ||
| 135 | + // regdst = 1'bx; | ||
| 136 | + regwrite = 1'b0; | ||
| 137 | + alusrc = 1'b0; | ||
| 138 | + aluctrl = 4'b0110; // sub | ||
| 139 | + memread = 1'b0; | ||
| 140 | + memwrite = 1'b0; | ||
| 141 | + // memtoreg = 1'bx; | ||
| 142 | + branch = 3'b100; | ||
| 143 | + jump = 1'b0; | ||
| 144 | + jumpreg = 1'b0; | ||
| 145 | + end | ||
| 146 | + 5'b00001: begin // bgez instruction | ||
| 147 | + // regdst = 1'bx; | ||
| 148 | + regwrite = 1'b0; | ||
| 149 | + alusrc = 1'b0; | ||
| 150 | + aluctrl = 4'b0110; // sub | ||
| 151 | + memread = 1'b0; | ||
| 152 | + memwrite = 1'b0; | ||
| 153 | + // memtoreg = 1'bx; | ||
| 154 | + branch = 3'b101; | ||
| 155 | + jump = 1'b0; | ||
| 156 | + jumpreg = 1'b0; | ||
| 157 | + end | ||
| 158 | + endcase | ||
| 159 | + end | ||
| 160 | + | ||
| 161 | + 6'b000111: begin // blez instruction | ||
| 162 | + // regdst = 1'bx; | ||
| 93 | regwrite = 1'b0; | 163 | regwrite = 1'b0; |
| 94 | alusrc = 1'b0; | 164 | alusrc = 1'b0; |
| 95 | aluctrl = 4'b0110; // sub | 165 | aluctrl = 4'b0110; // sub |
| 96 | memread = 1'b0; | 166 | memread = 1'b0; |
| 97 | memwrite = 1'b0; | 167 | memwrite = 1'b0; |
| 98 | // memtoreg = 1'bx; | 168 | // memtoreg = 1'bx; |
| 99 | - branch = 1'b1; | 169 | + branch = 3'b110; |
| 100 | jump = 1'b0; | 170 | jump = 1'b0; |
| 101 | jumpreg = 1'b0; | 171 | jumpreg = 1'b0; |
| 102 | end | 172 | end |
| ... | @@ -109,7 +179,7 @@ always @(*) begin | ... | @@ -109,7 +179,7 @@ always @(*) begin |
| 109 | memread = 1'b0; | 179 | memread = 1'b0; |
| 110 | memwrite = 1'b0; | 180 | memwrite = 1'b0; |
| 111 | // memtoreg = 1'bx; | 181 | // memtoreg = 1'bx; |
| 112 | - branch = 1'b0; | 182 | + branch = 3'b000; |
| 113 | jump = 1'b1; | 183 | jump = 1'b1; |
| 114 | jumpreg = 1'b0; | 184 | jumpreg = 1'b0; |
| 115 | end | 185 | end |
| ... | @@ -122,7 +192,7 @@ always @(*) begin | ... | @@ -122,7 +192,7 @@ always @(*) begin |
| 122 | memread = 1'b1; | 192 | memread = 1'b1; |
| 123 | memwrite = 1'b0; | 193 | memwrite = 1'b0; |
| 124 | memtoreg = 1'b1; | 194 | memtoreg = 1'b1; |
| 125 | - branch = 1'b0; | 195 | + branch = 3'b000; |
| 126 | jump = 1'b0; | 196 | jump = 1'b0; |
| 127 | jumpreg = 1'b0; | 197 | jumpreg = 1'b0; |
| 128 | end | 198 | end |
| ... | @@ -135,7 +205,7 @@ always @(*) begin | ... | @@ -135,7 +205,7 @@ always @(*) begin |
| 135 | memread = 1'b0; | 205 | memread = 1'b0; |
| 136 | memwrite = 1'b1; | 206 | memwrite = 1'b1; |
| 137 | // memtoreg = 1'bx; | 207 | // memtoreg = 1'bx; |
| 138 | - branch = 1'b0; | 208 | + branch = 3'b000; |
| 139 | jump = 1'b0; | 209 | jump = 1'b0; |
| 140 | jumpreg = 1'b0; | 210 | jumpreg = 1'b0; |
| 141 | end | 211 | end |
| ... | @@ -148,7 +218,7 @@ always @(*) begin | ... | @@ -148,7 +218,7 @@ always @(*) begin |
| 148 | memread = 1'b0; | 218 | memread = 1'b0; |
| 149 | memwrite = 1'b0; | 219 | memwrite = 1'b0; |
| 150 | // memtoreg = 1'bx; | 220 | // memtoreg = 1'bx; |
| 151 | - branch = 1'b0; | 221 | + branch = 3'b000; |
| 152 | jump = 1'b0; | 222 | jump = 1'b0; |
| 153 | jumpreg = 1'b0; | 223 | jumpreg = 1'b0; |
| 154 | end | 224 | end | ... | ... |
Project/MIPS/HazardHandling.v
0 → 100644
Project/MIPS/InstructionMemory.v
0 → 100644
| 1 | +module InstructionMemory(address, instruction); | ||
| 2 | + | ||
| 3 | +input[31:0] address; | ||
| 4 | +output reg[31:0] instruction; | ||
| 5 | + | ||
| 6 | +reg[31:0] instr_mem[127:0]; | ||
| 7 | + | ||
| 8 | +initial begin | ||
| 9 | +instr_mem[0] = 32'd0; | ||
| 10 | +instr_mem[1] = 32'b00100100000010000000000011111111; // addi, $0 $8 255 | ||
| 11 | +instr_mem[2] = 32'b00000001000010000100100000100000; // add, $8 $8 $9 | ||
| 12 | +instr_mem[3] = 32'b00000001000000000101000000100000; // add, $8 $0 $10 | ||
| 13 | +instr_mem[4] = 32'b00010001000010100000000000000001; // beq, $8 $10 +1 | ||
| 14 | +instr_mem[5] = 32'd0; | ||
| 15 | +instr_mem[6] = 32'b00000001000010010000000000011000; // mult, $8 $9 | ||
| 16 | +instr_mem[7] = 32'd0; | ||
| 17 | +instr_mem[8] = 32'b00000000000000000110000000010000; // mfhi, $12 | ||
| 18 | +instr_mem[9] = 32'b00000000000000000110100000010010; // mflo, $13 | ||
| 19 | +instr_mem[10] = 32'b10101100000011010000000000111100; // sw, $0 $13 60 | ||
| 20 | +instr_mem[11] = 32'd0; | ||
| 21 | +instr_mem[12] = 32'b00010001000010110000000000000001; // beq, $8 $11 +1 | ||
| 22 | +instr_mem[13] = 32'b10001100000000010000000000111100; // lw, $0 $1 60 | ||
| 23 | +instr_mem[14] = 32'd0; | ||
| 24 | +instr_mem[15] = 32'b00000000000000000000000000001000; // jr, $0 | ||
| 25 | + | ||
| 26 | +end | ||
| 27 | + | ||
| 28 | +always @ (*) begin | ||
| 29 | + instruction = instr_mem[address/4]; | ||
| 30 | +end | ||
| 31 | + | ||
| 32 | +endmodule |
Project/MIPS/MIPS_CPU.cr.mti
0 → 100644
| 1 | +D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v | ||
| 2 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 3 | +-- Compiling module testbench | ||
| 4 | + | ||
| 5 | +Top level modules: | ||
| 6 | + testbench | ||
| 7 | + | ||
| 8 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v | ||
| 9 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 10 | +-- Compiling module test | ||
| 11 | +-- Compiling module testA | ||
| 12 | + | ||
| 13 | +Top level modules: | ||
| 14 | + test | ||
| 15 | + | ||
| 16 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v | ||
| 17 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 18 | +-- Compiling module Adder | ||
| 19 | + | ||
| 20 | +Top level modules: | ||
| 21 | + Adder | ||
| 22 | + | ||
| 23 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v | ||
| 24 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 25 | +-- Compiling module MIPS_SingleCycle | ||
| 26 | + | ||
| 27 | +Top level modules: | ||
| 28 | + MIPS_SingleCycle | ||
| 29 | + | ||
| 30 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v | ||
| 31 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 32 | +-- Compiling module InstructionMemory | ||
| 33 | + | ||
| 34 | +Top level modules: | ||
| 35 | + InstructionMemory | ||
| 36 | + | ||
| 37 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v | ||
| 38 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 39 | +-- Compiling module Register | ||
| 40 | + | ||
| 41 | +Top level modules: | ||
| 42 | + Register | ||
| 43 | + | ||
| 44 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v | ||
| 45 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 46 | +-- Compiling module IF_ID | ||
| 47 | +-- Compiling module ID_EX | ||
| 48 | +-- Compiling module EX_MEM | ||
| 49 | +-- Compiling module MEM_WB | ||
| 50 | +-- Compiling module PCcounter | ||
| 51 | + | ||
| 52 | +Top level modules: | ||
| 53 | + IF_ID | ||
| 54 | + ID_EX | ||
| 55 | + EX_MEM | ||
| 56 | + MEM_WB | ||
| 57 | + PCcounter | ||
| 58 | + | ||
| 59 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v | ||
| 60 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 61 | +-- Compiling module MIPS_Pipeline | ||
| 62 | + | ||
| 63 | +Top level modules: | ||
| 64 | + MIPS_Pipeline | ||
| 65 | + | ||
| 66 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v | ||
| 67 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 68 | +-- Compiling module Stall | ||
| 69 | + | ||
| 70 | +Top level modules: | ||
| 71 | + Stall | ||
| 72 | + | ||
| 73 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v | ||
| 74 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 75 | +-- Compiling module SignExtend | ||
| 76 | + | ||
| 77 | +Top level modules: | ||
| 78 | + SignExtend | ||
| 79 | + | ||
| 80 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v | ||
| 81 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 82 | +-- Compiling module Control | ||
| 83 | + | ||
| 84 | +Top level modules: | ||
| 85 | + Control | ||
| 86 | + | ||
| 87 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v | ||
| 88 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 89 | +-- Compiling module Mux5bit | ||
| 90 | +-- Compiling module Mux32bit | ||
| 91 | +-- Compiling module MuxBranchSignal | ||
| 92 | + | ||
| 93 | +Top level modules: | ||
| 94 | + Mux5bit | ||
| 95 | + Mux32bit | ||
| 96 | + MuxBranchSignal | ||
| 97 | + | ||
| 98 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v | ||
| 99 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 100 | +-- Compiling module ALU | ||
| 101 | + | ||
| 102 | +Top level modules: | ||
| 103 | + ALU | ||
| 104 | + | ||
| 105 | +} {} {}} {D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v} {1 {vlog -work work -stats=none {D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v} | ||
| 106 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 107 | +-- Compiling module DataMemory | ||
| 108 | + | ||
| 109 | +Top level modules: | ||
| 110 | + DataMemory | ||
| 111 | + | ||
| 112 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v | ||
| 113 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 114 | +-- Compiling module ShiftLeft2 | ||
| 115 | + | ||
| 116 | +Top level modules: | ||
| 117 | + ShiftLeft2 | ||
| 118 | + | ||
| 119 | +} {} {}} D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v | ||
| 120 | +Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 121 | +-- Compiling module Clock | ||
| 122 | + | ||
| 123 | +Top level modules: | ||
| 124 | + Clock | ||
| 125 | + | ||
| 126 | +} {} {}} |
This diff is collapsed. Click to expand it.
Project/MIPS/MIPS_Pipeline.v
0 → 100644
| 1 | +// Test Required | ||
| 2 | +module MIPS_Pipeline; | ||
| 3 | + | ||
| 4 | +wire clk; // clock | ||
| 5 | +wire[31:0] instr_address, addPC4, addPCbranch, tempPC_branch, tempPC_jump, nextPC; | ||
| 6 | + | ||
| 7 | +wire[31:0] instr; // loaded instruction. | ||
| 8 | + | ||
| 9 | +wire[4:0] reg_writereg1; // register number for the write data. | ||
| 10 | +wire[31:0] reg_writedata; // data that will be written in the register. | ||
| 11 | +wire[31:0] reg_readdata1, reg_readdata2; // data from the requested register. | ||
| 12 | + | ||
| 13 | +wire[31:0] alu_input2; // input data of ALU. | ||
| 14 | +wire[31:0] alu_result; // result data of ALU. | ||
| 15 | +wire[5:0] alu_branch; // indicator for branch operation. | ||
| 16 | + | ||
| 17 | +wire[31:0] mem_readdata; // data from the requested address. | ||
| 18 | + | ||
| 19 | +wire ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_jump, ctrl_jumpreg, branch_signal; | ||
| 20 | +wire[3:0] ctrl_aluctrl; // control signals. | ||
| 21 | +wire[2:0] ctrl_branch; | ||
| 22 | + | ||
| 23 | +wire[31:0] extend_output; | ||
| 24 | + | ||
| 25 | +wire[31:0] shiftBranch_output; | ||
| 26 | +wire[31:0] shiftJump_output; | ||
| 27 | + | ||
| 28 | +// IF_ID register outputs | ||
| 29 | +wire[31:0] ifid_instr, ifid_PC_4; | ||
| 30 | + | ||
| 31 | +// ID_EX register outputs | ||
| 32 | +wire[4:0] idex_writereg1, idex_readreg_num1, idex_readreg_num2; | ||
| 33 | +wire idex_regwrite, idex_alusrc, idex_memread, idex_memwrite, idex_memtoreg, idex_jump, idex_jumpreg; | ||
| 34 | +wire[3:0] idex_aluctrl; | ||
| 35 | +wire[2:0] idex_branch; | ||
| 36 | +wire[31:0] idex_readdata1, idex_readdata2, idex_extenddata, idex_PC_4, idex_tempPCjump; | ||
| 37 | + | ||
| 38 | +// EX_MEM register outputs | ||
| 39 | +wire[4:0] exmem_writereg1; | ||
| 40 | +wire exmem_regwrite, exmem_memread, exmem_memwrite, exmem_memtoreg, exmem_branch, exmem_jump; | ||
| 41 | +wire[31:0] exmem_aluresult, exmem_memwritedata, exmem_PC_4, exmem_PCjump, exmem_tempPCbranch; | ||
| 42 | + | ||
| 43 | +// MEM_WB register outputs | ||
| 44 | +wire[4:0] memwb_writereg1; | ||
| 45 | +wire memwb_regwrite, memwb_memtoreg, memwb_jump; | ||
| 46 | +wire[31:0] memwb_aluresult, memwb_memreaddata, memwb_PCbranch, memwb_PCjump; | ||
| 47 | + | ||
| 48 | + | ||
| 49 | +Clock clock(clk); | ||
| 50 | +PCcounter pccounter(clk, nextPC, instr_address); | ||
| 51 | + | ||
| 52 | +// Instruction Fetch | ||
| 53 | +InstructionMemory instrmem(instr_address, instr); | ||
| 54 | +Adder add_pc4(PC, 32'h00000004, addPC4); | ||
| 55 | + | ||
| 56 | +IF_ID ifid(clk, instr, addPC4, | ||
| 57 | + ifid_instr, ifid_PC_4); | ||
| 58 | + | ||
| 59 | +// Instruction Decode | ||
| 60 | +Control ctrl(ifid_instr[31:26], ifid_instr[20:16], ifid_instr[5:0], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg); | ||
| 61 | +Mux5bit mux_regdst(ifid_instr[20:16], ifid_instr[15:11], ctrl_regdst, reg_writereg1); | ||
| 62 | +Register register(clk, ifid_instr[25:21], ifid_instr[20:16], memwb_writereg1, reg_writedata, memwb_regwrite, reg_readdata1, reg_readdata2); | ||
| 63 | +SignExtend extend(ifid_instr[15:0], extend_output); | ||
| 64 | +ShiftLeft2 shiftJump({6'b000000, ifid_instr[25:0]}, shiftJump_output); | ||
| 65 | + | ||
| 66 | +ID_EX idex(clk, reg_writereg1, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg, | ||
| 67 | + reg_readdata1, reg_readdata2, extend_output, ifid_PC_4, shiftJump_output, ifid_instr[25:21], ifid_instr[20:16], | ||
| 68 | + idex_writereg1, idex_regwrite, idex_alusrc, idex_aluctrl, idex_memread, idex_memwrite, idex_memtoreg, idex_branch, idex_jump, idex_jumpreg, | ||
| 69 | + idex_readdata1, idex_readdata2, idex_extenddata, idex_PC_4, idex_tempPCjump, idex_readreg_num1, idex_readreg_num2); | ||
| 70 | + | ||
| 71 | +// Execute | ||
| 72 | +Mux32bit mux_alusrc(idex_readdata2, idex_extend, idex_alusrc, alu_input2); | ||
| 73 | +ALU alu(clk, idex_readdata1, alu_input2, idex_aluctrl, alu_result, alu_branch); | ||
| 74 | +ShiftLeft2 shiftBranch(idex_extend, shiftBranch_output); | ||
| 75 | +Adder add_branch(idex_addPC4, shiftBranch_output, addPCbranch); | ||
| 76 | +MuxBranchSignal mux_branchsignal(alu_branch, idex_branch, branch_signal); | ||
| 77 | +Mux32bit mux_jumpreg({idex_PC_4[31:28], idex_tempPCjump[27:0]}, idex_readdata1, idex_jumpreg, tempPC_jump); | ||
| 78 | + | ||
| 79 | +EX_MEM ex_mem(clk, idex_writereg1, idex_regwrite, idex_memread, idex_memwrite, idex_memtoreg, branch_signal, idex_jump, | ||
| 80 | + alu_result, idex_readdata2, idex_PC_4, tempPC_jump, addPCbranch, | ||
| 81 | + exmem_writereg1, exmem_regwrite, exmem_memread, exmem_memwrite, exmem_memtoreg, exmem_branch, exmem_jump, | ||
| 82 | + exmem_aluresult, exmem_memwritedata, exmem_PC_4, exmem_PCjump, exmem_tempPCbranch); | ||
| 83 | + | ||
| 84 | +// Memory | ||
| 85 | +DataMemory datamem(clk, exmem_aluresult, exmem_memwritedata, exmem_memread, exmem_memwrite, mem_readdata); | ||
| 86 | +Mux32bit mux_branch(exmem_PC_4, exmem_tempPCbranch, exmem_branch , tempPC_branch); | ||
| 87 | + | ||
| 88 | +MEM_WB mem_wb(clk, exmem_writereg1, exmem_regwrite, exmem_memtoreg, exmem_jump, | ||
| 89 | + exmem_aluresult, mem_readdata, tempPC_branch, exmem_PCjump, | ||
| 90 | + memwb_writereg1, memwb_regwrite, memwb_memtoreg, memwb_jump, | ||
| 91 | + memwb_aluresult, memwb_memreaddata, memwb_PCbranch, memwb_PCjump); | ||
| 92 | + | ||
| 93 | +// Writeback | ||
| 94 | +Mux32bit mux_memtoreg(memwb_aluresult, memwb_memreaddata, memwb_memtoreg, reg_writedata); | ||
| 95 | +Mux32bit mux_jump(memwb_PCbranch, memwb_PCjump, memwb_jump, nextPC); | ||
| 96 | + | ||
| 97 | + | ||
| 98 | + | ||
| 99 | + | ||
| 100 | +always @(posedge clk) begin | ||
| 101 | + | ||
| 102 | +end | ||
| 103 | + | ||
| 104 | +/* | ||
| 105 | +wire clk; // clock | ||
| 106 | +reg[31:0] PC, instr_address; | ||
| 107 | + | ||
| 108 | +// IF - ID | ||
| 109 | +wire[31:0] if_id_instruction, if_id_pc_4; | ||
| 110 | + | ||
| 111 | +// ID - EX | ||
| 112 | +wire[31:0] id_ex_reg_readdata1, id_ex_reg_readdata2, id_ex_extenddata, id_ex_pc_4, id_ex_tempPCjump; | ||
| 113 | +wire[4:0] id_ex_writereg, id_hh_readreg1, id_hh_readreg2; | ||
| 114 | +wire id_ex_regwrite, id_ex_alusrc, id_ex_memread, id_ex_memwrite, id_ex_memtoreg, id_ex_branch, id_ex_jump, id_ex_jumpreg; | ||
| 115 | +wire[3:0] id_ex_aluctrl; | ||
| 116 | + | ||
| 117 | +// EX - MEM | ||
| 118 | +wire[31:0] ex_mem_aluresult, ex_mem_memwritedata, ex_mem_PC_4, ex_mem_PCjump, ex_mem_tempPCbranch; | ||
| 119 | +wire[4:0] ex_mem_writereg; | ||
| 120 | +wire ex_mem_regwrite, ex_mem_memread, ex_mem_memwrite, ex_mem_memtoreg, ex_mem_branch, ex_mem_jump; | ||
| 121 | + | ||
| 122 | +// MEM - WB | ||
| 123 | +wire[4:0] mem_wb_writereg_num; | ||
| 124 | +wire mem_wb_regwrite, mem_wb_memtoreg, mem_wb_jump; | ||
| 125 | +wire[31:0] mem_wb_aluresult, mem_wb_memreaddata, mem_wb_PCbranch, mem_wb_PCjump; | ||
| 126 | + | ||
| 127 | +// WB - etc. | ||
| 128 | +wire wb_id_regwrite; | ||
| 129 | +wire[4:0] wb_id_writereg; | ||
| 130 | +wire[31:0] wb_id_reg_writedata; | ||
| 131 | +wire[31:0] wb_nextPC; | ||
| 132 | + | ||
| 133 | +Clock clock(clk); | ||
| 134 | + | ||
| 135 | +InstructionFetch IF(clk, PC, if_id_instruction, if_id_pc_4); | ||
| 136 | + | ||
| 137 | +InstructionDecode ID(clk, if_id_instruction, if_id_pc_4, wb_id_writereg, wb_id_reg_writedata, wb_id_regwrite, | ||
| 138 | + id_ex_writereg, id_ex_regwrite, id_ex_alusrc, id_ex_aluctrl, id_ex_memread, id_ex_memwrite, id_ex_memtoreg, id_ex_branch, id_ex_jump, id_ex_jumpreg, | ||
| 139 | + id_ex_reg_readdata1, id_ex_reg_readdata2, id_ex_extenddata, id_ex_pc_4, id_ex_tempPCjump); | ||
| 140 | + | ||
| 141 | +Execute EX(clk, id_ex_writereg, id_ex_regwrite, id_ex_alusrc, id_ex_aluctrl, id_ex_memread, id_ex_memwrite, id_ex_memtoreg, id_ex_branch, id_ex_jump, id_ex_jumpreg, | ||
| 142 | + id_ex_reg_readdata1, id_ex_reg_readdata2, id_ex_extenddata, id_ex_pc_4, id_ex_tempPCjump, | ||
| 143 | + ex_mem_writereg, ex_mem_regwrite, ex_mem_memread, ex_mem_memwrite, ex_mem_memtoreg, ex_mem_branch, ex_mem_jump, | ||
| 144 | + ex_mem_aluresult, ex_mem_memwritedata, ex_mem_PC_4, ex_mem_PCjump, ex_mem_tempPCbranch); | ||
| 145 | + | ||
| 146 | +Mem MEM(clk, ex_mem_writereg, ex_mem_regwrite, ex_mem_memread, ex_mem_memwrite, ex_mem_memtoreg, ex_mem_branch, ex_mem_jump, | ||
| 147 | + ex_mem_aluresult, ex_mem_memwritedata, ex_mem_PC_4, ex_mem_PCjump, ex_mem_tempPCbranch, | ||
| 148 | + mem_wb_writereg_num, mem_wb_regwrite, mem_wb_memtoreg, mem_wb_jump, mem_wb_aluresult, mem_wb_memreaddata, mem_wb_PCbranch, mem_wb_PCjump); | ||
| 149 | + | ||
| 150 | +WriteBack WB(clk, mem_wb_writereg_num, mem_wb_regwrite, mem_wb_memtoreg, mem_wb_jump, mem_wb_aluresult, mem_wb_memreaddata, mem_wb_PCbranch, mem_wb_PCjump, | ||
| 151 | + wb_id_regwrite, wb_id_writereg, wb_id_reg_writedata, wb_nextPC); | ||
| 152 | + | ||
| 153 | +initial begin | ||
| 154 | + PC = 32'hfffffffc; | ||
| 155 | +end | ||
| 156 | + | ||
| 157 | +always @(posedge clk) begin | ||
| 158 | + instr_address = PC; | ||
| 159 | +end | ||
| 160 | + | ||
| 161 | +always @(negedge clk) begin | ||
| 162 | + PC = PC + 4; | ||
| 163 | +end | ||
| 164 | +*/ | ||
| 165 | +endmodule |
Project/MIPS/MIPS_SingleCycle.v
0 → 100644
| 1 | +module MIPS_SingleCycle; | ||
| 2 | + | ||
| 3 | +wire clk; // clock | ||
| 4 | +reg[31:0] PC; // program counter | ||
| 5 | +reg[31:0] instr_address; | ||
| 6 | +wire[31:0] addPC4, addPCbranch, tempPC_branch, tempPC_jump, nextPC; | ||
| 7 | + | ||
| 8 | +wire[31:0] instr; // loaded instruction. | ||
| 9 | + | ||
| 10 | +wire[4:0] reg_writereg1; // register number for the write data. | ||
| 11 | +wire[31:0] reg_writedata; // data that will be written in the register. | ||
| 12 | +wire[31:0] reg_readdata1, reg_readdata2; // data from the requested register. | ||
| 13 | + | ||
| 14 | +wire[31:0] alu_input2; // input data of ALU. | ||
| 15 | +wire[31:0] alu_result; // result data of ALU. | ||
| 16 | +wire[5:0] alu_branch; // indicator for branch operation. | ||
| 17 | + | ||
| 18 | +wire[31:0] mem_readdata; // data from the requested address. | ||
| 19 | + | ||
| 20 | +wire ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_jump, ctrl_jumpreg, branch_signal; | ||
| 21 | +wire[3:0] ctrl_aluctrl; | ||
| 22 | +wire[2:0] ctrl_branch; // control signals. | ||
| 23 | + | ||
| 24 | +wire[31:0] extend_output; | ||
| 25 | + | ||
| 26 | +wire[31:0] shiftBranch_output; | ||
| 27 | +wire[31:0] shiftJump_output; | ||
| 28 | + | ||
| 29 | +Clock clock(clk); | ||
| 30 | +InstructionMemory instrmem(instr_address, instr); | ||
| 31 | +Register register(clk, instr[25:21], instr[20:16], reg_writereg1, reg_writedata, ctrl_regwrite, reg_readdata1, reg_readdata2); | ||
| 32 | +ALU alu(clk, reg_readdata1, alu_input2, ctrl_aluctrl, alu_result, alu_branch); | ||
| 33 | +DataMemory datamem(clk, alu_result, reg_readdata2, ctrl_memread, ctrl_memwrite, mem_readdata); | ||
| 34 | +Control ctrl(instr[31:26], instr[20:16], instr[5:0], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg); | ||
| 35 | +Mux5bit mux_regdst(instr[20:16], instr[15:11], ctrl_regdst, reg_writereg1); | ||
| 36 | +MuxBranchSignal mux_branchsignal(alu_branch, ctrl_branch, branch_signal); | ||
| 37 | +Mux32bit mux_alusrc(reg_readdata2, extend_output, ctrl_alusrc, alu_input2); | ||
| 38 | +Mux32bit mux_memtoreg(alu_result, mem_readdata, ctrl_memtoreg, reg_writedata); | ||
| 39 | +Mux32bit mux_branch(addPC4, addPCbranch, branch_signal , tempPC_branch); | ||
| 40 | +Mux32bit mux_jumpreg({addPC4[31:28], shiftJump_output[27:0]}, reg_readdata1, ctrl_jumpreg, tempPC_jump); | ||
| 41 | +Mux32bit mux_jump(tempPC_branch, tempPC_jump, ctrl_jump, nextPC); | ||
| 42 | +SignExtend extend(instr[15:0], extend_output); | ||
| 43 | +Adder add_pc4(PC, 32'h00000004, addPC4); | ||
| 44 | +Adder add_branch(addPC4, shiftBranch_output, addPCbranch); | ||
| 45 | +ShiftLeft2 shiftBranch(extend_output, shiftBranch_output); | ||
| 46 | +ShiftLeft2 shiftJump({6'b000000, instr[25:0]}, shiftJump_output); | ||
| 47 | + | ||
| 48 | +initial begin | ||
| 49 | + PC = 32'h00000000; | ||
| 50 | +end | ||
| 51 | + | ||
| 52 | +always @(posedge clk) begin | ||
| 53 | + case(nextPC[31]) // if nextPC is available, PC = nextPC. | ||
| 54 | + 1'b0: PC = nextPC; | ||
| 55 | + 1'b1: PC = nextPC; | ||
| 56 | + endcase | ||
| 57 | + | ||
| 58 | + instr_address = PC; | ||
| 59 | +end | ||
| 60 | + | ||
| 61 | +endmodule |
| 1 | module Mux5bit(input1, input2, signal, output1); | 1 | module Mux5bit(input1, input2, signal, output1); |
| 2 | - | ||
| 3 | input[4:0] input1, input2; | 2 | input[4:0] input1, input2; |
| 4 | input signal; | 3 | input signal; |
| 5 | output reg[4:0] output1; | 4 | output reg[4:0] output1; |
| ... | @@ -10,11 +9,10 @@ always @(*) begin | ... | @@ -10,11 +9,10 @@ always @(*) begin |
| 10 | 1'b1: output1 = input2; | 9 | 1'b1: output1 = input2; |
| 11 | endcase | 10 | endcase |
| 12 | end | 11 | end |
| 13 | - | ||
| 14 | endmodule | 12 | endmodule |
| 15 | 13 | ||
| 16 | -module Mux32bit(input1, input2, signal, output1); | ||
| 17 | 14 | ||
| 15 | +module Mux32bit(input1, input2, signal, output1); | ||
| 18 | input[31:0] input1, input2; | 16 | input[31:0] input1, input2; |
| 19 | input signal; | 17 | input signal; |
| 20 | output reg[31:0] output1; | 18 | output reg[31:0] output1; |
| ... | @@ -25,5 +23,24 @@ always @(*) begin | ... | @@ -25,5 +23,24 @@ always @(*) begin |
| 25 | 1'b1: output1 = input2; | 23 | 1'b1: output1 = input2; |
| 26 | endcase | 24 | endcase |
| 27 | end | 25 | end |
| 26 | +endmodule | ||
| 27 | + | ||
| 28 | + | ||
| 29 | +module MuxBranchSignal(input1, signal, output1); | ||
| 30 | +input[5:0] input1; | ||
| 31 | +input[2:0] signal; | ||
| 32 | +output reg output1; | ||
| 33 | + | ||
| 34 | +always @(*) begin | ||
| 35 | + case(signal) | ||
| 36 | + 3'b000: output1 = 1'b0; | ||
| 37 | + 3'b001: output1 = input1[0]; | ||
| 38 | + 3'b010: output1 = input1[1]; | ||
| 39 | + 3'b011: output1 = input1[2]; | ||
| 40 | + 3'b100: output1 = input1[3]; | ||
| 41 | + 3'b101: output1 = input1[4]; | ||
| 42 | + 3'b110: output1 = input1[5]; | ||
| 43 | + endcase | ||
| 44 | +end | ||
| 28 | 45 | ||
| 29 | endmodule | 46 | endmodule | ... | ... |
Project/MIPS/PipelineRegisters.v
0 → 100644
| 1 | +module IF_ID(clk, in_instruction, in_PC_4, | ||
| 2 | + out_instruction, out_PC_4); | ||
| 3 | +input clk; | ||
| 4 | +input[31:0] in_instruction, in_PC_4; | ||
| 5 | +output reg[31:0] out_instruction, out_PC_4; | ||
| 6 | + | ||
| 7 | +always @(posedge clk) begin | ||
| 8 | + out_instruction <= in_instruction; | ||
| 9 | + out_PC_4 <= in_PC_4; | ||
| 10 | +end | ||
| 11 | +endmodule | ||
| 12 | + | ||
| 13 | + | ||
| 14 | +module ID_EX(clk, in_writereg_num, in_regwrite, in_alusrc, in_aluctrl, in_memread, in_memwrite, in_memtoreg, in_branch, in_jump, in_jumpreg, | ||
| 15 | + in_readdata1, in_readdata2, in_extenddata, in_PC_4, in_tempPCjump, in_readreg_num1, in_readreg_num2, | ||
| 16 | + out_writereg_num, out_regwrite, out_alusrc, out_aluctrl, out_memread, out_memwrite, out_memtoreg, out_branch, out_jump, out_jumpreg, | ||
| 17 | + out_readdata1, out_readdata2, out_extenddata, out_PC_4, out_tempPCjump, out_readreg_num1, out_readreg_num2); | ||
| 18 | +input clk; | ||
| 19 | +input[4:0] in_writereg_num; | ||
| 20 | +input in_regwrite, in_alusrc, in_memread, in_memwrite, in_memtoreg, in_branch, in_jump, in_jumpreg; | ||
| 21 | +input[3:0] in_aluctrl; | ||
| 22 | +input[31:0] in_readdata1, in_readdata2, in_extenddata, in_PC_4, in_tempPCjump, in_readreg_num1, in_readreg_num2; | ||
| 23 | +output reg[4:0] out_writereg_num; | ||
| 24 | +output reg out_regwrite, out_alusrc, out_memread, out_memwrite, out_memtoreg, out_branch, out_jump, out_jumpreg; | ||
| 25 | +output reg[3:0] out_aluctrl; | ||
| 26 | +output reg[31:0] out_readdata1, out_readdata2, out_extenddata, out_PC_4, out_tempPCjump, out_readreg_num1, out_readreg_num2; | ||
| 27 | + | ||
| 28 | +always @(posedge clk) begin | ||
| 29 | + out_writereg_num <= in_writereg_num; | ||
| 30 | + out_regwrite <= in_regwrite; | ||
| 31 | + out_alusrc <= in_alusrc; | ||
| 32 | + out_aluctrl <= in_aluctrl; | ||
| 33 | + out_memread <= in_memread; | ||
| 34 | + out_memwrite <= in_memwrite; | ||
| 35 | + out_memtoreg <= in_memtoreg; | ||
| 36 | + out_branch <= in_branch; | ||
| 37 | + out_jump <= in_jump; | ||
| 38 | + out_jumpreg <= in_jumpreg; | ||
| 39 | + | ||
| 40 | + out_readdata1 <= in_readdata1; | ||
| 41 | + out_readdata2 <= in_readdata2; | ||
| 42 | + out_extenddata <= in_extenddata; | ||
| 43 | + out_PC_4 <= out_PC_4; | ||
| 44 | + out_tempPCjump <= in_tempPCjump; | ||
| 45 | + out_readreg_num1 <= in_readreg_num1; | ||
| 46 | + out_readreg_num2 <= in_readreg_num2; | ||
| 47 | +end | ||
| 48 | +endmodule | ||
| 49 | + | ||
| 50 | + | ||
| 51 | +module EX_MEM(clk, in_writereg_num, in_regwrite, in_memread, in_memwrite, in_memtoreg, in_branch, in_jump, | ||
| 52 | + in_aluresult, in_mem_writedata, in_PC_4, in_PCjump, in_tempPCbranch, | ||
| 53 | + out_writereg_num, out_regwrite, out_memread, out_memwrite, out_memtoreg, out_branch, out_jump, | ||
| 54 | + out_aluresult, out_mem_writedata, out_PC_4, out_PCjump, out_tempPCbranch); | ||
| 55 | +input clk; | ||
| 56 | +input[4:0] in_writereg_num; | ||
| 57 | +input in_regwrite, in_memread, in_memwrite, in_memtoreg, in_branch, in_jump; | ||
| 58 | +input[31:0] in_aluresult, in_mem_writedata, in_PC_4, in_PCjump, in_tempPCbranch; | ||
| 59 | +output reg[4:0] out_writereg_num; | ||
| 60 | +output reg out_regwrite, out_memread, out_memwrite, out_memtoreg, out_branch, out_jump; | ||
| 61 | +output reg[31:0] out_aluresult, out_mem_writedata, out_PC_4, out_PCjump, out_tempPCbranch; | ||
| 62 | + | ||
| 63 | +always @(posedge clk) begin | ||
| 64 | + out_writereg_num <= in_writereg_num; | ||
| 65 | + out_regwrite <= in_regwrite; | ||
| 66 | + out_memread <= in_memread; | ||
| 67 | + out_memwrite <= in_memwrite; | ||
| 68 | + out_memtoreg <= in_memtoreg; | ||
| 69 | + out_branch <= in_branch; | ||
| 70 | + out_jump <= in_jump; | ||
| 71 | + | ||
| 72 | + out_aluresult <= in_aluresult; | ||
| 73 | + out_mem_writedata <= in_mem_writedata; | ||
| 74 | + out_PC_4 <= in_PC_4; | ||
| 75 | + out_PCjump <= in_PCjump; | ||
| 76 | + out_tempPCbranch <= in_tempPCbranch; | ||
| 77 | +end | ||
| 78 | +endmodule | ||
| 79 | + | ||
| 80 | + | ||
| 81 | +module MEM_WB(clk, in_writereg_num, in_regwrite, in_memtoreg, in_jump, in_aluresult, in_memreaddata, in_PCbranch, in_PCjump, | ||
| 82 | + out_writereg_num, out_regwrite, out_memtoreg, out_jump, out_aluresult, out_memreaddata, out_PCbranch, out_PCjump); | ||
| 83 | +input clk; | ||
| 84 | +input[4:0] in_writereg_num; | ||
| 85 | +input in_regwrite, in_memtoreg, in_jump; | ||
| 86 | +input[31:0] in_aluresult, in_memreaddata, in_PCbranch, in_PCjump; | ||
| 87 | +output reg[4:0] out_writereg_num; | ||
| 88 | +output reg out_regwrite, out_memtoreg, out_jump; | ||
| 89 | +output reg[31:0] out_aluresult, out_memreaddata, out_PCbranch, out_PCjump; | ||
| 90 | + | ||
| 91 | +always @(posedge clk) begin | ||
| 92 | + out_writereg_num <= in_writereg_num; | ||
| 93 | + out_regwrite <= in_regwrite; | ||
| 94 | + out_memtoreg <= in_memtoreg; | ||
| 95 | + out_jump <= in_jump; | ||
| 96 | + | ||
| 97 | + out_aluresult <= in_aluresult; | ||
| 98 | + out_memreaddata <= in_memreaddata; | ||
| 99 | + out_PCbranch <= out_PCbranch; | ||
| 100 | + out_PCjump <= out_PCjump; | ||
| 101 | +end | ||
| 102 | +endmodule | ||
| 103 | + | ||
| 104 | +/* Not Finished */ | ||
| 105 | +module PCcounter(clk, in_pc, out_nextpc); | ||
| 106 | +input clk; | ||
| 107 | +input[31:0] in_pc; | ||
| 108 | +output reg[31:0] out_nextpc; | ||
| 109 | +reg[31:0] PC; | ||
| 110 | + | ||
| 111 | +initial begin | ||
| 112 | + PC = 32'h00000000; | ||
| 113 | +end | ||
| 114 | + | ||
| 115 | +always @(posedge clk) begin | ||
| 116 | +/* | ||
| 117 | + case(in_pc[31]) // if in_pc is available, PC = in_pc. | ||
| 118 | + 1'b0: PC = in_pc; | ||
| 119 | + 1'b1: PC = in_pc; | ||
| 120 | + endcase | ||
| 121 | +*/ | ||
| 122 | + PC <= PC+4; | ||
| 123 | + out_nextpc <= PC; | ||
| 124 | +end | ||
| 125 | + | ||
| 126 | +endmodule |
Project/MIPS/test.v
0 → 100644
| 1 | +module test; | ||
| 2 | + | ||
| 3 | +wire clk; | ||
| 4 | +reg sig1; | ||
| 5 | +reg[31:0] in1; | ||
| 6 | +wire[31:0] out1, out2; | ||
| 7 | + | ||
| 8 | +Clock clock(clk); | ||
| 9 | +testA ta(clk, sig1, in1, out1, out2); | ||
| 10 | + | ||
| 11 | +initial begin | ||
| 12 | + sig1 <= 1'b0; | ||
| 13 | + in1 <= 32'd0; | ||
| 14 | + #100; | ||
| 15 | + in1 <= 32'hffffffff; | ||
| 16 | + #100; | ||
| 17 | + sig1 <= 1'b1; | ||
| 18 | + in1 <= 32'h0000ffff; | ||
| 19 | + #100; | ||
| 20 | + sig1 <= 1'b1; | ||
| 21 | + in1 <= 32'hffff0000; | ||
| 22 | + #100; | ||
| 23 | +end | ||
| 24 | + | ||
| 25 | +/* | ||
| 26 | +wire clk; | ||
| 27 | +reg[31:0] pc; | ||
| 28 | +wire[31:0] instr, tempPC; | ||
| 29 | + | ||
| 30 | +Clock clock(clk); | ||
| 31 | +InstructionFetch IF(clk, pc, instr, tempPC); | ||
| 32 | + | ||
| 33 | +initial begin | ||
| 34 | + pc = 32'hfffffffc; | ||
| 35 | +end | ||
| 36 | + | ||
| 37 | +always @(negedge clk) begin | ||
| 38 | + pc = pc + 4; | ||
| 39 | +end | ||
| 40 | +*/ | ||
| 41 | +endmodule | ||
| 42 | + | ||
| 43 | +module testA(clk, sig1, in1, out1, out2); | ||
| 44 | + | ||
| 45 | +input clk, sig1; | ||
| 46 | +input[31:0] in1; | ||
| 47 | +output reg[31:0] out1, out2; | ||
| 48 | + | ||
| 49 | +always @(posedge clk) begin | ||
| 50 | + out1 <= in1; | ||
| 51 | + if(sig1 == 1) out2 <= in1; | ||
| 52 | +end | ||
| 53 | + | ||
| 54 | +endmodule |
| ... | @@ -31,9 +31,9 @@ Register register(clk, instr[25:21], instr[20:16], reg_writereg1, reg_writedata, | ... | @@ -31,9 +31,9 @@ Register register(clk, instr[25:21], instr[20:16], reg_writereg1, reg_writedata, |
| 31 | ALU alu(clk, reg_readdata1, alu_input2, ctrl_aluctrl, alu_result, alu_branch); | 31 | ALU alu(clk, reg_readdata1, alu_input2, ctrl_aluctrl, alu_result, alu_branch); |
| 32 | DataMemory datamem(clk, alu_result, reg_readdata2, ctrl_memread, ctrl_memwrite, mem_readdata); | 32 | DataMemory datamem(clk, alu_result, reg_readdata2, ctrl_memread, ctrl_memwrite, mem_readdata); |
| 33 | Control ctrl(instr[31:26], instr[5:0], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg); | 33 | Control ctrl(instr[31:26], instr[5:0], ctrl_regdst, ctrl_regwrite, ctrl_alusrc, ctrl_aluctrl, ctrl_memread, ctrl_memwrite, ctrl_memtoreg, ctrl_branch, ctrl_jump, ctrl_jumpreg); |
| 34 | -Mux5bit mux_writereg(instr[20:16], instr[15:11], ctrl_regdst, reg_writereg1); | 34 | +Mux5bit mux_regdst(instr[20:16], instr[15:11], ctrl_regdst, reg_writereg1); |
| 35 | -Mux32bit mux_alu(reg_readdata2, extend_output, ctrl_alusrc, alu_input2); | 35 | +Mux32bit mux_alusrc(reg_readdata2, extend_output, ctrl_alusrc, alu_input2); |
| 36 | -Mux32bit mux_writedata(alu_result, mem_readdata, ctrl_memtoreg, reg_writedata); | 36 | +Mux32bit mux_memtoreg(alu_result, mem_readdata, ctrl_memtoreg, reg_writedata); |
| 37 | Mux32bit mux_branch(addPC4, addPCbranch, {ctrl_branch&alu_branch} , tempPC_branch); | 37 | Mux32bit mux_branch(addPC4, addPCbranch, {ctrl_branch&alu_branch} , tempPC_branch); |
| 38 | Mux32bit mux_jumpreg({addPC4[31:28], shiftJump_output[27:0]}, reg_readdata1, ctrl_jumpreg, tempPC_jump); | 38 | Mux32bit mux_jumpreg({addPC4[31:28], shiftJump_output[27:0]}, reg_readdata1, ctrl_jumpreg, tempPC_jump); |
| 39 | Mux32bit mux_jump(tempPC_branch, tempPC_jump, ctrl_jump, nextPC); | 39 | Mux32bit mux_jump(tempPC_branch, tempPC_jump, ctrl_jump, nextPC); | ... | ... |
Project/MIPS/work/_info
0 → 100644
| 1 | +m255 | ||
| 2 | +K4 | ||
| 3 | +z2 | ||
| 4 | +13 | ||
| 5 | +!s112 1.1 | ||
| 6 | +!i10d 8192 | ||
| 7 | +!i10e 25 | ||
| 8 | +!i10f 100 | ||
| 9 | +cModel Technology | ||
| 10 | +dD:/class/Capstone1/KNW_Project2/Project/Pipeline | ||
| 11 | +vAdder | ||
| 12 | +!s110 1590758368 | ||
| 13 | +!i10b 1 | ||
| 14 | +!s100 C]ac0M5ljAN8jKk:YMWUe1 | ||
| 15 | +IDi2UW;IAjgeEI=Re1d6>j0 | ||
| 16 | +Z0 VDg1SIo80bB@j0V0VzS_@n1 | ||
| 17 | +Z1 dD:/class/Capstone1/KNW_Project2/Project/MIPS | ||
| 18 | +Z2 w1590245372 | ||
| 19 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v | ||
| 20 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v | ||
| 21 | +L0 1 | ||
| 22 | +Z3 OP;L;10.4a;61 | ||
| 23 | +r1 | ||
| 24 | +!s85 0 | ||
| 25 | +31 | ||
| 26 | +!s108 1590758368.000000 | ||
| 27 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v| | ||
| 28 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Adder.v| | ||
| 29 | +!s101 -O0 | ||
| 30 | +!i113 1 | ||
| 31 | +Z4 o-work work -L mtiAvm -L mtiRnm -L mtiOvm -L mtiUvm -L mtiUPF -L infact -O0 | ||
| 32 | +n@adder | ||
| 33 | +vALU | ||
| 34 | +Z5 !s110 1590758369 | ||
| 35 | +!i10b 1 | ||
| 36 | +!s100 8`_QAORX^JgbcU:FJndD:1 | ||
| 37 | +I^ma26jUAmP4?NRZPY^4G=2 | ||
| 38 | +R0 | ||
| 39 | +R1 | ||
| 40 | +w1590755442 | ||
| 41 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v | ||
| 42 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v | ||
| 43 | +L0 1 | ||
| 44 | +R3 | ||
| 45 | +r1 | ||
| 46 | +!s85 0 | ||
| 47 | +31 | ||
| 48 | +Z6 !s108 1590758369.000000 | ||
| 49 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v| | ||
| 50 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/ALU.v| | ||
| 51 | +!s101 -O0 | ||
| 52 | +!i113 1 | ||
| 53 | +R4 | ||
| 54 | +n@a@l@u | ||
| 55 | +vClock | ||
| 56 | +R5 | ||
| 57 | +!i10b 1 | ||
| 58 | +!s100 OWQXV6kDYiT>ChTOoCFa]2 | ||
| 59 | +IQHn8SmB<S>;8X8GE^RU_a0 | ||
| 60 | +R0 | ||
| 61 | +R1 | ||
| 62 | +R2 | ||
| 63 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v | ||
| 64 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v | ||
| 65 | +L0 1 | ||
| 66 | +R3 | ||
| 67 | +r1 | ||
| 68 | +!s85 0 | ||
| 69 | +31 | ||
| 70 | +R6 | ||
| 71 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v| | ||
| 72 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/clock.v| | ||
| 73 | +!s101 -O0 | ||
| 74 | +!i113 1 | ||
| 75 | +R4 | ||
| 76 | +n@clock | ||
| 77 | +vControl | ||
| 78 | +R5 | ||
| 79 | +!i10b 1 | ||
| 80 | +!s100 RnD5[K2b[j8<X09[R7]kZ2 | ||
| 81 | +I_4RCzG]R_IOaidB1NCK7D0 | ||
| 82 | +R0 | ||
| 83 | +R1 | ||
| 84 | +w1590757464 | ||
| 85 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v | ||
| 86 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v | ||
| 87 | +L0 1 | ||
| 88 | +R3 | ||
| 89 | +r1 | ||
| 90 | +!s85 0 | ||
| 91 | +31 | ||
| 92 | +R6 | ||
| 93 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v| | ||
| 94 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Control.v| | ||
| 95 | +!s101 -O0 | ||
| 96 | +!i113 1 | ||
| 97 | +R4 | ||
| 98 | +n@control | ||
| 99 | +vDataMemory | ||
| 100 | +R5 | ||
| 101 | +!i10b 1 | ||
| 102 | +!s100 RT9n9HH7ShGYTRk0Zj<MK3 | ||
| 103 | +IbciGN62QS2]SHi<BkL<2=2 | ||
| 104 | +R0 | ||
| 105 | +R1 | ||
| 106 | +R2 | ||
| 107 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v | ||
| 108 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v | ||
| 109 | +L0 1 | ||
| 110 | +R3 | ||
| 111 | +r1 | ||
| 112 | +!s85 0 | ||
| 113 | +31 | ||
| 114 | +R6 | ||
| 115 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v| | ||
| 116 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Data Memory.v| | ||
| 117 | +!s101 -O0 | ||
| 118 | +!i113 1 | ||
| 119 | +R4 | ||
| 120 | +n@data@memory | ||
| 121 | +vEX_MEM | ||
| 122 | +R5 | ||
| 123 | +!i10b 1 | ||
| 124 | +!s100 ]8:X<?W@7Q@:C>XWDd6?W2 | ||
| 125 | +ISC6^?55L`OXYAVlPjf`nE1 | ||
| 126 | +R0 | ||
| 127 | +R1 | ||
| 128 | +Z7 w1590758341 | ||
| 129 | +Z8 8D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v | ||
| 130 | +Z9 FD:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v | ||
| 131 | +L0 51 | ||
| 132 | +R3 | ||
| 133 | +r1 | ||
| 134 | +!s85 0 | ||
| 135 | +31 | ||
| 136 | +R6 | ||
| 137 | +Z10 !s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v| | ||
| 138 | +Z11 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/PipelineRegisters.v| | ||
| 139 | +!s101 -O0 | ||
| 140 | +!i113 1 | ||
| 141 | +R4 | ||
| 142 | +n@e@x_@m@e@m | ||
| 143 | +vID_EX | ||
| 144 | +R5 | ||
| 145 | +!i10b 1 | ||
| 146 | +!s100 AOa7M@:@;]1<l5@<:]DoZ3 | ||
| 147 | +I1^7Xh>glK<B3GFZz?nHKG1 | ||
| 148 | +R0 | ||
| 149 | +R1 | ||
| 150 | +R7 | ||
| 151 | +R8 | ||
| 152 | +R9 | ||
| 153 | +L0 14 | ||
| 154 | +R3 | ||
| 155 | +r1 | ||
| 156 | +!s85 0 | ||
| 157 | +31 | ||
| 158 | +R6 | ||
| 159 | +R10 | ||
| 160 | +R11 | ||
| 161 | +!s101 -O0 | ||
| 162 | +!i113 1 | ||
| 163 | +R4 | ||
| 164 | +n@i@d_@e@x | ||
| 165 | +vIF_ID | ||
| 166 | +R5 | ||
| 167 | +!i10b 1 | ||
| 168 | +!s100 gnf82IK;Q2HN9lh8hggGU3 | ||
| 169 | +I;=kYGK18[WJPiNhbdWnK>2 | ||
| 170 | +R0 | ||
| 171 | +R1 | ||
| 172 | +R7 | ||
| 173 | +R8 | ||
| 174 | +R9 | ||
| 175 | +L0 1 | ||
| 176 | +R3 | ||
| 177 | +r1 | ||
| 178 | +!s85 0 | ||
| 179 | +31 | ||
| 180 | +R6 | ||
| 181 | +R10 | ||
| 182 | +R11 | ||
| 183 | +!s101 -O0 | ||
| 184 | +!i113 1 | ||
| 185 | +R4 | ||
| 186 | +n@i@f_@i@d | ||
| 187 | +vInstructionMemory | ||
| 188 | +R5 | ||
| 189 | +!i10b 1 | ||
| 190 | +!s100 6FSBo3he?<YZH8SWT@?520 | ||
| 191 | +I[UoXc[5<F^Vo]d2STIEaL3 | ||
| 192 | +R0 | ||
| 193 | +R1 | ||
| 194 | +w1590757768 | ||
| 195 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v | ||
| 196 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v | ||
| 197 | +L0 1 | ||
| 198 | +R3 | ||
| 199 | +r1 | ||
| 200 | +!s85 0 | ||
| 201 | +31 | ||
| 202 | +R6 | ||
| 203 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v| | ||
| 204 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/InstructionMemory.v| | ||
| 205 | +!s101 -O0 | ||
| 206 | +!i113 1 | ||
| 207 | +R4 | ||
| 208 | +n@instruction@memory | ||
| 209 | +vMEM_WB | ||
| 210 | +R5 | ||
| 211 | +!i10b 1 | ||
| 212 | +!s100 U4fQaKDggSoeYLh<eCFgU0 | ||
| 213 | +I@gj2Xh:PnQJOY356SH^a`2 | ||
| 214 | +R0 | ||
| 215 | +R1 | ||
| 216 | +R7 | ||
| 217 | +R8 | ||
| 218 | +R9 | ||
| 219 | +L0 81 | ||
| 220 | +R3 | ||
| 221 | +r1 | ||
| 222 | +!s85 0 | ||
| 223 | +31 | ||
| 224 | +R6 | ||
| 225 | +R10 | ||
| 226 | +R11 | ||
| 227 | +!s101 -O0 | ||
| 228 | +!i113 1 | ||
| 229 | +R4 | ||
| 230 | +n@m@e@m_@w@b | ||
| 231 | +vMIPS_Pipeline | ||
| 232 | +R5 | ||
| 233 | +!i10b 1 | ||
| 234 | +!s100 d<3zzA7z4RnP`AU2`TaFC3 | ||
| 235 | +Iao5jbloRQ>=BcXMPeBS3V0 | ||
| 236 | +R0 | ||
| 237 | +R1 | ||
| 238 | +w1590757593 | ||
| 239 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v | ||
| 240 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v | ||
| 241 | +L0 2 | ||
| 242 | +R3 | ||
| 243 | +r1 | ||
| 244 | +!s85 0 | ||
| 245 | +31 | ||
| 246 | +R6 | ||
| 247 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v| | ||
| 248 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_Pipeline.v| | ||
| 249 | +!s101 -O0 | ||
| 250 | +!i113 1 | ||
| 251 | +R4 | ||
| 252 | +n@m@i@p@s_@pipeline | ||
| 253 | +vMIPS_SingleCycle | ||
| 254 | +R5 | ||
| 255 | +!i10b 1 | ||
| 256 | +!s100 dPOY;3F4Z@[X550Mf8=`]2 | ||
| 257 | +IQZkQc[MJbHhEVdg`K]7Hm0 | ||
| 258 | +R0 | ||
| 259 | +R1 | ||
| 260 | +w1590757617 | ||
| 261 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v | ||
| 262 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v | ||
| 263 | +L0 1 | ||
| 264 | +R3 | ||
| 265 | +r1 | ||
| 266 | +!s85 0 | ||
| 267 | +31 | ||
| 268 | +R6 | ||
| 269 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v| | ||
| 270 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/MIPS_SingleCycle.v| | ||
| 271 | +!s101 -O0 | ||
| 272 | +!i113 1 | ||
| 273 | +R4 | ||
| 274 | +n@m@i@p@s_@single@cycle | ||
| 275 | +vMux32bit | ||
| 276 | +R5 | ||
| 277 | +!i10b 1 | ||
| 278 | +!s100 foJG^YU75_eND1Og;6Z>O1 | ||
| 279 | +II3=gjhQD0_cn8mlDL]@bi1 | ||
| 280 | +R0 | ||
| 281 | +R1 | ||
| 282 | +Z12 w1590755668 | ||
| 283 | +Z13 8D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v | ||
| 284 | +Z14 FD:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v | ||
| 285 | +L0 15 | ||
| 286 | +R3 | ||
| 287 | +r1 | ||
| 288 | +!s85 0 | ||
| 289 | +31 | ||
| 290 | +R6 | ||
| 291 | +Z15 !s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v| | ||
| 292 | +Z16 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Mux.v| | ||
| 293 | +!s101 -O0 | ||
| 294 | +!i113 1 | ||
| 295 | +R4 | ||
| 296 | +n@mux32bit | ||
| 297 | +vMux5bit | ||
| 298 | +R5 | ||
| 299 | +!i10b 1 | ||
| 300 | +!s100 oSd=[kHDJb<:G7LN4]6@e3 | ||
| 301 | +IfiVXg_aB2GQG7?F@=HcEi0 | ||
| 302 | +R0 | ||
| 303 | +R1 | ||
| 304 | +R12 | ||
| 305 | +R13 | ||
| 306 | +R14 | ||
| 307 | +L0 1 | ||
| 308 | +R3 | ||
| 309 | +r1 | ||
| 310 | +!s85 0 | ||
| 311 | +31 | ||
| 312 | +R6 | ||
| 313 | +R15 | ||
| 314 | +R16 | ||
| 315 | +!s101 -O0 | ||
| 316 | +!i113 1 | ||
| 317 | +R4 | ||
| 318 | +n@mux5bit | ||
| 319 | +vMuxBranchSignal | ||
| 320 | +R5 | ||
| 321 | +!i10b 1 | ||
| 322 | +!s100 H1RKS9h`Y6QFX88CRc<g[0 | ||
| 323 | +IGJT?gXMKEEWH?G^lPN79V2 | ||
| 324 | +R0 | ||
| 325 | +R1 | ||
| 326 | +R12 | ||
| 327 | +R13 | ||
| 328 | +R14 | ||
| 329 | +L0 29 | ||
| 330 | +R3 | ||
| 331 | +r1 | ||
| 332 | +!s85 0 | ||
| 333 | +31 | ||
| 334 | +R6 | ||
| 335 | +R15 | ||
| 336 | +R16 | ||
| 337 | +!s101 -O0 | ||
| 338 | +!i113 1 | ||
| 339 | +R4 | ||
| 340 | +n@mux@branch@signal | ||
| 341 | +vPCcounter | ||
| 342 | +R5 | ||
| 343 | +!i10b 1 | ||
| 344 | +!s100 LU5jEj9S38k[SaIDeL1nG0 | ||
| 345 | +I81MUZW]CnE2oaQhzNQ:^f3 | ||
| 346 | +R0 | ||
| 347 | +R1 | ||
| 348 | +R7 | ||
| 349 | +R8 | ||
| 350 | +R9 | ||
| 351 | +L0 105 | ||
| 352 | +R3 | ||
| 353 | +r1 | ||
| 354 | +!s85 0 | ||
| 355 | +31 | ||
| 356 | +R6 | ||
| 357 | +R10 | ||
| 358 | +R11 | ||
| 359 | +!s101 -O0 | ||
| 360 | +!i113 1 | ||
| 361 | +R4 | ||
| 362 | +n@p@ccounter | ||
| 363 | +vRegister | ||
| 364 | +R5 | ||
| 365 | +!i10b 1 | ||
| 366 | +!s100 Bdb0dL`fj[<g;4lO0DTA?2 | ||
| 367 | +I]1XK2c]z?oKE2lz6^YJ@E2 | ||
| 368 | +R0 | ||
| 369 | +R1 | ||
| 370 | +R2 | ||
| 371 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v | ||
| 372 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v | ||
| 373 | +L0 1 | ||
| 374 | +R3 | ||
| 375 | +r1 | ||
| 376 | +!s85 0 | ||
| 377 | +31 | ||
| 378 | +R6 | ||
| 379 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v| | ||
| 380 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/Register.v| | ||
| 381 | +!s101 -O0 | ||
| 382 | +!i113 1 | ||
| 383 | +R4 | ||
| 384 | +n@register | ||
| 385 | +vShiftLeft2 | ||
| 386 | +R5 | ||
| 387 | +!i10b 1 | ||
| 388 | +!s100 eI5Ec:gWMIfN>mTKQIBY93 | ||
| 389 | +I>^Q9<62c;5[Hn[Q?e7H1W0 | ||
| 390 | +R0 | ||
| 391 | +R1 | ||
| 392 | +R2 | ||
| 393 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v | ||
| 394 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v | ||
| 395 | +L0 1 | ||
| 396 | +R3 | ||
| 397 | +r1 | ||
| 398 | +!s85 0 | ||
| 399 | +31 | ||
| 400 | +R6 | ||
| 401 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v| | ||
| 402 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/ShiftLeft2.v| | ||
| 403 | +!s101 -O0 | ||
| 404 | +!i113 1 | ||
| 405 | +R4 | ||
| 406 | +n@shift@left2 | ||
| 407 | +vSignExtend | ||
| 408 | +Z17 !s110 1590758370 | ||
| 409 | +!i10b 1 | ||
| 410 | +!s100 ahVKzC^1fD@70fO3WnVUV0 | ||
| 411 | +Il`J_9Ud<V7MLm3fGkfTAf0 | ||
| 412 | +R0 | ||
| 413 | +R1 | ||
| 414 | +R2 | ||
| 415 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v | ||
| 416 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v | ||
| 417 | +L0 1 | ||
| 418 | +R3 | ||
| 419 | +r1 | ||
| 420 | +!s85 0 | ||
| 421 | +31 | ||
| 422 | +R6 | ||
| 423 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v| | ||
| 424 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/SignExtend.v| | ||
| 425 | +!s101 -O0 | ||
| 426 | +!i113 1 | ||
| 427 | +R4 | ||
| 428 | +n@sign@extend | ||
| 429 | +vStall | ||
| 430 | +R5 | ||
| 431 | +!i10b 1 | ||
| 432 | +!s100 DfdOH4n>:HLca08Dem_aV1 | ||
| 433 | +IU:EDMN]H5b[DHo4cH[;FR3 | ||
| 434 | +R0 | ||
| 435 | +R1 | ||
| 436 | +w1590758365 | ||
| 437 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v | ||
| 438 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v | ||
| 439 | +L0 2 | ||
| 440 | +R3 | ||
| 441 | +r1 | ||
| 442 | +!s85 0 | ||
| 443 | +31 | ||
| 444 | +R6 | ||
| 445 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v| | ||
| 446 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/HazardHandling.v| | ||
| 447 | +!s101 -O0 | ||
| 448 | +!i113 1 | ||
| 449 | +R4 | ||
| 450 | +n@stall | ||
| 451 | +vtest | ||
| 452 | +R17 | ||
| 453 | +!i10b 1 | ||
| 454 | +!s100 k>03:b]McFVP5WBB2X74Q1 | ||
| 455 | +I=8dVVickYZ@kW6ZABDlc_2 | ||
| 456 | +R0 | ||
| 457 | +R1 | ||
| 458 | +Z18 w1590335687 | ||
| 459 | +Z19 8D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v | ||
| 460 | +Z20 FD:/class/Capstone1/KNW_Project2/Project/MIPS/test.v | ||
| 461 | +L0 1 | ||
| 462 | +R3 | ||
| 463 | +r1 | ||
| 464 | +!s85 0 | ||
| 465 | +31 | ||
| 466 | +Z21 !s108 1590758370.000000 | ||
| 467 | +Z22 !s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v| | ||
| 468 | +Z23 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/test.v| | ||
| 469 | +!s101 -O0 | ||
| 470 | +!i113 1 | ||
| 471 | +R4 | ||
| 472 | +vtestA | ||
| 473 | +R17 | ||
| 474 | +!i10b 1 | ||
| 475 | +!s100 N_c21cYjoS9<Wi;WjH:Qc0 | ||
| 476 | +IdN8m[5hjJ3QH?beTSX`:T3 | ||
| 477 | +R0 | ||
| 478 | +R1 | ||
| 479 | +R18 | ||
| 480 | +R19 | ||
| 481 | +R20 | ||
| 482 | +L0 43 | ||
| 483 | +R3 | ||
| 484 | +r1 | ||
| 485 | +!s85 0 | ||
| 486 | +31 | ||
| 487 | +R21 | ||
| 488 | +R22 | ||
| 489 | +R23 | ||
| 490 | +!s101 -O0 | ||
| 491 | +!i113 1 | ||
| 492 | +R4 | ||
| 493 | +ntest@a | ||
| 494 | +vtestbench | ||
| 495 | +R17 | ||
| 496 | +!i10b 1 | ||
| 497 | +!s100 OS>9h:91ecFHGVTRNVN]_2 | ||
| 498 | +IR?_j2LXMem;jJUiXH@MhI0 | ||
| 499 | +R0 | ||
| 500 | +R1 | ||
| 501 | +w1590428983 | ||
| 502 | +8D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v | ||
| 503 | +FD:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v | ||
| 504 | +L0 1 | ||
| 505 | +R3 | ||
| 506 | +r1 | ||
| 507 | +!s85 0 | ||
| 508 | +31 | ||
| 509 | +R21 | ||
| 510 | +!s107 D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v| | ||
| 511 | +!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/MIPS/testbench.v| | ||
| 512 | +!s101 -O0 | ||
| 513 | +!i113 1 | ||
| 514 | +R4 |
Project/MIPS/work/_lib.qdb
0 → 100644
No preview for this file type
Project/MIPS/work/_lib1_1.qdb
0 → 100644
No preview for this file type
Project/MIPS/work/_lib1_1.qpg
0 → 100644
No preview for this file type
No preview for this file type
| 1 | -module InstructionMemory(address, instruction); | ||
| 2 | - | ||
| 3 | -input[31:0] address; | ||
| 4 | -output reg[31:0] instruction; | ||
| 5 | - | ||
| 6 | -reg[31:0] instr_mem[127:0]; | ||
| 7 | - | ||
| 8 | -initial begin | ||
| 9 | -instr_mem[0] = 32'd0; | ||
| 10 | -instr_mem[1] = 32'b00100100000010000000000011111111; // addi $0 $8 255 | ||
| 11 | -instr_mem[2] = 32'b00000001000010000100100000100000; // add $8 $8 $9 | ||
| 12 | -instr_mem[3] = 32'b00000001000000000101000000100000; // add $8 $0 $10 | ||
| 13 | -instr_mem[4] = 32'b00010001000010110000000000000001; // beq $8 $11 +1 | ||
| 14 | -instr_mem[5] = 32'b00000001000010010000000000011000; // mult $8 $9 | ||
| 15 | -instr_mem[6] = 32'd0; | ||
| 16 | -instr_mem[7] = 32'b00000000000000000110000000010000; // mfhi $12 | ||
| 17 | -instr_mem[8] = 32'b00000000000000000110100000010010; // mflo $13 | ||
| 18 | -instr_mem[9] = 32'b10101100000011010000000000111100; // sw $0 $13 60 | ||
| 19 | -instr_mem[10] = 32'd0; | ||
| 20 | -instr_mem[11] = 32'b00010001000010110000000000000001; // beq $8 $11 +1 | ||
| 21 | -instr_mem[12] = 32'b10001100000000010000000000111100; // lw $0 $1 60 | ||
| 22 | -instr_mem[13] = 32'd0; | ||
| 23 | -instr_mem[14] = 32'b00000000000000000000000000001000; // jr $0 | ||
| 24 | - | ||
| 25 | - | ||
| 26 | - | ||
| 27 | -end | ||
| 28 | - | ||
| 29 | -always @ (*) begin | ||
| 30 | - instruction = instr_mem[address/4]; | ||
| 31 | -end | ||
| 32 | - | ||
| 33 | -endmodule |
| 1 | -D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v | ||
| 2 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 3 | --- Compiling module ShiftLeft2 | ||
| 4 | - | ||
| 5 | -Top level modules: | ||
| 6 | - ShiftLeft2 | ||
| 7 | - | ||
| 8 | -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v | ||
| 9 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 10 | --- Compiling module InstructionMemory | ||
| 11 | - | ||
| 12 | -Top level modules: | ||
| 13 | - InstructionMemory | ||
| 14 | - | ||
| 15 | -} {} {}} {D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v} {1 {vlog -work work -stats=none {D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v} | ||
| 16 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 17 | --- Compiling module DataMemory | ||
| 18 | - | ||
| 19 | -Top level modules: | ||
| 20 | - DataMemory | ||
| 21 | - | ||
| 22 | -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v | ||
| 23 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 24 | --- Compiling module testbench | ||
| 25 | - | ||
| 26 | -Top level modules: | ||
| 27 | - testbench | ||
| 28 | - | ||
| 29 | -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v | ||
| 30 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 31 | --- Compiling module Clock | ||
| 32 | - | ||
| 33 | -Top level modules: | ||
| 34 | - Clock | ||
| 35 | - | ||
| 36 | -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v | ||
| 37 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 38 | --- Compiling module Adder | ||
| 39 | - | ||
| 40 | -Top level modules: | ||
| 41 | - Adder | ||
| 42 | - | ||
| 43 | -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v | ||
| 44 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 45 | --- Compiling module SignExtend | ||
| 46 | - | ||
| 47 | -Top level modules: | ||
| 48 | - SignExtend | ||
| 49 | - | ||
| 50 | -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v | ||
| 51 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 52 | --- Compiling module Register | ||
| 53 | - | ||
| 54 | -Top level modules: | ||
| 55 | - Register | ||
| 56 | - | ||
| 57 | -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v | ||
| 58 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 59 | --- Compiling module Control | ||
| 60 | - | ||
| 61 | -Top level modules: | ||
| 62 | - Control | ||
| 63 | - | ||
| 64 | -} {} {}} D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v {1 {vlog -work work -stats=none D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v | ||
| 65 | -Model Technology ModelSim PE Student Edition vlog 10.4a Compiler 2015.03 Apr 7 2015 | ||
| 66 | --- Compiling module ALU | ||
| 67 | - | ||
| 68 | -Top level modules: | ||
| 69 | - ALU | ||
| 70 | - | ||
| 71 | -} {} {}} |
Project/SingleCycle/test.v
deleted
100644 → 0
| 1 | -module test; | ||
| 2 | - | ||
| 3 | -reg[31:0] in1, in2; | ||
| 4 | -reg[3:0] ctrl; | ||
| 5 | -wire[31:0] out; | ||
| 6 | -wire a; | ||
| 7 | - | ||
| 8 | -ALU alu(in1, in2, ctrl, out, a); | ||
| 9 | - | ||
| 10 | -initial begin | ||
| 11 | - in1 = 32'd128; | ||
| 12 | - in2 = 32'd982; | ||
| 13 | - ctrl = 4'b1000; | ||
| 14 | - #100; | ||
| 15 | - in1 = 32'd123; | ||
| 16 | - in2 = 32'd246; | ||
| 17 | - ctrl = 4'b0010; | ||
| 18 | - #100; | ||
| 19 | - ctrl = 4'b1010; | ||
| 20 | - #100; | ||
| 21 | - ctrl = 4'b1011; | ||
| 22 | - #100; | ||
| 23 | -end | ||
| 24 | - | ||
| 25 | -/* | ||
| 26 | -wire clk; | ||
| 27 | - | ||
| 28 | -Clock clock(clk); | ||
| 29 | -*/ | ||
| 30 | - | ||
| 31 | -/* | ||
| 32 | -reg[31:0] address, wdata; | ||
| 33 | -reg mr, mw; | ||
| 34 | -wire[31:0] rdata; | ||
| 35 | - | ||
| 36 | -DataMemory damem(address, wdata, mr, mw, rdata); | ||
| 37 | - | ||
| 38 | -initial begin | ||
| 39 | - address = 32'd0; | ||
| 40 | - wdata = 32'd127; | ||
| 41 | - mr = 1'b0; | ||
| 42 | - mw = 1'b1; | ||
| 43 | - #100; | ||
| 44 | - address = 32'd48; | ||
| 45 | - wdata = 32'd255; | ||
| 46 | - mr = 1'b0; | ||
| 47 | - mw = 1'b1; | ||
| 48 | - #100; | ||
| 49 | - address = 32'd48; | ||
| 50 | - wdata = 32'd255; | ||
| 51 | - mr = 1'b1; | ||
| 52 | - mw = 1'b0; | ||
| 53 | - #100; | ||
| 54 | - address = 32'd48; | ||
| 55 | - wdata = 32'd4; | ||
| 56 | - mr = 1'b0; | ||
| 57 | - mw = 1'b1; | ||
| 58 | - #100; | ||
| 59 | -end | ||
| 60 | -*/ | ||
| 61 | - | ||
| 62 | -/* | ||
| 63 | -wire[31:0] regout1, regout2; | ||
| 64 | -reg[4:0] ins1, ins2, ins3; | ||
| 65 | -wire[31:0] aluresult; | ||
| 66 | -reg[3:0] aluctrl; | ||
| 67 | -reg rwrite; | ||
| 68 | -reg[31:0] aluin2; | ||
| 69 | - | ||
| 70 | -Register Regi(ins1, ins2, ins3, aluresult, rwrite, regout1, regout2); | ||
| 71 | -ALU alu(regout1, aluin2, aluctrl, aluresult); | ||
| 72 | - | ||
| 73 | -initial begin | ||
| 74 | - rwrite = 1; | ||
| 75 | - ins1 = 5'd0; | ||
| 76 | - ins2 = 5'd29; | ||
| 77 | - ins3 = 5'd7; | ||
| 78 | - aluin2 = 32'h7fffffff; | ||
| 79 | - aluctrl = 4'b0010; | ||
| 80 | - #100; | ||
| 81 | - rwrite = 1; | ||
| 82 | - ins1 = 5'd7; | ||
| 83 | - ins2 = 5'd7; | ||
| 84 | - ins3 = 5'd8; | ||
| 85 | - aluctrl = 4'b0010; | ||
| 86 | - #100; | ||
| 87 | - rwrite = 0; | ||
| 88 | - #100; | ||
| 89 | - rwrite = 1; | ||
| 90 | - ins1 = 5'd0; | ||
| 91 | - ins2 = 5'd29; | ||
| 92 | - ins3 = 5'd7; | ||
| 93 | - aluin2 = 32'h7fffffff; | ||
| 94 | - aluctrl = 4'b0010; | ||
| 95 | - #100; | ||
| 96 | - rwrite = 1; | ||
| 97 | - ins1 = 5'd7; | ||
| 98 | - ins2 = 5'd7; | ||
| 99 | - ins3 = 5'd8; | ||
| 100 | - aluctrl = 4'b0010; | ||
| 101 | - #100; | ||
| 102 | -end | ||
| 103 | -*/ | ||
| 104 | - | ||
| 105 | -/* | ||
| 106 | -reg[31:0] input1, input2; | ||
| 107 | -reg[3:0] ctrl; | ||
| 108 | -wire[31:0] output1; | ||
| 109 | -wire zero; | ||
| 110 | - | ||
| 111 | -ALU testalu(input1, input2, ctrl, output1, zero); | ||
| 112 | - | ||
| 113 | -initial begin | ||
| 114 | - input1 <= 32'h0000000f; | ||
| 115 | - input2 <= 32'h000000f0; | ||
| 116 | - ctrl <= 4'h0; // add | ||
| 117 | - #100; | ||
| 118 | - ctrl <= 4'h1; // or | ||
| 119 | - #100; | ||
| 120 | - ctrl <= 4'h2; // add | ||
| 121 | - #100; | ||
| 122 | - ctrl <= 4'h6; // sub | ||
| 123 | - #100; | ||
| 124 | - ctrl <= 4'h7; // slt | ||
| 125 | - #100; | ||
| 126 | - ctrl <= 4'hc; // nor | ||
| 127 | - #100; | ||
| 128 | - input1 <= 32'h000000f0; | ||
| 129 | - input2 <= 32'h0000000f; | ||
| 130 | - ctrl <= 4'h6; // sub | ||
| 131 | - #100; | ||
| 132 | - input1 <= 32'h000000f0; | ||
| 133 | - input2 <= 32'h0000000f; | ||
| 134 | - ctrl <= 4'h6; // sub | ||
| 135 | - #100; | ||
| 136 | - input1 <= 32'h000000f0; | ||
| 137 | - input2 <= 32'h0000000f; | ||
| 138 | - ctrl <= 4'h6; // sub | ||
| 139 | - #100; | ||
| 140 | - input1 <= 32'h000000f0; | ||
| 141 | - input2 <= 32'h0000000f; | ||
| 142 | - ctrl <= 4'h6; // sub | ||
| 143 | - #100; | ||
| 144 | -end | ||
| 145 | -*/ | ||
| 146 | - | ||
| 147 | -/* | ||
| 148 | -reg[31:0] input1; | ||
| 149 | -wire[31:0] output1; | ||
| 150 | - | ||
| 151 | -InstructionMemory im(input1, output1); | ||
| 152 | - | ||
| 153 | -initial | ||
| 154 | -begin | ||
| 155 | - input1 = {{28{1'b0}}, 4'b0000}; | ||
| 156 | - #100; | ||
| 157 | - input1 = {{28{1'b0}}, 4'b1100}; | ||
| 158 | - #100; | ||
| 159 | - input1 = {{28{1'b0}}, 4'b1000}; | ||
| 160 | - #100; | ||
| 161 | - input1 = {{28{1'b0}}, 4'b0100}; | ||
| 162 | - #100; | ||
| 163 | - input1 = {{28{1'b0}}, 4'b0000}; | ||
| 164 | - #100; | ||
| 165 | -end | ||
| 166 | -*/ | ||
| 167 | - | ||
| 168 | -/* | ||
| 169 | -reg[7:0] input1; | ||
| 170 | -wire[7:0] output1; | ||
| 171 | - | ||
| 172 | -Adder adder1(input1, 8'b00000001, output1); | ||
| 173 | - | ||
| 174 | -initial | ||
| 175 | -begin | ||
| 176 | - input1 = 8'b00001111; | ||
| 177 | - #100; | ||
| 178 | - input1 = 8'b00001000; | ||
| 179 | - #100; | ||
| 180 | - input1 = 8'b00000000; | ||
| 181 | - #100; | ||
| 182 | - input1 = 8'b11111111; | ||
| 183 | - #100; | ||
| 184 | -end | ||
| 185 | -*/ | ||
| 186 | -endmodule |
Project/SingleCycle/work/_info
deleted
100644 → 0
| 1 | -m255 | ||
| 2 | -K4 | ||
| 3 | -z2 | ||
| 4 | -13 | ||
| 5 | -!s112 1.1 | ||
| 6 | -!i10d 8192 | ||
| 7 | -!i10e 25 | ||
| 8 | -!i10f 100 | ||
| 9 | -cModel Technology | ||
| 10 | -dC:/Modeltech_pe_edu_10.4a/examples | ||
| 11 | -vAdder | ||
| 12 | -Z0 !s110 1590181223 | ||
| 13 | -!i10b 1 | ||
| 14 | -!s100 C]ac0M5ljAN8jKk:YMWUe1 | ||
| 15 | -IPABU2L8BVV2T>WDY4a1F@3 | ||
| 16 | -Z1 VDg1SIo80bB@j0V0VzS_@n1 | ||
| 17 | -Z2 dD:/class/Capstone1/KNW_Project2/Project/SingleCycle | ||
| 18 | -w1589585757 | ||
| 19 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v | ||
| 20 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v | ||
| 21 | -L0 1 | ||
| 22 | -Z3 OP;L;10.4a;61 | ||
| 23 | -r1 | ||
| 24 | -!s85 0 | ||
| 25 | -31 | ||
| 26 | -Z4 !s108 1590181223.000000 | ||
| 27 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v| | ||
| 28 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Adder.v| | ||
| 29 | -!s101 -O0 | ||
| 30 | -!i113 1 | ||
| 31 | -Z5 o-work work -L mtiAvm -L mtiRnm -L mtiOvm -L mtiUvm -L mtiUPF -L infact -O0 | ||
| 32 | -n@adder | ||
| 33 | -vALU | ||
| 34 | -R0 | ||
| 35 | -!i10b 1 | ||
| 36 | -!s100 :;Xi4U9^j:B2YKA2g;48a2 | ||
| 37 | -Ilz@oO[_i9<DDh^X5Z@MYO2 | ||
| 38 | -R1 | ||
| 39 | -R2 | ||
| 40 | -w1590179297 | ||
| 41 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v | ||
| 42 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v | ||
| 43 | -L0 1 | ||
| 44 | -R3 | ||
| 45 | -r1 | ||
| 46 | -!s85 0 | ||
| 47 | -31 | ||
| 48 | -R4 | ||
| 49 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v| | ||
| 50 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU.v| | ||
| 51 | -!s101 -O0 | ||
| 52 | -!i113 1 | ||
| 53 | -R5 | ||
| 54 | -n@a@l@u | ||
| 55 | -vALUControl | ||
| 56 | -Z6 !s110 1590134077 | ||
| 57 | -!i10b 1 | ||
| 58 | -!s100 5M;8KH=?8dC:nP8HEC8AT0 | ||
| 59 | -Ij7f_HKS32W^mlmZIBXe=P0 | ||
| 60 | -R1 | ||
| 61 | -R2 | ||
| 62 | -w1589611047 | ||
| 63 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v | ||
| 64 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v | ||
| 65 | -L0 1 | ||
| 66 | -R3 | ||
| 67 | -r1 | ||
| 68 | -!s85 0 | ||
| 69 | -31 | ||
| 70 | -Z7 !s108 1590134077.000000 | ||
| 71 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v| | ||
| 72 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ALU_Control.v| | ||
| 73 | -!s101 -O0 | ||
| 74 | -!i113 1 | ||
| 75 | -R5 | ||
| 76 | -n@a@l@u@control | ||
| 77 | -vClock | ||
| 78 | -Z8 !s110 1590181224 | ||
| 79 | -!i10b 1 | ||
| 80 | -!s100 OWQXV6kDYiT>ChTOoCFa]2 | ||
| 81 | -IQ3e7_okQ4UFF5[gGVRJ]L2 | ||
| 82 | -R1 | ||
| 83 | -R2 | ||
| 84 | -w1589585780 | ||
| 85 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v | ||
| 86 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v | ||
| 87 | -L0 1 | ||
| 88 | -R3 | ||
| 89 | -r1 | ||
| 90 | -!s85 0 | ||
| 91 | -31 | ||
| 92 | -Z9 !s108 1590181224.000000 | ||
| 93 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v| | ||
| 94 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/clock.v| | ||
| 95 | -!s101 -O0 | ||
| 96 | -!i113 1 | ||
| 97 | -R5 | ||
| 98 | -n@clock | ||
| 99 | -vControl | ||
| 100 | -R8 | ||
| 101 | -!i10b 1 | ||
| 102 | -!s100 h4IKEzP5K:837Y_KUcOW]0 | ||
| 103 | -I3T=^6M9lNafR2XL8nj12I1 | ||
| 104 | -R1 | ||
| 105 | -R2 | ||
| 106 | -w1590177608 | ||
| 107 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v | ||
| 108 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v | ||
| 109 | -L0 1 | ||
| 110 | -R3 | ||
| 111 | -r1 | ||
| 112 | -!s85 0 | ||
| 113 | -31 | ||
| 114 | -R9 | ||
| 115 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v| | ||
| 116 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Control.v| | ||
| 117 | -!s101 -O0 | ||
| 118 | -!i113 1 | ||
| 119 | -R5 | ||
| 120 | -n@control | ||
| 121 | -vDataMemory | ||
| 122 | -R8 | ||
| 123 | -!i10b 1 | ||
| 124 | -!s100 RT9n9HH7ShGYTRk0Zj<MK3 | ||
| 125 | -InmT0b<BMV7FknI]N:9n7g0 | ||
| 126 | -R1 | ||
| 127 | -R2 | ||
| 128 | -w1590179259 | ||
| 129 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v | ||
| 130 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v | ||
| 131 | -L0 1 | ||
| 132 | -R3 | ||
| 133 | -r1 | ||
| 134 | -!s85 0 | ||
| 135 | -31 | ||
| 136 | -R9 | ||
| 137 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v| | ||
| 138 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Data Memory.v| | ||
| 139 | -!s101 -O0 | ||
| 140 | -!i113 1 | ||
| 141 | -R5 | ||
| 142 | -n@data@memory | ||
| 143 | -vInstructionMemory | ||
| 144 | -Z10 !s110 1590181225 | ||
| 145 | -!i10b 1 | ||
| 146 | -!s100 =6Ye0hT1H9KSDP1=FhXga2 | ||
| 147 | -ISLBgfdW;aN8g[2DAo[I992 | ||
| 148 | -R1 | ||
| 149 | -R2 | ||
| 150 | -w1590180454 | ||
| 151 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v | ||
| 152 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v | ||
| 153 | -L0 1 | ||
| 154 | -R3 | ||
| 155 | -r1 | ||
| 156 | -!s85 0 | ||
| 157 | -31 | ||
| 158 | -Z11 !s108 1590181225.000000 | ||
| 159 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v| | ||
| 160 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/InstructionMemory.v| | ||
| 161 | -!s101 -O0 | ||
| 162 | -!i113 1 | ||
| 163 | -R5 | ||
| 164 | -n@instruction@memory | ||
| 165 | -vMux32bit | ||
| 166 | -R6 | ||
| 167 | -!i10b 1 | ||
| 168 | -!s100 6HOE]5bDRSA[<HBJLTnYP0 | ||
| 169 | -InTEk>^`Yjc4Xl2[WnZ3^Y3 | ||
| 170 | -R1 | ||
| 171 | -R2 | ||
| 172 | -Z12 w1589610975 | ||
| 173 | -Z13 8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v | ||
| 174 | -Z14 FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v | ||
| 175 | -L0 1 | ||
| 176 | -R3 | ||
| 177 | -r1 | ||
| 178 | -!s85 0 | ||
| 179 | -31 | ||
| 180 | -R7 | ||
| 181 | -Z15 !s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v| | ||
| 182 | -Z16 !s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Mux.v| | ||
| 183 | -!s101 -O0 | ||
| 184 | -!i113 1 | ||
| 185 | -R5 | ||
| 186 | -n@mux32bit | ||
| 187 | -vMux5bit | ||
| 188 | -R6 | ||
| 189 | -!i10b 1 | ||
| 190 | -!s100 1oCn>`bHoZ=?A6[JF911T3 | ||
| 191 | -I]EmV`Adl6kHglkN9IK>LX2 | ||
| 192 | -R1 | ||
| 193 | -R2 | ||
| 194 | -R12 | ||
| 195 | -R13 | ||
| 196 | -R14 | ||
| 197 | -L0 16 | ||
| 198 | -R3 | ||
| 199 | -r1 | ||
| 200 | -!s85 0 | ||
| 201 | -31 | ||
| 202 | -R7 | ||
| 203 | -R15 | ||
| 204 | -R16 | ||
| 205 | -!s101 -O0 | ||
| 206 | -!i113 1 | ||
| 207 | -R5 | ||
| 208 | -n@mux5bit | ||
| 209 | -vRegister | ||
| 210 | -R10 | ||
| 211 | -!i10b 1 | ||
| 212 | -!s100 Bdb0dL`fj[<g;4lO0DTA?2 | ||
| 213 | -I`9^FTXAAIcP>dnBfah`[e1 | ||
| 214 | -R1 | ||
| 215 | -R2 | ||
| 216 | -w1590176245 | ||
| 217 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v | ||
| 218 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v | ||
| 219 | -L0 1 | ||
| 220 | -R3 | ||
| 221 | -r1 | ||
| 222 | -!s85 0 | ||
| 223 | -31 | ||
| 224 | -R11 | ||
| 225 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v| | ||
| 226 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/Register.v| | ||
| 227 | -!s101 -O0 | ||
| 228 | -!i113 1 | ||
| 229 | -R5 | ||
| 230 | -n@register | ||
| 231 | -vShiftLeft2 | ||
| 232 | -R10 | ||
| 233 | -!i10b 1 | ||
| 234 | -!s100 eI5Ec:gWMIfN>mTKQIBY93 | ||
| 235 | -IWRY1:Un@<nHGbA7hoKFL[1 | ||
| 236 | -R1 | ||
| 237 | -R2 | ||
| 238 | -w1589586193 | ||
| 239 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v | ||
| 240 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v | ||
| 241 | -L0 1 | ||
| 242 | -R3 | ||
| 243 | -r1 | ||
| 244 | -!s85 0 | ||
| 245 | -31 | ||
| 246 | -R11 | ||
| 247 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v| | ||
| 248 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/ShiftLeft2.v| | ||
| 249 | -!s101 -O0 | ||
| 250 | -!i113 1 | ||
| 251 | -R5 | ||
| 252 | -n@shift@left2 | ||
| 253 | -vSignExtend | ||
| 254 | -R10 | ||
| 255 | -!i10b 1 | ||
| 256 | -!s100 ahVKzC^1fD@70fO3WnVUV0 | ||
| 257 | -Izf_2?i[S@:;mKbJ:CXF753 | ||
| 258 | -R1 | ||
| 259 | -R2 | ||
| 260 | -w1589586199 | ||
| 261 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v | ||
| 262 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v | ||
| 263 | -L0 1 | ||
| 264 | -R3 | ||
| 265 | -r1 | ||
| 266 | -!s85 0 | ||
| 267 | -31 | ||
| 268 | -R11 | ||
| 269 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v| | ||
| 270 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/SignExtend.v| | ||
| 271 | -!s101 -O0 | ||
| 272 | -!i113 1 | ||
| 273 | -R5 | ||
| 274 | -n@sign@extend | ||
| 275 | -vtest | ||
| 276 | -!s110 1590134078 | ||
| 277 | -!i10b 1 | ||
| 278 | -!s100 Sm5D9nHWJl4JV?TA`lU4`0 | ||
| 279 | -IW:K2A@A@^WBUal;dbVMEN0 | ||
| 280 | -R1 | ||
| 281 | -R2 | ||
| 282 | -w1589610276 | ||
| 283 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v | ||
| 284 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v | ||
| 285 | -L0 1 | ||
| 286 | -R3 | ||
| 287 | -r1 | ||
| 288 | -!s85 0 | ||
| 289 | -31 | ||
| 290 | -!s108 1590134078.000000 | ||
| 291 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v| | ||
| 292 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/test.v| | ||
| 293 | -!s101 -O0 | ||
| 294 | -!i113 1 | ||
| 295 | -R5 | ||
| 296 | -vtestbench | ||
| 297 | -R10 | ||
| 298 | -!i10b 1 | ||
| 299 | -!s100 5AnCjSMdS0^a=^L0fjCWj2 | ||
| 300 | -IlnGeUJ27C[a2FGBi<YI?;0 | ||
| 301 | -R1 | ||
| 302 | -R2 | ||
| 303 | -w1590179680 | ||
| 304 | -8D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v | ||
| 305 | -FD:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v | ||
| 306 | -L0 1 | ||
| 307 | -R3 | ||
| 308 | -r1 | ||
| 309 | -!s85 0 | ||
| 310 | -31 | ||
| 311 | -R11 | ||
| 312 | -!s107 D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v| | ||
| 313 | -!s90 -reportprogress|300|-work|work|-stats=none|D:/class/Capstone1/KNW_Project2/Project/SingleCycle/testbench.v| | ||
| 314 | -!s101 -O0 | ||
| 315 | -!i113 1 | ||
| 316 | -R5 |
Project/SingleCycle/work/_lib.qdb
deleted
100644 → 0
No preview for this file type
Project/SingleCycle/work/_lib1_2.qdb
deleted
100644 → 0
No preview for this file type
Project/SingleCycle/work/_lib1_2.qpg
deleted
100644 → 0
No preview for this file type
-
Please register or login to post a comment