
Intel 8255 (またはi8255 ) プログラマブルペリフェラル インターフェイス(PPI) チップは、1970 年代前半にIntel 8080マイクロプロセッサ用に Intel によって開発および製造されました。8255 は、さまざまなプログラム可能な動作モードを備えた 24 の並列入出力ラインを提供します。
8255 は、MCS-85 チップ ファミリのメンバーであり、Intel が8085および8086マイクロプロセッサおよびその子孫で使用するために設計しました。[1]最初は 40 ピンDIPで、後に 44 ピンPLCCパッケージで利用可能になりました。[2]デジタル処理システムで広く応用され、後に他のメーカーによってクローン化されました。82C55 は、より高速で低消費電流の CMOSバージョンです。
8255の機能は現在、主に大型VLSI処理チップにサブ機能として組み込まれています。8255のCMOSバージョンは今でもルネサスによって製造されていますが[3] 、主にマイクロコントローラのI/Oを拡張するために使用されています。
類似チップ
8255 は、モトローラ 6800ファミリーのモトローラ 6820 PIA (周辺機器インタフェース アダプタ)と同様の機能を持ち、これも当初は 40 ピン DIL としてパッケージ化されていました。8255 は、4 つのプログラム可能な方向ビットを持つ 24 の I/O ピンを備えています。1 つはポート A(7:0) (つまり、ポート内のすべてのピン)、1 つはポート B(7:0)、1 つはポート C(3:0)、1 つはポート C(7:4) です。対照的に、モトローラと MOS チップは 16 の I/O ピンと 4 つの制御ピンしか備えていませんが、モトローラ/MOS チップではすべての I/O ピンの方向 (入力または出力) を個別にプログラムできます。どちらも、ある程度の自動ハンドシェイクと割り込み生成を行う構成になっています。
その他の同等のマイクロプロセッサ I/O チップとしては、 Signetics 2650ファミリの 2655 Programmable Peripheral Interface 、Z80 PIO、Western Design Center WDC 65C21 (Motorola 6820/6821 に相当)、およびタイマーやシフト レジスタなどのかなりの追加機能を備えた MOS Technology 6522 VIAと6526 CIA があります。
バリエーション

インテルID8255Aの産業グレードバージョンは、100個以上の数量で17.55ドルで入手可能でした。 [4] 入手可能なインテル8255A-5バージョンは、100個以上の数量で6.55ドルでした。[5]入手可能な82C55A CMOSバージョンは、沖電子工業株式会社 に外注されました。[6]インテルから入手可能なパッケージは、1985年第4四半期にサンプル出荷された44ピンPLCCで82C55ブランドでした。 [7] 東ヨーロッパでは、同等の回路がソ連でKR580VV55Aとして、チェコスロバキアでテスラによってMHB8255Aとして製造されました。
アプリケーション
8255は、 SV-328やすべてのMSXモデルなどの多くのマイクロコンピュータ/マイクロコントローラシステムや家庭用コンピュータで広く使用されました。8255は、オリジナルのIBM-PC、[8] PC/XT、PC/jrとそのクローン、およびN8VEMなどの多数の自家製コンピュータで使用されました。
関数
8255はCPUまたはデジタルシステムにプログラム可能なパラレルI/Oへのアクセスを提供します。[9] 8255には24個の入出力ピンがあります。[10]これらは3つの8ビットポート(A、B、C)に分かれています。[11] ポートAとポートBは8ビット入出力ポートとして使用できます。ポートCは8ビット入出力ポートとして、または2つの4ビット入出力ポートとして使用したり、ポートAとBのハンドシェイク信号を生成するために使用できます。
3 つのポートはさらに次のようにグループ化されます。
- ポート A とポート C の上部で構成されるグループ A。
- ポート B とポート C の下部で構成されるグループ B。
8 つのデータ ライン (D0 ~ D7) が使用可能です (8 ビット データ バッファ付き) 。RD (ピン 5) とWR (ピン 36) のステータスでポートまたは制御レジスタにデータを読み書きできます。RD と WR はそれぞれ読み取り操作と書き込み操作のアクティブ ロー信号です。アドレス ラインA 1と A 0 を使用すると、以下に示すように、各ポートのデータ レジスタまたは制御レジスタにアクセスできます。
制御信号チップセレクトCS (ピン 6) は、8255 チップを有効にするために使用されます。これはアクティブロー信号です。つまり、CS = 0 の場合、8255 が有効になります。RESET入力 (ピン 35) は、8085、8086 などのシステムのRESETラインに接続されているため、システムがリセットされると、すべてのポートが入力ラインとして初期化されます。これは、ポート方向設定の不一致により 8255 やそれに接続されている周辺機器が破損するのを防ぐためです。例として、ポート A で 8255 に接続されている入力デバイスについて考えます。前の操作から、ポート A が出力ポートとして初期化され、現在の構成を使用する前に 8255 がリセットされていない場合、接続されている入力デバイスまたは 8255、あるいはその両方が損傷する可能性があります。これは、8255 と接続されているデバイスの両方がデータを送信するためです。
制御レジスタ(または制御ロジック、コマンドワードレジスタ)は、ポートの動作モードと入出力指定を選択するために使用される8ビットのレジスタです。[12]
8255の動作モード
8255 には 2 つの基本的な動作モードがあります。
- ビット セット/リセット モード (BSR モード)。
- 入出力モード(I/O モード)。
2 つのモードは、制御ワード レジスタのD 7ビットにある値に基づいて選択されます。D 7 = 1 の場合、8255 は I/O モードで動作し、D 7 = 0 の場合、BSR モードで動作します。
ビットセット/リセット (BSR) モード
ビットセット/リセット(BSR)モードはポートCでのみ使用可能です。ポートCの各ライン(PC7 - PC0 )は、制御ワードレジスタに適切な値を書き込むことでセットまたはリセットできます。BSRモードとI/Oモードは独立しており、BSRモードを選択してもI/Oモードの他のポートの動作には影響しません。[13]

- BSR モードの場合、 D 7ビットは常に 0 になります。
- ビット D 6、 D 5、および D 4は、ドントケア ビットです。
- ビット D 3、D 2、および D 1 は、ポート C のピンを選択するために使用されます。
- ビット D 0は、ポート C の選択されたピンを設定/リセットするために使用されます。
ポート C ピンの選択は次のように決定されます。
例えば、PC 5を設定する必要がある場合、制御ワードでは、
- BSRモードなので、D 7 = '0'です。
- D 4、 D 5、 D 6 は使用されない為、「 0 」と仮定します。
- PC 5 を選択する必要があるため、D 3 = '1'、D 2 = '0'、D 1 = '1'となります。
- PC 5 を設定する必要があるため、D0 = '1'になります。
したがって、上記の値に従って、0B (16 進数) が制御ワード レジスタ (CWR) にロードされます。
入力/出力モード
このモードは、制御ワードレジスタのD7ビットが1のときに選択されます。I/Oモードには3つあります。[ 14]
- モード 0 - シンプル I/O
- モード 1 - ストロボ I/O
- モード 2 - ストロボ双方向 I/O
制御ワード形式

- D 0、 D 1、 D 3、 D 4 は、それぞれポート C 下部、ポート B、ポート C 上部、ポート A に割り当てられます。これらのビットが1の場合、対応するポートは入力ポートとして機能します。たとえば、 D 0 = D 4 = 1 の場合、下部ポート C とポート A は入力ポートとして機能します。これらのビットが0の場合、対応するポートは出力ポートとして機能します。たとえば、 D 1 = D 3 = 0 の場合、ポート B と上部ポート C は出力ポートとして機能します。
- D 2はグループ B (ポート B と下位ポート C) のモード選択に使用されます。D 2 = 0 の場合、モード 0 が選択され、D 2 = 1 の場合、モード 1 が選択されます。
- D 5と D 6 はグループ A (ポート A と上位ポート C) のモード選択に使用されます。選択は次のように行われます。
- I/Oモードなので、D 7 = 1 となります。
たとえば、ポート B と上部ポート C を入力ポートとして初期化し、下部ポート C とポート A を出力ポートとして初期化する必要がある場合 (すべてモード 0)。
- I/OモードなのでD 7 = 1となります。
- モード 0 動作の場合、モード選択ビット D2、D5、D6 はすべて 0 になります。
- ポート B と上部ポート C は入力ポートとして動作する必要があるため、D 1 = D 3 = 1 となります。
- ポート A と下位ポート C は出力ポートとして動作する必要があるため、D 4 = D 0 = 0 となります。
したがって、目的の操作を行うには、制御ワード レジスタに「10001010」= 8A (16 進数)をロードする必要があります。
モード 0 - シンプル I/O
このモードでは、ハンドシェイク信号なしでポートを単純な I/O 操作に使用できます。ポート A とポート B は単純な I/O 操作を提供します。ポート C の 2 つの半分は、追加の 8 ビット ポートとして一緒に使用することも、個別の 4 ビット ポートとして使用することもできます。ポート C の 2 つの半分は独立しているため、半分を入力ポートとして初期化し、もう半分を出力ポートとして初期化して使用できます。
モード 0 の入出力機能は次のとおりです。
- 出力ポートはラッチされます。
- 入力ポートはラッチされずにバッファリングされます。
- ポートにはハンドシェイク機能や割り込み機能はありません。
- 4 つのポートでは、16 種類の I/O の組み合わせが可能です。
「ラッチ」とは、ビットがストレージ レジスタ (フリップフロップの配列) に格納され、ラッチ後に入力が変化しても出力が一定に保持されることを意味します。
8255 の出力は、最後に書き込まれたデータを保持するためにラッチされます。これは、データがバス上に 1 サイクルだけ存在するため必要です。したがって、ラッチしないと、書き込みサイクルが終了するとすぐに出力は無効になります。
入力はラッチされません。CPU は現在の値を読み取って、後で参照する必要がある場合にそのデータを CPU レジスタまたはメモリに格納するだけでよいためです。ポートの読み取り中に入力が変化すると、結果が不確定になる可能性があります。
モード0 – 入力モード
- 入力モードでは、8255 は外部周辺ポートからデータを取得し、CPU はデータ バスを介して受信したデータを読み取ります。
- CPU はまず CS を低くして 8255 チップを選択します。次に A 0および A 1ラインを使用して目的のポートを選択します。
- 次に、CPU はRD 信号を発行し、システム データ バスを介して外部周辺機器からデータを読み取ります。
モード0 - 出力モード
- 出力モードでは、CPU はシステム データ バスを介して 8255 にデータを送信し、外部周辺ポートは 8255 ポートを介してこのデータを受信します。
- CPU はまず CS を低くして 8255 チップを選択します。次に A 0および A 1ラインを使用して目的のポートを選択します。
- 次に、CPU はWR 信号を発行し、システム データ バスを介して選択されたポートにデータを書き込みます。このデータは、選択されたポートに接続された外部周辺機器によって受信されます。
モード1 - ストロボ入力/出力モード
ポート A またはポート B をハンドシェイク (ストローブ) 入力または出力操作に使用する場合は、そのポートをモード 1 で初期化します (ポート A とポート B は異なるモードで動作するように初期化できます。つまり、たとえば、ポート A はモード 0 で動作し、ポート B はモード 1 で動作できます)。ポート C のピンの一部は、ハンドシェイク ラインとして機能します。
このモードのポート B では (入力ポートとして動作しているか出力ポートとして動作しているかに関係なく)、PC0、PC1、および PC2 ピンはハンドシェイク ラインとして機能します。
ポート A がモード 1 入力ポートとして初期化されている場合、PC3、PC4、PC5 はハンドシェイク信号として機能します。ピン PC6 と PC7 は、入力/出力ラインとして使用できます。
ハンドシェイクをサポートするモード 1 には次の機能があります。
- 2 つのポート、つまりポート A とポート B を 8 ビットの I/O ポートとして使用できます。
- 各ポートはポート c の 3 つのラインをハンドシェイク信号として使用し、残りの 2 つの信号は I/O ポートとして使用できます。
- 割り込みロジックがサポートされています。
- 入力データと出力データがラッチされます。
入力ハンドシェイク信号
- 1. IBF (入力バッファフル) - 入力ラッチに情報が含まれていることを示す出力です。
- 2. STB (ストローブ入力) - ストローブ入力はデータをポート ラッチにロードし、IN 命令によってマイクロプロセッサに入力されるまで情報を保持します。
- 3. INTR (割り込み要求) - 割り込みを要求する出力です。STB 入力が論理 1 に戻ると INTR ピンは論理 1 になり、マイクロプロセッサによってポートからデータが入力されるとクリアされます。
- 4. INTE (割り込み有効化) - 入力でも出力でもなく、ポート PC4 (ポート A) または PC2 (ポート B) のビット位置を介してプログラムされる内部ビットです。
出力ハンドシェイク信号
- 1. OBF (出力バッファ フル) - データがポート A またはポート B ラッチに出力 (OUT) されるたびにローになる出力です。この信号は、外部デバイスから ACK パルスが返されるたびにロジック 1 に設定されます。
- 2. ACK (確認応答) - OBF ピンが論理 1 レベルに戻ります。ACK 信号は外部デバイスからの応答であり、82C55A ポートからデータを受信したことを示します。
- 3. INTR (割り込み要求) - 外部デバイスが信号を介してデータを受信したときに、マイクロプロセッサに頻繁に割り込む信号です。このピンは、内部 INTE (割り込み有効) ビットによって修飾されます。
- 4. INTE (割り込み有効化) - これは入力でも出力でもなく、INTR ピンを有効化または無効化するためにプログラムされる内部ビットです。INTE A ビットは PC6 ビットを使用してプログラムされ、INTE B は PC2 ビットを使用してプログラムされます。
モード 2 - ストロボ双方向入力/出力モード
このモードではポート A のみを初期化できます。ポート A は双方向ハンドシェイクデータ転送に使用できます。つまり、同じ 8 本のライン (PA0 - PA7) でデータを入力または出力できます。ピン PC3 - PC7 はポート A のハンドシェイク ラインとして使用されます。ポート C の残りのピン (PC0 - PC2) は、グループ B がモード 0 で初期化されている場合は入出力ラインとして、グループ B がモード 1 で初期化されている場合はポート B のハンドシェイクとして使用できます。このモードでは、8255 を使用してシステム バスをスレーブマイクロプロセッサに拡張したり、フロッピー ディスクコントローラとの間でデータ バイトを転送したりできます。データ送信機と受信機間の適切なデータ フローと同期を維持するために、確認応答およびハンドシェイク信号が提供されます。
参考文献
- ^ R Theagarajan (2004 年 1 月 1 日)。マイクロプロセッサとその応用。ニューエイジインターナショナル。pp. 165– 。ISBN 978-81-224-1040-2. 2012年6月3日閲覧。
- ^ Embedded Systems Programming. Miller Freeman Publications. 1996年7月. p. 256 . 2012年6月3日閲覧。
- ^ 「82C55Aの製品ページ」ルネサスエレクトロニクス。 2023年1月11日閲覧。
- ^ Intel Corporation、「マイクロコンピュータ コンポーネント: 産業用アプリケーションで動作する高信頼性コンポーネントの需要に応える新しい産業グレード製品ライン」、Intel Preview、1979 年 3 月/4 月、11 ページ
- ^ Intel Corporation、「Intel 周辺機器が 8086 システム設計を強化」、Intel Preview Special Issue: 16 ビット ソリューション、1980 年 5 月/6 月、22 ページ
- ^ Intel Corporation、「NewsBit: Intel が数種の製品の CMOS バージョンで Oki のライセンスを取得」、Solutions、1984 年 7 月/8 月、1 ページ。
- ^ アシュボーン、ジム、「高度なパッケージング:少しの努力で大きな成果が得られる」、インテル コーポレーション、ソリューション、1986 年 1 月/2 月、2 ページ
- ^ Robert Jourdain (1986). IBM PC、XT、および AT 用のプログラマーの問題解決ツール。Brady Communications Co. p. 3 。2012 年6 月 3 日閲覧。
- ^ Electronics world. Reed Business Pub. 1996. p. 947 . 2012年6月3日閲覧。
- ^ 「Intel 82c55 PPI データシート」(PDF)。
- ^ 「PCI 82C55A データシート」(PDF)。
- ^ Byte. McGraw-Hill. 1981年. p. 40. 2012年6月3日閲覧。
- ^ US Shah. "11".マイクロプロセッサとインターフェイス技術(第 2 版). Techmax Publication. pp. 11–5. ISBN 978-81-8492-305-6。
- ^ 「i8255 の紹介」(PDF)。
外部リンク
- drew.hickmans.net、Intel 8255 IC の完全な説明
- ic-on-line.cn、データシート
- sharpmz.org、機能の概要
- intel-assembler.it 2016-04-23にWayback Machineにアーカイブされました。プログラミングの技術的な詳細とコーディング例
- bitsavers.informatik.uni-stuttgart.de、Intel 8080 マイクロコンピュータ システム ユーザーズ マニュアル (1975 年 9 月)。8255 チップが含まれています。
