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

Subversion Repositories wb2axi4

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 3 to Rev 2
    Reverse comparison

Rev 3 → Rev 2

/wb2axi4/trunk/rtl/axi_ingress.sv
2,7 → 2,6
//Date : 03-11-2015
//Basic : How to storage the AXI info and data into sram or fifo.
`include "wb2axi_parameters.vh"
 
module axi_ingress (
axi_clk,
reset_n,
13,27 → 12,14
fifo_addr_wr,
fifo_data_wr
);
parameter AXI_ID_W = `WB2AXI_AXI_ID_W ;
parameter AXI_ADDR_W = `WB2AXI_AXI_ADDR_W ;
parameter AXI_DATA_W = `WB2AXI_AXI_DATA_W ;
parameter AXI_PROT_W = `WB2AXI_AXI_PROT_W ;
parameter AXI_STB_W = `WB2AXI_AXI_STB_W ;
parameter AXI_LEN_W = `WB2AXI_AXI_LEN_W ;
parameter AXI_SIZE_W = `WB2AXI_AXI_SIZE_W ;
parameter AXI_BURST_W = `WB2AXI_AXI_BURST_W;
parameter AXI_LOCK_W = `WB2AXI_AXI_LOCK_W ;
parameter AXI_CACHE_W = `WB2AXI_AXI_CACHE_W;
parameter AXI_RESP_W = `WB2AXI_AXI_RESP_W ;
parameter AXI_MAX_RESP_W = 3;
parameter FIFO_ADR_W = 10;
parameter FIFO_DAT_W = 10;
 
parameter AXI_WID_W = 5;
parameter AXI_MAX_RESP_W = 3;
input axi_clk;
input reset_n;
axi_if.target AXI_IF;
output fifo_full;
output [FIFO_ADR_W-1:0] fifo_addr_info;
output [FIFO_DAT_W-1:0] fifo_data_info;
output [FIFO_AW-1:0] fifo_addr_info;
output [FIFO_DW-1:0] fifo_data_info;
output reg fifo_addr_wr;
output reg fifo_data_wr;
localparam ST_W = 2;
52,12 → 38,12
reg [ST_W-1:0] state;
reg [ST_W-1:0] next_state;
reg [AXI_MAX_RESP_W-1:0] bresp_pending_cnt; //responses pending to generate
reg [AXI_ID_W-1:0] last_wid;
reg [FIFO_ADR_W-1:0] fifo_addr_in;
reg [FIFO_DAT_W-1:0] fifo_data_in;
reg [AXI_WID_W-1:0] last_wid;
reg [FIFO_AW-1:0] fifo_addr_in;
reg [FIFO_DW-1:0] fifo_data_in;
 
assign input_addr_event = AXI_IF.AWVALID & AXI_IF.AWREADY;
assign input_data_event = AXI_IF.WVALID & AXI_IF.WREADY;
assign input_data_event = AXI_FI.WVALID & AXI_IF.WREADY;
assign inc_bresp = AXI_IF.WLAST & input_data_event;
assign dec_bresp = AXI_IF.BREADY & AXI_IF.BVALID;
assign bresp_cnt_max = (bresp_pending_cnt == AXI_MAX_RESP_VAL);
117,7 → 103,7
assign AXI_IF.RRESP = 0;
assign AXI_IF.RLAST = 0;
assign AXI_IF.RVALID = 0;
assign AXI_IF.AWREADY = (state ==ST_IDLE || state==ST_WDATA) & ~fifo_full & ~bresp_cnt_max;
assign AIX_IF.AWREADY = (state ==ST_IDLE || state==ST_WDATA) & ~fifo_full & ~bresp_cnt_max;
assign AXI_IF.WREADY = ~fifo_full & ~bresp_cnt_max;
 
