Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

入力型を使用した出力型の判別

sfun_user_fxp_asr.c の 243 ~ 261 行目の以下のサンプル コードは、入力のデータ型を S-Function に使用して出力のデータ型を計算する例を示しています。このコードで以下のことに注目してください。

  • 出力が、入力 (a) に一致するように符号付きまたは符号なしである。

  • 出力の語長は入力 (b) と同じである。

  • 出力の小数部の長さは、入力の小数部の長さとシフト数 (c) によって異なる。

    #define MDL_SET_INPUT_PORT_DATA_TYPE
    static void mdlSetInputPortDataType(SimStruct *S, int port,
    					DTypeId dataTypeIdInput)
    {
        if ( isDataTypeSupported( S, dataTypeIdInput ) )
        {
            DTypeId dataTypeIdOutput;
    
            ssSetInputPortDataType( S, port, dataTypeIdInput );
    
            dataTypeIdOutput = ssRegisterDataTypeFxpBinaryPoint(
    					S,
    			ssGetDataTypeFxpIsSigned( S, dataTypeIdInput ), (a) 			ssGetDataTypeFxpWordLength( S, dataTypeIdInput ), (b) 			ssGetDataTypeFractionLength( S, dataTypeIdInput )
    					- V_NUM_BITS_TO_SHIFT_RGHT, (c)             0 /* false means do NOT obey data type override
    					           setting for this subsystem */ );
    
            ssSetOutputPortDataType( S, 0, dataTypeIdOutput );
        }
    }