估算硬决策和软决策维特比解码的误码率
估计AWGN中硬决策和软决策维特比译码器的误码率(BER)性能。将其性能与未编码的64-QAM链路进行比较。
设置仿真参数。
rng默认的M = 64;%调制顺序k = log2 (M);%位元/符号EbNoVec = (4:10) ';% Eb/无值(dB)numSymPerFrame = 1000;%每帧QAM符号的数量
初始化BER结果向量。
berEstSoft = 0(大小(EbNoVec));berEstHard = 0(大小(EbNoVec));
为速率设置网格结构和回溯深度1/2
、约束长度7
卷积码。
Trellis = poly2trellis(7,[171 133]);台= 32;率= 1/2;
主处理循环执行以下步骤:
生成二进制数据
对数据进行卷积编码
对数据符号应用QAM调制。指定传输信号的单位平均功率
通过AWGN通道传递调制信号
使用硬决策和近似LLR方法解调接收信号。指定接收信号的单位平均功率
Viterbi使用硬的和非量化的方法解码信号
计算误码数
的而
循环继续处理数据,直到遇到100个错误或
位传输。
为n = 1:长度(EbNoVec)%将Eb/No转换为SNRsnrdB = EbNoVec(n) + 10*log10(k*rate);单位平均信号功率的%噪声方差计算noiseVar = 10 ^ (-snrdB / 10);%重置错误和位计数器[numErrsSoft, numErrsHard numBits] =交易(0);而numErrsSoft < 100 && numBits < 1e7%生成二进制数据并转换为符号dataIn = randi([0 1],numSymPerFrame*k,1);对数据进行卷积编码dataEnc = convenc (dataIn,格子);% QAM调制txSig = qammod (dataEnc, M,…InputType =“一点”,…UnitAveragePower = true);%通过AWGN通道rxSig = awgn (txSig snrdB,“测量”);使用硬决策(位)和解调噪声信号%软决策(近似LLR)接近。rxDataHard = qamdemod (rxSig, M,…OutputType =“一点”,…UnitAveragePower = true);rxDataSoft = qamdemod (rxSig, M,…OutputType =“approxllr”,…UnitAveragePower = true,…NoiseVariance = noiseVar);% Viterbi解码解调数据dataHard = vitdec (rxDataHard,格子、台“合同”,“硬”);dataSoft = vitdec (rxDataSoft,格子、台“合同”,“unquant”);%计算帧中的误码数。%调整解码延迟,等于%回溯深度。numErrsInFrameHard =…biterr (dataIn (1: end-tbl), dataHard(台+ 1:结束);numErrsInFrameSoft =…biterr (dataIn (1: end-tbl), dataSoft(台+ 1:结束);%增加错误和位计数器numErrsHard = numErrsHard + numErrsInFrameHard;numErrsSoft = numErrsSoft + numErrsInFrameSoft;numBits = numBits + numSymPerFrame*k;结束%估计两种方法的误码率berEstSoft (n) = numErrsSoft / numBits;berEstHard (n) = numErrsHard / numBits;结束
绘制估计的软硬BER数据。绘制非编码64-QAM信道的理论性能图。
semilogy (EbNoVec [berEstSoft berEstHard),“- *”)举行在semilogy (EbNoVec berawgn (EbNoVec“qam”传说,M)) (“软”,“硬”,的未编码的,“位置”,“最佳”)网格包含(“Eb /不(dB)”) ylabel (的误比特率)
不出所料,软决策解码产生了最好的结果。