8086はパーソナルコンピュータのCPUとして使われましたが、当時の状況だと組込み用途も応用として重要でした。8086に周辺回路やI/Oを追加して、組込みに使いやすくしたCPUが80186です。
左右はLCCパッケージ、俗にいうメンコです。中央はPLCCパッケージ。どちらも大きさは約25 mm角。メーカは左と中央がIntel製で右がAMD製です。LCCパッケージのデバイスは特殊なソケットに入れて使用します。PLCCパッケージはソケットを使用することも可能ですが、直接はんだ付けすることもできます。誤挿入防止のため、一箇所だけ角の切り欠きの形が異なります。左のチップでいえば左上の部分だけ切り欠きの形が他の角と異なっています。
CPU部分にも新命令がありましたが、8086の小改良といった程度です。重要なのは集積されている周辺回路部分で、次のものがあります。
クロックジェネレータは水晶発振子を接続するだけでシステムに必要なクロック信号を発生します。CPUの動作クロックの2倍の水晶発振子を使用します。
割り込みコントローラは、タイマユニットやDMAユニットなどの内部デバイスからの割り込みと、4ないし2本の外部端子からの割り込みを受け付けて、適切なベクタ送出などの割り込み制御を行います。外部に8259Aを接続して、外部割り込み端子を増設することも可能になっています。
チップセレクトユニットはメモリ用6本、I/O用7本のチップセレクト出力を備えており、制限がいろいろとありますがプログラムで割り当てアドレスなどを設定できます。I/OデバイスはI/O空間に割り当てることもできますし、メモリ空間に割り当てることも可能です。また、ウェイトサイクルの挿入もプログラムすることができます。
タイマユニットには3個の16 bitタイマ・カウンタが含まれています。そのうちの2個は入出力端子を備えていて、外部の信号をカウントしたり、外部にパルス出力を行ったりできます。もちろん、割り込み源にもなります。
DMAユニットは2個の独立したコントローラが含まれています。転送アドレスは20 bit指定でき、全メモリ空間の任意の場所でDMAを行えます。転送カウンタは16 bit幅。転送元アドレスと転送先アドレスのインクリメントやデクリメントや不変指定も可能ですし、転送先や転送元がメモリ空間かI/O空間かもプログラマブルで、8080A用のDMACを8086で流用するのと比べるとずいぶんと便利になっています。なお、転送アドレスは20 bitの物理アドレスを直接設定することになっているので、セグメントとオフセットで20 bitアドレスを取り扱っているプログラム側からは、アドレス変換を設定前に済ましておかなくてはなりません。
少なくとも8086で組み込みシステムを作成するより5個くらいはICが減りますかね。タイマやDMACまで使用するシステムだと、うまくすると20個程度のICを節約できることでしょう。
8086に対する8088のように、80186にも外部データバス幅を8 bitにした80188が存在します。組み込み用のプロセッサといっても80186はROMやRWMを必ず外付けにしなければならず、当時はROMや小容量のRWMに主に8 bitデータ幅のメモリが使われていたので、16 bit幅のデータバスをもつプロセッサではROMとRWMがそれぞれ2個単位で付加する必要があります。8 bitデータバス幅の80188なら1個単位で外付けすれば良いので、処理能力が間に合えばコストダウンが可能となります。
LCCパッケージの80188。
Return to IC Collection