Files
rtl_libs/axi/axil_cdc_wrapper.sv
2026-05-29 15:30:24 +03:00

165 lines
6.3 KiB
Systemverilog

module axil_cdc_wrapper #(
parameter int ADDR_WIDTH = 32,
parameter int DATA_WIDTH = 32
)(
input wire s_clk,
input wire s_rst,
axi4l_if.slave s_axi,
input wire m_clk,
input wire m_rst,
axi4l_if.master m_axi
);
localparam int STRB_WIDTH = (DATA_WIDTH/8);
wire [ADDR_WIDTH-1:0] cdc_s_axil_awaddr;
wire [2:0] cdc_s_axil_awprot;
wire cdc_s_axil_awvalid;
wire cdc_s_axil_awready;
wire [DATA_WIDTH-1:0] cdc_s_axil_wdata;
wire [STRB_WIDTH-1:0] cdc_s_axil_wstrb;
wire cdc_s_axil_wvalid;
wire cdc_s_axil_wready;
wire [1:0] cdc_s_axil_bresp;
wire cdc_s_axil_bvalid;
wire cdc_s_axil_bready;
wire [ADDR_WIDTH-1:0] cdc_s_axil_araddr;
wire [2:0] cdc_s_axil_arprot;
wire cdc_s_axil_arvalid;
wire cdc_s_axil_arready;
wire [DATA_WIDTH-1:0] cdc_s_axil_rdata;
wire [1:0] cdc_s_axil_rresp;
wire cdc_s_axil_rvalid;
wire cdc_s_axil_rready;
wire [ADDR_WIDTH-1:0] cdc_m_axil_awaddr;
wire [2:0] cdc_m_axil_awprot;
wire cdc_m_axil_awvalid;
wire cdc_m_axil_awready;
wire [DATA_WIDTH-1:0] cdc_m_axil_wdata;
wire [STRB_WIDTH-1:0] cdc_m_axil_wstrb;
wire cdc_m_axil_wvalid;
wire cdc_m_axil_wready;
wire [1:0] cdc_m_axil_bresp;
wire cdc_m_axil_bvalid;
wire cdc_m_axil_bready;
wire [ADDR_WIDTH-1:0] cdc_m_axil_araddr;
wire [2:0] cdc_m_axil_arprot;
wire cdc_m_axil_arvalid;
wire cdc_m_axil_arready;
wire [DATA_WIDTH-1:0] cdc_m_axil_rdata;
wire [1:0] cdc_m_axil_rresp;
wire cdc_m_axil_rvalid;
wire cdc_m_axil_rready;
axi4l_if_to_flat #(
.ADDR_W (ADDR_WIDTH),
.DATA_W (DATA_WIDTH)
) i_axi4l_if_to_flat (
.s_axil (s_axi),
.m_axil_awaddr (cdc_m_axil_awaddr),
.m_axil_awprot (cdc_m_axil_awprot),
.m_axil_awuser (cdc_m_axil_awuser),
.m_axil_awvalid (cdc_m_axil_awvalid),
.m_axil_awready (cdc_m_axil_awready),
.m_axil_wdata (cdc_m_axil_wdata),
.m_axil_wstrb (cdc_m_axil_wstrb),
.m_axil_wuser (cdc_m_axil_wuser),
.m_axil_wvalid (cdc_m_axil_wvalid),
.m_axil_wready (cdc_m_axil_wready),
.m_axil_bresp (cdc_m_axil_bresp),
.m_axil_buser (cdc_m_axil_buser),
.m_axil_bvalid (cdc_m_axil_bvalid),
.m_axil_bready (cdc_m_axil_bready),
.m_axil_araddr (cdc_m_axil_araddr),
.m_axil_arprot (cdc_m_axil_arprot),
.m_axil_aruser (cdc_m_axil_aruser),
.m_axil_arvalid (cdc_m_axil_arvalid),
.m_axil_arready (cdc_m_axil_arready),
.m_axil_rdata (cdc_m_axil_rdata),
.m_axil_rresp (cdc_m_axil_rresp),
.m_axil_ruser (cdc_m_axil_ruser),
.m_axil_rvalid (cdc_m_axil_rvalid),
.m_axil_rready (cdc_m_axil_rready)
);
axil_cdc #(
.ADDR_WIDTH (ADDR_WIDTH),
.DATA_WIDTH (DATA_WIDTH)
) i_axil_cdc (
.s_clk (s_clk),
.s_rst (s_rst),
.s_axil_awaddr (cdc_m_axil_awaddr),
.s_axil_awprot (cdc_m_axil_awprot),
.s_axil_awvalid (cdc_m_axil_awvalid),
.s_axil_awready (cdc_m_axil_awready),
.s_axil_wdata (cdc_m_axil_wdata),
.s_axil_wstrb (cdc_m_axil_wstrb),
.s_axil_wvalid (cdc_m_axil_wvalid),
.s_axil_wready (cdc_m_axil_wready),
.s_axil_bresp (cdc_m_axil_bresp),
.s_axil_bvalid (cdc_m_axil_bvalid),
.s_axil_bready (cdc_m_axil_bready),
.s_axil_araddr (cdc_m_axil_araddr),
.s_axil_arprot (cdc_m_axil_arprot),
.s_axil_arvalid (cdc_m_axil_arvalid),
.s_axil_arready (cdc_m_axil_arready),
.s_axil_rdata (cdc_m_axil_rdata),
.s_axil_rresp (cdc_m_axil_rresp),
.s_axil_rvalid (cdc_m_axil_rvalid),
.s_axil_rready (cdc_m_axil_rready),
.m_clk (m_clk),
.m_rst (m_rst),
.m_axil_awaddr (cdc_s_axil_awaddr),
.m_axil_awprot (cdc_s_axil_awprot),
.m_axil_awvalid (cdc_s_axil_awvalid),
.m_axil_awready (cdc_s_axil_awready),
.m_axil_wdata (cdc_s_axil_wdata),
.m_axil_wstrb (cdc_s_axil_wstrb),
.m_axil_wvalid (cdc_s_axil_wvalid),
.m_axil_wready (cdc_s_axil_wready),
.m_axil_bresp (cdc_s_axil_bresp),
.m_axil_bvalid (cdc_s_axil_bvalid),
.m_axil_bready (cdc_s_axil_bready),
.m_axil_araddr (cdc_s_axil_araddr),
.m_axil_arprot (cdc_s_axil_arprot),
.m_axil_arvalid (cdc_s_axil_arvalid),
.m_axil_arready (cdc_s_axil_arready),
.m_axil_rdata (cdc_s_axil_rdata),
.m_axil_rresp (cdc_s_axil_rresp),
.m_axil_rvalid (cdc_s_axil_rvalid),
.m_axil_rready (cdc_s_axil_rready)
);
axi4l_flat_to_if #(
.ADDR_W (ADDR_WIDTH),
.DATA_W (DATA_WIDTH)
) i_axi4l_flat_to_if (
.s_axil_awaddr (cdc_s_axil_awaddr),
.s_axil_awprot (cdc_s_axil_awprot),
.s_axil_awuser (cdc_s_axil_awuser),
.s_axil_awvalid (cdc_s_axil_awvalid),
.s_axil_awready (cdc_s_axil_awready),
.s_axil_wdata (cdc_s_axil_wdata),
.s_axil_wstrb (cdc_s_axil_wstrb),
.s_axil_wuser (cdc_s_axil_wuser),
.s_axil_wvalid (cdc_s_axil_wvalid),
.s_axil_wready (cdc_s_axil_wready),
.s_axil_bresp (cdc_s_axil_bresp),
.s_axil_buser (cdc_s_axil_buser),
.s_axil_bvalid (cdc_s_axil_bvalid),
.s_axil_bready (cdc_s_axil_bready),
.s_axil_araddr (cdc_s_axil_araddr),
.s_axil_arprot (cdc_s_axil_arprot),
.s_axil_aruser (cdc_s_axil_aruser),
.s_axil_arvalid (cdc_s_axil_arvalid),
.s_axil_arready (cdc_s_axil_arready),
.s_axil_rdata (cdc_s_axil_rdata),
.s_axil_rresp (cdc_s_axil_rresp),
.s_axil_ruser (cdc_s_axil_ruser),
.s_axil_rvalid (cdc_s_axil_rvalid),
.s_axil_rready (cdc_s_axil_rready),
.m_axil (m_axil)
);
endmodule