MIPS値が足りない [PIC32]
(2014.06.05)
PIC32MX250のportBとADCの読み取りを並列に動かして、100kSPSのデジタル・オシロと1MSPSのロジアナを実現しようとしています。
タイミングを細かく管理するため、割り込みは使わず、ポーリングで制御する方式を試してみた(最適化レベル1でコンパイルしてインストラクション数をカウントした)のですが、こんな結果になりました。
portB関連処理 1μ秒当たり 47step
AD関連処理 40μ秒当たり 193step
両方合わせると40μ秒当たり 2073step <==52MIPS!
う~ん、MIPS値が足りてません。特にportB関連の処理負担が重過ぎます。
<対策1>
portBのトリガ条件からパターン・マッチを外す<==45MIPS程度
<対策2>
portBのトリガ条件からビット・チェンジを外す<==45MIPS程度
<対策3>
portBのサンプリング・レートを500kSPS以下にする<==29MIPS程度
<対策4>
portBのサンプリング・レートが1MSPSのときはADの並列動作を止める<==48MIPS程度
”手元のPIC32MX250F128Bを使って”という設計条件の下では、安全サイドの<対策3>で行こうと思います。(I2Cの信号も100kBPSなら観測可能?)
--------------------------------------------------
32biデバイスを使った開発で、こんなミリミリしたプログラムを書くことになるとは思ってなかった。
マルチタスク処理なんて、まだずっと先だなぁ
--------------------------------------------------
PIC32MX250のportBとADCの読み取りを並列に動かして、100kSPSのデジタル・オシロと1MSPSのロジアナを実現しようとしています。
タイミングを細かく管理するため、割り込みは使わず、ポーリングで制御する方式を試してみた(最適化レベル1でコンパイルしてインストラクション数をカウントした)のですが、こんな結果になりました。
portB関連処理 1μ秒当たり 47step
AD関連処理 40μ秒当たり 193step
両方合わせると40μ秒当たり 2073step <==52MIPS!
う~ん、MIPS値が足りてません。特にportB関連の処理負担が重過ぎます。
<対策1>
portBのトリガ条件からパターン・マッチを外す<==45MIPS程度
<対策2>
portBのトリガ条件からビット・チェンジを外す<==45MIPS程度
<対策3>
portBのサンプリング・レートを500kSPS以下にする<==29MIPS程度
<対策4>
portBのサンプリング・レートが1MSPSのときはADの並列動作を止める<==48MIPS程度
”手元のPIC32MX250F128Bを使って”という設計条件の下では、安全サイドの<対策3>で行こうと思います。(I2Cの信号も100kBPSなら観測可能?)
--------------------------------------------------
32biデバイスを使った開発で、こんなミリミリしたプログラムを書くことになるとは思ってなかった。
マルチタスク処理なんて、まだずっと先だなぁ
--------------------------------------------------
|
|
|
コメント 0