Line 738... |
Line 738... |
endmodule
|
endmodule
|
|
|
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
|
|
module FT64_dcache_tag(wclk, wr, wadr, rclk, radr, hit0, hit1);
|
module FT64_dcache_tag(wclk, wr, wadr, rclk, radr, whit, hit0, hit1);
|
input wclk;
|
input wclk;
|
input wr;
|
input wr;
|
input [37:0] wadr;
|
input [37:0] wadr;
|
input rclk;
|
input rclk;
|
input [37:0] radr;
|
input [37:0] radr;
|
|
output reg whit;
|
output reg hit0;
|
output reg hit0;
|
output reg hit1;
|
output reg hit1;
|
|
|
wire [31:0] tago0, tago1;
|
wire [31:0] tago0, tago1;
|
|
wire [31:0] wtago;
|
wire [37:0] radrp8 = radr + 32'd32;
|
wire [37:0] radrp8 = radr + 32'd32;
|
|
|
FT64_dcache_tag2 u1 (
|
FT64_dcache_tag2 u1 (
|
.clka(wclk), // input wire clka
|
.clka(wclk), // input wire clka
|
.ena(1'b1), // input wire ena
|
.ena(1'b1), // input wire ena
|
.wea(wr), // input wire [0 : 0] wea
|
.wea(wr), // input wire [0 : 0] wea
|
.addra(wadr[13:5]), // input wire [8 : 0] addra
|
.addra(wadr[13:5]), // input wire [8 : 0] addra
|
.dina(wadr[37:14]), // input wire [31 : 0] dina
|
.dina(wadr[37:14]), // input wire [31 : 0] dina
|
|
.douta(wtago),
|
.clkb(rclk), // input wire clkb
|
.clkb(rclk), // input wire clkb
|
.web(1'b0),
|
.web(1'b0),
|
.dinb(32'd0),
|
.dinb(32'd0),
|
.enb(1'b1),
|
.enb(1'b1),
|
.addrb(radr[13:5]), // input wire [8 : 0] addrb
|
.addrb(radr[13:5]), // input wire [8 : 0] addrb
|
Line 782... |
Line 785... |
|
|
always @(posedge rclk)
|
always @(posedge rclk)
|
hit0 <= tago0[23:0]==radr[37:14];
|
hit0 <= tago0[23:0]==radr[37:14];
|
always @(posedge rclk)
|
always @(posedge rclk)
|
hit1 <= tago1[23:0]==radrp8[37:14];
|
hit1 <= tago1[23:0]==radrp8[37:14];
|
|
always @(posedge wclk)
|
|
whit <= wtago[23:0]==wadr[37:14];
|
|
|
endmodule
|
endmodule
|
|
|
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
|
|
module FT64_dcache(rst, wclk, wr, sel, wadr, i, li, rclk, rdsize, radr, o, lo, hit, hit0, hit1);
|
module FT64_dcache(rst, wclk, wr, sel, wadr, whit, i, li, rclk, rdsize, radr, o, lo, hit, hit0, hit1);
|
input rst;
|
input rst;
|
input wclk;
|
input wclk;
|
input wr;
|
input wr;
|
input [7:0] sel;
|
input [7:0] sel;
|
input [37:0] wadr;
|
input [37:0] wadr;
|
|
output whit;
|
input [63:0] i;
|
input [63: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;
|
Line 847... |
Line 853... |
.wclk(wclk),
|
.wclk(wclk),
|
.wr(wr),
|
.wr(wr),
|
.wadr(wadr),
|
.wadr(wadr),
|
.rclk(rclk),
|
.rclk(rclk),
|
.radr(radr),
|
.radr(radr),
|
|
.whit(whit),
|
.hit0(hit0a),
|
.hit0(hit0a),
|
.hit1(hit1a)
|
.hit1(hit1a)
|
);
|
);
|
|
|
wire [7:0] v0a = v0 >> radr[4:0];
|
wire [7:0] v0a = v0 >> radr[4:0];
|