Entity: xpu

Diagram

integer GPIO_STATUS_WIDTH integer DELAY_CTL_WIDTH integer RSSI_HALF_DB_WIDTH integer IQ_RSSI_HALF_DB_WIDTH integer C_S00_AXIS_TDATA_WIDTH integer IQ_DATA_WIDTH integer WIFI_TX_BRAM_DATA_WIDTH integer C_S00_AXI_DATA_WIDTH integer C_S00_AXI_ADDR_WIDTH integer TSF_TIMER_WIDTH integer WIFI_TX_BRAM_ADDR_WIDTH wire [31:0] git_rev wire [(GPIO_STATUS_WIDTH-1):0] gpio_status wire signed [(IQ_DATA_WIDTH-1):0] ddc_i wire signed [(IQ_DATA_WIDTH-1):0] ddc_q wire ddc_iq_valid wire demod_is_ongoing wire pkt_header_valid wire pkt_header_valid_strobe wire ht_unsupport wire [7:0] pkt_rate wire [15:0] pkt_len wire byte_in_strobe wire [7:0] byte_in wire [15:0] byte_count wire fcs_in_strobe wire fcs_ok wire phy_tx_started wire phy_tx_done wire tx_iq_fifo_empty wire tx_pkt_need_ack wire [3:0] tx_pkt_retrans_limit wire [(WIFI_TX_BRAM_DATA_WIDTH-1):0] douta wire cts_toself_bb_is_ongoing wire cts_toself_rf_is_ongoing wire [(WIFI_TX_BRAM_ADDR_WIDTH-1):0] bram_addr wire quit_retrans wire high_trigger wire [1:0] tx_queue_idx wire s00_axi_aclk wire s00_axi_aresetn wire [C_S00_AXI_ADDR_WIDTH-1 : 0] s00_axi_awaddr wire [2 : 0] s00_axi_awprot wire s00_axi_awvalid wire [C_S00_AXI_DATA_WIDTH-1 : 0] s00_axi_wdata wire [(C_S00_AXI_DATA_WIDTH/8)-1 : 0] s00_axi_wstrb wire s00_axi_wvalid wire s00_axi_bready wire [C_S00_AXI_ADDR_WIDTH-1 : 0] s00_axi_araddr wire [2 : 0] s00_axi_arprot wire s00_axi_arvalid wire s00_axi_rready wire mute_adc_out_to_bb wire block_rx_dma_to_ps wire block_rx_dma_to_ps_valid wire signed [(RSSI_HALF_DB_WIDTH-1):0] rssi_half_db_lock_by_sig_valid wire [(GPIO_STATUS_WIDTH-1):0] gpio_status_lock_by_sig_valid wire [(TSF_TIMER_WIDTH-1):0] tsf_runtime_val wire tsf_pulse_1M wire signed [(RSSI_HALF_DB_WIDTH-1):0] rssi_half_db wire [4:0] tx_status wire [47:0] mac_addr wire retrans_in_progress wire start_retrans wire start_tx_ack wire tx_try_complete wire high_tx_allowed0 wire high_tx_allowed1 wire high_tx_allowed2 wire high_tx_allowed3 wire tx_bb_is_ongoing wire tx_rf_is_ongoing wire ack_tx_flag wire wea wire [9:0] addra wire [(C_S00_AXIS_TDATA_WIDTH-1):0] dina wire [3:0] band wire [7:0] channel wire tx_control_state_idle wire [9:0] num_slot_random wire [3:0] cw wire [31:0] FC_DI wire FC_DI_valid wire [47:0] addr1 wire addr1_valid wire [47:0] addr2 wire addr2_valid wire [47:0] addr3 wire addr3_valid wire s00_axi_awready wire s00_axi_wready wire [1 : 0] s00_axi_bresp wire s00_axi_bvalid wire s00_axi_arready wire [C_S00_AXI_DATA_WIDTH-1 : 0] s00_axi_rdata wire [1 : 0] s00_axi_rresp wire s00_axi_rvalid

Description

