メディア
連載
» 2021年04月01日 11時00分 公開

CORDICって何?Q&Aで学ぶマイコン講座(60)(4/4 ページ)

[STマイクロエレクトロニクス,EDN Japan]
前のページへ 1|2|3|4       

動作モード

①ゼロオーバーヘッド・シングルショットモード図6(a)

 単一の演算を実行する最速の方法です。操作手順は次のようになります。

  1. 必要に応じて、CORDIC_CSRレジスタを適切な設定でプログラム
  2. CORDIC_WDATAレジスタで演算の引数をプログラム(演算のトリガー)
  3. CORDIC_RDATAレジスタから結果を読み取る
図6:動作モード例

②ゼロオーバーヘッド・パイプラインモード図6(b)

 いくつかの連続した演算を実行する最速の方法です。操作手順は次のようになります。

  1. 適切な設定でCORDIC_CSRレジスタにプログラム
  2. CORDIC_WDATAレジスタの最初の演算の引数をプログラム(最初の演算のトリガー)
  3. 必要に応じて、次の演算のためにCORDIC_CSRレジスタ設定を更新
  4. CORDIC_WDATAレジスタの次の演算の引数をプログラム
  5. CORDIC_RDATAレジスタから結果を読み取る(次の演算のトリガー)
  6. ステップ3へ戻り、指定した回数だけくり返される
  7. シーケンスの最後に追加の読み取りを行い、最終の演算結果を取得

③ポーリングモード

 RRDYフラグをポーリングし、結果を読み取る方法。ポーリングと読み取るまでの間に時間がかかり、オーバーヘッドが発生する。

  1. 必要に応じて、適切な設定でCORDIC_CSRレジスタをプログラム
  2. CORDIC_WDATAレジスタに引数をプログラム(演算のトリガー)
  3. CORDIC_CSRレジスタのRRDYフラグが立つまでポーリング
  4. CORDIC_RDATAレジスタから結果を読み取る(のパイプライン処理は、ポーリングモードでも使用可能)

④割り込みモード

 RRDYフラグをポーリングする代わりに、結果が得られるとCPUに割り込みが発生する。割り込みの処理はオーバーヘッドになるが、他のタスクに関してCORDICの優先順位を設定することができる。

  1. 適切な設定でCORDIC_CSRレジスタをプログラムし、IENビットをセット
  2. CORDIC_WDATAレジスタの引数をプログラム(演算のトリガー)
  3. 結果の準備が整うと、CORDIC割り込みが発生
  4. 割り込みハンドラで、CORDIC_RDATAレジスタから結果を読み取る(RRDYフラグがリセットされ、割り込み要求がクリア)

 のパイプライン処理は割り込みモードでも使用可能ですが、書き込みと読み取りの順序を維持するように注意が必要です。

⑤DMAモード

 DMAモードは、同じ設定を使用した複数の演算をきわめて効率的に実行できます。ソフトウェアで実行するよりも高速化するだけでなく、他のタスクのためにCPUを解放できます。

 DMAを使用して、CORDICに引数を書き込むことができ、そして新しい演算が開始されるたびに、DMA書き込みチャンネル要求が生成され、次の引数がメモリからフェッチされます。

 同様に、DMAを使用して結果を読み取ることもできます。演算が完了する(RRDYフラグがアクティブになる)ごとにDMA 読み取りチャンネル要求が生成され、結果がメモリに転送されます。

図7:DMAモードの動作

 DMAでCORDIC_CSRレジスタを変更できません。したがって、設定を変更する必要がある場合は、まずDMAを停止し、新しい設定をプログラムした後に再起動する必要があります。DMAモードは、常にパイプライン処理です。

 DMA書き込み要求は、CORDIC_CSRレジスタでDMAWENビットを設定することによって有効になります。DMA読み取り要求は、CORDIC_CSRレジスタでDMARENビットを設定することによって有効になります。

Q&Aで学ぶマイコン講座:過去の質問一覧はこちら

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.