Overview
decode butterfly for one bit in polar decoder graph.
Dispatcher Prototype
volk_32f_8u_polarbutterfly_32f(float* llrs, unsigned char* u,
const int frame_size, const int frame_exp,
const int stage, const int u_num, const int row)
Inputs
- llrs: buffer with LLRs. contains received LLRs and already decoded LLRs.
- u: previously decoded bits
- frame_size: = 2 ^ frame_exp.
- frame_exp: power of 2 value for frame size.
- stage: value in range [0, frame_exp). start stage algorithm goes deeper.
- u_num: bit number currently to be decoded
- row: row in graph to start decoding.
Outputs
- frame: necessary LLRs for bit [u_num] to be decoded
Example
int frame_exp = 10;
int frame_size = 0x01 << frame_exp;
float* llrs = (
float*)
volk_malloc(
sizeof(
float) * frame_size * (frame_exp + 1),
volk_get_alignment());
unsigned char* u = (
unsigned char)
volk_malloc(
sizeof(
unsigned
char) * frame_size * (frame_exp + 1), volk_get_alignment());
{some_function_to_write_encoded_bits_to_float_llrs(llrs + frame_size * frame_exp,
data)};
unsigned int u_num;
for(u_num = 0; u_num < frame_size; u_num++){
u_num);
u[u_num] = llrs[u_num] > 0 ? 0 : 1;
}