mirror of
https://github.com/aicodix/modem.git
synced 2026-04-27 22:35:41 +00:00
start parity bits early, as we use a crc at the end
This commit is contained in:
parent
d69dd7aa03
commit
2d765a78fd
2 changed files with 38 additions and 2 deletions
20
decode.cc
20
decode.cc
|
|
@ -378,6 +378,8 @@ struct Decoder
|
|||
if (!okay || !oper_mode)
|
||||
return;
|
||||
|
||||
int parity_stride = 0;
|
||||
int first_parity = 0;
|
||||
int data_bits = 0;
|
||||
int cons_rows = 0;
|
||||
int comb_cols = 0;
|
||||
|
|
@ -390,6 +392,8 @@ struct Decoder
|
|||
code_order = 12;
|
||||
code_cols = 256;
|
||||
data_bits = 2048;
|
||||
parity_stride = 31;
|
||||
first_parity = 3;
|
||||
frozen_bits = frozen_4096_2147;
|
||||
break;
|
||||
case 24:
|
||||
|
|
@ -399,6 +403,8 @@ struct Decoder
|
|||
code_order = 13;
|
||||
code_cols = 256;
|
||||
data_bits = 4096;
|
||||
parity_stride = 31;
|
||||
first_parity = 5;
|
||||
frozen_bits = frozen_8192_4261;
|
||||
break;
|
||||
case 25:
|
||||
|
|
@ -408,6 +414,8 @@ struct Decoder
|
|||
code_order = 14;
|
||||
code_cols = 256;
|
||||
data_bits = 8192;
|
||||
parity_stride = 31;
|
||||
first_parity = 9;
|
||||
frozen_bits = frozen_16384_8489;
|
||||
break;
|
||||
case 26:
|
||||
|
|
@ -417,6 +425,8 @@ struct Decoder
|
|||
code_order = 12;
|
||||
code_cols = 256;
|
||||
data_bits = 2048;
|
||||
parity_stride = 31;
|
||||
first_parity = 3;
|
||||
frozen_bits = frozen_4096_2147;
|
||||
break;
|
||||
case 27:
|
||||
|
|
@ -426,6 +436,8 @@ struct Decoder
|
|||
code_order = 13;
|
||||
code_cols = 256;
|
||||
data_bits = 4096;
|
||||
parity_stride = 31;
|
||||
first_parity = 5;
|
||||
frozen_bits = frozen_8192_4261;
|
||||
break;
|
||||
case 28:
|
||||
|
|
@ -435,6 +447,8 @@ struct Decoder
|
|||
code_order = 14;
|
||||
code_cols = 256;
|
||||
data_bits = 8192;
|
||||
parity_stride = 31;
|
||||
first_parity = 9;
|
||||
frozen_bits = frozen_16384_8489;
|
||||
break;
|
||||
case 29:
|
||||
|
|
@ -444,6 +458,8 @@ struct Decoder
|
|||
code_order = 13;
|
||||
code_cols = 273;
|
||||
data_bits = 4096;
|
||||
parity_stride = 31;
|
||||
first_parity = 5;
|
||||
frozen_bits = frozen_8192_4261;
|
||||
break;
|
||||
case 30:
|
||||
|
|
@ -453,6 +469,8 @@ struct Decoder
|
|||
code_order = 14;
|
||||
code_cols = 273;
|
||||
data_bits = 8192;
|
||||
parity_stride = 31;
|
||||
first_parity = 9;
|
||||
frozen_bits = frozen_16384_8489;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -566,7 +584,7 @@ struct Decoder
|
|||
for (int i = code_cols * cons_rows * mod_bits; i < bits_max; ++i)
|
||||
code[i] = 0;
|
||||
shuffle(code);
|
||||
polardec(metric, mesg, code, frozen_bits, code_order, 31);
|
||||
polardec(metric, mesg, code, frozen_bits, code_order, parity_stride, first_parity);
|
||||
int order[mesg_type::SIZE];
|
||||
for (int k = 0; k < mesg_type::SIZE; ++k)
|
||||
order[k] = k;
|
||||
|
|
|
|||
20
encode.cc
20
encode.cc
|
|
@ -249,6 +249,8 @@ struct Encoder
|
|||
oper_mode(oper_mode)
|
||||
{
|
||||
const uint32_t *frozen_bits = nullptr;
|
||||
int parity_stride = 0;
|
||||
int first_parity = 0;
|
||||
int code_cols = 0;
|
||||
int comb_cols = 0;
|
||||
int comb_dist = 1;
|
||||
|
|
@ -266,6 +268,8 @@ struct Encoder
|
|||
code_order = 12;
|
||||
code_cols = 256;
|
||||
data_bits = 2048;
|
||||
parity_stride = 31;
|
||||
first_parity = 3;
|
||||
reserved_tones = 0;
|
||||
frozen_bits = frozen_4096_2147;
|
||||
break;
|
||||
|
|
@ -276,6 +280,8 @@ struct Encoder
|
|||
code_order = 13;
|
||||
code_cols = 256;
|
||||
data_bits = 4096;
|
||||
parity_stride = 31;
|
||||
first_parity = 5;
|
||||
reserved_tones = 0;
|
||||
frozen_bits = frozen_8192_4261;
|
||||
break;
|
||||
|
|
@ -286,6 +292,8 @@ struct Encoder
|
|||
code_order = 14;
|
||||
code_cols = 256;
|
||||
data_bits = 8192;
|
||||
parity_stride = 31;
|
||||
first_parity = 9;
|
||||
reserved_tones = 0;
|
||||
frozen_bits = frozen_16384_8489;
|
||||
break;
|
||||
|
|
@ -296,6 +304,8 @@ struct Encoder
|
|||
code_order = 12;
|
||||
code_cols = 256;
|
||||
data_bits = 2048;
|
||||
parity_stride = 31;
|
||||
first_parity = 3;
|
||||
reserved_tones = 8;
|
||||
frozen_bits = frozen_4096_2147;
|
||||
break;
|
||||
|
|
@ -306,6 +316,8 @@ struct Encoder
|
|||
code_order = 13;
|
||||
code_cols = 256;
|
||||
data_bits = 4096;
|
||||
parity_stride = 31;
|
||||
first_parity = 5;
|
||||
reserved_tones = 8;
|
||||
frozen_bits = frozen_8192_4261;
|
||||
break;
|
||||
|
|
@ -316,6 +328,8 @@ struct Encoder
|
|||
code_order = 14;
|
||||
code_cols = 256;
|
||||
data_bits = 8192;
|
||||
parity_stride = 31;
|
||||
first_parity = 9;
|
||||
reserved_tones = 8;
|
||||
frozen_bits = frozen_16384_8489;
|
||||
break;
|
||||
|
|
@ -326,6 +340,8 @@ struct Encoder
|
|||
code_order = 13;
|
||||
code_cols = 273;
|
||||
data_bits = 4096;
|
||||
parity_stride = 31;
|
||||
first_parity = 5;
|
||||
reserved_tones = 15;
|
||||
frozen_bits = frozen_8192_4261;
|
||||
break;
|
||||
|
|
@ -336,6 +352,8 @@ struct Encoder
|
|||
code_order = 14;
|
||||
code_cols = 273;
|
||||
data_bits = 8192;
|
||||
parity_stride = 31;
|
||||
first_parity = 9;
|
||||
reserved_tones = 15;
|
||||
frozen_bits = frozen_16384_8489;
|
||||
break;
|
||||
|
|
@ -372,7 +390,7 @@ struct Encoder
|
|||
crc1(inp[i]);
|
||||
for (int i = 0; i < 32; ++i)
|
||||
mesg[i+data_bits] = nrz((crc1()>>i)&1);
|
||||
polarenc(code, mesg, frozen_bits, code_order, 31);
|
||||
polarenc(code, mesg, frozen_bits, code_order, parity_stride, first_parity);
|
||||
shuffle(code);
|
||||
for (int i = 0; i < cons_cols; ++i)
|
||||
prev[i] = fdom[bin(i+code_off)];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue