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

📄 wcdmaphlayerinitmask.m

📁 WCDMA model in symulink model in matlab
💻 M
📖 第 1 页 / 共 2 页
字号:
        [En{idxSnrdB}] = deal('on');
        
    case 'Multipath Profile - Case 3'
        Vals{idxFingerPhases}       = '[0 260e-9 521e-9 781e-9]'; 
        Vals{idxFingerPowers}       = '[0 -3 -6 -9]';
        Vals{idxFingerEnables}      = '4';
        Vals{idxSpeed}              = '120';
        if(strcmp(Vals{idxSnrdB},'Inf'))
            Vals{idxSnrdB} = '-3';
        end
        
        % Enable Snr parameter
        [En{idxSnrdB}] = deal('on');
        
    case 'Multipath Profile - Case 4'
        Vals{idxFingerPhases}       = '[0 976e-9]'; 
        Vals{idxFingerPowers}       = '[0 0]';
        Vals{idxFingerEnables}      = '2';
        Vals{idxSpeed}              = '3';
        if(strcmp(Vals{idxSnrdB},'Inf'))
            Vals{idxSnrdB} = '-3';
        end
        
        % Enable Snr parameter
        [En{idxSnrdB}] = deal('on');
        
    case 'Multipath Profile - Case 5'
        Vals{idxFingerPhases}       = '[0 976e-9]'; 
        Vals{idxFingerPowers}       = '[0 -10]';
        Vals{idxFingerEnables}      = '2';
        Vals{idxSpeed}              = '50';
        if(strcmp(Vals{idxSnrdB},'Inf'))
            Vals{idxSnrdB} = '-3';
        end
        
        % Enable Snr parameter
        [En{idxSnrdB}] = deal('on');
        
    case 'Multipath Profile - Case 6'
        Vals{idxFingerPhases}       = '[0 260e-9 521e-9 781e-9]'; 
        Vals{idxFingerPowers}       = '[0 -3 -6 -9]';
        Vals{idxFingerEnables}      = '4';
        Vals{idxSpeed}              = '250';
        if(strcmp(Vals{idxSnrdB},'Inf'))
            Vals{idxSnrdB} = '-3';
        end
        
        % Enable Snr parameter
        [En{idxSnrdB}] = deal('on');
        
    case 'User Defined'     
        
        % -- Update the Mask Parameters
        [En{[idx idxSnrdB]}]  = deal('on');
             
    end    
    
    set_param(block,'MaskValues',Vals,'MaskVisibilities', Vis, 'MaskEnables', En);
    
 
%*********************************************************************
% Function Name:     default
% Description:       Define visiablity, enable and values of variables for default case.
%                       It also sets the callback functions for propSelect and measurChannel.
% Return Values:     None
%********************************************************************   
case 'default'
   
    % --- Field data
    Vals = get_param(block, 'MaskValues');
    Vis  = get_param(block, 'MaskVisibilities');
    En   = get_param(block, 'MaskEnables');
    
    % -- Set Index to Mask parameters
    setfieldindexnumbers(block);
     
    % -- Set Enable
    [En{[1:length(En)]}]  = deal('on');
       
    % --- Set Visibility 
    idxOn = [idxShowTrCh idxShowAntenna idxShowChModel idxPowerVector];
    
    [Vis{[1:length(Vis)]}]  = deal('off');
    [Vis{idxOn}]  = deal('on');
    
    % --- Set Callback functions
    
    [Cb{[1:length(En)]}]        = deal('');
    Cb{idxShowTrCh} 		    = [s '(gcb,''cbShowTrCh'');'];
    Cb{idxShowAntenna} 		    = [s '(gcb,''cbShowAntenna'');'];
    Cb{idxShowChModel} 		    = [s '(gcb,''cbShowChModel'');'];
    Cb{idxMeasurChannel} 		= [s '(gcb,''cbMeasurChannel'');'];
    Cb{idxPropConditions} 		= [s '(gcb,''cbPropConditions'');'];
        
    % --- Set Callbacks, enable status, visibilities and tunable values
    set_param(block,'MaskCallbacks',Cb,'MaskEnables',En,'MaskVisibilities',Vis);
    
    % --- Set the startup values.  '' Indicates that the default saved will be used
    Vals{idxShowTrCh}           = 'off';
    Vals{idxShowAntenna}        = 'off'; 
    Vals{idxShowChModel}        = 'off'; 
    Vals{idxMeasurChannel}      = '12.2 Kbps';
    Vals{idxPropConditions}     = 'Static - AWGN';
    Vals{idxSnrdB}         		= '-1';
    Vals{idxTrBlkSetSize}  	    = '[244*1 100*1]';
    Vals{idxTrBlkSize}   	  	= '[244 100]';
    Vals{idxTti}           		= '[20 40]';
    Vals{idxCrcSize}       		= '[16 12]';
    Vals{idxErrorCorr}     		= '[2 2]';
    Vals{idxRMAttribute}    	= '[256 256]';
    Vals{idxPosTrChMask}    	= 'Fixed';
    Vals{idxNumPhCH}      	    = '1';
    Vals{idxSlotFormat}     	= '11';   
    Vals{idxDpchCode} 		    = '123';
    Vals{idxScrCode}       	    = '[63 0]';
    Vals{idxPowerVector}		= '[-16.6 -10 -15 -12 -12]';
    Vals{idxNumTapsRRC}		    = '96';
    Vals{idxNumTapsChEst}       = '21';
    Vals{idxOverSampling}  		= '8';
    Vals{idxFingerEnables}	    = '1';
    Vals{idxFingerPhases}  		= '[0 0 0 0]';
    Vals{idxFingerPowers}       = '0';
    Vals{idxSpeed}              = '0';
    
    % --- Update the Vals field with the actual values
    MN = get_param(block,'MaskNames');
    for n=1:length(Vals)
        set_param(block,MN{n},Vals{n});        
    end;
    
    % --- Ensure that the block operates correctly from a library
    set_param(block,'MaskSelfModifiable','on');
    
    % --- Set Init Values
    eStr = setInitValues(block)
    
    % --- Return parameters
    varargout{1} = eStr;
      
    
