Commit 37bb310a authored by WANG Tsu-Han's avatar WANG Tsu-Han

redefine conflict resolve

parent 527c3bcd
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
#include <unistd.h> #include <unistd.h>
#include <cuda_runtime.h> #include <cuda_runtime.h>
#include <cuda.h> #include <cuda.h>
#include "PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_types.h" #include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h"
#include "PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_defs.h" #include "PHY/CODING/nrLDPC_decoder/nrLDPCdecoder_defs.h"
#include "bgs/BG1_I0" #include "bgs/BG1_I0"
#include "bgs/BG1_I1" #include "bgs/BG1_I1"
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
* \author Sebastian Wagner (TCL Communications) Email: <mailto:sebastian.wagner@tcl.com> * \author Sebastian Wagner (TCL Communications) Email: <mailto:sebastian.wagner@tcl.com>
* \date 07-12-2018 * \date 07-12-2018
* \version 1.0 * \version 1.0
* \note * \note
* \warning * \warning
*/ */
...@@ -32,8 +32,9 @@ ...@@ -32,8 +32,9 @@
#define __NR_LDPC_DECODER_LYC__NR_LDPC_INIT_MEM__H__ #define __NR_LDPC_DECODER_LYC__NR_LDPC_INIT_MEM__H__
#include <stdlib.h> #include <stdlib.h>
#include "nrLDPC_defs.h" #include "PHY/CODING/nrLDPC_decoder/nrLDPC_types.h"
#include "nrLDPC_types.h" #include "PHY/CODING/nrLDPC_decoder/nrLDPCdecoder_defs.h"
#include "PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h"
#ifndef malloc32_clear #ifndef malloc32_clear
/** /**
...@@ -41,12 +42,12 @@ ...@@ -41,12 +42,12 @@
\param size Input size in bytes \param size Input size in bytes
\return Pointer to memory \return Pointer to memory
*/ */
static inline void* malloc32_clear(size_t size) // static inline void* malloc32_clear(size_t size)
{ // {
void* ptr = (void*) memalign(32, size+32); // void* ptr = (void*) memalign(32, size+32);
memset(ptr, 0, size); // memset(ptr, 0, size);
return ptr; // return ptr;
} // }
#endif #endif
/** /**
...@@ -55,32 +56,32 @@ static inline void* malloc32_clear(size_t size) ...@@ -55,32 +56,32 @@ static inline void* malloc32_clear(size_t size)
\param p_lut Pointer to decoder LUTs \param p_lut Pointer to decoder LUTs
\return Number of LLR values \return Number of LLR values
*/ */
static inline t_nrLDPC_procBuf* nrLDPC_init_mem(void) // static inline t_nrLDPC_procBuf* nrLDPC_init_mem(void)
{ // {
t_nrLDPC_procBuf* p_procBuf = (t_nrLDPC_procBuf*) malloc32_clear(sizeof(t_nrLDPC_procBuf)); // t_nrLDPC_procBuf* p_procBuf = (t_nrLDPC_procBuf*) malloc32_clear(sizeof(t_nrLDPC_procBuf));
if (p_procBuf) // if (p_procBuf)
{ // {
p_procBuf->cnProcBuf = (int8_t*) malloc32_clear(NR_LDPC_SIZE_CN_PROC_BUF*sizeof(int8_t)); // p_procBuf->cnProcBuf = (int8_t*) malloc32_clear(NR_LDPC_SIZE_CN_PROC_BUF*sizeof(int8_t));
p_procBuf->cnProcBufRes = (int8_t*) malloc32_clear(NR_LDPC_SIZE_CN_PROC_BUF*sizeof(int8_t)); // p_procBuf->cnProcBufRes = (int8_t*) malloc32_clear(NR_LDPC_SIZE_CN_PROC_BUF*sizeof(int8_t));
p_procBuf->bnProcBuf = (int8_t*) malloc32_clear(NR_LDPC_SIZE_BN_PROC_BUF*sizeof(int8_t)); // p_procBuf->bnProcBuf = (int8_t*) malloc32_clear(NR_LDPC_SIZE_BN_PROC_BUF*sizeof(int8_t));
p_procBuf->bnProcBufRes = (int8_t*) malloc32_clear(NR_LDPC_SIZE_BN_PROC_BUF*sizeof(int8_t)); // p_procBuf->bnProcBufRes = (int8_t*) malloc32_clear(NR_LDPC_SIZE_BN_PROC_BUF*sizeof(int8_t));
p_procBuf->llrRes = (int8_t*) malloc32_clear(NR_LDPC_MAX_NUM_LLR *sizeof(int8_t)); // p_procBuf->llrRes = (int8_t*) malloc32_clear(NR_LDPC_MAX_NUM_LLR *sizeof(int8_t));
p_procBuf->llrProcBuf = (int8_t*) malloc32_clear(NR_LDPC_MAX_NUM_LLR *sizeof(int8_t)); // p_procBuf->llrProcBuf = (int8_t*) malloc32_clear(NR_LDPC_MAX_NUM_LLR *sizeof(int8_t));
} // }
return(p_procBuf); // return(p_procBuf);
} // }
static inline void nrLDPC_free_mem(t_nrLDPC_procBuf* p_procBuf) // static inline void nrLDPC_free_mem(t_nrLDPC_procBuf* p_procBuf)
{ // {
free(p_procBuf->cnProcBuf); // free(p_procBuf->cnProcBuf);
free(p_procBuf->cnProcBufRes); // free(p_procBuf->cnProcBufRes);
free(p_procBuf->bnProcBuf); // free(p_procBuf->bnProcBuf);
free(p_procBuf->bnProcBufRes); // free(p_procBuf->bnProcBufRes);
free(p_procBuf->llrRes); // free(p_procBuf->llrRes);
free(p_procBuf->llrProcBuf); // free(p_procBuf->llrProcBuf);
free(p_procBuf); // free(p_procBuf);
} // }
#endif #endif
...@@ -31,76 +31,5 @@ ...@@ -31,76 +31,5 @@
#ifndef __NR_LDPC_DECODER_LYC__NR_LDPC_TYPES__H__ #ifndef __NR_LDPC_DECODER_LYC__NR_LDPC_TYPES__H__
#define __NR_LDPC_DECODER_LYC__NR_LDPC_TYPES__H__ #define __NR_LDPC_DECODER_LYC__NR_LDPC_TYPES__H__
#include "PHY/TOOLS/time_meas.h"
#include "nrLDPC_defs.h"
// ==============================================================================
// TYPES
/**
Structure containing the pointers to the LUTs.
*/
typedef struct nrLDPC_lut {
const uint32_t* startAddrCnGroups; /**< Start addresses for CN groups in CN processing buffer */
const uint8_t* numCnInCnGroups; /**< Number of CNs in every CN group */
const uint8_t* numBnInBnGroups; /**< Number of CNs in every BN group */
const uint32_t* startAddrBnGroups; /**< Start addresses for BN groups in BN processing buffer */
const uint16_t* startAddrBnGroupsLlr; /**< Start addresses for BN groups in LLR processing buffer */
const uint16_t** circShift[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT for circular shift values for all CN groups and Zs */
const uint32_t** startAddrBnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT of start addresses of CN groups in BN proc buffer */
const uint8_t** bnPosBnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT of BN positions in BG for CN groups */
const uint16_t* llr2llrProcBufAddr; /**< LUT for transferring input LLRs to LLR processing buffer */
const uint8_t* llr2llrProcBufBnPos; /**< LUT BN position in BG */
const uint8_t** posBnInCnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT for llr2cnProcBuf */
} t_nrLDPC_lut;
/**
Enum with possible LDPC output formats.
*/
typedef enum nrLDPC_outMode {
nrLDPC_outMode_BIT, /**< 32 bits per uint32_t output */
nrLDPC_outMode_BITINT8, /**< 1 bit per int8_t output */
nrLDPC_outMode_LLRINT8 /**< Single LLR value per int8_t output */
} e_nrLDPC_outMode;
/**
Structure containing LDPC decoder parameters.
*/
typedef struct nrLDPC_dec_params {
uint8_t BG; /**< Base graph */
uint16_t Z; /**< Lifting size */
uint8_t R; /**< Decoding rate: Format 15,13,... for code rates 1/5, 1/3,... */
uint8_t numMaxIter; /**< Maximum number of iterations */
e_nrLDPC_outMode outMode; /**< Output format */
} t_nrLDPC_dec_params;
/**
Structure containing LDPC decoder processing time statistics.
*/
typedef struct nrLDPC_time_stats {
time_stats_t llr2llrProcBuf; /**< Statistics for function llr2llrProcBuf */
time_stats_t llr2CnProcBuf; /**< Statistics for function llr2CnProcBuf */
time_stats_t cnProc; /**< Statistics for function cnProc */
time_stats_t cnProcPc; /**< Statistics for function cnProcPc */
time_stats_t bnProcPc; /**< Statistics for function bnProcPc */
time_stats_t bnProc; /**< Statistics for function bnProc */
time_stats_t cn2bnProcBuf; /**< Statistics for function cn2bnProcBuf */
time_stats_t bn2cnProcBuf; /**< Statistics for function bn2cnProcBuf */
time_stats_t llrRes2llrOut; /**< Statistics for function llrRes2llrOut */
time_stats_t llr2bit; /**< Statistics for function llr2bit */
time_stats_t total; /**< Statistics for total processing time */
} t_nrLDPC_time_stats;
/**
Structure containing the processing buffers
*/
typedef struct nrLDPC_procBuf {
int8_t* cnProcBuf; /**< CN processing buffer */
int8_t* cnProcBufRes; /**< Buffer for CN processing results */
int8_t* bnProcBuf; /**< BN processing buffer */
int8_t* bnProcBufRes; /**< Buffer for BN processing results */
int8_t* llrRes; /**< Buffer for LLR results */
int8_t* llrProcBuf; /**< LLR processing buffer */
} t_nrLDPC_procBuf;
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment