Agora  1.2.0
Agora project
ldpc_config.h
Go to the documentation of this file.
1 
6 #ifndef LDPC_CONFIG_INC_
7 #define LDPC_CONFIG_INC_
8 
9 #include <cstdint>
10 #include <cstdlib>
11 
12 #include "utils_ldpc.h"
13 
14 class LDPCconfig {
15  public:
16  LDPCconfig(uint16_t bg, uint16_t zc, int16_t max_dec_itr, bool early_term,
17  uint32_t num_cb_len, uint32_t num_cb_codew_len, size_t num_rows,
18  size_t num_blocks_in_symbol)
19  : base_graph_(bg),
21  max_decoder_iter_(max_dec_itr),
22  early_termination_(early_term),
23  num_rows_(num_rows),
24  num_cb_len_(num_cb_len),
25  num_cb_codew_len_(num_cb_codew_len),
26  num_blocks_in_symbol_(num_blocks_in_symbol) {}
27 
28  // Return the number of bytes in the information bit sequence for LDPC
29  // encoding of one code block
30  size_t NumInputBytes() const {
31  return BitsToBytes(
33  }
34 
35  // Return the number of bytes in the encoded LDPC code word
36  size_t NumEncodedBytes() const {
38  this->base_graph_, this->expansion_factor_, this->num_rows_));
39  }
40 
41  inline void NumBlocksInSymbol(size_t num_blocks) {
42  this->num_blocks_in_symbol_ = num_blocks;
43  }
44 
45  /* Accessors */
46  inline uint16_t BaseGraph() const { return this->base_graph_; }
47  inline uint16_t ExpansionFactor() const { return this->expansion_factor_; }
48  inline int16_t MaxDecoderIter() const { return this->max_decoder_iter_; }
49  inline bool EarlyTermination() const { return this->early_termination_; }
50  inline uint32_t NumCbLen() const { return this->num_cb_len_; }
51  inline uint32_t NumCbCodewLen() const { return this->num_cb_codew_len_; }
52  inline size_t NumRows() const { return this->num_rows_; }
53  inline size_t NumBlocksInSymbol() const {
54  return this->num_blocks_in_symbol_;
55  }
56 
57  private:
58  LDPCconfig() = default;
59 
61  uint16_t base_graph_;
66 
70 
72  size_t num_rows_;
74  uint32_t num_cb_len_;
78 };
79 
80 #endif // LDPC_CONFIG_INC_
LDPCconfig::expansion_factor_
uint16_t expansion_factor_
The 5G NR LDPC expansion factor.
Definition: ldpc_config.h:63
LDPCconfig::MaxDecoderIter
int16_t MaxDecoderIter() const
Definition: ldpc_config.h:48
LDPCconfig::EarlyTermination
bool EarlyTermination() const
Definition: ldpc_config.h:49
LdpcNumEncodedBits
static size_t LdpcNumEncodedBits(size_t base_graph, size_t zc, size_t nRows)
Definition: utils_ldpc.h:159
LDPCconfig::NumRows
size_t NumRows() const
Definition: ldpc_config.h:52
BitsToBytes
static size_t BitsToBytes(size_t n_bits)
Definition: utils_ldpc.h:124
LDPCconfig::num_cb_codew_len_
uint32_t num_cb_codew_len_
Number of codeword bits output from LDPC encodings.
Definition: ldpc_config.h:76
LDPCconfig::num_rows_
size_t num_rows_
Number of rows in the LDPC base graph to use.
Definition: ldpc_config.h:72
fmt::v8::bg
text_style bg(detail::color_type background)
Definition: color.h:367
LDPCconfig::early_termination_
bool early_termination_
Definition: ldpc_config.h:69
LDPCconfig::num_cb_len_
uint32_t num_cb_len_
Number of information bits input to LDPC encoding.
Definition: ldpc_config.h:74
LDPCconfig::max_decoder_iter_
int16_t max_decoder_iter_
Maximum number of decoder iterations per codeblock.
Definition: ldpc_config.h:65
LDPCconfig::NumInputBytes
size_t NumInputBytes() const
Definition: ldpc_config.h:30
LDPCconfig::num_blocks_in_symbol_
size_t num_blocks_in_symbol_
Definition: ldpc_config.h:77
LDPCconfig
Definition: ldpc_config.h:14
LDPCconfig::LDPCconfig
LDPCconfig(uint16_t bg, uint16_t zc, int16_t max_dec_itr, bool early_term, uint32_t num_cb_len, uint32_t num_cb_codew_len, size_t num_rows, size_t num_blocks_in_symbol)
Definition: ldpc_config.h:16
LDPCconfig::ExpansionFactor
uint16_t ExpansionFactor() const
Definition: ldpc_config.h:47
LdpcNumInputBits
static size_t LdpcNumInputBits(size_t base_graph, size_t zc)
Definition: utils_ldpc.h:139
LDPCconfig::NumCbLen
uint32_t NumCbLen() const
Definition: ldpc_config.h:50
LDPCconfig::BaseGraph
uint16_t BaseGraph() const
Definition: ldpc_config.h:46
LDPCconfig::NumEncodedBytes
size_t NumEncodedBytes() const
Definition: ldpc_config.h:36
LDPCconfig::NumBlocksInSymbol
size_t NumBlocksInSymbol() const
Definition: ldpc_config.h:53
LDPCconfig::NumBlocksInSymbol
void NumBlocksInSymbol(size_t num_blocks)
Definition: ldpc_config.h:41
LDPCconfig::NumCbCodewLen
uint32_t NumCbCodewLen() const
Definition: ldpc_config.h:51
LDPCconfig::LDPCconfig
LDPCconfig()=default
LDPCconfig::base_graph_
uint16_t base_graph_
The 5G NR LDPC base graph (one or two)
Definition: ldpc_config.h:61
utils_ldpc.h