Ahmet Inan
b54be1c997
moved constructor generator argument to template parameter
2020-06-14 20:43:45 +02:00
Ahmet Inan
538950ca88
improved unrolled K = 2 .. 4 and removed 5 and 6
...
the generic divide and conquer method produces now better code than the
manually unrolled versions for K > 4
2020-06-14 00:48:11 +02:00
Ahmet Inan
9b4998a3c5
use in-place fast Walsh–Hadamard transform
2020-06-14 00:23:11 +02:00
Ahmet Inan
c0ab2902e8
minor cleanup
2020-06-14 00:01:37 +02:00
Ahmet Inan
a0f710f9b7
improved unrolled K = 2 .. 4 and removed 5 and 6
...
the generic divide and conquer method produces now better code than the
manually unrolled versions for K > 4
2020-06-13 22:42:29 +02:00
Ahmet Inan
3596f2943b
use in-place fast Walsh–Hadamard transform
2020-06-13 21:37:31 +02:00
Ahmet Inan
759ca4b896
added tests for Simplex and Hadamard encoders
2020-06-13 13:28:42 +02:00
Ahmet Inan
003d3bbd4f
divide and conquer decoders for K = 2 .. 6
2020-06-12 12:08:47 +02:00
Ahmet Inan
ae13fc7acc
doubled loops
2020-06-12 12:06:41 +02:00
Ahmet Inan
43c5d6a91a
encoder and soft decoder for augmented Hadamard codes
2020-06-11 23:11:31 +02:00
Ahmet Inan
619d8bd3b4
reduced code duplication with lambda update()
2020-06-11 12:29:22 +02:00
Ahmet Inan
8c2e824b4e
moved runtime assert for radius T to compile time
2020-06-11 08:26:15 +02:00
Ahmet Inan
961e5b19fa
only flip worst T bits
2020-06-10 20:16:33 +02:00
Ahmet Inan
77f27a8c5e
made T a template parameter
2020-06-10 19:53:10 +02:00
Ahmet Inan
f8b782033d
print histogram of distances and verify T
2020-06-10 18:32:52 +02:00
Ahmet Inan
fd0555a3e5
added more examples
2020-06-10 14:01:33 +02:00
Ahmet Inan
fd2cdb4d58
do ML decoding if K <= 6 and Chase decoding otherwise
2020-06-10 14:00:27 +02:00
Ahmet Inan
f83c785867
skip metric computation if same as last word
2020-06-09 22:09:56 +02:00
Ahmet Inan
9b1c6cf573
point out soft decoding better
2020-06-09 17:31:31 +02:00
Ahmet Inan
e0423da509
moved ML method to bottom
2020-06-09 14:47:01 +02:00
Ahmet Inan
2be153ca67
only point out decoder errors if decoder is sure
2020-06-09 14:37:55 +02:00
Ahmet Inan
809ab3690b
return -1 if unsure
2020-06-09 14:36:19 +02:00
Ahmet Inan
a33c2082d9
added metric() helper
2020-06-09 13:33:42 +02:00
Ahmet Inan
0ebdada99a
moved initial metric of hard decision to the top
2020-06-09 12:56:48 +02:00
Ahmet Inan
05bd06ec0a
also return codeword unmodulated
2020-06-09 09:24:05 +02:00
Ahmet Inan
5cf0ff2297
added soft Chase decoding for short BCH codes
...
gives about 1.5dB gain while only half the speed of hard decision.
2020-06-08 18:22:54 +02:00
Ahmet Inan
130af67e08
these codes are short ..
2020-06-08 10:15:50 +02:00
Ahmet Inan
5d944ca7a9
added encoder and syndrome decoder for short BCH codes
2020-06-07 18:28:25 +02:00
Ahmet Inan
1b4899c66d
added simplex code encoder and soft decoder entries
2020-06-02 12:09:44 +02:00
Ahmet Inan
65a6feb6e0
divide and conquer unrolled decoders
2020-06-02 11:49:21 +02:00
Ahmet Inan
af29e0434a
increased iterations
2020-06-01 12:08:07 +02:00
Ahmet Inan
994e9dc912
added unrolled decoders for K = 2, 3, 4, 5 and 6
2020-06-01 12:02:36 +02:00
Ahmet Inan
2adfe54c76
added test for msg len 2
2020-06-01 09:31:42 +02:00
Ahmet Inan
620466021b
added encoder and soft decoder for simplex codes
2020-05-31 17:43:29 +02:00
Ahmet Inan
e2b46aed76
added test for the Maximum length sequence
2020-05-29 12:37:23 +02:00
Ahmet Inan
33d34555ae
added bad() to test sequence
2020-05-29 11:33:37 +02:00
Ahmet Inan
2a4681aa74
added reset()
2020-04-22 14:25:13 +02:00
Ahmet Inan
1e7a25e1a8
added maximum length sequence
2020-03-31 23:55:17 +02:00
Ahmet Inan
cf035084e3
rotate write disable bits right
2019-10-03 17:24:28 +02:00
Ahmet Inan
4afdb249da
don't allow mixing of SSE and AVX code
2019-10-02 12:16:20 +02:00
Ahmet Inan
0b37102383
getting rid of obsolete version
2019-10-01 22:17:04 +02:00
Ahmet Inan
e8b43ce90f
relax size of wd_t by two parity links
2019-10-01 16:11:51 +02:00
Ahmet Inan
776a5d4657
streamline check node processing
2019-10-01 15:53:51 +02:00
Ahmet Inan
c6999ccf52
bug fix: we need to handle the last one too
2019-09-30 22:49:03 +02:00
Ahmet Inan
2a52a4bb59
instead of repeating layers, spread the write disables
2019-09-30 17:08:56 +02:00
Ahmet Inan
3688d55b0a
use a write disable mask instead of array
2019-09-30 14:20:39 +02:00
Ahmet Inan
00246f2a69
skip write disable code if no repeat is necessary
2019-09-30 12:44:13 +02:00
Ahmet Inan
bd3bf1d277
use do while instead of for loop
2019-09-29 22:25:55 +02:00
Ahmet Inan
65863e76b6
repeat layers with DDSMs to resolve write conflicts
...
Idea taken from:
HIGH-SPEED CONFLICT-FREE LAYERED LDPC DECODER FOR THE DVB-S2, -T2 AND -C2 STANDARDS
By Cédric Marchand, Laura Conde-Canencia and Emmanuel Boutillon - 2013
2019-09-29 13:06:23 +02:00
Ahmet Inan
488a8cbe2b
keep locations sorted by offset per layer
2019-09-29 10:06:14 +02:00