assign fifo_addr_info = fifo_addr_in;
/wb2axi4/trunk/rtl/axi2wb.sv
1,6 → 1,5
//Author : Alex Zhang (cgzhangwei@gmail.com)
//Date : 03-11-2015
`include "wb2axi_parameters.vh"
module axi2wb (
axi_clk,
wb_clk,
10,22 → 9,20
AXI_IF,
WB_TX_IF
);
parameter AXI_ID_W = `WB2AXI_AXI_ID_W ;
parameter AXI_ADDR_W = `WB2AXI_AXI_ADDR_W ;
parameter AXI_DATA_W = `WB2AXI_AXI_DATA_W ;
parameter AXI_PROT_W = `WB2AXI_AXI_PROT_W ;
parameter AXI_STB_W = `WB2AXI_AXI_STB_W ;
parameter AXI_LEN_W = `WB2AXI_AXI_LEN_W ;
parameter AXI_SIZE_W = `WB2AXI_AXI_SIZE_W ;
parameter AXI_BURST_W = `WB2AXI_AXI_BURST_W;
parameter AXI_LOCK_W = `WB2AXI_AXI_LOCK_W ;
parameter AXI_CACHE_W = `WB2AXI_AXI_CACHE_W;
parameter AXI_RESP_W = `WB2AXI_AXI_RESP_W ;
parameter AXI_WID_W = 4;
parameter AXI_ADDR_W = 32;
parameter AXI_DATA_W = 32;
parameter AXI_PROT_W = 3;
parameter AXI_STB_W = 4;
parameter AXI_LEN_W = 4;
parameter AXI_ASIZE_W = 3;
parameter AXI_ABURST_W = 2;
parameter AXI_ALOCK_W = 2;
parameter AXI_ACACHE_W = 4;
parameter AXI_RESP_W = 2;
 
parameter FIFO_ADDR_DEPTH_W = 10;
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 FIFO_DEPTH_W = 10;
parameter FIFO_W = 64;
 
parameter WB_ADR_W = 32;
parameter WB_DAT_W = 32;
36,62 → 33,46
parameter WB_CTI_W = 3;
parameter WB_BTE_W = 2;
 
localparam 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;
parameter AXI_MAX_RESP_W = 3;
parameter SRAM_UNUSED_ADDR_W= 4;
 
input wire axi_clk;
input wire wb_clk;
input wire axi_resetn;
input wire wb_resetn;
input wire ENABLE;
axi_if.target AXI_IF;
wishbone_if.master WB_TX_IF;
wb_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_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 ;
 
wire sync_ENABLE_axi;
wire sync_ENABLE_wb;
sync_doble_ff #(.DATA_W(1)) I_SYNC_ENABLE_AXI (
.CLK ( axi_clk ),
.RESET_N ( axi_resetn ),
.CLK ( AXI_CLK ),
.RESET_N ( AXI_RESET_N ),
.DIN ( ENABLE ),
.DOUT ( sync_ENABLE_axi )
);
sync_doble_ff #(.DATA_W(1)) I_SYNC_ENABLE_WB (
.CLK ( wb_clk ),
.RESET_N ( wb_resetn ),
.CLK ( MAC_CLK ),
.RESET_N ( MAC_RESET_N ),
.DIN ( ENABLE ),
.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_ID_W ( AXI_ID_W ),
.AXI_WID_W ( AXI_WID_W ),
.AXI_ADDR_W ( AXI_ADDR_W ),
.AXI_DATA_W ( AXI_DATA_W ),
.AXI_PROT_W ( AXI_PROT_W ),
.AXI_STB_W ( AXI_STB_W ),
.AXI_LEN_W ( AXI_LEN_W ),
.AXI_SIZE_W ( AXI_SIZE_W ),
.AXI_BURST_W ( AXI_BURST_W ),
.AXI_LOCK_W ( AXI_LOCK_W ),
.AXI_CACHE_W ( AXI_CACHE_W ),
.AXI_RESP_W ( AXI_RESP_W ),
.AXI_MAX_RESP_W ( AXI_MAX_RESP_W ),
.FIFO_DAT_W ( FIFO_DATA_W ),
.FIFO_ADR_W ( FIFO_ADDR_W )
.AXI_ASIZE_W ( AXI_ASIZE_W ),
.AXI_ABURST_W ( AXI_ABURST_W ),
.AXI_ALOCK_W ( AXI_ALOCK_W ),
.AXI_ACACHE_W ( AXI_ACACHE_W ),
.AXI_RESP_W ( AXI_RESP_W ),
.AXI_MAX_RESP_W ( AXI_MAX_RESP_W )
) I_AXI_INGRESS (
.axi_clk ( axi_clk ),
.reset_n ( axi_resetn ),
122,32 → 103,7
.fifo_rdata ( fifo_adr_rdata ),
.fifo_empty ( fifo_adr_empty ),
.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_wdata = fifo_addr_info;
async_fifo #(
167,54 → 123,28
.fifo_rdata ( fifo_dat_rdata ),
.fifo_empty ( fifo_dat_empty ),
.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_wdata = fifo_data_info;
wb_egress #(
.WB_ADR_W (WB_ADR_W ),
.WB_DAT_W (WB_DAT_W ),
.WB_TGA_W (WB_TGA_W ),
.WB_TGD_W (WB_TGD_W ),
.WB_TGC_W (WB_TGC_W ),
.WB_SEL_W (WB_SEL_W ),
.WB_CTI_W (WB_CTI_W ),
.WB_BTE_W (WB_BTE_W ),
.AXI_ID_W (AXI_ID_W ),
.AXI_ADDR_W (AXI_ADDR_W ),
.AXI_LEN_W (AXI_LEN_W ),
.AXI_SIZE_W (AXI_SIZE_W ),
.AXI_BURST_W(AXI_BURST_W),
.AXI_LOCK_W (AXI_LOCK_W ),
.AXI_CACHE_W(AXI_CACHE_W),
.AXI_PROT_W (AXI_PROT_W ),
.AXI_DATA_W (AXI_DATA_W ),
.AXI_STB_W (AXI_STB_W )
.WB_ADR_W (WB_ADR_W )
.WB_DAT_W (WB_DAT_W )
.WB_TGA_W (WB_TGA_W )
.WB_TGD_W (WB_TGD_W )
.WB_TGC_W (WB_TGC_W )
.WB_SEL_W (WB_SEL_W )
.WB_CTI_W (WB_CTI_W )
.WB_BTE_W (WB_BTE_W )
.AXI_ID_W (AXI_ID_W )
.AXI_ADDR_W (AXI_ADDR_W )
.AXI_LEN_W (AXI_LEN_W )
.AXI_SIZE_W (AXI_SIZE_W )
.AXI_BURST_W(AXI_BURST_W)
.AXI_LOCK_W (AXI_LOCK_W )
.AXI_CACHE_W(AXI_CACHE_W)
.AXI_PROT_W (AXI_PROT_W )
.AXI_DATA_W (AXI_DATA_W )
.AXI_STRB_W (AXI_STRB_W )
) I_WB_EGRESS(
.wb_clk ( wb_clk ),
.wb_resetn ( wb_resetn ),
225,7 → 155,7
.fifo_adr_empty ( fifo_adr_empty ),
.fifo_dat_rdata ( fifo_dat_rdata ),
.fifo_dat_rd ( fifo_dat_rd ),
.fifo_dat_empty ( fifo_dat_empty )
.fifo_dat_empty ( fifo_dat_empty ),
);
 
endmodule
/wb2axi4/trunk/rtl/wb_egress.sv
14,7 → 14,7
fifo_adr_empty,
fifo_dat_rdata,
fifo_dat_rd,
fifo_dat_empty
fifo_dat_empty,
);
 
parameter WB_ADR_W = 32;
34,9 → 34,9
parameter AXI_CACHE_W = 4;
parameter AXI_PROT_W = 3;
parameter AXI_DATA_W = 32;
parameter AXI_STB_W = 4;
parameter AXI_STRB_W = 4;
parameter FIFO_ADR_W = AXI_ID_W + AXI_ADDR_W + AXI_LEN_W + AXI_SIZE_W + AXI_BURST_W + AXI_LOCK_W + AXI_CACHE_W + AXI_PROT_W +1 ;
parameter FIFO_DAT_W = AXI_ID_W + AXI_DATA_W + AXI_STB_W + 2;
parameter FIFO_DAT_W = AXI_ID_W + AXI_DATA_W + AXI_STRB_W + 2;
parameter ST_W = 2 ;
parameter ST_IDLE = 2'b00,
ST_READ_ADDR = 2'b01,
47,11 → 47,10
WB_FIRST_DATA = 2'b01,
WB_NEXT_DATA = 2'b10;
 
 
input wire wb_clk;
input wire wb_resetn;
input wire ENABLE;
wishbone_if.master WB_TX_IF;
wb_if.master WB_TX_IF;
input wire [FIFO_ADR_W-1:0] fifo_adr_rdata;
output wire fifo_adr_rd;
input wire fifo_adr_empty;
65,7 → 64,9
reg inc_dat_ptr;
reg [4:0] data_count;
wire allow_adr_rd;
wire fifo_adr_rd;
wire fifo_adr_rd_q;
wire fifo_dat_rd;
reg [AXI_ID_W -1:0] axi_id ;
reg [AXI_ADDR_W -1:0] axi_addr ;
reg [AXI_LEN_W -1:0] axi_len ;
77,7 → 78,7
reg wr_req ;
reg [AXI_ID_W -1:0] axi_wid ;
reg [AXI_DATA_W -1:0] axi_wdata ;
reg [AXI_STB_W -1:0] axi_wstrb ;
reg [AXI_STRB_W -1:0] axi_wstrb ;
reg axi_wlast ;
reg axi_wvalid;
reg wb_we_o ;
84,21 → 85,16
reg [WB_ADR_W-1:0] wb_adr_o;
reg [WB_TGA_W-1:0] wb_tga_o;
reg [WB_ADR_W-1:0] wb_adr_tmp;
reg [AXI_LEN_W-1:0] wb_len_tmp;
reg [WB_BTE_W-1:0] wb_bte_o;
reg wb_cyc_o;
reg [WB_TGC_W-1:0] wb_tgc_o;
reg [WB_CTI_W-1:0] wb_cti_o;
reg wb_stb_o;
reg [WB_STB_W-1:0] wb_stb_o;
reg [WB_DAT_W-1:0] wb_dat_o;
reg [WB_TGD_W-1:0] wb_tgd_o;
reg [WB_SEL_W-1:0] wb_sel_o;
 
