PIC (コントローラ)

PIC(Peripheral Interface Controller)とは



PIC(ピック)は、マイクロチップ・テクノロジー社が製造するマイクロコントローラ製品群の総称です。1975年にジェネラル・インストゥルメント社によって開発され、1985年にマイクロチップ社が事業を引き継ぎました。

概要



PICは、CPU、メモリ(RAM、ROM)、I/Oなどを1チップに集積したマイクロコントローラです。ROMに書き込まれたプログラムによって制御され、回路構成が容易で安価であるという特徴があります。また、インターネット上で豊富な情報を入手でき、関連書籍も充実しているため、電子工作愛好家の間で非常に人気があります。

特徴



RISCライクな構造: 命令語長が揃えられ、命令数が抑えられたRISCライクな構造を採用しています。
ハーバード・アーキテクチャ: コード領域とデータ領域が分離されたハーバード・アーキテクチャを採用し、各領域のバス幅を最適化しています。
ビットコア: コードメモリの1命令のビット数を指し、例えば12ビットコアの場合はコードエリアのバス幅が12ビット、データエリアのバス幅が8ビットとなります。
命令実行サイクル: 大半の命令が1サイクルで実行されますが、シリーズによって1サイクルあたりのクロック数が異なります。8ビット系PICは4クロック、PIC24/dsPIC系は2クロック、PIC32系は1クロックです。
クロック発振回路: 多くの品種で動作用のクロック発振回路を内蔵していますが、高精度を求める場合は外付けの水晶振動子も利用可能です。
プログラムメモリ: 以前はワンタイムROMやEPROMが用いられていましたが、現在ではフラッシュROMが主流です。
データ保存用メモリ: 多くの品種に不揮発性のデータ保存用としてEEPROMが内蔵されています。
バス: 外部バスは多くの品種で出力されていませんが、一部の多ピン品種では外部バスが用意されています。
パッケージ: 長方形のDIPタイプから小型の表面実装タイプまで、豊富な形態で供給されています。
ピン数: 6ピンの小型のものから多数のピンを持つものまで、バリエーションが豊富です。
周辺機能: GPIOポートのほか、タイマ、A/Dコンバータ、シリアルコントローラ (USART, IIC)、USBコントローラなどを内蔵した製品があります。
出力電流: 多くの品種でGPIOポートは1ピンあたり25mAまで出力可能で、LEDなどを直接駆動できます。
ディスコンポリシー: マイクロチップ社はディスコン(生産停止)にしない方針を掲げており、古いチップも入手可能です。
開発環境: マイクロチップ社から無償でMPLAB Xという統合開発環境とCコンパイラ(XC)が提供されています。アセンブラも利用可能です。
ライタ: 初期はPICチップをライタに装着して書き込む方式が主流でしたが、現在ではMicrochipの廉価な純正ライタPICKitシリーズが一般的です。
普及の背景: 日本では電子工作雑誌で紹介されたり、秋葉原の電子パーツ店で入手しやすかったため、広く普及しました。また、PlayStationのMODチップにも使用されたことが普及を後押ししました。
入手性: 他のマイクロコンピュータに比べて入手性が非常に良く、特にDIPパッケージの豊富さから、アマチュア電子工作で圧倒的な人気を誇ります。
競合製品: 近年ではAtmel AVRマイコンや、ARMアーキテクチャ32ビットマイクロコントローラなど、ライバル製品も登場しています。

機能



すべてのPICに搭載されている基本機能と、一部の品種に搭載されている追加機能を以下に示します。

基本機能:

発振回路:
外部発振回路水晶振動子発振、外部からのクロック供給)
内部発振回路(RC発振回路、高精度内部発振回路、PLL回路)
リセット: RESET端子、ウォッチドッグタイマ (WDT)
割り込み: 外部割込み(ピン変化、INTピン)、内部割込み(AD変換完了、EEPROMライト完了、タイマオーバーフロー)
スリープ: 低消費電力モード

一部品種に搭載されている機能:

CCP機能: キャプチャ、コンペア、PWM
タイマー: カウントアップ
AD変換: アナログ-デジタル変換
DA変換: デジタル-アナログ変換
コンパレータ: 比較
シリアル通信: USB、SPI、I2C、USART、CAN
パラレル通信
WDT: ウォッチドッグタイマー
JTAGプログラミング: 24FおよびdsPIC33Fシリーズのみ
USB On-The-Go機能

PICの種類



PICは、8ビット16ビット32ビットなど、様々なシリーズに分かれています。以下に主なシリーズの特徴と代表的な製品をまとめます。

8bit PICシリーズ


命令長12、14ビットコアシリーズ

