`timescale 1ns / 1ps module reg_bank(clk, reset, en, we, wdBus, rdBus, address, reg0, reg1, reg2, reg3, reg4, regMT, error, status, max_lev, max_com, control); input clk, reset, en, we; input [7:0] wdBus; output [7:0] rdBus; input [4:0] address; input [31:0] reg0; input [31:0] reg1; input [31:0] reg2; input [31:0] reg3; input [31:0] reg4; input [31:0] regMT; input [16:0] error; input [7:0] status; output [15:0] max_com; output [7:0] max_lev; output [7:0] control; reg [7:0] reg_bank [31:0]; reg [7:0] rdBus; // Read control always @(posedge clk) if(reset) rdBus = 8'h00; else begin rdBus = reg_bank[address]; end // Store Inputs always @(posedge clk) begin if(en) begin reg_bank[0] = reg0[7:0]; reg_bank[1] = reg0[15:8]; reg_bank[2] = reg0[23:16]; reg_bank[3] = reg0[31:24]; reg_bank[4] = reg1[7:0]; reg_bank[5] = reg1[15:8]; reg_bank[6] = reg1[23:16]; reg_bank[7] = reg1[31:24]; reg_bank[8] = reg2[7:0]; reg_bank[9] = reg2[15:8]; reg_bank[10] = reg2[23:16]; reg_bank[11] = reg2[31:24]; reg_bank[12] = reg3[7:0]; reg_bank[13] = reg3[15:8]; reg_bank[14] = reg3[23:16]; reg_bank[15] = reg3[31:24]; reg_bank[16] = reg4[7:0]; reg_bank[17] = reg4[15:8]; reg_bank[18] = reg4[23:16]; reg_bank[19] = reg4[31:24]; reg_bank[20] = error[7:0]; reg_bank[21] = error[15:8]; reg_bank[22] = { 4'b0, status}; // reg_bank[23] = regMT[7:0]; // reg_bank[24] = regMT[15:8]; // reg_bank[25] = regMT[23:16]; // reg_bank[26] = regMT[31:24]; end end assign max_com[7:0] = reg_bank[26]; assign max_com[15:8] = reg_bank[27]; assign max_lev = reg_bank[28]; assign control = reg_bank[29]; // Write control always @(negedge clk) if(we & en) begin case (address) 27: reg_bank[26] = wdBus; 28: reg_bank[27] = wdBus; 29: reg_bank[28] = wdBus; 30: reg_bank[29] = wdBus; endcase end endmodule