From 3433337eba97443b5da953f7b3e2186aca069a38 Mon Sep 17 00:00:00 2001 From: Aadi Desai <21363892+supleed2@users.noreply.github.com> Date: Tue, 1 Dec 2020 23:04:43 +0000 Subject: [PATCH] Added Regfile Missing partial/misaligned loads --- rtl/mips_cpu_harvard.v | 1 + rtl/mips_cpu_regfile.v | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 rtl/mips_cpu_regfile.v diff --git a/rtl/mips_cpu_harvard.v b/rtl/mips_cpu_harvard.v index 5997c0c..169361e 100644 --- a/rtl/mips_cpu_harvard.v +++ b/rtl/mips_cpu_harvard.v @@ -75,6 +75,7 @@ control control( //control flags block ); regfile regfile( +.clk(clk), //clock input for triggering write port .readreg1(rs), .readreg2(rt), .writereg(rd), diff --git a/rtl/mips_cpu_regfile.v b/rtl/mips_cpu_regfile.v new file mode 100644 index 0000000..8d69b64 --- /dev/null +++ b/rtl/mips_cpu_regfile.v @@ -0,0 +1,35 @@ +module regfile( +input logic clk, //clock input for triggering write port +input logic[4:0] readreg1, //read port 1 selector +input logic[4:0] readreg2, //read port 2 selector +input logic[4:0] writereg, //write port selector +input logic[31:0] writedata, //write port input data +input logic regwrite, //enable line for write port +output logic[31:0] readdata1, //read port 1 output +output logic[31:0] readdata2, //read port 2 output +output logic[31:0] regv0 //debug output of $v0 or $2 (third register in file/ first register for returning function results) +); + +reg[31:0] memory [31:0]; //32 register slots, 32-bits wide + +initial begin + integer i; //Initialise to zero by default + for (i = 0; i < 31; i++) begin + memory[i] = 0; + end +end + +assign regv0 = memory[2]; //assigning debug $v0 line to $2 of memory + +always_comb begin + readdata1 = memory[readreg1]; //combinatorially output register value based on read port 1 selector + readdata2 = memory[readreg2]; //combinatorially output register value based on read port 2 selector +end + +always_ff @(posedge clk) begin + if (regwrite) begin + memory[writereg] <= writedata; + end +end + +endmodule : regfile \ No newline at end of file