mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
simpleram address simplification
This commit is contained in:
parent
7ad2eb009a
commit
e3136c9a1e
@ -46,7 +46,7 @@ module simpleram #(parameter BASE=0, RANGE = 65535) (
|
|||||||
localparam MemEndAddr = (RANGE+BASE)>>1+(`XLEN/32);
|
localparam MemEndAddr = (RANGE+BASE)>>1+(`XLEN/32);
|
||||||
|
|
||||||
logic [`XLEN-1:0] RAM[BASE>>(1+`XLEN/32):(RANGE+BASE)>>1+(`XLEN/32)];
|
logic [`XLEN-1:0] RAM[BASE>>(1+`XLEN/32):(RANGE+BASE)>>1+(`XLEN/32)];
|
||||||
logic [31:0] HWADDR, A;
|
logic [31:0] AD;
|
||||||
logic [`XLEN-1:0] HREADRam0;
|
logic [`XLEN-1:0] HREADRam0;
|
||||||
|
|
||||||
logic prevHREADYRam, risingHREADYRam;
|
logic prevHREADYRam, risingHREADYRam;
|
||||||
@ -56,28 +56,26 @@ module simpleram #(parameter BASE=0, RANGE = 65535) (
|
|||||||
|
|
||||||
assign initTrans = HREADY & HSELRam & (HTRANS != 2'b00);
|
assign initTrans = HREADY & HSELRam & (HTRANS != 2'b00);
|
||||||
|
|
||||||
flopenr #(32) Adrreg(clk, 1'b0, 1'b1, Adr, A);
|
flop #(32) Adrreg(clk, Adr, AD);
|
||||||
|
|
||||||
/* verilator lint_off WIDTH */
|
/* verilator lint_off WIDTH */
|
||||||
if (`XLEN == 64) begin:ramrw
|
if (`XLEN == 64) begin:ramrw
|
||||||
always_ff @(posedge clk) begin
|
always_ff @(posedge clk) begin
|
||||||
if (HWRITE & |HTRANS) RAM[A[31:3]] <= #1 HWDATA;
|
if (HWRITE & |HTRANS) RAM[AD[31:3]] <= #1 HWDATA;
|
||||||
end
|
end
|
||||||
end else begin
|
end else begin
|
||||||
always_ff @(posedge clk) begin:ramrw
|
always_ff @(posedge clk) begin:ramrw
|
||||||
if (HWRITE & |HTRANS) RAM[A[31:2]] <= #1 HWDATA;
|
if (HWRITE & |HTRANS) RAM[AD[31:2]] <= #1 HWDATA;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
// read
|
// read
|
||||||
if(`XLEN == 64) begin: ramr
|
if(`XLEN == 64) begin: ramr
|
||||||
assign HREADRam0 = RAM[A[31:3]];
|
assign HREADRam = RAM[AD[31:3]];
|
||||||
end else begin
|
end else begin
|
||||||
assign HREADRam0 = RAM[A[31:2]];
|
assign HREADRam = RAM[AD[31:2]];
|
||||||
end
|
end
|
||||||
|
|
||||||
/* verilator lint_on WIDTH */
|
/* verilator lint_on WIDTH */
|
||||||
|
|
||||||
assign HREADRam = HREADRam0;
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user