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

📄 dds_acc.c

📁 DDS的频率转换可以以近似认为是即时的
💻 C
字号:
/*
 * This file is not available for use in any application other than as a
 * MATLAB(R) MEX file for use with the Simulink(R) Accelerator product.
 */

/*
 * dds_acc.c
 * 
 * Real-Time Workshop code generation for Simulink model "dds_acc.mdl".
 *
 * Model Version              : 1.14
 * Real-Time Workshop version : 6.4  (R2006a)  03-Feb-2006
 * C source code generated on : Fri May 04 16:22:11 2007
 */

#include <math.h>
#include "dds_acc.h"
#include "dds_acc_private.h"
#include <stdio.h>
#include "simstruc.h"
#include "fixedpoint.h"

#define CodeFormat                      S-Function
#define AccDefine1                      Accelerator_S-Function

/* Outputs for root system: '<Root>' */

static void mdlOutputs(SimStruct *S, int_T tid)
{

  /* Level2 S-Function Block: '<Root>/Parallel  Adder Subtractor' (SSum) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 0, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/AltBus' (SSbf) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 1, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Parallel  Adder Subtractor1' (SSum) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 2, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Product' (SAltProduct) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 3, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/BusConversion1' (SExtractBus) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 4, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Output' (SSbfOut) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 5, SS_CALL_MDL_OUTPUTS);

  /* Scope: '<Root>/Scope' */
  /* Call into Simulink for Scope */
  ssCallAccelRunBlock(S, 0, 6, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/BusConversion2' (SExtractBus) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 7, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Constant1' (sCstAltr) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 8, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Constant2' (sCstAltr) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 9, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Constant3' (sCstAltr) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 10, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Delay' (SDelay) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 11, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Input' (SSbfIn) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 12, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Input1' (SSbfIn) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 13, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/Input2' (SSbfIn) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 14, SS_CALL_MDL_OUTPUTS);

  /* Level2 S-Function Block: '<Root>/LUT' (SLut) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 15, SS_CALL_MDL_OUTPUTS);

  /* tid is required for a uniform function interface. This system
   * is single rate, and in this case, tid is not accessed. */
  UNUSED_PARAMETER(tid);
}

/* Update for root system: '<Root>' */
#define MDL_UPDATE

static void mdlUpdate(SimStruct *S, int_T tid)
{

  /* Level2 S-Function Block: '<Root>/Parallel  Adder Subtractor' (SSum) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 0, SS_CALL_MDL_UPDATE);

  /* Level2 S-Function Block: '<Root>/Parallel  Adder Subtractor1' (SSum) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 2, SS_CALL_MDL_UPDATE);

  /* Level2 S-Function Block: '<Root>/Product' (SAltProduct) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 3, SS_CALL_MDL_UPDATE);

  /* Level2 S-Function Block: '<Root>/Delay' (SDelay) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 11, SS_CALL_MDL_UPDATE);

  /* Level2 S-Function Block: '<Root>/LUT' (SLut) */
  /* Call into Simulink for MEX-version of S-function */
  ssCallAccelRunBlock(S, 0, 15, SS_CALL_MDL_UPDATE);

  /* tid is required for a uniform function interface. This system
   * is single rate, and in this case, tid is not accessed. */
  UNUSED_PARAMETER(tid);
}

/* Function to initialize sizes */
static void mdlInitializeSizes(SimStruct *S)
{

  /* checksum */
  ssSetChecksumVal(S, 0, 1477149156U);
  ssSetChecksumVal(S, 1, 2433282054U);
  ssSetChecksumVal(S, 2, 962103866U);
  ssSetChecksumVal(S, 3, 635951839U);

  /* options */
  ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);

  /* Accelerator check memory map size match for DWork */
  if (ssGetSizeofDWork(S) != sizeof(D_Work_dds)) {
    ssSetErrorStatus(S,"Unexpected error: Internal DWork sizes do "
     "not match for accelerator mex file.");
  }

  /* Accelerator check memory map size match for BlockIO */
  if (ssGetSizeofGlobalBlockIO(S) != sizeof(BlockIO_dds)) {
    ssSetErrorStatus(S,"Unexpected error: Internal BlockIO sizes do "
     "not match for accelerator mex file.");
  }

  /* model parameters */
  _ssSetDefaultParam(S, (real_T *) &dds_DefaultParameters);

  /* non-finites */

  rt_InitInfAndNaN(sizeof(real_T));
}

/* Empty mdlInitializeSampleTimes function (never called) */
static void mdlInitializeSampleTimes(SimStruct *S) { }

/* Empty mdlTerminate function (never called) */
static void mdlTerminate(SimStruct *S) { }

/* MATLAB MEX Glue */
#include "simulink.c"

⌨️ 快捷键说明

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