cuPHY  0.1
CUDA PHY Layer Acceration Library
Data Structures | Functions
PUCCH Receiver

This section describes the structs and functions of the uplink cuPHY control channel receiver. Currently only PUCCH Format 1 is supported. More...

Data Structures

struct  PucchParams
 Struct that tracks all necessary parameters for PUCCH receiver processing. It also includes a PucchUeCellParams struct per UE. More...
 
struct  PucchUeCellParams
 Struct that tracks user equipment (UE) specific PUCCH parameters. More...
 

Functions

void cuphyCopyPucchParamsToWorkspace (const PucchParams *h_pucch_params, void *pucch_workspace, cuphyDataType_t pucch_complex_data_type)
 : Copy PUCCH params from the CPU to the allocated PUCCH receiver workspace. The location of the struct in the workspace is implementation dependent. More...
 
void cuphyPucchReceiver (cuphyTensorDescriptor_t data_rx_desc, const void *data_rx_addr, cuphyTensorDescriptor_t bit_estimates_desc, void *bit_estimates_addr, const uint32_t pucch_format, const PucchParams *pucch_params, cudaStream_t strm, void *pucch_workspace, size_t allocated_workspace_size, cuphyDataType_t pucch_complex_data_type)
 : Launch PUCCH receiver kernels that do processing at receive end of PUCCH (Physical Uplink Control Channel). More...
 
size_t cuphyPucchReceiverWorkspaceSize (int num_ues, int num_bs_antennas, int num_symbols, cuphyDataType_t pucch_complex_data_type)
 : Return workspace size, in bytes, needed for all configuration parameters and intermediate computations of the PUCCH receiver. Does not allocate any space. More...
 
void cuphyUpdatePucchParamsFormat1 (PucchParams *pucch_params, const gnb_pars *gnb_params, const tb_pars *tb_params)
 : Partially update PucchParams struct for Format 1 based on tb_pars and gnb_pars. NB: the following PucchParams fields are NOT updated in this function: (1) num_pucch_ue, (2) Wf, (3) Wt_cell, (4) low_PAPR_seq_index, (5) hopping_id, and (6) the cell_params array. More...
 

Detailed Description

Function Documentation

◆ cuphyCopyPucchParamsToWorkspace()

void cuphyCopyPucchParamsToWorkspace ( const PucchParams h_pucch_params,
void *  pucch_workspace,
cuphyDataType_t  pucch_complex_data_type 
)
Parameters
[in]h_pucch_paramspointer to PUCCH configuration parameters on the host.
[in]pucch_workspacepointer to the pre-allocated pucch receiver's workspace on the device.
[in]pucch_complex_data_typePUCCH receiver data type identifier: CUPHY_C_32F or CUPHY_C_16F

◆ cuphyPucchReceiver()

void cuphyPucchReceiver ( cuphyTensorDescriptor_t  data_rx_desc,
const void *  data_rx_addr,
cuphyTensorDescriptor_t  bit_estimates_desc,
void *  bit_estimates_addr,
const uint32_t  pucch_format,
const PucchParams pucch_params,
cudaStream_t  strm,
void *  pucch_workspace,
size_t  allocated_workspace_size,
cuphyDataType_t  pucch_complex_data_type 
)
Parameters
[in]data_rx_descinput tensor descriptor; dimensions: Nf x Nt x L_BS
[in]data_rx_addrpointer to input tensor data (i.e., base station received signal); each tensor element is a complex number
[in]bit_estimates_descoutput tensor descriptor; dimensions nUe_pucch x 2
[in,out]bit_estimates_addrpre-allocated device buffer with bit estimates
[in]pucch_formatPUCCH format; currently only format 1 is supported.
[in,out]pucch_paramspointer to PUCCH config params.
[in]strmCUDA stream for kernel launch.
[in,out]pucch_workspaceaddress of user allocated workspace pucch params should have been already copied there via a cuphyCopyPucchParamsToWorkspace() call.
[in]allocated_workspace_sizesize of pucch_workspace
[in]pucch_complex_data_typePUCCH receiver data type identifier: CUPHY_C_32F or CUPHY_C_16F

◆ cuphyPucchReceiverWorkspaceSize()

size_t cuphyPucchReceiverWorkspaceSize ( int  num_ues,
int  num_bs_antennas,
int  num_symbols,
cuphyDataType_t  pucch_complex_data_type 
)
Parameters
[in]num_uesnumber of User Equipement (UEs)
[in]num_bs_antennasnumber of Base Station (BS) antennas
[in]num_symbolsnumber of symbols; sum of DMRS and data symbols.
[in]pucch_complex_data_typePUCCH receiver data type identifier: CUPHY_C_32F or CUPHY_C_16F
Returns
workspace size in bytes

◆ cuphyUpdatePucchParamsFormat1()

void cuphyUpdatePucchParamsFormat1 ( PucchParams pucch_params,
const gnb_pars gnb_params,
const tb_pars tb_params 
)
Parameters
[in,out]pucch_paramspointer to PUCCH configuration parameters on the host.
[in]gnb_paramspointer to gnb_pars struct on the host.
[in]tb_paramspointer to tb_pars struct on the host.