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

1 回表示 (過去 30 日間)
Noel Teku
Noel Teku 2020 年 5 月 19 日
編集済み: Noel Teku 2020 年 5 月 19 日
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 件)

カテゴリ

Help Center および File ExchangePSK についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by