reg [WB_W-1:0] wb_cs;
reg [WB_W-1:0] wb_ns;
 
 
 
assign allow_adr_rd = wb_cs == WB_IDLE;
always_comb begin
next_state = state;
115,7 → 111,7
next_state = ST_WAIT_DATA;
end
ST_WAIT_DATA : begin
if (WB_TX_IF.ACK & !fifo_dat_empty) begin
if (WB_TX_IF.ACK_I & !fifo_dat_empty) begin
next_state = ST_READ_DATA;
end else begin
next_state = ST_WAIT_DATA;
122,13 → 118,13
end
end
ST_READ_DATA : begin
if (data_count>0 & WB_TX_IF.ACK) begin
if (data_count>0 & WB_TX_IF.ACK_I) begin
next_state = ST_READ_DATA;
inc_dat_ptr = 1;
end else if (data_count>0) begin
next_state = ST_WAIT_DATA;
inc_dat_ptr = 0;
end else begin
end
next_state = ST_IDLE;
inc_dat_ptr = 0;
end
144,8 → 140,7
.DOUT ( fifo_adr_rd_q ),
.CLK ( wb_clk ),
.RESET_N( wb_resetn )
);
 
)
always @(posedge wb_clk or negedge wb_resetn)
if (~wb_resetn) begin
state <= ST_IDLE;
194,7 → 189,7
wb_ns = wb_cs;
case (wb_cs)
WB_IDLE : begin
if (fifo_dat_rd) begin
if (fifo_data_rd) begin
wb_ns = WB_FIRST_DATA;
end else begin
wb_ns = WB_IDLE;
201,9 → 196,9
end
end
WB_FIRST_DATA : begin
if (axi_wlast & WB_TX_IF.ACK)
if (axi_wlast & WB_TX_IF.ACK_I)
wb_ns = WB_IDLE;
else if (~axi_wlast & WB_TX_IF.ACK)
else if (~axi_wlast & WB_TX_IF.ACK_I)
wb_ns = WB_NEXT_DATA;
else
wb_ns = WB_FIRST_DATA;
210,7 → 205,7
end
WB_NEXT_DATA : begin
if (axi_wlast & WB_TX_IF.ACK)
if (axi_wlast & WB_TX_IF.ACK_I)
wb_ns = WB_IDLE;
else
wb_ns = WB_NEXT_DATA;
290,16 → 285,16
end
end
 
assign WB_TX_IF.ADR = wb_adr_o;
assign WB_TX_IF.WE = wb_we_o;
assign WB_TX_IF.TGA = wb_tga_o;
assign WB_TX_IF.BTE = wb_bte_o;
assign WB_TX_IF.CYC = wb_cyc_o;
assign WB_TX_IF.TGC = wb_tgc_o;
assign WB_TX_IF.CTI = wb_cti_o;
assign WB_TX_IF.STB = wb_stb_o;
assign WB_TX_IF.ADR_O = wb_adr_o;
assign WB_TX_IF.WE_O = wb_we_o;
assign WB_TX_IF.TGA_O = wb_tga_o;
assign WB_TX_IF.BTE_O = wb_bte_o;
assign WB_TX_IF.CYC_O = wb_cyc_o;
assign WB_TX_IF.TGC_O = wb_tgc_o;
assign WB_TX_IF.CTI_O = wb_cti_o;
assign WB_TX_IF.STB_O = wb_stb_o;
assign WB_TX_IF.DAT_O = wb_dat_o;
assign WB_TX_IF.TGD_O = wb_tgd_o;
assign WB_TX_IF.SEL = wb_sel_o;
assign WB_TX_IF.SEL_O = wb_sel_o;
 
