8bit PICシリーズ(データメモリが8ビット幅)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/03 13:50 UTC 版)
「PIC (コントローラ)」の記事における「8bit PICシリーズ(データメモリが8ビット幅)」の解説
令長12、14ビットコアシリーズの特徴 CPUの内蔵レジスタはWレジスタ(アキュムレータ)一つしかない。データメモリ空間にはSFR (Special Function Register) とGPR(General Purpose Register。いわゆるRAM)が混在している。一般的にはマイクロコントローラの周辺機能のレジスタをSFRと呼ぶが、PICにおいてはプログラムカウンタやステータスレジスタ、インデックスレジスタなど、一般的にはCPU内蔵レジスタとなっているものまでがSFRとしてデータメモリ空間上に存在している。 データメモリ空間は「レジスタファイル」と呼ばれ、アドレス0x00-0x7F(命令長12ビットコアの場合0x00-0x1F)をレジスタのような感覚で高速にアクセスできるようになっているが、この範囲を超えるアドレスはバンク切り替えでアクセスする必要があり、リニアなメモリアクセスに難がある。 GOTO、CALL命令のアドレス指定部が限られているため、一定サイズ以上のプログラムはページ切り替えを必要とする。 定数テーブルは作れないので(コード空間とデータ空間が分離されているハーバードアーキテクチャであり、ROMはすべてコード空間に存在するため)、リテラルをWレジスタに返すリターン命令 (RETLW) を並べて代用する。 一般的なCPUのようなジャンプ先を指定できる条件ジャンプ命令を持っておらず、あるのは「ビットテスト結果で次の命令をスキップ」するBTFSC, BTFSS命令だけである。これらとGOTO命令等を組み合わせて条件分岐せざるを得ないため、直感的でないコーディングを強要される。 命令長12ビットコアは割り込み機構を持っていない。割り込み機構がある14ビットコアでも、割り込み時の自動コンテキスト保存は一切行われないためプログラムで対応する必要がある。 スタックは一般的なCPUのようにデータメモリ空間を使用するのではなく、RETURN系命令の戻り先を積むための専用メモリが用意されている(ハードウェアスタック)。段数は命令長12ビットコアでは2レベル・命令長14ビットコアでは8レベルと限られているのであまり深いネストはできない。 古い品種ではGPIO出力・入力共にPORTnレジスタを使用する。PORTnレジスタは読み込むとポートの入出力設定に関わらず常にピンの状態が読み込まれる。このためリードモディファイライトには注意が必要であったが、比較的新しい品種ではGPIO出力ラッチレジスタLATnが新設され、この問題に対応している。 Enhancedミッドレンジコア(命令長14ビット)シリーズの特徴 後述の命令長16ビットコアの登場後、その機能を一部取り込んで新たに投入された拡張版の命令長14ビットコアアーキテクチャ。命令数の増加・コードメモリ/データメモリのリニア化・スタックの倍増(16レベル)・割り込み時のハードウェアによるコンテキスト保存などが強化されている。 命令長16ビットコアシリーズの特徴 命令長12, 14ビットシリーズをベースに、アーキテクチャを高級言語向きに改良するなど、より汎用マイコンらしく拡張されている。 コードメモリのページ切り替えは必要なくなった。 データメモリもバンクを意識することなくリニアにアクセスできる命令が拡張された。 コードメモリ空間をデータとして読み出すための命令が追加された。 ハードウェアスタックは32レベルに拡張された。 最大CPUクロックは品種によるが40-64MHz(1命令実行サイクルに4クロックを要する点は命令長12, 14ビットコアシリーズと同様) 命令長12ビット、14ビットコアの品種ではプログラムメモリ容量をワード(命令長)単位で表記していたが、命令長16ビットコアの品種では基本的にバイト(8ビット)単位で表記し、ワード単位表記も併記される形になったので注意が必要である。すなわちプログラムメモリ32KBの品種では、16384命令までのプログラムが格納可能となる。 ベースラインシリーズ(命令12ビット長コア) PIC10系 このシリーズは全て6ピンである(表面実装パッケージの場合。DIPの場合はNC2ピンを加えて8ピンとしている)10F200 10F202 等 PIC12系 PIC12は初期からある8ピンのシリーズである。初期の品種は12ビットコアだが、その後14ビットコア・Enhancedミッドレンジ(拡張版命令14ビット長コア)の品種も加わっている。12C508,509 初期の、プログラムメモリにワンタイムPROM(1回のみ書き込み可能)を使用した品種。開発用の紫外線消去窓付きの品種(CE)もあった。 12F508,509 12C508,509のフラッシュ版 ミッドレンジシリーズ(命令14ビット長コア) PIC12系 12F629 発振回路 (4MHz) を内蔵し単独動作可能な8PinのPIC 12F675 12F629にA/Dコンバータを追加 12F683 CCPを搭載・内部クロック8MHz PIC16系 16F84A 多数のPIC入門書で取り上げられた定番機種(だが、周辺機能はGPIOとタイマしかない)。 16F648A 16F84Aに多彩な機能を追加搭載、発振回路(4MHz)内蔵したため単独動作で実験できるため扱いやすい、CCP・USARTを搭載 16F88 18PinのPICでは最も多機能な機種、A/Dコンバータ搭載、内蔵クロック8MHz搭載(16F84Aの後継) 16F877A 40pinとI/Oの数も多く機能も16F88以上、プログラムメモリも8Kワードで大容量 16F887 16F877Aの改良版。発振回路を内蔵し、A/Dコンバータのピン数が増えている。 16F876A 16F877Aの28pin版 16F886 16F887の28pin版 16F1827 16F88の後継 Enhancedミッドレンジシリーズ(拡張版命令14ビット長コア) PIC12系 12F1571 等 PIC16系 16F19xx 等 16F1455 14ピンながらUSB(デバイス)モジュールを備える。 ハイエンドシリーズ(命令16ビット長コア) 2016年6月現在、このシリーズに属する物はPIC18シリーズのみであるPIC18系, PIC18 Kシリーズ, PIC18 Jシリーズ PIC18 Kシリーズは低消費電力・高パフォーマンスアプリケーションに対応したシリーズと位置づけられている(反面、チップトータルでのポート駆動能力は他品種に比べて低い場合がある)。 PIC18 Jシリーズは高機能シリーズとなっており、最大のものは100ピンパッケージで外部メモリバスインタフェイスを備える。 18F4520 40Pin。プログラムメモリは32KB(16Kワード)、RAMは約1.5KB 18F2550 28Pin。USB(デバイス)モジュールを内蔵 18F4550 18F2550の40Pin版 18F2620 28Pin。8722と同じRAM容量をもつ 18F4620 18F2620の40Pin版 18F8722 80Pin TQFPパッケージ、プログラムメモリは128KB、RAMも約4KBと大容量 18F14K50 20Pin。USB(デバイス)モジュールを内蔵。手頃なピン数で手軽に扱えるUSBマイコンとして近年よく利用されている。 18F2480 28Pin。自動車の車載ECU間及び診断用コネクタなどとの通信に使用されるCANインタフェイスを実装したECANモジュールを備える。 ELM Electronics社のELM327(英語版)というOBD2(標準化された診断用コネクタ)-非同期シリアル変換チップは、18F2480にファームウェアを書き込んだ製品である(低消費電力版ELM327Lは18F25K80を使用)。ELM327とBluetooth (SPP) モジュールを組み合わせドングル状にしたOBD2-Bluetoothアダプタもまた通称ELM327と呼ばれている。ELM Electronics社は当初コードプロテクトをかけずにチップを出荷してしまったため、デッドコピー品が大量に出回ってしまっている。
※この「8bit PICシリーズ(データメモリが8ビット幅)」の解説は、「PIC (コントローラ)」の解説の一部です。
「8bit PICシリーズ(データメモリが8ビット幅)」を含む「PIC (コントローラ)」の記事については、「PIC (コントローラ)」の概要を参照ください。
- 8bit PICシリーズのページへのリンク