Make DFFRAM behavioural COLS parameter We want to use the DFFRAM behavioural with other sizes, so add in the COLS parameter.
diff --git a/verilog/rtl/DFFRAM.v b/verilog/rtl/DFFRAM.v index b80677f..59f0375 100644 --- a/verilog/rtl/DFFRAM.v +++ b/verilog/rtl/DFFRAM.v
@@ -16,31 +16,45 @@ `default_nettype none `ifndef USE_CUSTOM_DFFRAM -module DFFRAM( +module DFFRAM #( parameter COLS=1) +( `ifdef USE_POWER_PINS - input VPWR, - input VGND, + VPWR, + VGND, `endif - input CLK, - input [3:0] WE, - input EN, - input [31:0] Di, - output reg [31:0] Do, - input [7:0] A + CLK, + WE, + EN, + Di, + Do, + A ); - + localparam A_WIDTH = 8+$clog2(COLS); -reg [31:0] mem [0:`MEM_WORDS-1]; +`ifdef USE_POWER_PINS + input VPWR; + input VGND; +`endif + input wire CLK; + input wire [3:0] WE; + input wire EN; + input wire [31:0] Di; + output reg [31:0] Do; + input wire [(A_WIDTH - 1): 0] A; -always @(posedge CLK) begin - if (EN == 1'b1) begin - Do <= mem[A]; - if (WE[0]) mem[A][ 7: 0] <= Di[ 7: 0]; - if (WE[1]) mem[A][15: 8] <= Di[15: 8]; - if (WE[2]) mem[A][23:16] <= Di[23:16]; - if (WE[3]) mem[A][31:24] <= Di[31:24]; - end -end + reg [31:0] RAM[(256*COLS)-1 : 0]; + + always @(posedge CLK) + if(EN) begin + Do <= RAM[A]; + if(WE[0]) RAM[A][ 7: 0] <= Di[7:0]; + if(WE[1]) RAM[A][15:8] <= Di[15:8]; + if(WE[2]) RAM[A][23:16] <= Di[23:16]; + if(WE[3]) RAM[A][31:24] <= Di[31:24]; + end + else + Do <= 32'b0; + endmodule `else @@ -173,4 +187,4 @@ endmodule -`endif \ No newline at end of file +`endif