cyclic reduandcy check generation/detection for 8-psk and 16-QAM

1 view (last 30 days)
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.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!