%*********************************************************************
% Function Name:     show all
% Description:       Show all of the widgets.
% Notes:             This function is for development use only and allows
%                       All fields to be displayed
%********************************************************************  
case 'showall'
    
    Vis = get_param(block, 'maskvisibilities');
    En  = get_param(block, 'maskenables');
    
    for n=1:length(Vis)
        Vis{n} = 'on';
        En{n} = 'on';
    end
    
    % --- Initialize output parameters, exit code and error message definitions
    eStr.ecode = 0;
    eStr.emsg  = '';

    varargout{1} = eStr;
        
    set_param(block,'MaskVisibilities',Vis,'MaskEnables',En);
    
end
%*********************************************************************
% Function Name:     setInitValues
% Description:       This function gets all the variables from the mask, 
%                       computes intermediated variables and finally 
%                       assigns them to the base Workspace
%********************************************************************  
function eStr = setInitValues(block)
	
	% Reset variables
	msg='';
	msg_warn='';
        
	% Get Mask values    
	Vals = get_param(block, 'maskvalues');
	setfieldindexnumbers(block);
	
	%--- Get Variables from mask
	trBlkSetSize = str2num(Vals{idxTrBlkSetSize});
	trBlkSize = str2num(Vals{idxTrBlkSize});
	tti = str2num(Vals{idxTti});
	crcSize = str2num(Vals{idxCrcSize});
	errorCorr = str2num(Vals{idxErrorCorr});
	RMAttribute = str2num(Vals{idxRMAttribute});
	posTrChMask = Vals{idxPosTrChMask};
	numPhCH = str2num(Vals{idxNumPhCH}); 
	slotFormat = str2num(Vals{idxSlotFormat});
	dpchCode = str2num(Vals{idxDpchCode});
	scrCode = str2num(Vals{idxScrCode});
	powerVector = str2num(Vals{idxPowerVector});
	fingerPhases = str2num(Vals{idxFingerPhases});
	fingerPowers = str2num(Vals{idxFingerPowers});
	fingerEnables = str2num(Vals{idxFingerEnables});
	numTapsRRC = str2num(Vals{idxNumTapsRRC});
	numTapsChEst = str2num(Vals{idxNumTapsChEst});
	overSampling = str2num(Vals{idxOverSampling});
	snrdB = str2num(Vals{idxSnrdB});
	speed = str2num(Vals{idxSpeed});
	
	%--- Turbo Coding is not currently supported
	errorCorrMask = errorCorr;
	errorCorr = (errorCorr>2)*2 + (errorCorr<3).*errorCorr;
	
	%--- Modify Variable Mask
	if(posTrChMask == 'Fixed')
        posTrCh = 0;
	else
        posTrCh = 1;
	end
	
	%--- Compute Intermediate variables
	numTrBlks = trBlkSetSize./trBlkSize;
	[numBitsTrCh, numPadBits, numCodeWords, numBitsCodeWord] = WcdmaConcSeg(trBlkSetSize,trBlkSize,crcSize, errorCorr);
	codeRate = errorCorr+1 - (errorCorr == 3);
	tailBits = 8 *(errorCorr ~=0);
	numBitsRM = codeRate.*(numBitsCodeWord+tailBits).*numCodeWords;
	
	deltaNimax = WcdmaRateMatchingInit(numBitsRM, tti, RMAttribute, posTrCh, slotFormat, numPhCH);
	numBitsFirstInt = numBitsRM + deltaNimax;
	
	numBitsRF = numBitsFirstInt./(tti/10);
	totalBitsDelay = 2.*trBlkSetSize + 2.*trBlkSetSize.*(numCodeWords>1).*(tti~=10) + 2.*(tti==10 & numCodeWords>1).*trBlkSetSize;
	
	%--- Set Channel model variables
	fingerEnables = [ones(1,fingerEnables) zeros(1,4-fingerEnables)];
	dopplerFreq = (speed*1e3/3600)*2.1e9/3e8;
	if(strcmp(Vals{idxPropConditions},'Static - AWGN'))
        enableMultipath = 0;
	else
        enableMultipath = 1;
	end
        
	
	%--- Compute Total Received Delay
	if slotFormat < 2
        numChipsOut = 512;
	else
        numChipsOut = 256;
	end
	
	load slotFormatTable;
	% Second Column of SlotFormatTable corresponds to SF
	sprdFactor = slotFormatTable(slotFormat+1,2);
	% Third Column of SlotFormatTable corresponds to NumBits
	numBits = slotFormatTable(slotFormat+1,3);
	% Eigth Column of SlotFormatTable corresponds to TPC Bits
	numPilotBits = slotFormatTable(slotFormat+1,8);
	
	% Compute Total Received Delay
	latestPath = max(fingerPhases);
	filtDelayChEst = (numTapsChEst-1)/2;
	rxDelayinFrames = ceil(((numTapsRRC/overSampling)+latestPath)/numChipsOut) + filtDelayChEst;
	rxDelay = rxDelayinFrames * (numChipsOut/sprdFactor);
	rxSlotsDelay = ceil(rxDelay*2/numBits);
	
	% TPC Bits
	pilotBits = WcdmaPilotBitGenerator(numPilotBits);
	
	% --- Assigin Variables to workspace
	assignin('base','trBlkSize',trBlkSize);
	assignin('base','trBlkSetSize',trBlkSetSize);
	assignin('base','numTrBlks',numTrBlks);
	assignin('base','tti',tti);
	assignin('base','crcSize',crcSize);
	assignin('base','errorCorr',errorCorr);
	assignin('base','errorCorrMask',errorCorrMask);
	assignin('base','RMAttribute',RMAttribute);
	assignin('base','posTrCh',posTrCh);
	assignin('base','numPhCH',numPhCH);
	assignin('base','slotFormat',slotFormat);
	assignin('base','numBitsRF',numBitsRF);
    assignin('base','numBitsRM',numBitsRM);
	
	% Antenna Settings
	assignin('base','sprdFactor',sprdFactor);
	assignin('base','dpchCode',dpchCode);
	assignin('base','scrCode',scrCode);
	assignin('base','powerVector',powerVector);
	assignin('base','numTapsRRC',numTapsRRC);
	assignin('base','overSampling',overSampling);
	assignin('base','fingerEnables',fingerEnables);
	assignin('base','numTapsChEst',numTapsChEst);
	assignin('base','pilotBits',pilotBits);
	
	% Channel Settings
    assignin('base','snrdB', snrdB);
    assignin('base','enableMultipath', enableMultipath);
    assignin('base','propConditions', Vals{idxPropConditions}); 
    assignin('base','fingerPhases',fingerPhases);
    assignin('base','fingerPowers',fingerPowers);
    assignin('base','dopplerFreq',dopplerFreq);
    
	
	% Ber Settings
	assignin('base','totalBitsDelay',totalBitsDelay);
	
	% Check parameters
	WcdmaPhLayerCheckParams;
	eStr.emsg  = msg;
	eStr.emsg_w = msg_warn;
	
	% end of WcdmaPhLayerInitMask.m

⌨️ 快捷键说明

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