GAIO CLUB

2022年07月11日

【第6回】マイコンの選定

MBDてさぐり奮戦記
MBD(モデルベース開発)てさぐり奮戦記
こんにちは。
今回は、MBD手法を適用するワンチップマイコン(以下マイコンと略します)を選択したときの選定ポイントについて、その概要を説明いたします。

当時(1999年頃)、我々は、RISC(Reduced Instruction Set Computer、縮小命令セットコンピュータ)マイコンを初めて採用する製品の開発をすすめており、この製品の量産開発を先頭に、MBD手法を導入してゆくことを目標としていました。
マイコンメーカーとRISCマイコンの仕様を検討する中で、MBD手法で必要となる要素も協議し、新規採用するRISCマイコンを選定するポイントとして下記を考慮しました。

FPU (Floating-Point Unit、浮動小数点ユニット)

我々がMBD手法を量産開発に導入した時期では、第2回~第5回で説明したように固定小数点演算処理によるMATLAB Simulink(MathWorks社)のモデル図(以下モデル図と略します)を構築しましたが、固定小数点データを固定小数点演算で処理するモデル図では、演算前後に分解能とオフセットを変換する単位変換処理が複数組み込まれたC言語プログラムが生成され、プログラムサイズが増加し実行時間が長くなるとともに、C言語ソースプログラムレビュー時に、個々の単位変換処理の妥当性を検証するため、全体の検証工数が増加しました。

モデル図上では、物理量の実数値で演算やシミュレーションするのが一般的だと思います。MATLAB内部ではdouble型のデータが倍精度浮動小数点演算器で処理されるのが一般的で、浮動小数点演算処理と強い親和性があると思います。
そのため、モデル図上で構築された処理を製品のマイコンで効率よくリアルタイムに実行するためには、マイコンにFPUを内蔵していることが重要と考えて、FPUの搭載を重視しました。

RAM容量

第2回で説明したように、モデル図から生成したC言語プログラムでは、基本的にスタック上に確保した動的変数を使って処理するので、制御仕様によりますが、我々がC言語で記述していた感覚より大きなスタックサイズが必要になりました。

このため、いろんなモデル図から生成したC言語プログラムでスタックサイズを調査し、割込による処理の多重化を考慮してスタックの使用量を予想し、全体として必要なRAM容量を検討しました。

ROM容量

必要となるROM容量を見積もるために、同じ仕様の処理をハンドコードしたC言語プログラムとモデル図から自動生成したC言語プログラムでプログラムサイズを比較した結果、両者のプログラムサイズは、C言語1:に対してモデル図1.2~1.4になりました。この比率を尺度として必要なROM容量を検討しました。

処理速度

これはMBD手法の適用とは直接関係ありませんが、我々の製品では、実行するプログラムサイズにかかわらず、仕様上要求される処理時間内で処理が完了する必要があります。ROM容量に見合う処理速度が得られるか、クロック周波数、ROMやRAMのレイテンシ(メモリアクセス時に生じる遅延時間)などのマイコン仕様を検討しました。
次回は、MBD手法を量産開発に導入するにあたり、モデル図を量産開発で管理するため、モデル図に固有の課題として検討した手法について説明いたします。
最後まで、お読みいただきありがとうございました。

筆者紹介

のんびり田舎暮らしのエンジニア

約40年前に製造業の会社に入社後、リアルタイム制御をおこなうマイコン組込製品の量産開発を35年間担当し、アセンブラやC言語による制御プログラム開発や、MBDを含むソフトウェア開発環境の構築に従事しました。現役時代は理屈の世界で生きてきたので、退職後は感性の世界に憧れ、写真で絵作りをする世界で遊んでいます。

人気のコラム

最新のコラム