Texas Instruments社(以下、TI)製 のC2000シリーズマイコンはリアルタイム制御、特にデジタル電源やブラシレスDCモーターの制御が得意なマイコンです。メインCPUですべて処理することも可能ですが、一部の型番では、CLA(Control Law Accelerator:制御補償器アクセラレータ)を搭載しており、一部の処理をオフロード(CPUの処理を肩代わりして負荷を軽減)させることが可能です。
本記事では、CLAとはどのようなものか解説します。
CLA (Control Law Accelerator) とは
CLAとは、独立したプログラマブルな 32ビット 浮動小数点演算アクセラレータです。
このアクセラレータは、メインCPUと同じ周波数で動作します。CLAの主な用途は割り込みサービスルーチンの処理で、「割り込み専用のミニCPU」と表現されることもあります。
毎回のパルス周期で繰り返される割り込みサービスルーチンをメインCPUからCLAにオフロードすることで、CPUの負荷を減らすことができます。これにより、CPUに余裕が生まれるため、スイッチング周波数などの性能アップ、あるいは通信や自己診断といった処理の追加ができます。
CLA搭載製品一覧
Part Number | CPU | 合計処理能力 (MIPS) |
FPU Freq (MHz) |
CPU | CLA | RAM (KB) |
Flash (KB) |
ADC ※1 | PWM (ch) |
TMS320F2837x | 1~2 | 800 | Yes | 200 | 1~2 | 204~172 | 1024~512 | 16/12bit、4基、24ch、差動/SE | 24 |
TMS320F2807x | 1 | 240 | Yes | 120 | 1 | 100 | 512 | 12bit、3~2基、17ch、SE | 24 |
TMS320F28004x | 1 | 200 | Yes | 100 | 1 | 100 | 256 | 12bit、3基、21~12ch、SE | 16 |
TMS320F2806x | 1 | 180 | Yes | 90 | 1 | 100 | 128 | 12bit、1基(S/Hは2基)、16~12ch、SE | 17 |
TMS320F2805x | 1 | 120 | - | 60 | 1 | 20 | 128~64 | 12bit、1基(S/Hは2基)、16ch、SE | 14 |
TMS320F2803x | 1 | 120 | - | 60 | 1 | 20 | 128~64 | 12bit、1基(S/Hは2基)、16~13ch、SE | 12 |
※1 ADC:A/Dコンバータの略
CLAの3つの特長
1. CPUを使わずフィードバック制御ができる
CLAはCPUから独立しているため、制御ペリフェラルへの独立アクセスが可能です。
また、CLAには32bit単精度浮動小数点命令セットや三角関数、後述の独立バスなど、フィードバック制御に必要なものは一通りそろっています。これにより、完全に並列な制御ループが実行できます。

2. 割り込み処理がすぐに行える
割り込み処理が、すぐに始まります。レジスタの退避や書き戻しが不要な分、処理時間を詰めることができます。

3. CPUから独立したバスを使用できる
CLAは独自のバスを使うため、CPUはUART、I2C、PMBusなど、他の処理を並行することができます。

活用例
代表的な用途:ADC割り込みサービスルーチンのオフロード
CLAの代表的な用途は、ADC割り込みサービスルーチンのオフロードです。
たとえば、スイッチングレギュレータの場合、制御アルゴリズムへの入力は目標の電圧や電流、それに対する現在の電圧、電流、異常検出、ソフトスタートのカウンタなどがあります。これらの入力から次回のPWM設定を制限時間までに行う、この動作を遅刻することなく繰り返すことが必要です。
ただし、CPUは電源の基本動作だけでなく、デジタル電源ゆえの追加機能(UART、I2C、PMBusなどの通信や双方向動作など)も行わなければならため、基本動作(ルーチンワーク)をCLAへオフロードさせます。
このように、CLAは割り込みサービスルーチンにちょうど良いミニCPUです。短めでも頻度の高い負荷をCPUから取り除くことができます。

CLAとCPUの使い分け
リアルタイム制御が必要となる高帯域な処理はCLAで行い、それ以外の処理にCPUを使う構成がおすすめです。
具体的にはCLAでは、モータや電源のフィードバック制御ループ等を行い、CPUではシステム診断や通信といったバックグラウンドの処理を行うイメージです。