endmodule
/wb2axi4/trunk/rtl/ifaces/wishbone_if.sv
7,7 → 7,7
interface wishbone_if #(
WB_ADR_WIDTH = 32,
WB_BTE_WIDTH = 2 ,
WB_CTI_WIDTH = 3 ,
WB_CIT_WIDTH = 3 ,
WB_DAT_WIDTH = 32,
WB_TGA_WIDTH = 8,
WB_TGD_WIDTH = 8,
15,63 → 15,74
WB_SEL_WIDTH = 4
 
);
logic [WB_ADR_WIDTH -1 : 0] ADR;
logic [WB_TGA_WIDTH -1 :0 ] TGA;
logic [WB_DAT_WIDTH -1 : 0] DAT_I;
logic [WB_DAT_WIDTH -1 : 0] DAT_O;
logic [WB_TGD_WIDTH -1 : 0] TGD_I;
logic [WB_DAT_WIDTH -1 : 0] DAT_O;
logic [WB_TGD_WIDTH -1 : 0] TGD_O;
logic WE;
logic [WB_SEL_WIDTH -1 : 0] SEL;
logic STB;
logic ACK;
logic CYC;
logic ERR;
logic LOCK;
logic [WB_BTE_WIDTH -1 :0 ] BTE;
logic RTY;
logic [WB_CTI_WIDTH -1 :0 ] CTI;
logic [WB_TGA_WIDTH -1 :0 ] TGC;
logic ACK_I;
logic [WB_ADR_WIDTH -1 : 0] ADR_O;
logic CYC_O;
logic ERR_I;
logic LOCK_O;
logic RTY_I;
logic [WB_SEL_WIDTH -1 : 0] SEL_O;
logic STB_O;
logic [WB_TGA_WIDTH -1 :0 ] TGA_O;
logic [WB_TGA_WIDTH -1 :0 ] TGC_O;
logic WE_O;
logic [WB_BTE_WIDTH -1 :0 ] BTE_O;
logic [WB_BTE_WIDTH -1 :0 ] BTE_I;
logic [WB_CTI_WIDTH -1 :0 ] CTI_O;
logic [WB_CTI_WIDTH -1 :0 ] CTI_I;
 
 
logic ACK_O;
logic [WB_ADR_WIDTH -1 : 0] ADR_I;
logic CYC_I;
logic ERR_O;
logic LOCK_I;
logic RTY_O;
logic [WB_SEL_WIDTH -1 : 0] SEL_I;
logic [WB_TGA_WIDTH -1 :0 ] TGA_I;
logic [WB_TGA_WIDTH -1 :0 ] TGC_I;
logic WE_I;
 
modport master(
output ADR ,
output TGA ,
output ADR_O,
output TGA_O,
input DAT_I,
input TGD_I,
output DAT_O,
output TGD_O,
output WE ,
output SEL ,
output STB ,
input ACK ,
output CYC ,
input ERR ,
output LOCK ,
output BTE ,
input RTY ,
output CTI ,
output TGC
output WE_O,
output SEL_O,
output STB_O,
input ACK_I,
output CYC_O,
input ERR_I,
output LOCK_O,
output BTE_O,
input RTY_I,
output TGC_O
);
 
modport slave(
input ADR ,
input TGA ,
output ADR_I,
output TGA_I,
input DAT_I,
input TGD_I,
output DAT_O,
output TGD_O,
input DAT_I,
input TGD_I,
input WE ,
input SEL ,
input STB ,
output ACK ,
input CYC ,
output ERR ,
input LOCK ,
input BTE ,
output RTY ,
input CTI ,
input TGC
output WE_I,
output SEL_I,
output STB_I,
input ACK_O,
output CYC_I,
input ERR_O,
output LOCK_I,
input BTE_I,
input RTY_O,
output TGC_I
);
 
 
/wb2axi4/trunk/rtl/ifaces/axi_if.sv
1,59 → 1,59
interface axi_if
#(AXI_ID_W = 8,
AXI_ADDR_W = 32,
AXI_DATA_W = 32,
AXI_PROT_W = 3,
AXI_STB_W = 4,
AXI_LEN_W = 4,
AXI_SIZE_W = 3,
AXI_BURST_W = 2,
AXI_LOCK_W = 2,
AXI_CACHE_W = 4,
AXI_RESP_W = 2
#(AXI_WID_WIDTH = 8,
AXI_ADDR_WIDTH = 32,
AXI_DATA_WIDTH = 32,
AXI_PROT_WIDTH = 3,
AXI_STB_WIDTH = 4,
AXI_LEN_W = 4,
AXI_ASIZE_W = 3,
AXI_ABURST_W = 2,
AXI_ALOCK_W = 2,
AXI_ACACHE_W = 4,
AXI_RESP_W = 2
)
();
 
