Updated RAM code to make sure Bus width is 32 bits

This commit is contained in:
TroubleElectrical committed 2026-10-16 11:32:47 +11:00
1 parent dca673b039
commit 5d9e7f541e
192 files changed
+15279 -3328

No files matched your search

+7 -4
View File
@@ -12,7 +12,7 @@
`include "seven_seg_4digit.sv"
module assignment2 #(width=5, ramsz=9, romsz=10) (
module assignment2 #(width=5, romsz=10) (
input logic [0:0] clk
`ifdef QUARTUS_SYNTH
,
@@ -51,13 +51,17 @@ module assignment2 #(width=5, ramsz=9, romsz=10) (
logic [2**width-1:0] rd;
logic [0:0] rd_we;
logic [31:0] regs_out [32];
// ALU intermediates
logic [2**width-1:0] rd_alu;
logic [2**width-1:0] rt_alu;
instruction_counter #(width) PC (clk, pc_we, pc_addr_write, pc_addr);
rom #(romsz, 2**width) ROM (pc_addr, instruction);
logic [2**width-1:0] rd_mem;
ram #(ramsz, 2**width) RAM (clk, rd_alu, M2W, rt, rd_mem);
ram #(width) RAM (clk, rd_alu, M2W, rt, rd_mem);
control_unit CONTROL_UNIT (instruction[31:26], instruction[5:0],
M2R, M2W, B, ALU_FN, ALU_SRC, RDST, RW
@@ -78,8 +82,7 @@ module assignment2 #(width=5, ramsz=9, romsz=10) (
// - ALU srcB
// - PCBranch (rel jump of 4-byte words)
logic [2**width-1:0] rd_alu;
logic [2**width-1:0] rt_alu;
alu #(width) ALU (ALU_FN, rs, rt_alu, rd_alu, flags[1:0]);
assign rt_alu = (ALU_SRC) ? (rt_imm) : (rt);
+9 -9
View File
@@ -1,21 +1,21 @@
`ifndef RAM_H
`define RAM_H
module ram #(addrwidth=9, datawidth=5)(
input logic [0:0] clk,
input logic [2**addrwidth-1:0] addr,
input logic [0:0] we,
input logic [datawidth-1:0] data_in,
output logic [datawidth-1:0] data_out
module ram #(datawidth=5)(
input logic [0:0] clk,
input logic [2**datawidth-1:0] addr,
input logic [0:0] we,
input logic [datawidth-1:0] data_in,
output logic [datawidth-1:0] data_out
);
// TODO: Make this byte-sized, NOT word-sized!
logic [2**datawidth-1:0] mem[(2**(addrwidth+$clog2(datawidth)-3))-1:0];
logic [2**datawidth-1:0] mem[0:255];
// NOTE: Possible issue with assignments still pending by end of initial block
initial begin
for (integer ADDR = 0; ADDR < 2**(addrwidth+$clog2(datawidth)-3); ++ADDR) begin
mem[ADDR] <= 8'b0;
for (integer ADDR = 0; ADDR < 256); ADDR = ADDR + 1) begin
mem[ADDR] <= 32'b0;
end
end