CPUとCLAのアクセス競合を起こさないために
CLAはメインCPUと並列で動作するため、アクセスの競合が気になる方も多いと思います。故障につながるような競合はハードにて回避しますが、それでも片方がread-modify-writeの操作を行う場合は、もう片方からの書き込み内容が上書きされてしまう可能性があります。
このような場合の対策として、ハンドシェイク通信を行うか、データの経路を工夫してアクセス競合を防ぐという手法が考えられます。
また、ハード側で行われる対策と、CLAタスク同士が競合した場合の調停ルールもございますので、下記に記載しました。開発の際に考慮いただければと思います。
ハード側のアクセス競合対策
- アクセス権をCLAあるいはメインCPUの片方へ固定するメモリ(CLAプログラムRAM、CLAデータRAM)
- 同時アクセスが可能(ADC読み値)
- 調停回路で低優先のアクセスを待ち状態にさせる(メッセージRAM、ePWMなどのレジスタ)
CLAタスク同士が競合した場合の調停ルール
- 複数のCLAタスクが同じタイミングで実行可能になった場合は、数字の小さいタスク(タスク1) が最優先で実行される
- あるCLAタスクの実行中に、より優先度の高いタスクが実行可能となっても、実行中のタスクが最後まで実行される
CLAの制限事項(注意点)
ここまでCLAについて紹介してきましたが、CLAはCPUと全く同じ使い方が出来るわけではありません。以下に挙げた点に注意してお使いいただければと思います。
RAMは全域を指定することができない
RAMは全域でなく、データシートで指定されたブロックを使用可能です。詳細は各製品のデータシートをご覧ください。
フィードバック制御向けのレジスタのみアクセス可能
CLAでアクセス可能なレジスタは、基本的に下記のみです。詳細は各製品のデータシートをご覧ください。
CLAでアクセス可能なレジスタ | 一部製品のみアクセス可能 |
|
|
サポートしている言語に制限あり
言語については以下の制限があります。
- C++はサポートしておりません。
- Cの標準関数は使用できません。ただし、フィードバック制御で必要な関数はございます。
- 関数コールは1段のみです。
- 関数コールの引数は2つまでです。
サンプルコードと関連資料
「C2000Ware」というC2000マイコンの資料集がございます。こちらは、データシートとテクニカル・リファレンス・マニュアルは含みませんが、評価や開発でご使用のPCに必要となるデータをご用意しています。(回路図、パターン図、ソフトウェア(サンプルコード)、ドライバなど)
EXE形式で、内容はすべて下記のフォルダへインストールされます。
C:\ti\C2000\C2000Ware_*_**_**_**
C2000Wareのダウンロードはこちら
インストール後のサンプルコード配置場所
例えばTMS320F2806xシリーズの場合は以下のフォルダです。
C:\ti\C2000\C2000Ware_*_**_**_**\ device_support\f2806x\docs\
最初に確認しておきたい資料
サンプルコードの一覧と説明書です。
C:\ti\C2000\C2000Ware_*_**_**_**\ device_support\f2806x\docs\F2806x_DEV_USER_GUIDE.pdf
サンプルコードのうち、C記述で最も簡単なものです。
メインCPUがCLAをソフト起動、CLAが3x3行列の行列式を計算、CLA終了をCPUがポーリング待ちします。
C:\ti\c2000\C2000Ware_1_00_03_00\device_support\f2806x\examples\cla\det_3by3
サンプルコードのうち、アセンブラ記述で最も簡単なものです。
以下のトリガ連鎖を観察できます: PWM周期 → AD変換 → 読み値をCLAでログ収集 → メインCPU割り込みサービスルーチンでの割り込みクリア
C:\ti\c2000\C2000Ware_1_00_03_00\device_support\f2806x\examples\c28\cla_adc
下記はTI社のサイトで公開されている資料です。2012年の資料ですが、日本語で簡潔に書かれているため、最初に読む開発向けの資料としては一番おすすめです。10章の"CLA(Control Law Accelerator:制御補償器アクセラレータ)"をご覧下さい。
TMS320C2000:Piccolo MCUのソフトウェア開発入門
ルーチンワークならCLAにお任せ
デジタル電源ならではの商品性を考えると、通信、CPUタイマー、動作モード切替えなど、通常のフィードバック動作へ追加しての処理があるかと思いますが、それでもハードリアルタイムシステムである以上は、処理の締め切り時間へ遅刻すること(デッドラインミス)のないように実装しなければなりません。
その場合は、メインCPUで処理している割り込みサービスルーチンの一部を、CLAへオフロードされてはいかがでしょうか。
CLAについて、更に詳しい情報をお求めの方は、こちらのドキュメントをご覧ください。
TMS320x2803x Piccolo 制御補償器アクセラレータ (CLA) リファレンス・ガイド
お問い合わせはこちら
本記事でご紹介したCLAやC2000シリーズに関する詳細な情報をお求めの方は、是非こちらからお問い合わせください。
関連情報
おすすめ記事/資料はこちら
たった5分でセンサレス・モータ制御を実現する LAUNCHXL-F28027F
マイコンを使ったモータ制御 -ブラシレスDCモータ制御を動画で解説-
おすすめマイコンボード6選!超初心者向けからArm®搭載製品もご紹介
マイコンの選び方