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

Subversion Repositories wb2axi4

[/] [wb2axi4/] [trunk/] [rtl/] [axi2wb.sv] - Diff between revs 2 and 3

Show entire file | Details | Blame | View Log

Rev 2 Rev 3
Line 1... Line 1...
//Author     : Alex Zhang (cgzhangwei@gmail.com)
//Author     : Alex Zhang (cgzhangwei@gmail.com)
//Date       : 03-11-2015
//Date       : 03-11-2015
 
`include "wb2axi_parameters.vh"
module axi2wb (
module axi2wb (
axi_clk,
axi_clk,
wb_clk,
wb_clk,
axi_resetn,
axi_resetn,
wb_resetn,
wb_resetn,
ENABLE,
ENABLE,
AXI_IF,
AXI_IF,
WB_TX_IF
WB_TX_IF
);
);
parameter AXI_WID_W         = 4;
parameter AXI_ID_W         = `WB2AXI_AXI_ID_W   ;
parameter AXI_ADDR_W        = 32;
parameter AXI_ADDR_W       = `WB2AXI_AXI_ADDR_W ;
parameter AXI_DATA_W        = 32;
parameter AXI_DATA_W       = `WB2AXI_AXI_DATA_W ;
parameter AXI_PROT_W        = 3;
parameter AXI_PROT_W       = `WB2AXI_AXI_PROT_W ;
parameter AXI_STB_W         = 4;
parameter AXI_STB_W        = `WB2AXI_AXI_STB_W  ;
parameter AXI_LEN_W         = 4;
parameter AXI_LEN_W        = `WB2AXI_AXI_LEN_W  ;
parameter AXI_ASIZE_W       = 3;
parameter AXI_SIZE_W       = `WB2AXI_AXI_SIZE_W ;
parameter AXI_ABURST_W      = 2;
parameter AXI_BURST_W      = `WB2AXI_AXI_BURST_W;
parameter AXI_ALOCK_W       = 2;
parameter AXI_LOCK_W       = `WB2AXI_AXI_LOCK_W ;
parameter AXI_ACACHE_W      = 4;
parameter AXI_CACHE_W      = `WB2AXI_AXI_CACHE_W;
parameter AXI_RESP_W        = 2;
parameter AXI_RESP_W       = `WB2AXI_AXI_RESP_W ;
 
 
parameter FIFO_DEPTH_W      = 10;
parameter FIFO_ADDR_DEPTH_W = 10;
parameter FIFO_W            = 64;
parameter FIFO_ADDR_W       = AXI_ID_W+AXI_ADDR_W+AXI_PROT_W+AXI_LEN_W+AXI_SIZE_W+AXI_BURST_W+AXI_LOCK_W+AXI_CACHE_W+1;
 
parameter FIFO_DATA_DEPTH_W = 11;
 
parameter FIFO_DATA_W       = AXI_ID_W+AXI_DATA_W+AXI_STB_W+2;
 
 
parameter WB_ADR_W          = 32;
parameter WB_ADR_W          = 32;
parameter WB_DAT_W          = 32;
parameter WB_DAT_W          = 32;
parameter WB_TGA_W          = 8;
parameter WB_TGA_W          = 8;
parameter WB_TGD_W          = 8;
parameter WB_TGD_W          = 8;
parameter WB_TGC_W          = 4;
parameter WB_TGC_W          = 4;
parameter WB_SEL_W          = 4;
parameter WB_SEL_W          = 4;
parameter WB_CTI_W          = 3;
parameter WB_CTI_W          = 3;
parameter WB_BTE_W          = 2;
parameter WB_BTE_W          = 2;
 
 
parameter AXI_MAX_RESP_W    = 3;
localparam SRAM_UNUSED_ADDR_W= 4;
parameter SRAM_UNUSED_ADDR_W= 4;
localparam AXI_MAX_RESP_W    = 4;
 
localparam FA_SRAM_UNUSED_ADDR_W = 1;
 
localparam FD_SRAM_UNUSED_ADDR_W = 1;
input  wire             axi_clk;
input  wire             axi_clk;
input  wire             wb_clk;
input  wire             wb_clk;
input  wire             axi_resetn;
input  wire             axi_resetn;
input  wire             wb_resetn;
input  wire             wb_resetn;
 
input  wire             ENABLE;
axi_if.target           AXI_IF;
axi_if.target           AXI_IF;
wb_if.master            WB_TX_IF;
wishbone_if.master      WB_TX_IF;
sram_if.initiator       SRAM_ADR_IF;
 