//Write control channel signals
logic [AXI_ID_W - 1:0] AWID ;
logic [AXI_ADDR_W - 1:0] AWADDR ;
logic [AXI_LEN_W - 1:0] AWLEN ;
logic [AXI_SIZE_W - 1:0] AWSIZE ;
logic [AXI_BURST_W - 1:0] AWBURST ;
logic [AXI_LOCK_W - 1:0] AWLOCK ;
logic [AXI_CACHE_W - 1:0] AWCACHE ;
logic [AXI_PROT_W - 1:0] AWPROT ;
logic AWVALID ;
logic AWREADY ;
logic [AXI_WID_WIDTH - 1:0] AWID ;
logic [AXI_ADDR_WIDTH - 1:0] AWADDR ;
logic [AXI_LEN_W - 1:0] AWLEN ;
logic [AXI_ASIZE_W - 1:0] AWSIZE ;
logic [AXI_ABURST_W - 1:0] AWBURST ;
logic [AXI_ALOCK_W - 1:0] AWLOCK ;
logic [AXI_ACACHE_W - 1:0] AWCACHE ;
logic [AXI_PROT_WIDTH - 1:0] AWPROT ;
logic AWVALID ;
logic AWREADY ;
//write data channel signals
logic [AXI_ID_W - 1:0 ] WID ;
logic [AXI_DATA_W - 1:0] WDATA ;
logic [AXI_STB_W - 1:0] WSTRB ;
logic WLAST ;
logic WVALID ;
logic WREADY ;
logic [AXI_WID_WIDTH - 1:0] WID ;
logic [AXI_DATA_WIDTH - 1:0] WDATA ;
logic [AXI_STB_WIDTH - 1:0] WSTRB ;
logic WLAST ;
logic WVALID ;
logic WREADY ;
//write response channel
logic [AXI_ID_W - 1:0] BID ;
logic [AXI_RESP_W - 1:0] BRESP ;
logic BVALID ;
logic BREADY ;
logic [AXI_WID_WIDTH - 1:0] BID ;
logic [AXI_RESP_W - 1:0] BRESP ;
logic BVALID ;
logic BREADY ;
//Read control channel signals
logic [AXI_ID_W - 1:0] ARID ;
logic [AXI_ADDR_W - 1:0] ARADDR ;
logic [AXI_WID_WIDTH - 1:0] ARID ;
logic [AXI_ADDR_WIDTH - 1:0] ARADDR ;
logic [AXI_LEN_W - 1:0] ARLEN ;
logic [AXI_SIZE_W - 1:0] ARSIZE ;
logic [AXI_BURST_W - 1:0] ARBURST ;
logic [AXI_LOCK_W - 1:0] ARLOCK ;
logic [AXI_CACHE_W - 1:0] ARCACHE ;
logic [AXI_PROT_W - 1:0] ARPROT ;
logic [AXI_ASIZE_W - 1:0] ARSIZE ;
logic [AXI_ABURST_W - 1:0] ARBURST ;
logic [AXI_ALOCK_W - 1:0] ARLOCK ;
logic [AXI_ACACHE_W - 1:0] ARCACHE ;
logic [AXI_PROT_WIDTH - 1:0] ARPROT ;
logic ARVALID ;
logic ARREADY ;
//Read data channel signals
logic [AXI_ID_W - 1:0] RID ;
logic [AXI_DATA_W - 1:0] RDATA ;
logic [AXI_RESP_W - 1:0] RRESP ;
logic RLAST ;
logic RVALID ;
logic RREADY ;
logic [AXI_WID_WIDTH - 1:0] RID ;
logic [AXI_DATA_WIDTH - 1:0] RDATA ;
logic [AXI_RESP_W - 1:0] RRESP ;
logic RLAST ;
logic RVALID ;
logic RREADY ;
 
modport initiator (
//Write control channel signals

powered by: WebSVN 2.1.0

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