Entity: xpu_s_axi

Diagram

integer C_S_AXI_DATA_WIDTH integer C_S_AXI_ADDR_WIDTH wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG58 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG59 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG63 wire S_AXI_ACLK wire S_AXI_ARESETN wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_AWADDR wire [2 : 0] S_AXI_AWPROT wire S_AXI_AWVALID wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_WDATA wire [(C_S_AXI_DATA_WIDTH/8)-1 : 0] S_AXI_WSTRB wire S_AXI_WVALID wire S_AXI_BREADY wire [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_ARADDR wire [2 : 0] S_AXI_ARPROT wire S_AXI_ARVALID wire S_AXI_RREADY slv_reg_wren_signal wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG0 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG1 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG2 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG3 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG4 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG5 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG6 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG7 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG8 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG9 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG10 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG11 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG16 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG17 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG18 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG19 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG20 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG21 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG22 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG26 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG27 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG28 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG29 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG30 wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG31 wire S_AXI_AWREADY wire S_AXI_WREADY wire [1 : 0] S_AXI_BRESP wire S_AXI_BVALID wire S_AXI_ARREADY wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_RDATA wire [1 : 0] S_AXI_RRESP wire S_AXI_RVALID

Description

based on Xilinx module template Xianjun jiao. putaoshu@msn.com; xianjun.jiao@imec.be;

Generics

Generic name Type Value Description
C_S_AXI_DATA_WIDTH integer 32 Users to add parameters here User parameters ends Do not modify the parameters beyond this line Width of S_AXI data bus
C_S_AXI_ADDR_WIDTH integer 8 Width of S_AXI address bus

Ports

Port name Direction Type Description
slv_reg_wren_signal output Users to add ports here
SLV_REG0 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG1 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG2 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG3 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG4 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG5 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG6 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG7 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG8 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG9 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG10 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG11 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG16 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG17 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG18 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG19 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG20 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG21 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG22 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG26 output wire [C_S_AXI_DATA_WIDTH-1:0] output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG23, output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG24, output wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG25,
SLV_REG27 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG28 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG29 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG30 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG31 output wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG58 input wire [C_S_AXI_DATA_WIDTH-1:0] input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG32,input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG33, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG34, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG35, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG36, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG37, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG38, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG39, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG40, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG41, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG42, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG43, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG44, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG45, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG46, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG47, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG48, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG49, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG50, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG51, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG52, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG53, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG54, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG55, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG56, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG57,*/
SLV_REG59 input wire [C_S_AXI_DATA_WIDTH-1:0]
SLV_REG63 input wire [C_S_AXI_DATA_WIDTH-1:0] input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG60,input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG61, input wire [C_S_AXI_DATA_WIDTH-1:0] SLV_REG62,
S_AXI_ACLK input wire User ports ends Do not modify the ports beyond this line Global Clock Signal
S_AXI_ARESETN input wire Global Reset Signal. This Signal is Active LOW
S_AXI_AWADDR input wire [C_S_AXI_ADDR_WIDTH-1 : 0] Write address (issued by master, acceped by Slave)
S_AXI_AWPROT input wire [2 : 0] Write channel Protection type. This signal indicates the privilege and security level of the transaction, and whether the transaction is a data access or an instruction access.
S_AXI_AWVALID input wire Write address valid. This signal indicates that the master signaling valid write address and control information.
S_AXI_AWREADY output wire Write address ready. This signal indicates that the slave is ready to accept an address and associated control signals.
S_AXI_WDATA input wire [C_S_AXI_DATA_WIDTH-1 : 0] Write data (issued by master, acceped by Slave)
S_AXI_WSTRB input wire [(C_S_AXI_DATA_WIDTH/8)-1 : 0] Write strobes. This signal indicates which byte lanes hold valid data. There is one write strobe bit for each eight bits of the write data bus.
S_AXI_WVALID input wire Write valid. This signal indicates that valid write data and strobes are available.
S_AXI_WREADY output wire Write ready. This signal indicates that the slave can accept the write data.
S_AXI_BRESP output wire [1 : 0] Write response. This signal indicates the status of the write transaction.
S_AXI_BVALID output wire Write response valid. This signal indicates that the channel is signaling a valid write response.
S_AXI_BREADY input wire Response ready. This signal indicates that the master can accept a write response.
S_AXI_ARADDR input wire [C_S_AXI_ADDR_WIDTH-1 : 0] Read address (issued by master, acceped by Slave)
S_AXI_ARPROT input wire [2 : 0] Protection type. This signal indicates the privilege and security level of the transaction, and whether the transaction is a data access or an instruction access.
S_AXI_ARVALID input wire Read address valid. This signal indicates that the channel is signaling valid read address and control information.
S_AXI_ARREADY output wire Read address ready. This signal indicates that the slave is ready to accept an address and associated control signals.
S_AXI_RDATA output wire [C_S_AXI_DATA_WIDTH-1 : 0] Read data (issued by slave)
S_AXI_RRESP output wire [1 : 0] Read response. This signal indicates the status of the read transfer.
S_AXI_RVALID output wire Read valid. This signal indicates that the channel is signaling the required read data.
S_AXI_RREADY input wire Read ready. This signal indicates that the master can accept the read data and response information.

Signals

Name Type Description
axi_awaddr reg [C_S_AXI_ADDR_WIDTH-1 : 0] AXI4LITE signals
axi_awready reg
axi_wready reg
axi_bresp reg [1 : 0]
axi_bvalid reg
axi_araddr reg [C_S_AXI_ADDR_WIDTH-1 : 0]
axi_arready reg
axi_rdata reg [C_S_AXI_DATA_WIDTH-1 : 0]
axi_rresp reg [1 : 0]
axi_rvalid reg
slv_reg0 reg [C_S_AXI_DATA_WIDTH-1:0] ---------------------------------------------- -- Signals for user logic register space example ------------------------------------------------ -- Number of Slave Registers 64
slv_reg1 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg2 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg3 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg4 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg5 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg6 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg7 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg8 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg9 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg10 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg11 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg16 reg [C_S_AXI_DATA_WIDTH-1:0] reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg12; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg13; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg14; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg15;
slv_reg17 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg18 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg19 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg20 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg21 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg22 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg26 reg [C_S_AXI_DATA_WIDTH-1:0] reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg23; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg24; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg25;
slv_reg27 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg28 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg29 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg30 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg31 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg58 reg [C_S_AXI_DATA_WIDTH-1:0] reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg32; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg33; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg34; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg35; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg36; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg37; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg38; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg39; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg40; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg41; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg42; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg43; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg44; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg45; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg46; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg47; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg48; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg49; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg50; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg51; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg52; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg53; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg54; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg55; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg56; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg57;*/
slv_reg59 reg [C_S_AXI_DATA_WIDTH-1:0]
slv_reg63 reg [C_S_AXI_DATA_WIDTH-1:0] reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg60; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg61; reg [C_S_AXI_DATA_WIDTH-1:0] slv_reg62;
slv_reg_rden wire
slv_reg_wren wire
reg_data_out reg [C_S_AXI_DATA_WIDTH-1:0]
byte_index integer
aw_en reg

Constants

Name Type Value Description
ADDR_LSB integer + 1 Example-specific design signals local parameter for addressing 32 bit / 64 bit C_S_AXI_DATA_WIDTH ADDR_LSB is used for addressing 32/64 bit registers/memories ADDR_LSB = 2 for 32 bits (n downto 2) ADDR_LSB = 3 for 64 bits (n downto 3)
OPT_MEM_ADDR_BITS integer 5

Processes

Type: always

Description
Implement axi_awready generation axi_awready is asserted for one S_AXI_ACLK clock cycle when both S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_awready is de-asserted when reset is low.

Type: always

Description
Implement axi_awaddr latching This process is used to latch the address when both S_AXI_AWVALID and S_AXI_WVALID are valid.

Type: always

Description
Implement axi_wready generation axi_wready is asserted for one S_AXI_ACLK clock cycle when both S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_wready is de-asserted when reset is low.

Type: always

Type: always

Description
Implement write response logic generation The write response and response valid signals are asserted by the slave when axi_wready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. This marks the acceptance of address and indicates the status of write transaction.

Type: always

Description
Implement axi_arready generation axi_arready is asserted for one S_AXI_ACLK clock cycle when S_AXI_ARVALID is asserted. axi_awready is de-asserted when reset (active low) is asserted. The read address is also latched when S_AXI_ARVALID is asserted. axi_araddr is reset to zero on reset assertion.

Type: always

Description
Implement axi_arvalid generation axi_rvalid is asserted for one S_AXI_ACLK clock cycle when both S_AXI_ARVALID and axi_arready are asserted. The slave registers data are available on the axi_rdata bus at this instance. The assertion of axi_rvalid marks the validity of read data on the bus and axi_rresp indicates the status of read transaction.axi_rvalid is deasserted on reset (active low). axi_rresp and axi_rdata are cleared to zero on reset (active low).

Type: always

Type: always

Description
Output register or memory read data

Type: always

Description
Add user logic here