特徴:
CPU内蔵レジスタはWレジスタ(アキュムレータ)が一つのみ
データメモリ空間にはSFR(特殊機能レジスタ)とGPR(汎用レジスタ)が混在
データメモリ空間は「レジスタファイル」と呼ばれ、高速にアクセス可能
GOTO、CALL命令のアドレス指定に制限あり
条件ジャンプ命令はBTFSC, BTFSS命令のみ
割り込み時の自動コンテキスト保存はなし
ハードウェアスタックの段数に制限あり(12ビットコア:2レベル、14ビットコア:8レベル)
古い品種ではGPIO出力・入力にPORTnレジスタを使用
代表的な製品:
ベースラインシリーズ(命令12ビット長コア)
PIC10系(10F200, 10F202など)
PIC12系(12C508, 12C509, 12F508, 12F509など)
ミッドレンジシリーズ(命令14ビット長コア)
PIC12系(12F629, 12F675, 12F683など)
PIC16系(16F84A, 16F648A, 16F88, 16F877A, 16F887, 16F876A, 16F886, 16F1827など)

Enhancedミッドレンジコア(命令長14ビット)シリーズ

特徴:
命令数が増加、コードメモリ/データメモリのリニア化
スタックの倍増(16レベル)、割り込み時のハードウェアによるコンテキスト保存などの強化
代表的な製品:
PIC12系(12F1571など)
PIC16系(16F19xx, 16F1455など)

ハイエンドシリーズ(命令16ビット長コア)


特徴:
アーキテクチャを高級言語向きに改良
コードメモリのページ切り替えが不要
データメモリもリニアにアクセス可能
ハードウェアスタックは32レベルに拡張
最大CPUクロックは40-64MHz
代表的な製品:
PIC18系(18F4520, 18F2550, 18F4550, 18F2620, 18F4620, 18F8722, 18F14K50, 18F2480など)

PIC24とdsPIC


特徴:
マイクロチップ社による本格的な16ビットマイクロコントローラ
PIC24は一般的な目的用、dsPICはDSP能力を追加
すべてのレジスタは16ビット
命令実行サイクルが2クロックに短縮
データアドレス空間は64KBに拡張
ROMに格納されたデータは直接参照可能
異なる割り込みソースからの割り込みベクタをサポート
ハードウェア積和演算、バレルシフタ、ビット反転、ハードウェア除算支援、ループ処理のハードウェア支援など
代表的な製品:
PIC24(PIC24F系, PIC24H系, PIC24E系)
dsPIC(dsPIC30F系, dsPIC33F系, dsPIC33E系)

PIC32MX


特徴:
MIPSアーキテクチャを採用した32ビットマイクロコントローラ
1つのインストラクションは1クロックで実行
キャッシュメモリを搭載
RAMから実行可能
フルスピードUSBデバイスまたはOTGホストをサポート
JTAG、ROM書き換え、デバッグに対応
代表的な製品:
PIC32MX3xx, PIC32MX4xxなど

PIC32MZ


特徴:
MIPS M14Kコアをベースとしたマイクロプロセッサ
200 MHz動作、330 DMIPS、3.28 CoreMark/MHzのパフォーマンス
2MBのフラッシュメモリおよび512KBのRAM
ハイスピードUSBおよび暗号化エンジン、SQI

SCENIX SXシリーズ


SCENIX(現在はUbicom)のCPU。PICとバイナリ互換で命令を4倍速化。PIC12相当のものとPIC16相当のものがある。

クローン製品



PIC互換のマイクロコントローラを製造しているメーカーも存在します。

ELAN Microelectronics: 13ビット命令長のPICライクなマイクロコントローラを製造。
Holtek: HT37, HT4x, HT56, HT6x, HT82, HT95などのPICライクなマイクロコントローラを製造。

使用可能なC言語コンパイラ



PICのプログラミングには、以下のC言語コンパイラが使用できます。

MPLAB XC Compiler: マイクロチップ社が提供する無償のコンパイラ。MPLAB X IDEに統合して使用。XC8, XC16, XC32の3種類があり、Free版でも十分な機能を持つ。
CCS PIC C Compiler: 対象となるPICの種類や開発環境により製品が分かれている。MPLABに統合して使用。
HI-TECH PIC C Compiler: MPLABに統合するほか、EclipseベースのIDEで使用可能。無償版あり。
mikroElektronika mikroC for PIC: SDカードやキャラクタLCDなど多くのライブラリを標準搭載。独自のIDEを使用。無償版では出力に制限あり。
SDCC (Small Device C Compiler): フリーのCコンパイラ。PICを含む複数のデバイスに対応。

脚注



この記事では、PICの基本情報から、具体的な機能や種類、開発環境までを網羅的に解説しました。PICは電子工作だけでなく、産業機器など幅広い分野で使用されています。

関連項目



Atmel AVR - PICと競合する製品
組み込みシステム
シーケンス制御

外部リンク



マイクロチップ・テクノロジー・ジャパン株式会社
Microchip MPLAB XC Compilers - 無料のコンパイラー
Microchip MPLAB X IDE - 無料の統合開発環境
Microchip Advanced Part Selector - 機能からPICを絞り込めるセレクター
MPLAB XC8 入門ガイド
MPLAB X IDE ユーザガイド
PICkit 3 プログラマ/ デバッガ ユーザガイド
* 電子工作の実験室

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。