AxiSlaveWrapper.v 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. module AxiSlaveWrapper #(
  2. parameter AXI_DATA_WIDTH = 64,
  3. parameter AXI_ID_WIDTH = 4
  4. )
  5. (
  6. /* Global Signals */
  7. (* X_INTERFACE_PARAMETER = "XIL_INTERFACENAME CLKIF, ASSOCIATED_BUSIF S_AXI:S_AXI_CTRL, ASSOCIATED_RESET s_axi_aresetn_i, FREQ_HZ 125000000, FREQ_TOLERANCE_HZ 0, PHASE 0.0,INSERT_VIP 0" *)
  8. (* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 CLKIF CLK" *)
  9. input wire s_axi_aclk,
  10. (* X_INTERFACE_INFO = "XIL_INTERFACENAME RSTIF, POLARITY ACTIVE_LOW, INSERT_VIP 0" *)
  11. (* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 RSTIF RST" *)
  12. input wire s_axi_aresetn,
  13. //***********************************************
  14. // SLAVE INTERFACE WRITE
  15. //***********************************************
  16. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWID" *)
  17. input wire [AXI_ID_WIDTH - 1 : 0] s_axi_awid, // Write Address ID
  18. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWADDR" *)
  19. input wire [AXI_DATA_WIDTH-1:0] s_axi_awaddr, // Write Address
  20. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWLEN" *)
  21. input wire [7:0] s_axi_awlen, // Burst Length. Exact number of transfers in a burst.
  22. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWSIZE" *)
  23. input wire [2:0] s_axi_awsize, // Burst Size. Number of bytes in each transfer.
  24. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWBURST" *)
  25. input wire [1:0] s_axi_awburst, // Burst Type. Type of burst operation and size determine how the address is incremented.
  26. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWLOCK" *)
  27. input wire s_axi_awlock, // Write Address Lock
  28. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWCACHE" *)
  29. input wire [3:0] s_axi_awcache, // Write Address Cache
  30. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWPROT" *)
  31. input wire [2:0] s_axi_awprot, // Write Address Protection
  32. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWVALID" *)
  33. input wire s_axi_awvalid, // Write Address Valid
  34. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI AWREADY" *)
  35. output wire s_axi_awready, // Write Address Ready
  36. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI WDATA" *)
  37. input wire [AXI_DATA_WIDTH-1:0] s_axi_wdata,// Write Data
  38. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI WSTRB" *)
  39. input wire [AXI_DATA_WIDTH/8-1:0] s_axi_wstrb, // Write Strobe. This signal indicates which byte lanes hold valid data.
  40. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI WLAST" *)
  41. input wire s_axi_wlast, // Write Last. This signal indicates the last transfer in a burst.
  42. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI WVALID" *)
  43. input wire s_axi_wvalid, // Write Valid. This signal indicates that the write data on the bus is valid.
  44. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI WREADY" *)
  45. output wire s_axi_wready,
  46. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI BID" *)
  47. output wire [AXI_ID_WIDTH - 1 : 0] s_axi_bid,
  48. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI BRESP" *)
  49. output wire [1:0] s_axi_bresp,
  50. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI BVALID" *)
  51. output wire s_axi_bvalid,
  52. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI BREADY" *)
  53. input wire s_axi_bready, // Write Response Ready. This signal indicates that the master is ready to accept a write response.
  54. //***********************************************
  55. // SLAVE INTERFACE READ
  56. //***********************************************
  57. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARID" *)
  58. input wire [AXI_ID_WIDTH - 1 : 0] s_axi_arid, // Read Address ID
  59. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARADDR" *)
  60. input wire [AXI_DATA_WIDTH-1:0] s_axi_araddr, // Read Address. This signal is the address of the first transfer in a burst.
  61. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARLEN" *)
  62. input wire [7:0] s_axi_arlen, // Burst Length. Exact number of transfers in a burst.
  63. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARSIZE" *)
  64. input wire [2:0] s_axi_arsize,
  65. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARBURST" *)
  66. input wire [1:0] s_axi_arburst,
  67. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARLOCK" *)
  68. input wire s_axi_arlock,
  69. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARCACHE" *)
  70. input wire [3:0] s_axi_arcache,
  71. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARPROT" *)
  72. input wire [2:0] s_axi_arprot,
  73. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARVALID" *)
  74. input wire s_axi_arvalid,
  75. /* Output AXI4 FULL Signals */
  76. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI ARREADY" *)
  77. output wire s_axi_arready,
  78. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI RID" *)
  79. output wire [AXI_ID_WIDTH - 1 : 0] s_axi_rid,
  80. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI RDATA" *)
  81. output wire [AXI_DATA_WIDTH-1:0] s_axi_rdata,
  82. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI RRESP" *)
  83. output wire [1:0] s_axi_rresp,
  84. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI RLAST" *)
  85. output wire s_axi_rlast,
  86. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI RVALID" *)
  87. output wire s_axi_rvalid,
  88. (* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI RREADY" *)
  89. input wire s_axi_rready,
  90. /* User Signals */
  91. input wire [AXI_DATA_WIDTH-1:0] RdData_i,
  92. output wire Val_o,
  93. output wire ValToRdFifo_o,
  94. output wire [AXI_DATA_WIDTH-1:0] Data_o,
  95. output wire [AXI_DATA_WIDTH-1:0] RdAddr_o,
  96. output wire [AXI_DATA_WIDTH-1:0] Addr_o
  97. );
  98. AxiSlave #(
  99. .AXI_DATA_WIDTH(AXI_DATA_WIDTH)
  100. ) axi_slave (
  101. .s_axi_aclk_i(s_axi_aclk),
  102. .s_axi_aresetn_i(s_axi_aresetn),
  103. .s_axi_awaddr_i(s_axi_awaddr),
  104. .s_axi_awlen_i(s_axi_awlen),
  105. .s_axi_awsize_i(s_axi_awsize),
  106. .s_axi_awburst_i(s_axi_awburst),
  107. .s_axi_awvalid_i(s_axi_awvalid),
  108. .s_axi_wdata_i(s_axi_wdata),
  109. .s_axi_wstrb_i(s_axi_wstrb),
  110. .s_axi_wlast_i(s_axi_wlast),
  111. .s_axi_wvalid_i(s_axi_wvalid),
  112. .s_axi_bready_i(s_axi_bready),
  113. .s_axi_araddr_i(s_axi_araddr),
  114. .s_axi_arlen_i(s_axi_arlen),
  115. .s_axi_arsize_i(s_axi_arsize),
  116. .s_axi_arburst_i(s_axi_arburst),
  117. .s_axi_arvalid_i(s_axi_arvalid),
  118. .s_axi_rready_i(s_axi_rready),
  119. .s_axi_awready_o(s_axi_awready),
  120. .s_axi_wready_o(s_axi_wready),
  121. .s_axi_bresp_o(s_axi_bresp),
  122. .s_axi_bvalid_o(s_axi_bvalid),
  123. .s_axi_arready_o(s_axi_arready),
  124. .s_axi_rdata_o(s_axi_rdata),
  125. .s_axi_rlast_o(s_axi_rlast),
  126. .s_axi_rresp_o(s_axi_rresp),
  127. .s_axi_rvalid_o(s_axi_rvalid),
  128. .RdData_i(RdData_i),
  129. .Val_o (Val_o),
  130. .ValToRdFifo_o(ValToRdFifo_o),
  131. .Data_o (Data_o),
  132. .RdAddr_o (RdAddr_o),
  133. .Addr_o (Addr_o)
  134. );
  135. endmodule