ムライボックス (11) --- CLC

Microchip 社の 8 ビット PIC の最近の品種 (PIC16F1… で始まる 4 桁あるいは 5 桁型番) には、CLC (Configurable Logic Cell) と呼ばれる小規模な PLD (Programmable Logic Device) が含まれているものがあります。
代表的な品種としては、「全部入り」(full-featured) の

  • PIC16F18325 (14 ピン、秋月価格で単価 100 円)
  • PIC16F18313 (8 ピン、秋月価格で単価 75 円)

などがあります。
PIC16F18325 には 4 個、PIC16F18131 には 2 個の CLC が含まれているので、これを利用すれば外付けの OR ゲートなしに 4 ポート / 2 ポートのムライボックスを実現できます。
PLD の規模としては、昔風の表現で言うと、「PAL4C1」、つまり AND アレイの入力が 4 本で、出力が正論理/負論理切り替え可能な回路に相当します。
AND アレイ部 (相当) のあとに下に示すような 8 種類の「マクロセル」のいずれかがつながる形となっています。

  • AND-OR
  • OR-XOR
  • AND
  • S-R ラッチ
  • セット/リセット付き D-FF
  • リセット付き D-FF
  • リセット付き JK-FF
  • セット/リセット付きラッチ

マクロセルとして「AND」を選んだ場合には、AND-OR-(INVERT) の形の組み合わせ回路を実現できます。 (AND アレイ (相当) 4 項、OR アレイ (相当) 4 項)
それ以外のマクロセルでは、OR アレイ (相当) の項数は 2 あるいは 1 に限られます。
ムライボックスの応用では、単独の OR ゲートがあれば良いので、下の図のように AND-OR のマクロセルを選択しています。

上の図は、MPLAB X IDE に付属する MCC (MPLABp Code Configurator) の CLC 設定画面です。
一番左側の 4 つのリストボックスで、全 36 種の中から入力信号を選択します。
上の図では、

  • TX/CX from EUSART
  • C1OUT

が選択されています。
入力信号としては、各種クロックや、内部モジュールからの信号、入力ピンからの信号などがありますが、複数ビットをパラレルに出力できる出力ポートのようなものは用意されていないので、マスク信号としては (使用していない) コンパレータ・モジュールの出力信号 (C1OUT、C2OUT)、PWM モジュールの出力信号 (PWM5OUT、PWM6OUT) を利用しています。
必要なのは OR ゲートひとつなので、右側の OR ゲートのみ有効となるように、残りの 2 つの段のゲートは単に「素通し」となる使い方をしています。
コンパレータ・モジュールの出力部分を示すと、下の図のようになります。

上の図で「x」となっている部分にコンパレータ・モジュールのインスタンス番号、つまりコンパレータ 1 なら「1」、コンパレータ 2 なら「2」が入ります。
「CxON」信号はコンパレータ・モジュールの動作をイネーブルする信号で、CxON = 0 ならばコンパレータ動作は停止され、出力は「0」に固定されます。
「CxPOL」信号で出力信号の極性を反転するかどうかを決めており、この信号をマスク信号として利用しています。
PWM5OUT、PWM6OUT についても同様の出力反転の信号があり、それらを利用しています。
PIC16F18325 を使った 4 ポート出力のムライボックスの最も簡単な回路を下に示します。

MIDI OUT にはバッファを使用せず、PIC のポート出力で直接ドライブしています。