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

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64v5/] [rtl/] [twoway/] [FT64_BTB.v] - Diff between revs 48 and 57

Show entire file | Details | Blame | View Log

Rev 48 Rev 57
Line 7... Line 7...
//
//
//      FT64_BTB.v
//      FT64_BTB.v
//              
//              
// ============================================================================
// ============================================================================
//
//
module FT64_BTB(rst, wclk, wr, wadr, wdat, valid, rclk, pcA, btgtA, pcB, btgtB, pcC, btgtC, pcD, btgtD,
module FT64_BTB(rst, wclk, wr, wadr, wdat, valid, rclk, pcA, btgtA, pcB, btgtB,
    npcA, npcB, npcC, npcD);
                pcC, btgtC, pcD, btgtD, pcE, btgtE, pcF, btgtF,
 
    npcA, npcB, npcC, npcD, npcE, npcF);
parameter AMSB = 31;
parameter AMSB = 31;
parameter RSTPC = 32'hFFFC0100;
parameter RSTPC = 32'hFFFC0100;
input rst;
input rst;
input wclk;
input wclk;
input wr;
input wr;
Line 26... Line 27...
output [AMSB:0] btgtB;
output [AMSB:0] btgtB;
input [AMSB:0] pcC;
input [AMSB:0] pcC;
output [AMSB:0] btgtC;
output [AMSB:0] btgtC;
input [AMSB:0] pcD;
input [AMSB:0] pcD;
output [AMSB:0] btgtD;
output [AMSB:0] btgtD;
 
input [AMSB:0] pcE;
 
output [AMSB:0] btgtE;
 
input [AMSB:0] pcF;
 
output [AMSB:0] btgtF;
input [AMSB:0] npcA;
input [AMSB:0] npcA;
input [AMSB:0] npcB;
input [AMSB:0] npcB;
input [AMSB:0] npcC;
input [AMSB:0] npcC;
input [AMSB:0] npcD;
input [AMSB:0] npcD;
 
input [AMSB:0] npcE;
 
input [AMSB:0] npcF;
 
 
integer n;
integer n;
reg [(AMSB+1)*2+1:0] mem [0:1023];
reg [(AMSB+1)*2+1:0] mem [0:1023];
reg [9:0] radrA, radrB, radrC, radrD;
reg [9:0] radrA, radrB, radrC, radrD, radrE, radrF;
initial begin
initial begin
    for (n = 0; n < 1024; n = n + 1)
    for (n = 0; n < 1024; n = n + 1)
        mem[n] <= RSTPC;
        mem[n] <= RSTPC;
end
end
always @(posedge wclk)
always @(posedge wclk)
Line 52... Line 59...
    #1 radrB <= pcB[11:2];
    #1 radrB <= pcB[11:2];
always @(posedge rclk)
always @(posedge rclk)
    #1 radrC <= pcC[11:2];
    #1 radrC <= pcC[11:2];
always @(posedge rclk)
always @(posedge rclk)
    #1 radrD <= pcD[11:2];
    #1 radrD <= pcD[11:2];
 
always @(posedge rclk)
 
    #1 radrE <= pcE[11:2];
 
always @(posedge rclk)
 
    #1 radrF <= pcF[11:2];
wire hitA = mem[radrA][(AMSB+1)*2:AMSB+1]==pcA && mem[radrA][(AMSB+1)*2+1];
wire hitA = mem[radrA][(AMSB+1)*2:AMSB+1]==pcA && mem[radrA][(AMSB+1)*2+1];
wire hitB = mem[radrB][(AMSB+1)*2:AMSB+1]==pcB && mem[radrB][(AMSB+1)*2+1];
wire hitB = mem[radrB][(AMSB+1)*2:AMSB+1]==pcB && mem[radrB][(AMSB+1)*2+1];
wire hitC = mem[radrC][(AMSB+1)*2:AMSB+1]==pcC && mem[radrC][(AMSB+1)*2+1];
wire hitC = mem[radrC][(AMSB+1)*2:AMSB+1]==pcC && mem[radrC][(AMSB+1)*2+1];
wire hitD = mem[radrD][(AMSB+1)*2:AMSB+1]==pcD && mem[radrD][(AMSB+1)*2+1];
wire hitD = mem[radrD][(AMSB+1)*2:AMSB+1]==pcD && mem[radrD][(AMSB+1)*2+1];
 
wire hitE = mem[radrE][(AMSB+1)*2:AMSB+1]==pcE && mem[radrE][(AMSB+1)*2+1];
 
wire hitF = mem[radrF][(AMSB+1)*2:AMSB+1]==pcF && mem[radrF][(AMSB+1)*2+1];
assign btgtA = hitA ? mem[radrA][AMSB:0] : npcA;
assign btgtA = hitA ? mem[radrA][AMSB:0] : npcA;
assign btgtB = hitB ? mem[radrB][AMSB:0] : npcB;
assign btgtB = hitB ? mem[radrB][AMSB:0] : npcB;
assign btgtC = hitC ? mem[radrC][AMSB:0] : npcC;
assign btgtC = hitC ? mem[radrC][AMSB:0] : npcC;
assign btgtD = hitD ? mem[radrD][AMSB:0] : npcD;
assign btgtD = hitD ? mem[radrD][AMSB:0] : npcD;
 
assign btgtE = hitE ? mem[radrE][AMSB:0] : npcE;
 
assign btgtF = hitF ? mem[radrF][AMSB:0] : npcF;
 
 
endmodule
endmodule
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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