• 検索結果がありません。

CLC - 構成可能なロジックセル

ドキュメント内 意外に簡単! (ページ 66-70)

概要

CLC(構成可能なロジックセル)をPIC16F150xファミリに導入した事は、おそらくCIP理念 の発展において決定的な瞬間でした。ハードウェア ブロックによるCPU負荷の軽減とい う考えを初めて実現したのはCLCです。従来型のマイクロコントローラとプログラマブル ロジック デバイスの隙間を埋めようという試みはこれまでに何度も試みられてきましたが、

両者のバランスを完全に取ったのはCLCが初めてです。Sea of Gates(SOG型=海のよう にトランジスタを敷き詰めた構造)に対して、当初Puddle of Gates (Puddle=水たまり)という 呼び方を使ったその控えめな姿勢に、成功の鍵が隠されていたと著者は考えます。

動作原理

CLCは、あたかもプログラマブル ロジック アレイから取り出したかのような単一のマクロブ ロックです。最新世代のPIC16F1マイクロコントローラが内蔵しているCLCは最大4つで す。完全に新しい周辺モジュールを構成するには不十分ですが、既存の周辺モジュール

3.1: MPLAB Code ConfiguratorCLCダイアログ ウィンドウ

を(チップ内部のグルーロジックとして)接続し、小さいイベントチェーンを有効にするに は十分な数です。

どのCLCも同じ構造を持っています。入力信号マルチプレクサ(ISM)が4個、それぞれ の入力から組み合わせ段に供給、最終的に8つ(AND-OR、OR-XOR、AND、S-Rラッチ、

Dフロップ、OR-Dフロップ、J-Kフロップ、Dラッチ)から選ばれたロジック機能に到達しま す。

入力マルチプレクサは外部からの信号を供給しますが、最も重要な点はタイマ、クロック、

割り込みイベント等、CLC周りの各種内部信号にアクセスできる事です。

次に、比較的複雑なステートマシンを構築できるように、各CLCの出力を入力セレクタに 供給します。1つの出力を他の周辺モジュールのトリガとして使い、割り込みを生成し、出 力ピンを直接駆動する事ができます。

CLCが非常に便利で柔軟なのは、以下の3つの重要な性質を持つためです。

• CLCはマイクロコントローラ内の他の部分と完全に非同期です。デバイスがス リープに移行し、コアおよび全ての内蔵オシレータが停止しても、CLCは通常動 作を継続します。

• CLCは高速です。ロジック伝播時間は数十nsレベルです。また、CLCは超低消 費電力です。1つのセルを有効化して増える消費電力はごくわずかで(nAレベ ル)、計測できないほどです。

• CLCの動作はRAM内で設定されるため、動的に構成を変更できます。

アプリケーション

上記3つの性質から、以下の重要な結果を推測できます。

• CLCロジックは非同期かつ超低消費電力であるため、インテリジェントな復帰メ カニズムを実現するのに最適です。多くの低消費電力(バッテリ駆動)アプリケー ションは、ほとんどの時間をスリープで過ごすか、そうでなければ頻繁(定期的)に 復帰し、センサステータスを確認して外部スティミュラスに応答する必要がありま す。そこでCLCを使って、本当に必要な場合だけCPUを復帰させれば、消費 電力をさらに最適化できます。

• CLCは高速なため、周辺モジュールに接続して出力を直接駆動できます。必要 に応じてCPUをバイパスし、しばしばソフトウェアを複雑にするアプリケーション のタイミング制約を解消し、システムの応答性と総合的な安全性を高める事がで きます。

• CLCはRAM内に設定されるため、再構成できます。アプリケーションは各種ス テート/モードに移行する際にCLCを再設定すると、各種タスクでCPUをサポー トできます。

制限事項

内蔵されたCLCの数が少ないため(本書執筆時点で最大4つ)、複雑になり過ぎる事は ありませんが、より高度なアプリケーションでは潜在的な制約となるでしょう。

また、ロジックセルの伝播遅延が短い事もしばしば誤解されています。入力信号はチップ 内部とロジックをきわめて高速に伝播しますが、一旦出力ピンに達すると、その他全ての I/Oピンの出力ドライバと同じ制約を受けます。出力ドライバは通常、最大デバイスクロック

(16または32 MHz)に対して設計されています。すなわち、たとえ10 nsの伝播遅延を達

成できたとしても、100 MHzの矩形波はピンに出力できません。

さらに、全てのCLC経路で伝播遅延が正確に一致する保証はありません。これにCLC が非同期で動作するという事実を組み合わせると、グリッチの可能性がある事にすぐに気 付くでしょう。本格的なデジタル回路の設計者にとって驚くには当たらないとしても、初心 者はかなり手こずる可能性があります。つまり、CLCは食卓の上の鋭いナイフのようなもの で、扱いには注意が必要です。

MCC によるサポート

MPLAB Code Configuratorは優れたCLCサポートを備えています。図3.4に示したよう に、CLCダイアログ ウィンドウは構成可能なセルを非常にグラフィック表示し、初期化関 数の定義を簡略化します。

MCCはCLCモジュールごとに独立したソースファイル(clc1.cclc2.c...)を生成しま す。

ピン配置

PIC16F150xファミリでは、各モジュールが正方形のQFNパッケージの異なる側面に出力

ピンを持つようにCLCが配置されています。これは、PPSのないデバイスで、CLCをある 種のPPSとして使えるように意図されたものでした。

新しいPIC16F1はほとんどPPS機能を備えているため、任意のデジタルピンをCLC入力

または出力として選択できます。

ホームワーク

• CLCを使って、多数の内部信号(および複雑なロジックの組み合わせ)からAD 変換をトリガしてみましょう。ADCモジュールに関する文書を参照して、この実施 方法を確認してみましょう。

• CLCをマイクロコントローラのコアと非同期で動作させる事によって、異常を識別 し、安全性アプリケーションでCLCを使ってみましょう。

• CLC入力ゲートが未接続の場合、入力がフローティングになっているかどうか調 べてみましょう。

• アプリケーションからCLCに信号を注入する方法を調べてみましょう(ヒント: 入力 ゲートの出力極性制御)。

オンライン リソース

http://microchip.com/clc – CIP – CLCの概要

『DS41631 - 構成可能なロジックセル、ヒントとコツ』

『TB3096 - Pulse Code Modulated (PCM) Infrared Remote Control』

『AN1450 - 遅延ブロック/デバウンサ』

『AN1451 - 構成可能なロジックセル(CLC)を使ったグリッチの除去』

『AN1470 - CLCとNCOを使ったマンチェスタ デコーダ』

『AN1476 - CLCとNCOを組み合わせた高分解能PWMの実装』

『AN1606 - PIC16F1509の構成可能なロジックセル(CLC)を使ったWS2811 LEDドライバ インターフェイスの作成』

『AN1660 - 8ビットPIC16マイクロコントローラを使った単相/多相AC誘導モータ向け低 コスト回路の設計と解析』

ドキュメント内 意外に簡単! (ページ 66-70)