forked from Github_Repos/cvw
		
	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