u@home:~$

lsu memory interface

lsu对外数据读写的接口以前是chiplab里的,这样:

   wire                   data_req;
   wire [`GRLEN-1:0]      data_pc;
   wire                   data_wr;
   wire [3 :0]            data_wstrb;
   wire [`GRLEN-1:0]      data_addr;
   wire                   data_cancel_ex2;
   wire                   data_cancel;
   wire [`GRLEN-1:0]      data_wdata;
   wire                   data_recv;
   wire                   data_prefetch;
   wire                   data_ll;
   wire                   data_sc;

   wire [`GRLEN-1:0]      data_rdata_m;
   wire                   data_addr_ok;
   wire                   data_data_ok_m;
   wire [ 5:0]            data_exccode;

现在改成这样

   wire                   lsu_biu_rd_req;
   wire [`GRLEN-1:0]      lsu_biu_rd_addr;

   wire                   biu_lsu_rd_ack;
   wire                   biu_lsu_data_valid;
   wire [31:0]            biu_lsu_data;

   wire                   lsu_biu_wr_req;
   wire [`GRLEN-1:0]      lsu_biu_wr_addr;
   wire [31:0]            lsu_biu_wr_data;
   wire [3:0]             lsu_biu_wr_strb;

   wire                   biu_lsu_write_done;

有很多信号等以后用到了再加。

最主要的区别是req和ack的机制。

req在获得biu之前一直high,一但biu给会ack,req就low下去,并且内部标记biu busy,直到这次的req执行完才会再次req。