您当前的位置: 首页 > 

FPGA硅农

暂无认证

  • 1浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Verilog实现两路组相联cache

FPGA硅农 发布时间:2020-08-22 11:42:54 ,浏览量:1

cache代码

`timescale 1ns / 1ps

//cache共32块,分为16组,每组2块,即两路组相联,1块=4字,1字=4字节
//主存共1024块,4096个字
//主存地址共12位,[1:0]为块内偏移,[5:2]为组地址,[11:6]为Tag
//V、D、Tag、Data=1+1+6+128=136

module cache(
input clk,
input rst,
//cpucache
input [11:0]cpu_req_addr,
input cpu_req_valid,
input cpu_req_rw,
input [31:0]cpu_data_write,
output reg [31:0]cpu_data_read,
output reg cpu_ready,
//cachemain memory
output reg [11:0]mem_req_addr,
output reg mem_req_rw,
output reg mem_req_valid,
output reg [127:0]mem_data_write,
input [127:0]mem_data_read,
input mem_ready
    );

parameter IDLE=0;
parameter CompareTag=1;
parameter Allocate=2;
parameter WriteBack=3;

parameter V=135;
parameter D=134;
parameter TagMSB=133;
parameter TagLSB=128;
parameter BlockMSB=127;
parameter BlockLSB=0;

reg [135:0] cache_data [0:31];
reg [1:0]state,next_state;
reg hit;
reg hit1,hit2;
reg way;                               //若hit,则way无意义,若miss,则way表示分配的那一路

wire [3:0]cpu_req_index;
wire [5:0]cpu_req_tag;
wire [1:0]cpu_req_offset;

assign cpu_req_offset=cpu_req_addr[1:0];
assign cpu_req_index=cpu_req_addr[5:2];
assign cpu_req_tag=cpu_req_addr[11:6];

integer i;
//初始化cache
initial
begin
    for(i=0;i            
关注
打赏
1658642721
查看更多评论
0.0472s