cyclic reduandcy check generation/detection for 8-psk and 16-QAM
1 view (last 30 days)
Show older comments
Hello,
I've been working on adding cycilc redudancy checks (CRCs) for transmissions through a general FIR channel to calculate packet error rate. I've been using the built-in functions for CRC generation and detection as well as modualtion and demodulation. I've also added an RLS decision-feedback equalizer to help mitigate some of the packet losses. My program so far attains small packet error rates for BPSK and QPSK at high SNR; however, I've been having trouble getting it to work for higher order modulations; specifically, 8-PSK and 16-QAM. The equalizer has been able to attain a BER of 10^-2 at 15 dB for 8-PSK and 10^-1 at 15 dB for 16-QAM.
With these results, I feel that the packet error rates should be slightly better than what they currently are (which is approximately 100% error). I don't know if I'm doing something wrong with the built-in CRC functions or randomd data generation? I've attached the code for the 8-PSK modulation and CRC generation below. Any help would be appreciated.
%8-psk modulation and CRC generation
poly = 'z4+z3+z2+z+1';
crcgenerator = comm.CRCGenerator(poly);
data = randi([0 7],1000,1);
data_test = crcgenerator(data(TrainingLen/2+1:end)); % calculating CRC on portion of testing data
data = vertcat(data(1:TrainingLen/2), data_test); %concatenating training data (first entry)/testing data (second entry generated with CRC) for equalizer.
padd = randi([0 1],FF1+1,1); %padding additional values for equalizer to process CRC bits
data = vertcat (data, padd); %final concatenation for data
modData_orig = pskmod(data,8,0,'gray'); % 8-psk modulation.
0 Comments
Answers (0)
See Also
Categories
Find more on PSK in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!