メディア

MCUの「礎」的存在、Microchip「PIC16」マイクロプロセッサ懐古録(3)(1/4 ページ)

今回は、MCUを語る上で欠かせない存在であり、出荷数は累計数百個に上るであろう「PIC」シリーズを語る。とりわけ「PIC16」は、アーキテクチャどころか製品としてもまだまだ現役である。

» 2025年04月22日 13時30分 公開
[大原雄介EDN Japan]

製品が多過ぎる「PIC16」

 アーキテクチャどころか製品としてまだ現役なのがMicrochip Technology(以下、Microchip)の「PIC16」だ。そもそも製品が多過ぎて、同社のPIC MCUのページを見に行っても全製品の一覧がどこにも無い。データシートを見ると、PIC16だけで155個。PIC全体で言えば573個とかになっているが、ここには「dsPIC」とか「PIC24/PIC32」なんかも入っているから、8bit PICだけで言えばもっと少ない(試しに"PIC1"で検索したら264個だった)が、そんな訳で十分現役のアーキテクチャである。その一方で、例えばポーランドのDCDはPIC16互換IP(Intellectual Property)を提供しているし、Lattice Semiconductorも自社のFPGA向けにPIC16互換のソフトIPを提供するなど、幅広く利用されているのが分かる。このPIC16、最初に登場したのは(先月ご紹介した)「Intel 8048」と同じく1976年である。

 もともとPIC16というか、そのPICの元になったPIC1650を開発したのは、今は無きGI(General Instruments)のMicroelectronics Divisionである。1975年、GIはHoneywellと共同で、「CP1600」という16bit Processorを開発していた。中身は非常に「PDP-11」に近いというか、だいぶマネをした部分があったらしいが、PDP-11そのものと命令互換というわけではない。このCP1600、Honeywellが開発に絡んでいたことからも分かるように制御システム向けとして開発され、Honeywellはこれを利用して制御システムを開発していたらしいし、GI自身も「GIC 1600」というマイクロコンピュータを製造・発売していた(図1)。もっとも出荷数量という意味では、このCP1600の派生型である「CP1610」がMattel Electronicsの「Intellivision」という家庭用ゲーム機に採用された。Intellivisionは一時期は全米のシェアの20%のシェアを獲得し、1983年までに375万台が発売されたそうなので、それだけCP1610が出荷されたことになる。

図1:GIのSeries 1600 Microprocessor System Microcomputer Documentation(1975)より。CPUやメモリ、入出力などが全部モジュールの形でシャーシに搭載される格好。TTY CableとかReader/Punch Cableあたりが時代を感じさせる[クリックで拡大]

 ちなみにCP1600やCP1610は専用の入出力回路を持たず全部Mapped I/Oになる関係で、外部にI/O用のチップが用意される(図2)。ここで

  • PIC1640:汎用のユーザープログラマブルなI/Oチップ
  • PIC1641:キーボードI/F
  • PIC1642:Sync/Async Communicationチップ
  • PIC1643:FDCコントローラーチップ
  • PIC1647:Display Controller

となっている。ちなみにこの"PIC"は「この時点では」"Programmable Interface Controller"の略である。

図2:出典は図1に同じ(GIのSeries 1600 Microprocessor System Microcomputer Documentation(1975)より)。右下にあるのがそのI/O用チップ[クリックで拡大]

ROM容量を拡張した「PIC1650」

 さて、GIはこのPIC1640をベースに「PIC1650」を1976年に発表する。といっても両者の差はほとんどなく、I/Oピンの数が増えただけである。このPIC1650はもちろん、PIC1640同様にCP1600/CP1610の周辺チップとして利用する事もできたが、Intellivisionとは無関係なPIC1650だけで利用するような用途が次第に増えていったこともあり、1983年には7製品に増えている(ついでにPICの意味も"Programmable Intelligent Computer"に変更された)。簡単にスペックをまとめると

品種 ROM容量
(bit)
RAM容量
(bit)
Cycle Time
(マイクロ秒)
Interrupt Package
PIC1650A 512×12 32×8 4 No 40pin
PIC1654 512×12 32×8 2 No 18pin
PIC1655A 512×12 32×8 4 No 28pin
PIC16C56 512×12 32×8 4.5 No 28pin
PIC1656 512×12 32×8 4 Yes 28pin
PIC1670 1024×13 32×8 2 Yes 40pin
PIC1672 2048×13 32×8 2 Yes 40pin

ということになっている。ここで注目すべきはROM容量である。PIC1640とかPIC1650ではOpCodeが12bitで設計されていたが、PIC1670/1672ではOpCodeを13bitに拡張すると共に、Register Spaceを64Byteに拡張(うち16BytesはSpecial Register、48ByteがRAM)、いくつか命令を追加している。また初期のPIC1650を始めとする製品は外部のInterruptを受け取る機能が無かったが、PIC1650やPIC1670では外部Interruptのサポートが追加されるなど、同じファミリーながら割と根本的なところでコアの構造に手が入っているのが特徴である。特にこのOpCodeを勝手に拡張というのは他のメーカーでは見られない部分である。まぁ当時はBinary Compatibilityがそこまで重視されていなかったということだろう。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.