⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mupdlrxchain.m

📁 OFDMA 物理层开发的matlab 源码.飞思卡尔提供.对物理层开发的工程师有帮助!
💻 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: mUPDLRXchain.m.rca $
%  $Revision: 1.8 $
%  $Date: Fri Dec 15 08:30:25 2006 $
%  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;
%de-randomize
if BurstD.IUC==255,
   % do not derandomize FCH
   derand_out = vitdec_out;
else
   [derand_out,BlkSize] = mDerandomizer(vitdec_out,BlkSize);
end
%code block de-segmentation
Out=mCodeBlkDeseg(derand_out,BlkSize);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -