入力型を使用した出力型の判別
sfun_user_fxp_asr.c
の 242 ~ 260 行目の以下のサンプル コードは、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 ); } }