Xianjun jiao. putaoshu@msn.com; xianjun.jiao@imec.be; `define DEBUG_PREFIX (mark_debug="true",DONT_TOUCH="TRUE")

Generics

Generic name Type Value Description
GPIO_STATUS_WIDTH integer 8
DELAY_CTL_WIDTH integer 7
RSSI_HALF_DB_WIDTH integer 11
IQ_RSSI_HALF_DB_WIDTH integer 9
C_S00_AXIS_TDATA_WIDTH integer 64
IQ_DATA_WIDTH integer 16
WIFI_TX_BRAM_DATA_WIDTH integer 64
C_S00_AXI_DATA_WIDTH integer 32
C_S00_AXI_ADDR_WIDTH integer 8
TSF_TIMER_WIDTH integer 64 according to 802.11 standard
WIFI_TX_BRAM_ADDR_WIDTH integer 10

Ports

Port name Direction Type Description
git_rev input wire [31:0]
gpio_status input wire [(GPIO_STATUS_WIDTH-1):0] ad9361 status and ctrl
ddc_i input wire signed [(IQ_DATA_WIDTH-1):0] Ports to rx_intf
ddc_q input wire signed [(IQ_DATA_WIDTH-1):0]
ddc_iq_valid input wire
mute_adc_out_to_bb output wire when tx, mute self rx
block_rx_dma_to_ps output wire should valid from filter on to fcs valid
block_rx_dma_to_ps_valid output wire should valid from filter on to fcs valid
rssi_half_db_lock_by_sig_valid output wire signed [(RSSI_HALF_DB_WIDTH-1):0]
gpio_status_lock_by_sig_valid output wire [(GPIO_STATUS_WIDTH-1):0]
tsf_runtime_val output wire [(TSF_TIMER_WIDTH-1):0]
tsf_pulse_1M output wire
rssi_half_db output wire signed [(RSSI_HALF_DB_WIDTH-1):0] Ports to openofdm rx
demod_is_ongoing input wire
pkt_header_valid input wire input wire pkt_begin,input wire pkt_ht,
pkt_header_valid_strobe input wire
ht_unsupport input wire
pkt_rate input wire [7:0]
pkt_len input wire [15:0]
byte_in_strobe input wire input wire [15:0] pkt_len_total, // for interface to byte_to_word.v in rx_intf.v
byte_in input wire [7:0]
byte_count input wire [15:0] input wire [15:0] byte_count_total, // for interface to byte_to_word.v in rx_intf.v
fcs_in_strobe input wire
fcs_ok input wire
phy_tx_started input wire Ports to phy_tx
phy_tx_done input wire
tx_status output wire [4:0] Ports to tx_intf
mac_addr output wire [47:0]
retrans_in_progress output wire
start_retrans output wire
start_tx_ack output wire
tx_try_complete output wire
tx_iq_fifo_empty input wire
high_tx_allowed0 output wire
high_tx_allowed1 output wire
high_tx_allowed2 output wire
high_tx_allowed3 output wire
tx_bb_is_ongoing output wire
tx_rf_is_ongoing output wire
ack_tx_flag output wire
wea output wire
addra output wire [9:0]
dina output wire [(C_S00_AXIS_TDATA_WIDTH-1):0]
tx_pkt_need_ack input wire
tx_pkt_retrans_limit input wire [3:0]
douta input wire [(WIFI_TX_BRAM_DATA_WIDTH-1):0] from dpram of tx_intf, for tx_control changing some bits to indicate it is the 1st pkt or retransmitted pkt
cts_toself_bb_is_ongoing input wire this should rise before the phy tx end valid of phy tx IP core to avoid tx_control waiting ack for this tx
cts_toself_rf_is_ongoing input wire just need to cover the SIFS gap between cts tx and following packet tx
bram_addr input wire [(WIFI_TX_BRAM_ADDR_WIDTH-1):0]
band output wire [3:0]
channel output wire [7:0]
quit_retrans input wire
tx_control_state_idle output wire
num_slot_random output wire [9:0]
cw output wire [3:0]
high_trigger input wire
tx_queue_idx input wire [1:0]
FC_DI output wire [31:0] to side channel
FC_DI_valid output wire
addr1 output wire [47:0]
addr1_valid output wire
addr2 output wire [47:0]
addr2_valid output wire
addr3 output wire [47:0]
addr3_valid output wire
s00_axi_aclk input wire Ports of Axi Slave Bus Interface S00_AXI
s00_axi_aresetn input wire
s00_axi_awaddr input wire [C_S00_AXI_ADDR_WIDTH-1 : 0]
s00_axi_awprot input wire [2 : 0]
s00_axi_awvalid input wire
s00_axi_awready output wire
s00_axi_wdata input wire [C_S00_AXI_DATA_WIDTH-1 : 0]
s00_axi_wstrb input wire [(C_S00_AXI_DATA_WIDTH/8)-1 : 0]
s00_axi_wvalid input wire
s00_axi_wready output wire
s00_axi_bresp output wire [1 : 0]
s00_axi_bvalid output wire
s00_axi_bready input wire
s00_axi_araddr input wire [C_S00_AXI_ADDR_WIDTH-1 : 0]
s00_axi_arprot input wire [2 : 0]
s00_axi_arvalid input wire
s00_axi_arready output wire
s00_axi_rdata output wire [C_S00_AXI_DATA_WIDTH-1 : 0]
s00_axi_rresp output wire [1 : 0]
s00_axi_rvalid output wire
s00_axi_rready input wire

Signals

Name Type Description
slv_reg_wren_signal wire
slv_reg0 wire [(C_S00_AXI_DATA_WIDTH-1):0] rst
slv_reg1 wire [(C_S00_AXI_DATA_WIDTH-1):0] some source selection
slv_reg2 wire [(C_S00_AXI_DATA_WIDTH-1):0] tsf load value low
slv_reg3 wire [(C_S00_AXI_DATA_WIDTH-1):0] tsf load value high (the rising edge of msb will trigger loading)
slv_reg4 wire [(C_S00_AXI_DATA_WIDTH-1):0] 19:16 band; 15:0 channel
slv_reg5 wire [(C_S00_AXI_DATA_WIDTH-1):0]
slv_reg6 wire [(C_S00_AXI_DATA_WIDTH-1):0] some static config: duration after fcs_strobe to force ch idle
slv_reg7 wire [(C_S00_AXI_DATA_WIDTH-1):0] rssi report offset, and gpio delay ctrl for rssi calculation, and reset the fifo delay
slv_reg8 wire [(C_S00_AXI_DATA_WIDTH-1):0] lbt rssi threshold [11:0]
slv_reg9 wire [(C_S00_AXI_DATA_WIDTH-1):0] xIFS and slot time override for debug
slv_reg10 wire [(C_S00_AXI_DATA_WIDTH-1):0] tx bb RF delay in number of clock
slv_reg11 wire [(C_S00_AXI_DATA_WIDTH-1):0] max number of tx re-transmission
slv_reg16 wire [(C_S00_AXI_DATA_WIDTH-1):0] receive ack time count top -- 2.4GHz
slv_reg17 wire [(C_S00_AXI_DATA_WIDTH-1):0] receive ack time count top -- 5GHz
slv_reg18 wire [(C_S00_AXI_DATA_WIDTH-1):0] before actual ack sending, wait until counter reach this value -- related to SIFS in different band. low 16bit 2.4GHz, high 16bit 5GHz
slv_reg19 wire [(C_S00_AXI_DATA_WIDTH-1):0]
slv_reg20 wire [(C_S00_AXI_DATA_WIDTH-1):0] slice count_total in bit [19:0]; slice selection in bit [21:20]
slv_reg21 wire [(C_S00_AXI_DATA_WIDTH-1):0] slice count_start in bit [19:0]; slice selection in bit [21:20]
slv_reg22 wire [(C_S00_AXI_DATA_WIDTH-1):0] slice count_end in bit [19:0]; slice selection in bit [21:20]
slv_reg26 wire [(C_S00_AXI_DATA_WIDTH-1):0] extra duration in CTS frame (response to RTS)
slv_reg27 wire [(C_S00_AXI_DATA_WIDTH-1):0] filter flags
slv_reg28 wire [(C_S00_AXI_DATA_WIDTH-1):0] self bssid and filter enable
slv_reg29 wire [(C_S00_AXI_DATA_WIDTH-1):0] self bssid and filter enable
slv_reg30 wire [(C_S00_AXI_DATA_WIDTH-1):0] mac addr and filter enable
slv_reg31 wire [(C_S00_AXI_DATA_WIDTH-1):0] mac addr and filter enable
slv_reg58 wire [C_S00_AXI_DATA_WIDTH-1:0] tsf timer low
slv_reg59 wire [C_S00_AXI_DATA_WIDTH-1:0] tsf timer high
slv_reg63 wire [C_S00_AXI_DATA_WIDTH-1:0] FPGA version info
block_rx_dma_to_ps_internal wire
high_tx_allowed_internal0 wire
high_tx_allowed_internal1 wire
high_tx_allowed_internal2 wire
high_tx_allowed_internal3 wire
ch_idle wire
retrans_trigger wire
FC_version wire [1:0] wire [31:0] FC_DI; wire FC_DI_valid;
FC_type wire [1:0]
FC_subtype wire [3:0]
FC_to_ds wire
FC_from_ds wire
FC_more_frag wire
FC_retry wire
FC_power_manage wire
FC_more_data wire
FC_protected_frame wire
FC_order wire
duration wire [15:0]
SC wire [15:0] wire [47:0] addr1; wire addr1_valid; wire [47:0] addr2; wire addr2_valid; wire [47:0] addr3; wire addr3_valid;
SC_valid wire
SC_fragment_number wire [3:0]
SC_sequence_number wire [11:0]
addr4 wire [47:0]
addr4_valid wire
pulse_tx_bb_end wire
iq_rssi_half_db wire [(IQ_RSSI_HALF_DB_WIDTH-1):0]
iq_rssi_half_db_valid wire
rssi_half_db_valid wire
slice_en0 wire wire [4:0] tx_status;
slice_en1 wire
slice_en2 wire
slice_en3 wire
fcs_valid wire
sig_valid wire
ack_cts_is_ongoing wire
send_ack_wait_top wire [14:0]
recv_ack_timeout_top_adj wire [14:0]
recv_ack_sig_valid_timeout_top wire [14:0]
recv_ack_fcs_valid_disable wire
erp_short_slot wire
preamble_sig_time wire [6:0]
ofdm_symbol_time wire [4:0]
slot_time wire [4:0]
sifs_time wire [6:0]
phy_rx_start_delay_time wire [6:0]
cw_exp_used wire [3:0]
cw_exp_dynamic wire [3:0]
tx_try_complete_int wire
backoff_done wire
increase_cw wire
cw_used wire

Instantiations

Description
assign slv_reg60 = rssi_half_db;
assign slv_reg61 = iq_rssi_half_db;

Description
Instantiation of Axi Bus Interface S00_AXI