sram_if.initiator       SRAM_DAT_IF;
sram_if #(.DATA_W(32), .ADDR_W(11))  dat_sram_tx();
 
sram_if #(.DATA_W(64), .ADDR_W(10))  adr_sram_tx();
 
 
wire        sync_ENABLE_axi;
wire        sync_ENABLE_axi;
wire        sync_ENABLE_wb;
wire        sync_ENABLE_wb;
 
wire                   fifo_adr_full  ;
 
wire                   fifo_dat_full  ;
 
wire [FIFO_DATA_W-1:0] fifo_dat_rdata ;
 
wire [FIFO_ADDR_W-1:0] fifo_adr_rdata ;
 
 
sync_doble_ff #(.DATA_W(1)) I_SYNC_ENABLE_AXI (
sync_doble_ff #(.DATA_W(1)) I_SYNC_ENABLE_AXI (
  .CLK              (           AXI_CLK ),
  .CLK              (           axi_clk ),
  .RESET_N          (       AXI_RESET_N ),
  .RESET_N          (        axi_resetn ),
  .DIN              (            ENABLE ),
  .DIN              (            ENABLE ),
  .DOUT             (   sync_ENABLE_axi )
  .DOUT             (   sync_ENABLE_axi )
);
);
sync_doble_ff #(.DATA_W(1)) I_SYNC_ENABLE_WB (
sync_doble_ff #(.DATA_W(1)) I_SYNC_ENABLE_WB (
  .CLK              (           MAC_CLK ),
  .CLK              (            wb_clk ),
  .RESET_N          (       MAC_RESET_N ),
  .RESET_N          (         wb_resetn ),
  .DIN              (            ENABLE ),
  .DIN              (            ENABLE ),
  .DOUT             (   sync_ENABLE_wb  )
  .DOUT             (   sync_ENABLE_wb  )
);
);
 
wire [FIFO_ADDR_W-1:0]  fifo_addr_info;
 
wire [FIFO_DATA_W-1:0]  fifo_data_info;
 
wire                    fifo_addr_wr  ;
 
wire                    fifo_data_wr  ;
 
wire [FIFO_ADDR_W-1:0]  fifo_adr_wdata;
 
wire [FIFO_DATA_W-1:0]  fifo_dat_wdata;
 
 
axi_ingress #(
axi_ingress #(
      .AXI_WID_W       (    AXI_WID_W    ),
      .AXI_ID_W        (    AXI_ID_W    ),
      .AXI_ADDR_W      (    AXI_ADDR_W   ),
      .AXI_ADDR_W      (    AXI_ADDR_W   ),
      .AXI_DATA_W      (    AXI_DATA_W   ),
      .AXI_DATA_W      (    AXI_DATA_W   ),
      .AXI_PROT_W      (    AXI_PROT_W   ),
      .AXI_PROT_W      (    AXI_PROT_W   ),
      .AXI_STB_W       (    AXI_STB_W    ),
      .AXI_STB_W       (    AXI_STB_W    ),
      .AXI_LEN_W       (    AXI_LEN_W    ),
      .AXI_LEN_W       (    AXI_LEN_W    ),
      .AXI_ASIZE_W     (    AXI_ASIZE_W  ),
      .AXI_SIZE_W      (    AXI_SIZE_W   ),
      .AXI_ABURST_W    (   AXI_ABURST_W  ),
      .AXI_BURST_W     (    AXI_BURST_W  ),
      .AXI_ALOCK_W     (    AXI_ALOCK_W  ),
      .AXI_LOCK_W      (    AXI_LOCK_W   ),
      .AXI_ACACHE_W    (    AXI_ACACHE_W ),
      .AXI_CACHE_W     (    AXI_CACHE_W  ),
      .AXI_RESP_W      (     AXI_RESP_W  ),
      .AXI_RESP_W      (     AXI_RESP_W  ),
      .AXI_MAX_RESP_W  ( AXI_MAX_RESP_W  )
      .AXI_MAX_RESP_W  ( AXI_MAX_RESP_W  ),
 
      .FIFO_DAT_W      (   FIFO_DATA_W   ),
 
      .FIFO_ADR_W      (   FIFO_ADDR_W   )
) I_AXI_INGRESS (
) I_AXI_INGRESS (
  .axi_clk        ( axi_clk       ),
  .axi_clk        ( axi_clk       ),
  .reset_n        ( axi_resetn    ),
  .reset_n        ( axi_resetn    ),
  .AXI_IF         ( AXI_IF        ),
  .AXI_IF         ( AXI_IF        ),
  .fifo_full      ( fifo_full     ),
  .fifo_full      ( fifo_full     ),
Line 101... Line 120...
  .fifo_rd          (     fifo_adr_rd ),
  .fifo_rd          (     fifo_adr_rd ),
  .fifo_wdata       (  fifo_adr_wdata ),
  .fifo_wdata       (  fifo_adr_wdata ),
  .fifo_rdata       (  fifo_adr_rdata ),
  .fifo_rdata       (  fifo_adr_rdata ),
  .fifo_empty       (  fifo_adr_empty ),
  .fifo_empty       (  fifo_adr_empty ),
  .fifo_full        (   fifo_adr_full ),
  .fifo_full        (   fifo_adr_full ),
 
  .fifo_level       (                 ),
 
  .SRAM_IF          (     adr_sram_tx )
);
);
 
