nao-milkの経験ブログ

25年間の半導体エンジニア経験で知り得た内容を記載したブログです。

ハードとソフトのトレードオフ

f:id:nao-milk:20210317125120p:plain

ハードとソフトのトレードオフについて、どう考えますか?

ここでいうハードとはASIC/FPGAのロジック部分、ソフトはARMやNIOSなど組み込みソフトのことをいいます。

  

私の切り分けは、以下の通りです。

【ソフトウェア】

 ・ユーザーと通信を行う箇所

  例えば、

   PC上のユーザインターフェイスで設定された値を解析したり、

   不定期で通信を行う部分、通信仕様が今後変更になりそうな部分など。

 ・リアルタイムで処理が必要ない部分

【ハードウェア】

 ・外部デバイスと定期的に通信を行う部分

 ・リアルタイムで処理が必要な部分

 

f:id:nao-milk:20210314214211p:plain

 

 上図より、

 PC I/Fは、PCとの通信の為、リアルタイムに処理を行います。

  PCから受信があれば、受信データをバッファにため、割り込みを発生します。

  また、CPUからの送信データを送信します。

 

 CPUは、PCからの受信データを解析し、各種処理のレジスタを設定します。

  特にPCで設定した値をレジスタ用に変換したりします。

  例えば、

   変倍率から変倍カウンタの加算値を求め、固定小数に変換したりなど。。。

    f:id:nao-milk:20210314222119p:plain

      ※上式は小数部が8bitの場合となり、演算結果の整数部をレジスタ

       設定することで、固定小数部8bitを含めた値を設定します。

 

 Camera I/F → 画像処理 → Monitor I/Fは、リアルタイムで処理します。

  定期的にCameraに対し入力画像を取得し、各画素に対して処理を行い、

  定期的にMonitorに出力します。