OpenCores
URL https://opencores.org/ocsvn/thor/thor/trunk

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64v7/] [rtl/] [common/] [FT64_dcache.v] - Diff between revs 60 and 66

Show entire file | Details | Blame | View Log

Rev 60 Rev 66
Line 1... Line 1...
// ============================================================================
// ============================================================================
//        __
//        __
//   \\__/ o\    (C) 2018  Robert Finch, Waterloo
//   \\__/ o\    (C) 2018-2019  Robert Finch, Waterloo
//    \  __ /    All rights reserved.
//    \  __ /    All rights reserved.
//     \/_//     robfinch<remove>@finitron.ca
//     \/_//     robfinch<remove>@finitron.ca
//       ||
//       ||
//
//
//      FT64_dcache.v
//      FT64_dcache.v
Line 29... Line 29...
module FT64_dcache(rst, dce, wclk, wr, sel, wadr, whit, i, li, rclk, rdsize, radr, o, lo, rhit);
module FT64_dcache(rst, dce, wclk, wr, sel, wadr, whit, i, li, rclk, rdsize, radr, o, lo, rhit);
input rst;
input rst;
input dce;                                      // data cache enable
input dce;                                      // data cache enable
input wclk;
input wclk;
input wr;
input wr;
input [7:0] sel;
input [31:0] sel;
input [37:0] wadr;
input [37:0] wadr;
output whit;
output whit;
input [63:0] i;
input [255:0] i;
input [255:0] li;                // line input
input [255:0] li;                // line input
input rclk;
input rclk;
input [2:0] rdsize;
input [2:0] rdsize;
input [37:0] radr;
input [37:0] radr;
output reg [63:0] o;
output reg [63:0] o;
Line 67... Line 67...
 
 
FT64_dcache_tag u3
FT64_dcache_tag u3
(
(
  .wclk(wclk),
  .wclk(wclk),
  .dce(dce),
  .dce(dce),
  .wr(wr && wadr[4:3]==2'b11),
  .wr(wr),
  .wadr(wadr),
  .wadr(wadr),
  .rclk(rclk),
  .rclk(rclk),
  .radr(radr),
  .radr(radr),
  .whit(whit),
  .whit(whit),
  .rhit(rhita)
  .rhit(rhita)
Line 101... Line 101...
 
 
module dcache_mem(rst, clka, ena, wea, addra, dina, clkb, enb, addrb, doutb, ov);
module dcache_mem(rst, clka, ena, wea, addra, dina, clkb, enb, addrb, doutb, ov);
input rst;
input rst;
input clka;
input clka;
input ena;
input ena;
input [7:0] wea;
input [31:0] wea;
input [13:0] addra;
input [13:0] addra;
input [63:0] dina;
input [255:0] dina;
input clkb;
input clkb;
input enb;
input enb;
input [13:0] addrb;
input [13:0] addrb;
output reg [255:0] doutb;
output reg [255:0] doutb;
output reg [31:0] ov;
output reg [31:0] ov;
Line 124... Line 124...
    valid[n] = 32'h00;
    valid[n] = 32'h00;
end
end
 
 
genvar g;
genvar g;
generate begin
generate begin
for (g = 0; g < 4; g = g + 1)
for (g = 0; g < 32; g = g + 1)
always @(posedge clka)
always @(posedge clka)
begin
begin
  if (ena & wea[0] & addra[4:3]==g)  mem[addra[13:5]][g*64+7:g*64] <= dina[7:0];
  if (ena & wea[g])  mem[addra[13:5]][g*8+7:g*8] <= dina[g*8+7:g*8];
  if (ena & wea[1] & addra[4:3]==g)  mem[addra[13:5]][g*64+15:g*64+8] <= dina[15:8];
  if (ena & wea[g])  valid[addra[13:5]][g] <= 1'b1;
  if (ena & wea[2] & addra[4:3]==g)  mem[addra[13:5]][g*64+23:g*64+16] <= dina[23:16];
 
  if (ena & wea[3] & addra[4:3]==g)  mem[addra[13:5]][g*64+31:g*64+24] <= dina[31:24];
 
  if (ena & wea[4] & addra[4:3]==g)  mem[addra[13:5]][g*64+39:g*64+32] <= dina[39:32];
 
  if (ena & wea[5] & addra[4:3]==g)  mem[addra[13:5]][g*64+47:g*64+40] <= dina[47:40];
 
  if (ena & wea[6] & addra[4:3]==g)  mem[addra[13:5]][g*64+55:g*64+48] <= dina[55:48];
 
  if (ena & wea[7] & addra[4:3]==g)  mem[addra[13:5]][g*64+63:g*64+56] <= dina[63:56];
 
  if (ena & wea[0] & addra[4:3]==g)  valid[addra[13:5]][g*8] <= 1'b1;
 
  if (ena & wea[1] & addra[4:3]==g)  valid[addra[13:5]][g*8+1] <= 1'b1;
 
  if (ena & wea[2] & addra[4:3]==g)  valid[addra[13:5]][g*8+2] <= 1'b1;
 
  if (ena & wea[3] & addra[4:3]==g)  valid[addra[13:5]][g*8+3] <= 1'b1;
 
  if (ena & wea[4] & addra[4:3]==g)  valid[addra[13:5]][g*8+4] <= 1'b1;
 
  if (ena & wea[5] & addra[4:3]==g)  valid[addra[13:5]][g*8+5] <= 1'b1;
 
  if (ena & wea[6] & addra[4:3]==g)  valid[addra[13:5]][g*8+6] <= 1'b1;
 
  if (ena & wea[7] & addra[4:3]==g)  valid[addra[13:5]][g*8+7] <= 1'b1;
 
end
end
end
end
endgenerate
endgenerate
always @(posedge clkb)
always @(posedge clkb)
        if (enb)
        if (enb)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.