mirror of
https://github.com/aicodix/modem.git
synced 2026-04-27 14:30:34 +00:00
added code rates 2/3, 3/4 and 5/6
scaling factors for erasure probability derived from 1/2-rate code
This commit is contained in:
parent
c1ecc959d1
commit
47e8aaf662
3 changed files with 140 additions and 12 deletions
87
common.hh
87
common.hh
|
|
@ -152,6 +152,93 @@ struct Common
|
|||
default:
|
||||
return false;
|
||||
}
|
||||
} else if (code_rate == 1) {
|
||||
switch (code_order) {
|
||||
case 11:
|
||||
data_bits = 1368;
|
||||
frozen_bits = frozen_2048_1400;
|
||||
break;
|
||||
case 12:
|
||||
data_bits = 2736;
|
||||
frozen_bits = frozen_4096_2768;
|
||||
break;
|
||||
case 13:
|
||||
data_bits = 5472;
|
||||
frozen_bits = frozen_8192_5504;
|
||||
break;
|
||||
case 14:
|
||||
data_bits = 10944;
|
||||
frozen_bits = frozen_16384_10976;
|
||||
break;
|
||||
case 15:
|
||||
data_bits = 21888;
|
||||
frozen_bits = frozen_32768_21920;
|
||||
break;
|
||||
case 16:
|
||||
data_bits = 43776;
|
||||
frozen_bits = frozen_65536_43808;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
} else if (code_rate == 2) {
|
||||
switch (code_order) {
|
||||
case 11:
|
||||
data_bits = 1536;
|
||||
frozen_bits = frozen_2048_1568;
|
||||
break;
|
||||
case 12:
|
||||
data_bits = 3072;
|
||||
frozen_bits = frozen_4096_3104;
|
||||
break;
|
||||
case 13:
|
||||
data_bits = 6144;
|
||||
frozen_bits = frozen_8192_6176;
|
||||
break;
|
||||
case 14:
|
||||
data_bits = 12288;
|
||||
frozen_bits = frozen_16384_12320;
|
||||
break;
|
||||
case 15:
|
||||
data_bits = 24576;
|
||||
frozen_bits = frozen_32768_24608;
|
||||
break;
|
||||
case 16:
|
||||
data_bits = 49152;
|
||||
frozen_bits = frozen_65536_49184;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
} else if (code_rate == 3) {
|
||||
switch (code_order) {
|
||||
case 11:
|
||||
data_bits = 1704;
|
||||
frozen_bits = frozen_2048_1736;
|
||||
break;
|
||||
case 12:
|
||||
data_bits = 3408;
|
||||
frozen_bits = frozen_4096_3440;
|
||||
break;
|
||||
case 13:
|
||||
data_bits = 6816;
|
||||
frozen_bits = frozen_8192_6848;
|
||||
break;
|
||||
case 14:
|
||||
data_bits = 13632;
|
||||
frozen_bits = frozen_16384_13664;
|
||||
break;
|
||||
case 15:
|
||||
data_bits = 27264;
|
||||
frozen_bits = frozen_32768_27296;
|
||||
break;
|
||||
case 16:
|
||||
data_bits = 54528;
|
||||
frozen_bits = frozen_65536_54560;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
std::cerr << "code rate " << code_rate << " not supported yet" << std::endl;
|
||||
return false;
|
||||
|
|
|
|||
35
freezer.cc
35
freezer.cc
|
|
@ -27,12 +27,35 @@ void code(int N, int K, double P)
|
|||
|
||||
int main()
|
||||
{
|
||||
code<16>(65536, 32768+32, 0.42);
|
||||
code<15>(32768, 16384+32, 0.40);
|
||||
code<14>(16384, 8192+32, 0.39);
|
||||
code<13>(8192, 4096+32, 0.38);
|
||||
code<12>(4096, 2048+32, 0.37);
|
||||
code<11>(2048, 1024+32, 0.34);
|
||||
// call sign and mode with 16 bit CRC
|
||||
code<8>(256, 47+8+16, 0.5);
|
||||
// 1/2-rate payload with 32 bit CRC
|
||||
code<11>(2048, 1024+32, 0.34);
|
||||
code<12>(4096, 2048+32, 0.37);
|
||||
code<13>(8192, 4096+32, 0.38);
|
||||
code<14>(16384, 8192+32, 0.39);
|
||||
code<15>(32768, 16384+32, 0.40);
|
||||
code<16>(65536, 32768+32, 0.42);
|
||||
// 2/3-rate payload with 32 bit CRC
|
||||
code<11>(2048, 1368+32, 0.22);
|
||||
code<12>(4096, 2736+32, 0.24);
|
||||
code<13>(8192, 5472+32, 0.25);
|
||||
code<14>(16384, 10944+32, 0.26);
|
||||
code<15>(32768, 21888+32, 0.27);
|
||||
code<16>(65536, 43776+32, 0.28);
|
||||
// 3/4-rate payload with 32 bit CRC
|
||||
code<11>(2048, 1536+32, 0.16);
|
||||
code<12>(4096, 3072+32, 0.18);
|
||||
code<13>(8192, 6144+32, 0.19);
|
||||
code<14>(16384, 12288+32, 0.19);
|
||||
code<15>(32768, 24576+32, 0.20);
|
||||
code<16>(65536, 49152+32, 0.21);
|
||||
// 5/6-rate payload with 32 bit CRC
|
||||
code<11>(2048, 1704+32, 0.11);
|
||||
code<12>(4096, 3408+32, 0.12);
|
||||
code<13>(8192, 6816+32, 0.13);
|
||||
code<14>(16384, 13632+32, 0.13);
|
||||
code<15>(32768, 27264+32, 0.13);
|
||||
code<16>(65536, 54528+32, 0.14);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue