📄 mupdlrxchainctc.m
字号:
function [Out] = mUPDLRXchain(SlotVecs,ZoneD,BurstD)
% Downlink Rx (MS) chain of user processing of IEEE 802.16-2004
% (WiMAX, OFDMA only)
%
% [Out] = mUPDLRXchain(SlotVecs,ZoneD,BurstD)
%
% This function chains up all the required Matlab functions and processes
% the payload data of one burst (In). After modulation mapping the data is
% mapped into the defined data region of the zone (SlotVecs).
%
% SlotVecs: input/output matrix that is the FP interface (complex)
% one column per slot vector, 48*ZoneD.NumSubch rows
% ZoneD : zone descriptor
% BurstD : downlink burst descriptor
%
% Out : output vector, payload data for one burst
% (unsigned bytes, values 0 or 255)
%
% Matlab 7 Release 14 SP2
% The communication toolbox is required.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Property of Freescale
% Freescale Confidential Proprietary
% Freescale Copyright (C) 2005 All rights reserved
% ----------------------------------------------------------------------------
% $RCSfile: mUPDLRXchainCTC.m.rca $
% $Revision: 1.1 $
% $Date: Thu Jan 25 11:34:17 2007 $
% Target: Matlab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%path is relative to the UP/*/SPManager/matlab folder
addpath('../../../CM/Utilities/matlab');
addpath('../../../DL/SPKernel/RepSlotMap/matlab');
addpath('../../../UL/SPKernel/DemodMap/matlab');
addpath('../../../DL/SPKernel/SlotSeg/matlab');
addpath('../../../UL/SPKernel/DIL/matlab');
addpath('../../../UL/SPKernel/DePunct/matlab');
addpath('../../../UL/SPKernel/Viterbi/matlab');
addpath('../../../UL/SPKernel/DeRand/matlab');
addpath('../../../UL/SPKernel/CodeBlkDeseg/matlab');
%slot demapping + derepetition
slotdemap_out = mDerepSlotDemapDLRX(SlotVecs,ZoneD,BurstD);
%demodulation mapping
% demodmap_out = mDemodMapper_OFDM(slotdemap_out,BurstD.ModMode,BurstD.Distance);
[m,k]=size(slotdemap_out);
demodmap_out = mDemodMapper(slotdemap_out,ones(1,k),BurstD.ModMode,BurstD.Distance);%dumy value for Block size
%slot desegmentation (combine slots to code blocks)
[slotdeseg_out,BlkSize] = mSlotDesegDLRX(demodmap_out,BurstD);
% %deinterleaving
% [dil_out,BlkSize] = mDIL(slotdeseg_out,BlkSize,BurstD.ModMode);
% %depuncturing
% [depunct_out,BlkSize] = mDepuncturing(dil_out,BlkSize,BurstD.PunctMode);
% %viterbi decoding
% %[vitdec_out_bits,BlkSize] = mVitDecoder_DL(depunct_out,BlkSize,BurstD.FECType,BurstD.PunctMode);
% [vitdec_out_bits,BlkSize] = mVitDecoder(depunct_out,BlkSize,BurstD.FECType,BurstD.PunctMode,'n');
% %data packing
% vitdec_out = mBytePack(vitdec_out_bits);
% BlkSize=BlkSize/8;
%hack TC510
Type = 0 ;
%end hack
%CTC decoder
nIter = 8 ;
[ctc_out,BlkSize] = mCTC_dec(slotdeseg_out,BlkSize,nIter,Type);
%de-randomize
if BurstD.IUC==255,
% do not derandomize FCH
derand_out = ctc_out;
else
[derand_out,BlkSize] = mDerandomizer(ctc_out,BlkSize);
%derand_out = ctc_out ;
end
%code block de-segmentation
Out=mCodeBlkDeseg(derand_out,BlkSize);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -