blob: 53bbcc6800567c91b6af7146cdd5dfab0f3f2e55 [file]
module axi2apb_wrap
#(
parameter AXI_ADDR_WIDTH = 32,
parameter AXI_DATA_WIDTH = 32,
parameter AXI_USER_WIDTH = 6,
parameter AXI_ID_WIDTH = 6,
parameter APB_ADDR_WIDTH = 32
)
(
clk_i,
rst_ni,
test_en_i,
s00_aw_addr,
s00_aw_prot,
s00_aw_region,
s00_aw_len,
s00_aw_size,
s00_aw_burst,
s00_aw_lock,
s00_aw_cache,
s00_aw_qos,
s00_aw_id,
s00_aw_user,
s00_aw_ready,
s00_aw_valid,
s00_ar_addr,
s00_ar_prot,
s00_ar_region,
s00_ar_len,
s00_ar_size,
s00_ar_burst,
s00_ar_lock,
s00_ar_cache,
s00_ar_qos,
s00_ar_id,
s00_ar_user,
s00_ar_ready,
s00_ar_valid,
s00_w_valid,
s00_w_data,
s00_w_strb,
s00_w_user,
s00_w_last,
s00_w_ready,
s00_r_data,
s00_r_resp,
s00_r_last,
s00_r_id,
s00_r_user,
s00_r_ready,
s00_r_valid,
s00_b_resp,
s00_b_id,
s00_b_user,
s00_b_ready,
s00_b_valid,
m00_paddr,
m00_pwdata,
m00_pwrite,
m00_psel,
m00_penable,
m00_prdata,
m00_pready,
m00_pslverr
);
//parameter AXI_ADDR_WIDTH = 32;
//parameter AXI_DATA_WIDTH = 32;
//parameter AXI_USER_WIDTH = 6;
//parameter AXI_ID_WIDTH = 6;
//parameter APB_ADDR_WIDTH = 32;
parameter AXI_STRB_WIDTH = AXI_DATA_WIDTH / 8;
parameter APB_DATA_WIDTH = 32;
input wire clk_i;
input wire rst_ni;
input wire test_en_i;
input wire [AXI_ADDR_WIDTH - 1:0] s00_aw_addr;
input wire [2:0] s00_aw_prot;
input wire [3:0] s00_aw_region;
input wire [7:0] s00_aw_len;
input wire [2:0] s00_aw_size;
input wire [1:0] s00_aw_burst;
input wire s00_aw_lock;
input wire [3:0] s00_aw_cache;
input wire [3:0] s00_aw_qos;
input wire [AXI_ID_WIDTH - 1:0] s00_aw_id;
input wire [AXI_USER_WIDTH - 1:0] s00_aw_user;
output wire s00_aw_ready;
input wire s00_aw_valid;
input wire [AXI_ADDR_WIDTH - 1:0] s00_ar_addr;
input wire [2:0] s00_ar_prot;
input wire [3:0] s00_ar_region;
input wire [7:0] s00_ar_len;
input wire [2:0] s00_ar_size;
input wire [1:0] s00_ar_burst;
input wire s00_ar_lock;
input wire [3:0] s00_ar_cache;
input wire [3:0] s00_ar_qos;
input wire [AXI_ID_WIDTH - 1:0] s00_ar_id;
input wire [AXI_USER_WIDTH - 1:0] s00_ar_user;
output wire s00_ar_ready;
input wire s00_ar_valid;
input wire s00_w_valid;
input wire [AXI_DATA_WIDTH - 1:0] s00_w_data;
input wire [AXI_STRB_WIDTH - 1:0] s00_w_strb;
input wire [AXI_USER_WIDTH - 1:0] s00_w_user;
input wire s00_w_last;
output wire s00_w_ready;
output wire [AXI_DATA_WIDTH - 1:0] s00_r_data;
output wire [1:0] s00_r_resp;
output wire s00_r_last;
output wire [AXI_ID_WIDTH - 1:0] s00_r_id;
output wire [AXI_USER_WIDTH - 1:0] s00_r_user;
input wire s00_r_ready;
output wire s00_r_valid;
output wire [1:0] s00_b_resp;
output wire [AXI_ID_WIDTH - 1:0] s00_b_id;
output wire [AXI_USER_WIDTH - 1:0] s00_b_user;
input wire s00_b_ready;
output wire s00_b_valid;
output wire [APB_ADDR_WIDTH - 1:0] m00_paddr;
output wire [APB_DATA_WIDTH - 1:0] m00_pwdata;
output wire m00_pwrite;
output wire m00_psel;
output wire m00_penable;
input wire [APB_DATA_WIDTH - 1:0] m00_prdata;
input wire m00_pready;
input wire m00_pslverr;
generate
if (AXI_DATA_WIDTH == 32) begin : genblk1
axi2apb32 #(
.AXI4_ADDRESS_WIDTH(AXI_ADDR_WIDTH),
.AXI4_RDATA_WIDTH(AXI_DATA_WIDTH),
.AXI4_WDATA_WIDTH(AXI_DATA_WIDTH),
.AXI4_ID_WIDTH(AXI_ID_WIDTH),
.AXI4_USER_WIDTH(1),
.BUFF_DEPTH_SLAVE(2),
.APB_ADDR_WIDTH(APB_ADDR_WIDTH)
) axi2apb_i(
.ACLK(clk_i),
.ARESETn(rst_ni),
.test_en_i(test_en_i),
.AWID_i(s00_aw_id),
.AWADDR_i(s00_aw_addr),
.AWLEN_i(s00_aw_len),
.AWSIZE_i(s00_aw_size),
.AWBURST_i(s00_aw_burst),
.AWLOCK_i(s00_aw_lock),
.AWCACHE_i(s00_aw_cache),
.AWPROT_i(s00_aw_prot),
.AWREGION_i(s00_aw_region),
.AWUSER_i(s00_aw_user),
.AWQOS_i(s00_aw_qos),
.AWVALID_i(s00_aw_valid),
.AWREADY_o(s00_aw_ready),
.WDATA_i(s00_w_data),
.WSTRB_i(s00_w_strb),
.WLAST_i(s00_w_last),
.WUSER_i(s00_w_user),
.WVALID_i(s00_w_valid),
.WREADY_o(s00_w_ready),
.BID_o(s00_b_id),
.BRESP_o(s00_b_resp),
.BVALID_o(s00_b_valid),
.BUSER_o(s00_b_user),
.BREADY_i(s00_b_ready),
.ARID_i(s00_ar_id),
.ARADDR_i(s00_ar_addr),
.ARLEN_i(s00_ar_len),
.ARSIZE_i(s00_ar_size),
.ARBURST_i(s00_ar_burst),
.ARLOCK_i(s00_ar_lock),
.ARCACHE_i(s00_ar_cache),
.ARPROT_i(s00_ar_prot),
.ARREGION_i(s00_ar_region),
.ARUSER_i(s00_ar_user),
.ARQOS_i(s00_ar_qos),
.ARVALID_i(s00_ar_valid),
.ARREADY_o(s00_ar_ready),
.RID_o(s00_r_id),
.RDATA_o(s00_r_data),
.RRESP_o(s00_r_resp),
.RLAST_o(s00_r_last),
.RUSER_o(s00_r_user),
.RVALID_o(s00_r_valid),
.RREADY_i(s00_r_ready),
.PENABLE(m00_penable),
.PWRITE(m00_pwrite),
.PADDR(m00_paddr),
.PSEL(m00_psel),
.PWDATA(m00_pwdata),
.PRDATA(m00_prdata),
.PREADY(m00_pready),
.PSLVERR(m00_pslverr)
);
end
else if (AXI_DATA_WIDTH == 64) begin : genblk1
axi2apb #(
.AXI4_ADDRESS_WIDTH(AXI_ADDR_WIDTH),
.AXI4_RDATA_WIDTH(AXI_DATA_WIDTH),
.AXI4_WDATA_WIDTH(AXI_DATA_WIDTH),
.AXI4_ID_WIDTH(AXI_ID_WIDTH),
.AXI4_USER_WIDTH(1),
.BUFF_DEPTH_SLAVE(2),
.APB_ADDR_WIDTH(APB_ADDR_WIDTH)
) axi2apb_i(
.ACLK(clk_i),
.ARESETn(rst_ni),
.test_en_i(test_en_i),
.AWID_i(s00_aw_id),
.AWADDR_i(s00_aw_addr),
.AWLEN_i(s00_aw_len),
.AWSIZE_i(s00_aw_size),
.AWBURST_i(s00_aw_burst),
.AWLOCK_i(s00_aw_lock),
.AWCACHE_i(s00_aw_cache),
.AWPROT_i(s00_aw_prot),
.AWREGION_i(s00_aw_region),
.AWUSER_i(s00_aw_user),
.AWQOS_i(s00_aw_qos),
.AWVALID_i(s00_aw_valid),
.AWREADY_o(s00_aw_ready),
.WDATA_i(s00_w_data),
.WSTRB_i(s00_w_strb),
.WLAST_i(s00_w_last),
.WUSER_i(s00_w_user),
.WVALID_i(s00_w_valid),
.WREADY_o(s00_w_ready),
.BID_o(s00_b_id),
.BRESP_o(s00_b_resp),
.BVALID_o(s00_b_valid),
.BUSER_o(s00_b_user),
.BREADY_i(s00_b_ready),
.ARID_i(s00_ar_id),
.ARADDR_i(s00_ar_addr),
.ARLEN_i(s00_ar_len),
.ARSIZE_i(s00_ar_size),
.ARBURST_i(s00_ar_burst),
.ARLOCK_i(s00_ar_lock),
.ARCACHE_i(s00_ar_cache),
.ARPROT_i(s00_ar_prot),
.ARREGION_i(s00_ar_region),
.ARUSER_i(s00_ar_user),
.ARQOS_i(s00_ar_qos),
.ARVALID_i(s00_ar_valid),
.ARREADY_o(s00_ar_ready),
.RID_o(s00_r_id),
.RDATA_o(s00_r_data),
.RRESP_o(s00_r_resp),
.RLAST_o(s00_r_last),
.RUSER_o(s00_r_user),
.RVALID_o(s00_r_valid),
.RREADY_i(s00_r_ready),
.PENABLE(m00_penable),
.PWRITE(m00_pwrite),
.PADDR(m00_paddr),
.PSEL(m00_psel),
.PWDATA(m00_pwdata),
.PRDATA(m00_prdata),
.PREADY(m00_pready),
.PSLVERR(m00_pslverr)
);
end
endgenerate
endmodule