I used IT++ some time ago for simulating LDPC for DVB-S2. The performance for that standard was about the same as what was reported in the literature, but I tried the same for WiGig and found the performance wasn't very good. The waterfall region was about right, but the error floor was very high. Has anyone else tried using IT++ for short LDPC codes? I'll just paste the entire main.cpp below (please let me know if this is against the rules or etiquette of the site). The code to follow can be compiled with g++ - my full command was 'g++ -O3 -o sim -I /usr/local/include -L/usr/local/lib main.cpp -litpp'
Note: I'm trying to move this from "Open Discussion" into "Help," but this is my first time posting on sourceforge, and I'm not sure how to do that.
1, Check the definition of SNR, which may be different from the literature.
2, Have you ever plotted the EXIT chart instead of BER? Because the error floor is caused by the intersection of CND and VND, if the shapes of them are incorrect, it may be something wrong with your LDPC decoder.
Last edit: li li 2013-04-05
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks, Li. It looks like you're right - the errors tend to accumulate in the parity bits, so error floor excluding the parity bits is much lower (around 2*10^6, 3 orders of magnitude lower). I'll re-post the code with the modifications, just in case it's useful to someone:
I used IT++ some time ago for simulating LDPC for DVB-S2. The performance for that standard was about the same as what was reported in the literature, but I tried the same for WiGig and found the performance wasn't very good. The waterfall region was about right, but the error floor was very high. Has anyone else tried using IT++ for short LDPC codes? I'll just paste the entire main.cpp below (please let me know if this is against the rules or etiquette of the site). The code to follow can be compiled with g++ - my full command was 'g++ -O3 -o sim -I /usr/local/include -L/usr/local/lib main.cpp -litpp'
Note: I'm trying to move this from "Open Discussion" into "Help," but this is my first time posting on sourceforge, and I'm not sure how to do that.
Jason
Last edit: Jason 2013-04-05
1, Check the definition of SNR, which may be different from the literature.
2, Have you ever plotted the EXIT chart instead of BER? Because the error floor is caused by the intersection of CND and VND, if the shapes of them are incorrect, it may be something wrong with your LDPC decoder.
Last edit: li li 2013-04-05
Thanks, Li. It looks like you're right - the errors tend to accumulate in the parity bits, so error floor excluding the parity bits is much lower (around 2*10^6, 3 orders of magnitude lower). I'll re-post the code with the modifications, just in case it's useful to someone: