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

Subversion Repositories wb2axi4

[/] [wb2axi4/] [trunk/] [rtl/] [axi2wb.sv] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 alzhang
//Author     : Alex Zhang (cgzhangwei@gmail.com)
2
//Date       : 03-11-2015
3
module axi2wb (
4
axi_clk,
5
wb_clk,
6
axi_resetn,
7
wb_resetn,
8
ENABLE,
9
AXI_IF,
10
WB_TX_IF
11
);
12
parameter AXI_WID_W         = 4;
13
parameter AXI_ADDR_W        = 32;
14
parameter AXI_DATA_W        = 32;
15
parameter AXI_PROT_W        = 3;
16
parameter AXI_STB_W         = 4;
17
parameter AXI_LEN_W         = 4;
18
parameter AXI_ASIZE_W       = 3;
19
parameter AXI_ABURST_W      = 2;
20
parameter AXI_ALOCK_W       = 2;
21
parameter AXI_ACACHE_W      = 4;
22
parameter AXI_RESP_W        = 2;
23
 
24
parameter FIFO_DEPTH_W      = 10;
25
parameter FIFO_W            = 64;
26
 
27
parameter WB_ADR_W          = 32;
28
parameter WB_DAT_W          = 32;
29
parameter WB_TGA_W          = 8;
30
parameter WB_TGD_W          = 8;
31
parameter WB_TGC_W          = 4;
32
parameter WB_SEL_W          = 4;
33
parameter WB_CTI_W          = 3;
34
parameter WB_BTE_W          = 2;
35
 
36
parameter AXI_MAX_RESP_W    = 3;
37
parameter SRAM_UNUSED_ADDR_W= 4;
38
 
39
input  wire             axi_clk;
40
input  wire             wb_clk;
41
input  wire             axi_resetn;
42
input  wire             wb_resetn;
43
axi_if.target           AXI_IF;
44
wb_if.master            WB_TX_IF;
45
sram_if.initiator       SRAM_ADR_IF;
46
sram_if.initiator       SRAM_DAT_IF;
47
 
48
wire        sync_ENABLE_axi;
49
wire        sync_ENABLE_wb;
50
sync_doble_ff #(.DATA_W(1)) I_SYNC_ENABLE_AXI (
51
  .CLK              (           AXI_CLK ),
52
  .RESET_N          (       AXI_RESET_N ),
53
  .DIN              (            ENABLE ),
54
  .DOUT             (   sync_ENABLE_axi )
55
);
56
sync_doble_ff #(.DATA_W(1)) I_SYNC_ENABLE_WB (
57
  .CLK              (           MAC_CLK ),
58
  .RESET_N          (       MAC_RESET_N ),
59
  .DIN              (            ENABLE ),
60
  .DOUT             (   sync_ENABLE_wb  )
61
);
62
 
63
axi_ingress #(
64
      .AXI_WID_W       (    AXI_WID_W    ),
65
      .AXI_ADDR_W      (    AXI_ADDR_W   ),
66
      .AXI_DATA_W      (    AXI_DATA_W   ),
67
      .AXI_PROT_W      (    AXI_PROT_W   ),
68
      .AXI_STB_W       (    AXI_STB_W    ),
69
      .AXI_LEN_W       (    AXI_LEN_W    ),
70
      .AXI_ASIZE_W     (    AXI_ASIZE_W  ),
71
      .AXI_ABURST_W    (   AXI_ABURST_W  ),
72
      .AXI_ALOCK_W     (    AXI_ALOCK_W  ),
73
      .AXI_ACACHE_W    (    AXI_ACACHE_W ),
74
      .AXI_RESP_W      (     AXI_RESP_W  ),
75
      .AXI_MAX_RESP_W  ( AXI_MAX_RESP_W  )
76
) I_AXI_INGRESS (
77
  .axi_clk        ( axi_clk       ),
78
  .reset_n        ( axi_resetn    ),
79
  .AXI_IF         ( AXI_IF        ),
80
  .fifo_full      ( fifo_full     ),
81
  .fifo_addr_info ( fifo_addr_info),
82
  .fifo_data_info ( fifo_data_info),
83
  .fifo_addr_wr   ( fifo_addr_wr  ),
84
  .fifo_data_wr   ( fifo_data_wr  )
85
);
86
 
87
assign fifo_full  = fifo_adr_full | fifo_dat_full;
88
 
