オバフロの検出
この例では,固定小数点コンバ固定小数点コンバタアプリを使用したオバフロの検出方法に。変換プロセスの数値テストの段階では,スケーリングされた双を使用して固定小数点コードのシミュレーションを実行します。その後,固定小数点デタ型をオ。
必要条件
この例には次の製品が必要です。
MATLAB®
定点设计师™
Cコンパラ
サポトされるコンパを参照してください。
墨西哥人设置
を使用して既定のコンパ邮箱ラを変更できます。既定のコンパ邮箱ラの変更を参照してください。
新規フォルダの作成と関連ファ
ロカル作業フォルダを作成します。たとえば,
c: \溢出
のようにします。docroot \工具箱\ fixpoint \例子
フォルダに変更します。Matlabコマンドラインで次のように入力します。Cd (fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
overflow.m
およびoverflow_test.m
ファ。次のような事前処理と事後処理を行う別のテストスクリプトを作成することをお勧めします。
入力の読み込み
入力値の設定
テスト結果の出力
詳細は,テストファ邮箱ルの作成を参照してください。
タ邮箱プ 名前 説明 関数のコド overflow.m
Matlabのエントリポント関数 テストファ邮箱ル overflow_test.m
Matlabスクリプト。次をテストします。 overflow.m
固定小数点コンバ固定小数点コンバタアプリを開く
この例で使用するファ邮箱ルを含む作業フォルダ邮箱に移動します。
Matlabルストリップの[アプリ]タブの[コド生成]の下で、アプリア以及コンをクリックします。
ソスファ
プロジェクトにエントリポ邮箱ント関数
溢出
を追加するために、ファ以及ルoverflow.m
を探して[開く]をクリックします。既定では,アプリはこのプロジェクトの情報および設定を現在のフォルダのoverflow.prj
というファ邮箱ルに保存します。[次へ]をクリックして[入力の型を定義]ステップに進みます。
overflow.m
のコド違反および固定小数点変換の準備状態の問題が検査されます。overflow.m
には問題は検出されません。
入力の型の定義
[入力の型を定義]ペジで,
overflow_test
をテストファ邮箱ルとして追加するためにoverflow_test.m
を選択して[開く]をクリックします。[入力の型の自動定義]をクリックします。
テストファ邮箱ルが実行されます。アプリはテストファルから,
b
の入力型を双(1 x12)
、x
を双(256 x1)
、重置
を逻辑(1 x1)
とすることを決定します。[次へ]をクリックして[固定小数点に変換]ステップに進みます。
固定小数点への変換
エントリポイントMATLAB関数用にインストルメント化された墨西哥人関数がアプリによって生成されます。コードに含まれる変数についてコンパイルされた情報(データ型,サイズ,実数/複素数)が表示されます。詳細は,変数情報の表示と変更を参照してください。
[関数の置き換え]タブに,固定小数点の変換に対応していない関数が表示されます。シミュレションの実行を参照してください。
Fimath設定を表示するために,[設定]矢印をクリックします。fimathの[乗算器モド]と[加算器モド]を
[最下位ビットを保持]
に設定します。これらの設定はc言語の整数演算の動作をモデル化します。[解析]をクリックします。
テストファ邮箱ル
overflow_test
が実行されます。[変数]タブにシミュレションの最小範囲と最大範囲が表示されます。ソフトウェアは,シミュレーション範囲のデータを使用し,既定の型推奨の設定に基づき固定小数点の型を変数ごとに推奨し,[推奨された型]列に表示します。浮動小数点アルゴリズムを固定小数点に変換するには,[変換]をクリックします。
推奨された型がソフトウェアによって検証され,エントリポイント関数の固定小数点バージョンが生成されます。
検証中にエラおよび警告が発生した場合は,それらが[出力]タブに表示されます。型の検証を参照してください。
数値のテストとオバフロの確認
[テスト]矢印をクリックします。テストファ邮箱ルが
overflow_test.m
であることを確認します。[スケリングされたdoubleを使用してオ]を選択し,[テスト]をクリックします。入力型を定義するために使用したテストファイルが実行され,固定小数点MATLABコードがテストされます。オーバーフローを検出するように選択したので,推奨された固定小数点型のスケーリングされた双のバージョンを使用してシミュレーションが実行されます。スケーリングされた双は,倍精度浮動小数点のデータを格納するため,演算を全範囲で実行します。固定小数点設定が維持されるため,計算が固定小数点型の範囲から外れた場合に報告できます。
シミュレションが実行されます。アプリによってオーバーフローが検出されます。[オバフロ]タブにオバフロが報告されます。オバフロした式を強調表示するには,そのオをクリックします。
オバフロしたのが加算か乗算かを判断します。
(fimath)の設定で,[乗算器モド]を
(FullPrecision)
に設定し,変換を繰り返して固定小数点モドを再度テストします。オバフロが継続して発生し,式の加算でオしていることが示されます。