wire    adr_sram_enable;
 
wire    adr_sram_wr;
 
wire [FIFO_ADDR_W-1:0] adr_sram_din;
 
wire [FIFO_ADDR_W-1:0] adr_sram_dout;
 
wire [FIFO_ADDR_DEPTH_W-1:0] adr_sram_addr;
 
sram_model #(
 
  .MEM_ADDR_W  (FIFO_ADDR_DEPTH_W),
 
  .MEM_DATA_W  (FIFO_ADDR_W)
 
) SRAM_ADR_1phc1024x32mx4tn(
 
  .CLK(axi_clk        ),
 
  .NCE(adr_sram_enable),
 
  .NWRT(adr_sram_wr   ),
 
  .NOE(1'b0           ),
 
  .DIN(adr_sram_din   ),
 
  .ADDR(adr_sram_addr ),
 
  .DOUT(adr_sram_dout )
 
);
 
assign adr_sram_enable   = adr_sram_tx.rd_l | adr_sram_tx.wr_l;
 
assign adr_sram_wr       = adr_sram_tx.wr_l;
 
assign adr_sram_din      = adr_sram_tx.wdata;
 
assign adr_sram_addr     = ~adr_sram_tx.wr_l ? adr_sram_tx.wr_address : adr_sram_tx.rd_address;
 
assign adr_sram_tx.rdata = adr_sram_dout;
 
 
assign fifo_adr_wr    = fifo_addr_wr;
assign fifo_adr_wr    = fifo_addr_wr;
assign fifo_adr_wdata = fifo_addr_info;
assign fifo_adr_wdata = fifo_addr_info;
async_fifo #(
async_fifo #(
  .FIFO_DEPTH_W      (FIFO_DATA_DEPTH_W),
  .FIFO_DEPTH_W      (FIFO_DATA_DEPTH_W),
  .FIFO_W            (FIFO_DATA_W),
  .FIFO_W            (FIFO_DATA_W),
Line 121... Line 165...
  .fifo_rd          (     fifo_dat_rd ),
  .fifo_rd          (     fifo_dat_rd ),
  .fifo_wdata       (  fifo_dat_wdata ),
  .fifo_wdata       (  fifo_dat_wdata ),
  .fifo_rdata       (  fifo_dat_rdata ),
  .fifo_rdata       (  fifo_dat_rdata ),
  .fifo_empty       (  fifo_dat_empty ),
  .fifo_empty       (  fifo_dat_empty ),
  .fifo_full        (   fifo_dat_full ),
  .fifo_full        (   fifo_dat_full ),
 
  .fifo_level       (                 ),
 
  .SRAM_IF          (     dat_sram_tx )
);
);
 
wire    dat_sram_enable;
 
wire    dat_sram_wr;
 
wire [FIFO_DATA_W-1:0]       dat_sram_din;
 
wire [FIFO_DATA_W-1:0]       dat_sram_dout;
 
wire [FIFO_DATA_DEPTH_W-1:0] dat_sram_addr;
 