89
async_fifo #(
90
  .FIFO_DEPTH_W      (FIFO_ADDR_DEPTH_W),
91
  .FIFO_W            (FIFO_ADDR_W),
92
  .SRAM_UNUSED_ADDR_W(FA_SRAM_UNUSED_ADDR_W)
93
) I_FIFO_ADR (
94
  .wrclk_RESET_N    (      axi_resetn ),
95
  .rdclk_RESET_N    (       wb_resetn ),
96
  .wr_en            ( sync_ENABLE_axi ),
97
  .rd_en            ( sync_ENABLE_wb  ),
98
  .fifo_wr_clk      (         axi_clk ),
99
  .fifo_rd_clk      (         wb_clk  ),
100
  .fifo_wr          (     fifo_adr_wr ),
101
  .fifo_rd          (     fifo_adr_rd ),
102
  .fifo_wdata       (  fifo_adr_wdata ),
103
  .fifo_rdata       (  fifo_adr_rdata ),
104
  .fifo_empty       (  fifo_adr_empty ),
105
  .fifo_full        (   fifo_adr_full ),
106
);
107
assign fifo_adr_wr    = fifo_addr_wr;
108
assign fifo_adr_wdata = fifo_addr_info;
109
async_fifo #(
110
  .FIFO_DEPTH_W      (FIFO_DATA_DEPTH_W),
111
  .FIFO_W            (FIFO_DATA_W),
112
  .SRAM_UNUSED_ADDR_W(FD_SRAM_UNUSED_ADDR_W)
113
) I_FIFO_DAT (
114
  .wrclk_RESET_N    (      axi_resetn ),
115
  .rdclk_RESET_N    (       wb_resetn ),
116
  .wr_en            ( sync_ENABLE_axi ),
117
  .rd_en            ( sync_ENABLE_wb  ),
118
  .fifo_wr_clk      (         axi_clk ),
119
  .fifo_rd_clk      (         wb_clk  ),
120
  .fifo_wr          (     fifo_dat_wr ),
121
  .fifo_rd          (     fifo_dat_rd ),
122
  .fifo_wdata       (  fifo_dat_wdata ),
123
  .fifo_rdata       (  fifo_dat_rdata ),
124
  .fifo_empty       (  fifo_dat_empty ),
125
  .fifo_full        (   fifo_dat_full ),
126
);
127
assign fifo_dat_wr    = fifo_data_wr;
128
assign fifo_dat_wdata = fifo_data_info;
129
wb_egress #(
130
  .WB_ADR_W   (WB_ADR_W   )
131
  .WB_DAT_W   (WB_DAT_W   )
132
  .WB_TGA_W   (WB_TGA_W   )
133
  .WB_TGD_W   (WB_TGD_W   )
134
  .WB_TGC_W   (WB_TGC_W   )
135
  .WB_SEL_W   (WB_SEL_W   )
136
  .WB_CTI_W   (WB_CTI_W   )
137
  .WB_BTE_W   (WB_BTE_W   )
138
  .AXI_ID_W   (AXI_ID_W   )
139
  .AXI_ADDR_W (AXI_ADDR_W )
140
  .AXI_LEN_W  (AXI_LEN_W  )
141
  .AXI_SIZE_W (AXI_SIZE_W )
142
  .AXI_BURST_W(AXI_BURST_W)
143
  .AXI_LOCK_W (AXI_LOCK_W )
144
  .AXI_CACHE_W(AXI_CACHE_W)
145
  .AXI_PROT_W (AXI_PROT_W )
146
  .AXI_DATA_W (AXI_DATA_W )
147
  .AXI_STRB_W (AXI_STRB_W )
148
) I_WB_EGRESS(
149
  .wb_clk         ( wb_clk         ),
150
  .wb_resetn      ( wb_resetn      ),
151
  .ENABLE         ( sync_ENABLE_wb ),
152
  .WB_TX_IF       ( WB_TX_IF       ),
153
  .fifo_adr_rdata ( fifo_adr_rdata ),
154
  .fifo_adr_rd    ( fifo_adr_rd    ),
155
  .fifo_adr_empty ( fifo_adr_empty ),
156
  .fifo_dat_rdata ( fifo_dat_rdata ),
157
  .fifo_dat_rd    ( fifo_dat_rd    ),
158
  .fifo_dat_empty ( fifo_dat_empty ),
159
);
160
 
161
endmodule

powered by: WebSVN 2.1.0

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