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

📄 s_conv_detection.c

📁 这是一个c++编写的WCDMA链路采用RAKE接收的方针源代码
💻 C
字号:
/* | Project:     WCDMA simulation environment | Module:       | Author:      Maarit Melvasalo | Date:        February 23, 1999 | | History: |             June 10, 1999 Maarit Melvasalo |                  Function rewritten * *  File    : s_conv_detection.c *  Abstract: * * USER GIVEN PARAMETERS * * 1: B  = the input block size   * 2: C  = the spreading code  * 3: SF = spreading factor * 4: nSlot = Number of slots in a frame (=used for sample timing) * *  * DEPENDS ON FILES  *            spreading.c  *            mealy.c   *            bitroutines.c *            conversions.c   *            utility.c       | | Copyright disclaimer: |   This software was developed at the National Institute of Standards |   and Technology by employees of the Federal Government in the course |   of their official duties. Pursuant to title 17 Section 105 of the |   United States Code this software is not subject to copyright |   protection and is in the public domain. | */#define S_FUNCTION_NAME s_conv_detection#define S_FUNCTION_LEVEL 2#include <math.h>#include "simstruc.h"#include "tmwtypes.h"#include "config_wcdma.h"#include "wcdma_simulink.h"/* USER GIVEN PARAMETERS AND DEFINITIONS /**//* General Parameters /**/#define NPARAMS 5                                 /* Number of parameters /**//* Spreading parameters /**/#define C_PARAM(S) ssGetSFcnParam(S,1)            /* Code */#define nC   mxGetN(C_PARAM(S))                   /* Code length */ #define SF_PARAM(S) ssGetSFcnParam(S,2)            /* Block size*/#define SF (int_T)(mxGetPr(SF_PARAM(S))[0])   /* Number of inputs*/#define SLOTS(S)  ssGetSFcnParam(S,3)#define nSlots (int_T)(mxGetPr(SLOTS(S))[0]) #define PILOT(S)  ssGetSFcnParam(S,4)#define nPilot (int_T)(mxGetPr(PILOT(S))[0]) /* Input and Output Size parameters /**/#define SIZE_P(S) ssGetSFcnParam(S,0)            /* Block size*/#define nIn (int_T)(mxGetPr(SIZE_P(S))[0])   /* Number of inputs*/#define nOut (int_T)(nIn / SF -nPilot)        /* Number of outputs /**/#define U(element) (*uPtrs[element])              /* Pointer to Input Port0 */#define td  TD_FRAME / (real_T)nSlots  /*====================* * S-function methods * *====================*//* Function: mdlInitializeSizes =============================================== * Abstract: *    The sizes information is used by Simulink to determine the S-function *    block's characteristics (number of inputs, outputs, states, etc.). */static void mdlInitializeSizes(SimStruct *S){  ssSetNumSFcnParams(S, NPARAMS);  /* Number of expected parameters */  if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S))  {      return; }    if (!ssSetNumInputPorts(S, 1)) return;      ssSetInputPortWidth(S, 0, nIn);    ssSetInputPortDirectFeedThrough(S, 0, 1);    if (!ssSetNumOutputPorts(S, 1)) return;     ssSetOutputPortWidth(S, 0,nOut);    ssSetNumSampleTimes(S, 1);    ssSetNumIWork(S, nC);    ssSetSFcnParamNotTunable(S,0);     ssSetSFcnParamNotTunable(S,1);      ssSetSFcnParamNotTunable(S,2);      ssSetSFcnParamNotTunable(S,3);      ssSetSFcnParamNotTunable(S,4);      /* Take care when specifying exception free code - see sfuntmpl.doc */    ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);}   /* do not use mxCalloc or  mexErrMsgTxt functions *//* Function: mdlInitializeSampleTimes ========================================= * Abstract: *    Specifiy that sampletime is given by the user */static void mdlInitializeSampleTimes(SimStruct *S){        ssSetSampleTime(S, 0, td);      ssSetOffsetTime(S, 0, 0.0);}#define MDL_INITIALIZE_CONDITIONS/* Function: mdlInitializeConditions ======================================== * Abstract: *           Stores the spreading code to IWork vector  */static void mdlInitializeConditions(SimStruct *S){    int_T             *iwork = ssGetIWork(S);    real_T            *cpr  = mxGetPr(C_PARAM(S));    int_T  i;    for (i = 0; i < nC; i++){      iwork[i] = (int_T)cpr[i];    }}/* Function: mdlOutputs ======================================================= * Abstract: *  */static void mdlOutputs(SimStruct *S, int_T tid){    real_T            *y    = ssGetOutputPortRealSignal(S,0);    InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);    real_T             inputs[nIn];     int_T             *iwork = ssGetIWork(S); /*spreading code/**/    int_T             i,lp,tmp;        for (lp = (nPilot*SF), i = 0 ; lp<nIn; lp++,i++){      inputs[i]=U(lp);    }      wcdma_soft_despread(inputs, nIn-nPilot*SF, iwork, nC, SF, y,0,nIn);  }/* Function: mdlTerminate ===================================================== * Abstract: */static void mdlTerminate(SimStruct *S){ }#ifdef  MATLAB_MEX_FILE    /* Is this file being compiled as a MEX-file? */#include "simulink.c"      /* MEX-file interface mechanism */#else#include "cg_sfun.h"       /* Code generation registration function */#endif

⌨️ 快捷键说明

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