sram_model #(
 
  .MEM_ADDR_W  (FIFO_DATA_DEPTH_W),
 
  .MEM_DATA_W  (FIFO_DATA_W)
 
) SRAM_DAT_1phc1024x32mx4tn(
 
  .CLK(axi_clk        ),
 
  .NCE(dat_sram_enable),
 
  .NWRT(dat_sram_wr   ),
 
  .NOE(1'b0           ),
 
  .DIN(dat_sram_din   ),
 
  .ADDR(dat_sram_addr),
 
  .DOUT(dat_sram_dout)
 
);
 
assign dat_sram_enable   = dat_sram_tx.rd_l | dat_sram_tx.wr_l;
 
assign dat_sram_wr       = dat_sram_tx.wr_l;
 
assign dat_sram_din      = dat_sram_tx.wdata;
 
assign dat_sram_addr     = ~dat_sram_tx.wr_l ? dat_sram_tx.wr_address : dat_sram_tx.rd_address;
 
assign dat_sram_tx.rdata = dat_sram_dout;
 
 
 
 
assign fifo_dat_wr    = fifo_data_wr;
assign fifo_dat_wr    = fifo_data_wr;
assign fifo_dat_wdata = fifo_data_info;
assign fifo_dat_wdata = fifo_data_info;
wb_egress #(
wb_egress #(
  .WB_ADR_W   (WB_ADR_W   )
  .WB_ADR_W   (WB_ADR_W   ),
  .WB_DAT_W   (WB_DAT_W   )
  .WB_DAT_W   (WB_DAT_W   ),
  .WB_TGA_W   (WB_TGA_W   )
  .WB_TGA_W   (WB_TGA_W   ),
  .WB_TGD_W   (WB_TGD_W   )
  .WB_TGD_W   (WB_TGD_W   ),
  .WB_TGC_W   (WB_TGC_W   )
  .WB_TGC_W   (WB_TGC_W   ),
  .WB_SEL_W   (WB_SEL_W   )
  .WB_SEL_W   (WB_SEL_W   ),
  .WB_CTI_W   (WB_CTI_W   )
  .WB_CTI_W   (WB_CTI_W   ),
  .WB_BTE_W   (WB_BTE_W   )
  .WB_BTE_W   (WB_BTE_W   ),
  .AXI_ID_W   (AXI_ID_W   )
  .AXI_ID_W   (AXI_ID_W   ),
  .AXI_ADDR_W (AXI_ADDR_W )
  .AXI_ADDR_W (AXI_ADDR_W ),
  .AXI_LEN_W  (AXI_LEN_W  )
  .AXI_LEN_W  (AXI_LEN_W  ),
  .AXI_SIZE_W (AXI_SIZE_W )
  .AXI_SIZE_W (AXI_SIZE_W ),
  .AXI_BURST_W(AXI_BURST_W)
  .AXI_BURST_W(AXI_BURST_W),
  .AXI_LOCK_W (AXI_LOCK_W )
  .AXI_LOCK_W (AXI_LOCK_W ),
  .AXI_CACHE_W(AXI_CACHE_W)
  .AXI_CACHE_W(AXI_CACHE_W),
  .AXI_PROT_W (AXI_PROT_W )
  .AXI_PROT_W (AXI_PROT_W ),
  .AXI_DATA_W (AXI_DATA_W )
  .AXI_DATA_W (AXI_DATA_W ),
  .AXI_STRB_W (AXI_STRB_W )
  .AXI_STB_W  (AXI_STB_W )
) I_WB_EGRESS(
) I_WB_EGRESS(
  .wb_clk         ( wb_clk         ),
  .wb_clk         ( wb_clk         ),
  .wb_resetn      ( wb_resetn      ),
  .wb_resetn      ( wb_resetn      ),
  .ENABLE         ( sync_ENABLE_wb ),
  .ENABLE         ( sync_ENABLE_wb ),
  .WB_TX_IF       ( WB_TX_IF       ),
  .WB_TX_IF       ( WB_TX_IF       ),
  .fifo_adr_rdata ( fifo_adr_rdata ),
  .fifo_adr_rdata ( fifo_adr_rdata ),
  .fifo_adr_rd    ( fifo_adr_rd    ),
  .fifo_adr_rd    ( fifo_adr_rd    ),
  .fifo_adr_empty ( fifo_adr_empty ),
  .fifo_adr_empty ( fifo_adr_empty ),
  .fifo_dat_rdata ( fifo_dat_rdata ),
  .fifo_dat_rdata ( fifo_dat_rdata ),
  .fifo_dat_rd    ( fifo_dat_rd    ),
  .fifo_dat_rd    ( fifo_dat_rd    ),
  .fifo_dat_empty ( fifo_dat_empty ),
  .fifo_dat_empty ( fifo_dat_empty )
);
);
 
 
endmodule
endmodule

powered by: WebSVN 2.1.0

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