MSCBSC 移動通信論壇
搜索
登錄注冊
網(wǎng)絡(luò)優(yōu)化工程師招聘專欄 4G/LTE通信工程師最新職位列表 通信實習(xí)生/應(yīng)屆生招聘職位

  • 閱讀:2773
  • 回復(fù):0
基于CRC早期停止判斷的Turbo譯碼算法
destild
新手上路
鎵嬫満鍙風(fēng)爜宸查獙璇? style=


 發(fā)短消息    關(guān)注Ta 

積分 -1097
帖子 60
威望 13021 個
禮品券 0 個
專家指數(shù) -1397
注冊 2017-1-19
專業(yè)方向 
回答問題數(shù) 0
回答被采納數(shù) 0
回答采納率 0%
 
發(fā)表于 2018-12-04 15:01:57  只看樓主 

原文 Understanding LTE with MATLAB  ,作者Houman Zarrinkoub,本文是對于該書的翻譯,書中的專業(yè)性詞匯給出了英文原文,圖和表的排版都是參考原文,翻譯不準確的地方請讀者多多包涵。本文僅限于個人學(xué)習(xí),研究,交流,不得用于其他商業(yè)用途!



4.5 早期終止機制

在turbo譯碼器中執(zhí)行的迭代次數(shù)是其主要特征之一。在實現(xiàn)高效的Turbo解碼器時,我們面臨一個明確的折衷。一方面,turbo譯碼器的精度和性能直接關(guān)系到其迭代次數(shù)。迭代越多,結(jié)果就越準確。另一方面,turbo譯碼器的計算復(fù)雜度與其迭代次數(shù)也成正比。


LTE規(guī)范允許通過設(shè)計早期終止來解決這種折衷的有效方法。該機制與Turbo編碼器相結(jié)合。通過在turbo編碼器的輸入端附加CRC校驗綜合癥,我們可以在Turbo解碼器的迭代結(jié)束時檢測任何比特錯誤的存在與否。我們現(xiàn)在可以選擇在CRC檢查表明沒有檢測到錯誤時提前停止解碼,而不是按照固定的解碼迭代次數(shù)來完成。這個非常簡單的解決方案能夠顯著降低Turbo解碼器的計算復(fù)雜度,而不會嚴重影響其性能。


4.5.1 MATLAB例子

下面的MATLAB函數(shù)(TurboDecoder_crc)顯示了LTE Turbo解碼器的實現(xiàn),它檢查輸入幀末尾的CRC位,以便在執(zhí)行最大迭代次數(shù)之前選擇性地終止解碼操作。正如我們所看到的,在這個函數(shù)中,我們使用LTETurboDecoder System對象而不是comm.TurboDecoder System對象。

 1function [yflagiters]=TurboDecoder_crc(u, intrlvrIndices)
2%#codegen
3maxIter=6;
4persistent TurboCrc
5if isempty(TurboCrc)
6    TurboCrc = commLTETurboDecoder('InterleaverIndicesSource',  'Input port', ...
7        'MaximumIterations', maxIter
);
8end
9[yflagiters] = step(TurboCrc, u,  intrlvrIndices);
10


在LTETurboDecoder中,常規(guī)的Turbo譯碼器也有相同的操作。然而,在每次解碼迭代結(jié)束時,檢查對應(yīng)于CRC比特的輸出的最后24個樣本以進行錯誤檢測。如果沒有檢測到錯誤,我們分支出循環(huán)并終止Turbo解碼操作。在這種情況下,盡管尚未執(zhí)行最大迭代次數(shù),但是可能出現(xiàn)提前終止。如果檢測到CRC位中的錯誤,則繼續(xù)操作并輸入下一個解碼迭代,直到在迭代中沒有檢測到更多的錯誤或達到允許的最大迭代次數(shù)。


下面的MATLAB函數(shù)(CbCRCGenerator)在執(zhí)行turbo編碼之前將24位CRC特征值添加到傳輸塊的末尾。

1function  y = CbCRCGenerator(u)
2%#codegen
3persistent hTBCRCGen
4if isempty(hTBCRCGen)
5    hTBCRCGen = comm.CRCGenerator('Polynomial',[1 1 zeros(116) 1 1 0 0 0 1 1]);
6end
7Transport block CRC generation
8y = step(hTBCRCGen, u);
9

下面的MATLAB函數(shù)(CbCRCDetector)在執(zhí)行turbo解碼之后將24位CRC綜合征提取到傳輸塊的末尾。

1function  y = CbCRCDetector(u)
2%#codegen
3persistent hTBCRC
4if isempty(hTBCRC)
5    hTBCRC = comm.CRCDetector('Polynomial',  [1 1 zeros(116) 1 1 0 0 0 1 1]);
6end
7Transport block CRC generation
8y = step(hTBCRC, u);
9


4.5.2誤碼率測試

為了檢驗早期終止算法的有效性,我們現(xiàn)在比較兩種基于CRC的早期終止和不基于CRC的turbo解碼的實現(xiàn)。下面的函數(shù)(chap4_ex04)執(zhí)行CRC生成、turbo編碼、加擾和調(diào)制以及它們的逆操作的組合,而不實現(xiàn)提前終止機制。

 1function [bernumBits]=chap4_ex04(EbNo, maxNumErrs, maxNumBits)
2%% Constants
3clear functions;
4maxIter=6;       % actual number of turbo decoder iterations
5FRM=2432-24; % Size of bit frame
6Kplus=FRM+24;
7Indices = lteIntrlvrIndices(Kplus);
8ModulationMode=1;
9k=2*ModulationMode;
10CodingRate=Kplus/(3*Kplus+12);
11snr = EbNo + 10*log10(k) + 10*log10(CodingRate);
12noiseVar = 10.^(-snr/10);
13%% Processsing loop modeling transmitter, channel model and receiver
14numErrs = 0; numBits = 0; nS=0;
15while ((numErrs < maxNumErrs) && (numBits < maxNumBits))
16    % Transmitter
17    u  =  randi([0 1], FRM,1);                                                          % Randomly generated input bits
18    data= CbCRCGenerator(u);                                                       % Code block CRC generator
19    t0 = TurboEncoder(data, Indices);                                            % Turbo Encoder
20    t1 = Scrambler(t0, nS);                                                              % Scrambler
21    t2 = Modulator(t1, ModulationMode);                                     % Modulator
22    % Channel
23    c0 = AWGNChannel(t2, snr);                                                    % AWGN channel
24    % Receiver
25    r0 = DemodulatorSoft(c0, ModulationMode, noiseVar);          % Demodulator
26    r1 = DescramblerSoft(r0, nS);                                                   % Descrambler
27    r2  = TurboDecoder(-r1, Indices,maxIter);                                % Turbo Deocder
28    y   =  CbCRCDetector(r2);                                                          % Code block CRC dtector
29    % Measurements
30    numErrs     = numErrs + sum(y~=u);                                          % Update number of bit errors
31    numBits     = numBits + FRM;                                                    % Update number of bits processed
32    % Manage slot number with each subframe processed
33    nS = nS + 2; nS = mod(nS, 20);
34end
35%% Clean up & collect results
36ber = numErrs/
numBits;                                                                % Compute Bit Error Rate (BER
)
37

下面的函數(shù)(chap4_ex04_crc)在實現(xiàn)提前終止機制的同時執(zhí)行相同的收發(fā)器。在算法部署提前終止的情況下,我們記錄每個子幀中的實際迭代次數(shù),然后計算直方圖。

 1function [bernumBits]=chap4_ex04_crc(EbNo, maxNumErrs, maxNumBits)
2%% Constants
3clear functions;
4FRM=2432-24; % Size of bit frame
5Kplus=FRM+24;
6Indices = lteIntrlvrIndices(Kplus);
7ModulationMode=1;
8k=2*ModulationMode;
9CodingRate=Kplus/(3*Kplus+12);
10snr = EbNo + 10*log10(k) + 10*log10(CodingRate);
11noiseVar = 10.^(-snr/10);
12%% Processsing loop modeling transmitter, channel model and receiver
13numErrs = 0; numBits = 0; nS=0;
14while ((numErrs < maxNumErrs) && (numBits < maxNumBits))
15    % Transmitter
16    u  =  randi([0 1], FRM,1);                                                          % Randomly generated input bits
17    data= CbCRCGenerator(u);                                                       % Transport block CRC code
18    t0 = TurboEncoder(data, Indices);                                            % Turbo Encoder
19    t1 = Scrambler(t0, nS);                                                              % Scrambler
20    t2 = Modulator(t1, ModulationMode);                                     % Modulator
21    % Channel
22    c0 = AWGNChannel(t2, snr);                                                    % AWGN channel
23    % Receiver
24    r0 = DemodulatorSoft(c0, ModulationMode, noiseVar);          % Demodulator
25    r1 = DescramblerSoft(r0, nS);                              % Descrambler
26    [y, ~, ~]  = TurboDecoder_crc(-r1, Indices);                        % Turbo Deocder
27    % Measurements
28    numErrs     = numErrs + sum(y~=u);                                         % Update number of bit errors
29    numBits     = numBits + FRM;                                                   % Update number of bits processed
30    % Manage slot number with each subframe processed
31    nS = nS + 2; nS = mod(nS, 20);
32end
33%% Clean up & collect results
34ber = numErrs/
numBits;                                                              % Compute Bit Error Rate (BER
)
35

圖4.6中的BER結(jié)果表明我們得到類似的誤碼率性能與早期終止的SNR值范圍(微量紅色)而提前終止(微量藍色)。

4.5.3 時間測量

在本實驗中,我們比較了沒有基于CRC的早期停止機制(chap4_ex04.m)而采用turbo解碼的收發(fā)機與采用基于CRC的早期停止機制(chap4_ex04_crc.m)的收發(fā)機的執(zhí)行時間。實驗通過調(diào)用以下Matlab測試平臺進行。

1EbNo=1; maxNumErrs=1e7; maxNumBits=1e7
2tic; [a,b]=chap4_ex04(EbNo,maxNumErrs, maxNumBits); toc; 
3tic; [a,b]=chap4_ex04_crc(EbNo,maxNumErrs, maxNumBits); toc;



該腳本的第一行強制兩個收發(fā)器函數(shù)對于給定的Eb/N0值1dB,每次調(diào)用處理1000萬比特。第二行使用MATLAB函數(shù)tic和toc來獲得沒有提前終止的算法的運行時間。第三行記錄了具有提前終止的算法的經(jīng)過時間。

圖4.7 提前終止Turbo譯碼典型的執(zhí)行時間節(jié)省


在MATLAB命令行中打印的結(jié)果如圖4.7所示。與沒有提前終止(146秒)相比,提前終止(89秒)處理相同數(shù)量的輸入幀花費的時間要少得多。




未完待續(xù)

2018/12/3


點擊關(guān)注了解更多精彩內(nèi)容。




掃碼關(guān)注5G通信官方公眾號,免費領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費領(lǐng)取《中國移動:5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費領(lǐng)取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費領(lǐng)取《《中國聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費領(lǐng)取《中國電信5G NTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費領(lǐng)取《中國移動算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1
  • 對本帖內(nèi)容的看法? 我要點評

     
    [充值威望,立即自動到帳] [VIP貴賓權(quán)限+威望套餐] 另有大量優(yōu)惠贈送活動,請光臨充值中心
    充值擁有大量的威望和最高的下載權(quán)限,下載站內(nèi)資料無憂

    快速回復(fù)主題    
    標題
    內(nèi)容
     上傳資料請點左側(cè)【添加附件】

    當前時區(qū) GMT+8, 現(xiàn)在時間是 2025-02-02 17:08:21
    渝ICP備11001752號  Copyright @ 2006-2016 mscbsc.com  本站統(tǒng)一服務(wù)郵箱:mscbsc@163.com

    Processed in 0.333254 second(s), 13 queries , Gzip enabled
    TOP
    清除 Cookies - 聯(lián)系我們 - 移動通信網(wǎng) - 移動通信論壇 - 通信招聘網(wǎng) - Archiver