Microprocessor-quick-guide
マイクロプロセッサ-概要
マイクロプロセッサは、ALU(算術論理ユニット)操作を実行し、それに接続されている他のデバイスと通信できる小さなチップ上に製造されたマイクロコンピューターの制御ユニットです。
マイクロプロセッサーは、ALU、レジスター配列、および制御装置で構成されています。 ALUは、メモリまたは入力デバイスから受信したデータに対して算術および論理演算を実行します。 レジスター配列は、B、C、D、E、H、Lおよびアキュムレーターなどの文字で識別されるレジスターで構成されます。 制御ユニットは、コンピューター内のデータと命令の流れを制御します。
基本的なマイクロコンピューターのブロック図
マイクロプロセッサはどのように機能しますか?
マイクロプロセッサは、フェッチ、デコード、実行というシーケンスに従います。
最初に、命令は順番にメモリに保存されます。 マイクロプロセッサはメモリからこれらの命令をフェッチし、デコードして、STOP命令に達するまでそれらの命令を実行します。 後で、結果をバイナリで出力ポートに送信します。 これらのプロセスの間、レジスタは一時データを格納し、ALUは計算機能を実行します。
マイクロプロセッサで使用される用語のリスト
これは、マイクロプロセッサで頻繁に使用される用語のリストです-
- 命令セット-マイクロプロセッサが理解できる命令のセットです。
- 帯域幅-単一の命令で処理されるビット数です。
- クロック速度-プロセッサが実行できる1秒あたりの操作数を決定します。 メガヘルツ(MHz)またはギガヘルツ(GHz)で表されます。クロックレートとも呼ばれます。
- ワード長-内部データバス、レジスタ、ALUなどの幅に依存します。 8ビットのマイクロプロセッサは、一度に8ビットのデータを処理できます。 ワード長は、マイクロコンピューターのタイプに応じて4ビットから64ビットの範囲です。
- データ型-マイクロプロセッサには、バイナリ、BCD、ASCII、符号付きおよび符号なしの数値などの複数のデータ型形式があります。
マイクロプロセッサの機能
マイクロプロセッサの最も顕著な特徴のいくつかのリストはここにあります-
- 費用対効果-マイクロプロセッサチップは低価格で入手でき、低コストになります。
- サイズ-マイクロプロセッサは小さなサイズのチップであるため、ポータブルです。
- 低消費電力-マイクロプロセッサは、低消費電力の金属酸化物半導体技術を使用して製造されています。
- 汎用性-マイクロプロセッサは汎用性があり、ソフトウェアプログラムを構成することにより、多くのアプリケーションで同じチップを使用できます。
- 信頼性-マイクロプロセッサのICの故障率は非常に低いため、信頼性があります。
マイクロプロセッサ-分類
マイクロプロセッサは3つのカテゴリに分類することができます-
RISCプロセッサー
RISCは Reduced Instruction Set Computer の略です。 コンピューターの命令セットを簡素化することにより、実行時間を短縮するように設計されています。 RISCプロセッサを使用すると、各命令が結果を均一な実行時間で実行するために必要なクロックサイクルは1つだけです。 これにより、コードの行数が増えるため効率が低下するため、命令を保存するためにより多くのRAMが必要になります。 また、コンパイラーは、高水準言語の命令をマシンコードに変換するためにさらに作業する必要があります。
RISCプロセッサのいくつかは-
- パワーPC:601、604、615、620
- DEC Alpha:210642、211066、21068、21164
- MIPS:TS(R10000)RISCプロセッサー
- PA-RISC:HP 7100LC
RISCのアーキテクチャ
RISCマイクロプロセッサアーキテクチャは、高度に最適化された命令セットを使用します。 電力効率のため、Apple iPodなどのポータブルデバイスで使用されます。
RISCの特徴
RISCプロセッサの主な特徴は次のとおりです-
- 簡単な指示で構成されています。
- さまざまなデータ型形式をサポートしています。
- 単純なアドレス指定モードとパイプライン処理の固定長命令を利用します。
- 任意のコンテキストで使用するレジスタをサポートします。
- 1サイクルの実行時間。
- 「LOAD」および「STORE」命令は、メモリ位置にアクセスするために使用されます。
- 多数のレジスタで構成されています。
- より少ない数のトランジスタで構成されています。
CISCプロセッサ
CISCは Complex Instruction Set Computer の略です。 命令あたりのサイクル数を無視して、プログラムあたりの命令数を最小限に抑えるように設計されています。 重点は、複雑な命令をハードウェアに直接組み込むことにあります。
コードの長さが比較的短いため、コンパイラは高レベル言語をアセンブリレベルの言語/マシンコードに変換するためにほとんど作業を行う必要がありません。したがって、命令を格納するために必要なRAMはほとんどありません。
CISCプロセッサのいくつかは-
- IBM 370/168
- VAX 11/780
- Intel 80486
CISCのアーキテクチャ
そのアーキテクチャは、メモリコストを削減するように設計されています。より大きなプログラムではより多くのストレージが必要になるため、メモリコストが高くなります。 これを解決するには、1つの命令に操作の数を埋め込むことにより、プログラムごとの命令の数を減らすことができます。
CISCの特徴
- さまざまなアドレス指定モード。
- 多数の命令。
- 可変長の命令フォーマット。
- 1つの命令を実行するには、数サイクルが必要な場合があります。
- 命令デコードロジックは複雑です。
- 複数のアドレッシングモードをサポートするには、1つの命令が必要です。
特別なプロセッサー
これらは、いくつかの特別な目的のために設計されたプロセッサです。 いくつかの特別なプロセッサについて簡単に説明します-
コプロセッサー
コプロセッサは特別に設計されたマイクロプロセッサで、通常のマイクロプロセッサよりも何倍も高速で特定の機能を処理できます。
例-数学コプロセッサ。
いくつかのインテルの数学コプロセッサーは-
- 8086で8087を使用
- 80287-80286で使用
- 80387-80386で使用
入出力プロセッサ
これは、CPUの関与を最小限に抑えてI/Oデバイスを制御するために使用される、独自のローカルメモリを持つ特別に設計されたマイクロプロセッサです。
例-
- DMA(ダイレクトメモリアクセス)コントローラー
- キーボード/マウスコントローラー
- グラフィックディスプレイコントローラー
- SCSIポートコントローラー
トランスピュータ(トランジスタコンピュータ)
トランスピュータは、独自のローカルメモリを備え、プロセッサ間通信のために1つのトランスピュータを別のトランスピュータに接続するリンクを備えた、特別に設計されたマイクロプロセッサです。 1980年にInmosによって最初に設計され、VLSIテクノロジーの利用を対象としています。
トランスピュータは、シングルプロセッサシステムとして使用することも、外部リンクに接続することもできます。これにより、建設コストが削減され、パフォーマンスが向上します。
例-16ビットT212、32ビットT425、浮動小数点(T800、T805およびT9000)プロセッサ。
DSP(デジタルシグナルプロセッサ)
このプロセッサは、アナログ信号をデジタル形式に処理するように特別に設計されています。 これは、一定の時間間隔で電圧レベルをサンプリングし、その瞬間の電圧をデジタル形式に変換することにより行われます。 このプロセスは、A/Dコンバーター、A/Dコンバーター、またはADCと呼ばれる回路によって実行されます。
DSPは次のコンポーネントが含まれています-
- プログラムメモリ-DSPがデータを処理するために使用するプログラムを保存します。
- データメモリ-処理する情報を保存します。
- Compute Engine -プログラムメモリからプログラムにアクセスし、データメモリからデータにアクセスして、数学的処理を実行します。
- 入力/出力-外の世界に接続します。
そのアプリケーションは-
- 音と音楽の合成
- オーディオとビデオの圧縮
- ビデオ信号処理
- 2Dおよび3Dグラフィックアクセラレーション。
例-Texas InstrumentのTMS 320シリーズ、例:TMS 320C40、TMS320C50。
マイクロプロセッサ-8085アーキテクチャ
8085は「八十五」マイクロプロセッサーと発音されます。 1977年にIntelがNMOSテクノロジーを使用して設計した8ビットのマイクロプロセッサです。
それは次の構成を持っています-
- 8ビットデータバス
- 最大64KBをアドレス指定できる16ビットアドレスバス
- 16ビットプログラムカウンター
- 16ビットスタックポインター
- ペアで配置された6つの8ビットレジスタ:BC、DE、HL
- 3.2 MHZ単相クロックで動作するには、+ 5V電源が必要
洗濯機、電子レンジ、携帯電話などで使用されます。
8085マイクロプロセッサ–機能ユニット
8085は、次の機能ユニットで構成されています-
アキュムレータ
これは、算術演算、論理演算、I/OおよびLOAD/STORE操作を実行するために使用される8ビットのレジスタです。 内部データバスとALUに接続されています。
算術および論理ユニット
名前が示すように、加算、減算、AND、ORなどの算術演算と論理演算を実行します。 8ビットデータ。
汎用レジスター
8085プロセッサには6つの汎用レジスタがあります。 B、C、D、E、H、L 各レジスタは8ビットのデータを保持できます。
これらのレジスタはペアで動作して16ビットデータを保持でき、ペアの組み合わせはB-C、D-EおよびH-Lのようです。
プログラムカウンター
これは、次に実行される命令のメモリアドレスの場所を格納するために使用される16ビットのレジスタです。 マイクロプロセッサは、命令が実行されるたびにプログラムをインクリメントします。そのため、プログラムカウンタは、実行される次の命令のメモリアドレスを指します。
スタックポインタ
また、スタックのように動作する16ビットのレジスタであり、プッシュ&ポップ操作中は常に2ずつインクリメント/デクリメントされます。
仮登録
これは、算術および論理演算の一時データを保持する8ビットのレジスタです。
フラグレジスタ
これは、アキュムレータに格納された結果に応じて0または1を保持する5つの1ビットフリップフロップを備えた8ビットレジスタです。
これらは5つのフリップフロップのセットです-
- サイン(S)
- ゼロ(Z)
- 補助キャリー(AC)
- パリティ(P)
- キャリー(C)
そのビット位置は、次の表に示されています-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
S | Z | AC | P | CY |
命令レジスタとデコーダ
8ビットのレジスタです。 命令がメモリからフェッチされると、命令は命令レジスタに保存されます。 命令デコーダーは、命令レジスターにある情報をデコードします。
タイミングおよび制御ユニット
それは操作を実行するためにマイクロプロセッサにタイミングと制御信号を提供します。 以下は、外部および内部回路を制御するタイミングおよび制御信号です-
- 制御信号:準備完了、RD '、WR'、ALE
- ステータス信号:S0、S1、IO/M ’
- DMA信号:HOLD、HLDA
- リセット信号:RESET IN、RESET OUT
割り込み制御
名前が示すように、プロセス中の割り込みを制御します。 マイクロプロセッサがメインプログラムを実行しているとき、および割り込みが発生するたびに、マイクロプロセッサはメインプログラムから制御を移して着信要求を処理します。 要求が完了すると、制御はメインプログラムに戻ります。
8085マイクロプロセッサには、INTR、RST 7.5、RST 6.5、RST 5.5、TRAPの5つの割り込み信号があります。
シリアル入出力制御
SID(シリアル入力データ)とSOD(シリアル出力データ)の2つの命令を使用して、シリアルデータ通信を制御します。
アドレスバッファとアドレスデータバッファ
スタックポインターとプログラムカウンターに格納されているコンテンツは、アドレスバッファーとアドレスデータバッファーに読み込まれ、CPUと通信します。 メモリとI/Oチップはこれらのバスに接続されています。 CPUは、メモリおよびI/Oチップと必要なデータを交換できます。
アドレスバスとデータバス
データバスは保存されるデータを運びます。 これは双方向ですが、アドレスバスは場所を格納すべき場所に運び、一方向です。 データおよびアドレスI/Oデバイスの転送に使用されます。
8085アーキテクチャ
私たちはこの次の画像で8085のアーキテクチャを描写しようとしました-
マイクロプロセッサ-8085ピン構成
次の画像は8085マイクロプロセッサのピン配列を示しています-
8085マイクロプロセッサのピンは7つのグループに分類することができます-
アドレスバス
A15-A8、それはメモリ/IOアドレスの最も重要な8ビットを運びます。
データバス
AD7-AD0、最下位8ビットアドレスおよびデータバスを伝送します。
制御およびステータス信号
これらの信号は、動作の性質を識別するために使用されます。 3つの制御信号と3つのステータス信号があります。
3つの制御信号はRD、WRおよびALEです。
- RD -この信号は、選択されたIOまたはメモリデバイスが読み取られ、データバスで利用可能なデータを受け入れる準備ができていることを示します。
- WR -この信号は、データバス上のデータが選択したメモリまたはIOロケーションに書き込まれることを示します。
- ALE -マイクロプロセッサによって新しい操作が開始されたときに生成される正方向のパルスです。 パルスが高くなると、アドレスを示します。 パルスが下がると、データを示します。
3つのステータス信号はIO/M、S0およびS1です。
IO/M
この信号は、IO操作とメモリ操作を区別するために使用されます。 高い場合はIO操作を示し、低い場合はメモリ操作を示します。
S1&S0
これらの信号は、現在の操作のタイプを識別するために使用されます。
電源
VCCとVSSの2つの電源信号があります。 VCCは&5V電源を示し、VSSはグランド信号を示します。
クロック信号
3つのクロック信号があります。 X1、X2、CLK OUT。
- X1、X2 -水晶(RC、LC N/W)はこれら2つのピンに接続され、内部クロックジェネレーターの周波数を設定するために使用されます。 この周波数は内部で2で除算されます。
- CLK OUT -この信号は、マイクロプロセッサに接続されたデバイスのシステムクロックとして使用されます。
割り込みと外部から開始された信号
割り込みは、マイクロプロセッサにタスクの実行を要求するために外部デバイスによって生成される信号です。 5つの割り込み信号があります。 TRAP、RST 7.5、RST 6.5、RST 5.5、およびINTR。 割り込みのセクションで割り込みについて詳しく説明します。
- INTA -割り込み確認信号です。
- RESET IN -この信号は、プログラムカウンタをゼロに設定してマイクロプロセッサをリセットするために使用されます。
- RESET OUT -この信号は、マイクロプロセッサがリセットされたときに、接続されているすべてのデバイスをリセットするために使用されます。
- READY -この信号は、デバイスがデータを送信または受信する準備ができていることを示します。 READYが低い場合、CPUはREADYが高くなるまで待機する必要があります。
- HOLD -この信号は、別のマスターがアドレスおよびデータバスの使用を要求していることを示します。
- * HLDA(HOLD Acknowledge)*-CPUがHOLD要求を受信し、次のクロックサイクルでバスを放棄することを示します。 HOLD信号が削除されると、HLDAはローに設定されます。
シリアルI/O信号
2つのシリアル信号があります。 SIDとSODおよびこれらの信号は、シリアル通信に使用されます。
- SOD (シリアル出力データライン)-出力SODは、SIM命令で指定されたとおりに設定/リセットされます。
- SID (シリアル入力データライン)-このラインのデータは、RIM命令が実行されるたびにアキュムレータにロードされます。
8085アドレス指定モードと割り込み
次に、8085マイクロプロセッサのアドレス指定モードについて説明します。
8085のアドレス指定モード
これらは、内容を変更せずに、あるレジスタから別のレジスタに、メモリからレジスタに、レジスタからメモリにデータを転送するために使用される命令です。 8085のアドレス指定モードは5つのグループに分類されます-
即時アドレス指定モード
このモードでは、8/16ビットのデータは命令自体のオペランドの1つとして指定されます。 *例: *MVI K、20F:20FがレジスタKにコピーされることを意味します。
レジスタアドレッシングモード
このモードでは、データはあるレジスタから別のレジスタにコピーされます。* 例: *MOV K、B:レジスタBのデータがレジスタKにコピーされることを意味します。
直接アドレス指定モード
このモードでは、データは指定されたアドレスからレジスタに直接コピーされます。* 例: *LDB 5000K:アドレス5000KのデータがレジスタBにコピーされることを意味します。
間接アドレス指定モード
このモードでは、データはレジスタが指すアドレスを使用して、あるレジスタから別のレジスタに転送されます。* 例: *MOV K、B:データは、レジスタが指すメモリアドレスからレジスタKに転送されます。
暗黙のアドレス指定モード
このモードはオペランドを必要としません。データはオペコード自体によって指定されます。* 例:* CMP。
8085での割り込み
割り込みとは、マイクロプロセッサにタスクの実行を要求するために外部デバイスによって生成される信号です。 5つの割り込み信号があります。 TRAP、RST 7.5、RST 6.5、RST 5.5、およびINTR。
割り込みは、パラメータに基づいて次のグループに分類されます-
- ベクトル割り込み-このタイプの割り込みでは、割り込みアドレスはプロセッサに認識されています。 例: RST7.5、RST6.5、RST5.5、TRAP。
- 非ベクトル割り込み-このタイプの割り込みでは、割り込みアドレスはプロセッサに認識されないため、割り込みアドレスをデバイスから外部に送信して割り込みを実行する必要があります。 例: INTR。
- マスク可能な割り込み-このタイプの割り込みでは、プログラムにいくつかの命令を書き込むことで割り込みを無効にできます。 例: RST7.5、RST6.5、RST5.5。
- マスク不能割り込み-このタイプの割り込みでは、プログラムにいくつかの命令を書き込んで割り込みを無効にすることはできません。 例: TRAP。
- ソフトウェア割り込み-このタイプの割り込みでは、プログラマーはプログラムに命令を追加して割り込みを実行する必要があります。 8085には8つのソフトウェア割り込みがあります。 RST0、RST1、RST2、RST3、RST4、RST5、RST6、およびRST7。
- ハードウェア割り込み-ハードウェア割り込みとして使用される8085には5つの割り込みピンがあります。 TRAP、RST7.5、RST6.5、RST5.5、INTA。
注-NTAは割り込みではなく、マイクロプロセッサが確認応答を送信するために使用します。 TRAPが最高の優先度を持ち、RST7.5などが続きます。
割り込みサービスルーチン(ISR)
実行時に対応する割り込みソースにサービスを提供する小さなプログラムまたはルーチンは、ISRと呼ばれます。
TRAP
これはマスク不能割り込みであり、すべての割り込みの中で最も高い優先度を持ちます。 デフォルトでは、承認されるまで有効になっています。 障害が発生した場合、ISRとして実行され、データがバックアップメモリに送信されます。 この割り込みは、制御をロケーション0024Hに転送します。
RST7.5
これはマスク可能な割り込みで、すべての割り込みの中で2番目に高い優先度を持っています。 この割り込みが実行されると、プロセッサはPCレジスタの内容をスタックに保存し、003CHアドレスに分岐します。
RST 6.5
これはマスク可能な割り込みで、すべての割り込みの中で3番目に高い優先度を持っています。 この割り込みが実行されると、プロセッサはPCレジスタの内容をスタックに保存し、0034Hアドレスに分岐します。
RST 5.5
マスク可能な割り込みです。 この割り込みが実行されると、プロセッサはPCレジスタの内容をスタックに保存し、002CHアドレスに分岐します。
INTR
これは、すべての割り込みの中で最も低い優先度を持つ、マスク可能な割り込みです。 マイクロプロセッサをリセットすることで無効にできます。
- INTR信号が高くなる*場合、次のイベントが発生する可能性があります-
- マイクロプロセッサは、各命令の実行中にINTR信号のステータスをチェックします。
- INTR信号がHighになると、マイクロプロセッサは現在の命令を完了し、アクティブLowの割り込み確認信号を送信します。
- 命令を受信すると、マイクロプロセッサはスタック上の次の命令のアドレスを保存し、受信した命令を実行します。
マイクロプロセッサ-8085命令セット
8085マイクロプロセッサのプログラミングを見てみましょう。
命令セットは、いくつかのタスクを実行するための命令コードです。 5つのカテゴリに分類されます。
S.No. | Instruction & Description |
---|---|
1 |
以下は、制御命令のリストとその意味を示す表です。 |
2 |
以下は、論理命令のリストとその意味を示す表です。 |
3 |
以下は、分岐命令のリストとその意味を示す表です。 |
4 |
以下は、算術命令のリストとその意味を示した表です。 |
5 |
以下は、データ転送命令のリストとその意味を示した表です。 |
8085 –デモプログラム
今、私たちは上記の指示を使用していくつかのプログラムのデモを見てみましょう-
2つの8ビット数を追加する
3005Hおよび3006Hのメモリ位置にデータを追加し、結果を3007Hのメモリ位置に保存するプログラムを作成します。
問題のデモ-
(3005H) = 14H
(3006H) = 89H
結果-
14H+ 89H = 9DH
プログラムコードは次のように書くことができます-
LXI H 3005H : "HL points 3005H"
MOV A, M : "Getting first operand"
INX H : "HL points 3006H"
ADD M : "Add second operand"
INX H : "HL points 3007H"
MOV M, A : "Store result at 3007H"
HLT : "Exit program"
メモリ位置の交換
5000Mおよび6000Mのメモリー位置でデータを交換するプログラムを作成します。
LDA 5000M : "Getting the contents at5000M location into accumulator"
MOV B, A : "Save the contents into B register"
LDA 6000M : "Getting the contents at 6000M location into accumulator"
STA 5000M : "Store the contents of accumulator at address 5000M"
MOV A, B : "Get the saved contents back into A register"
STA 6000M : "Store the contents of accumulator at address 6000M"
番号を昇順に並べる
メモリアドレス3000Hから最初の10個の数字を昇順で並べるプログラムを作成します。
MVI B, 09 :"Initialize counter"
START :"LXI H, 3000H: Initialize memory pointer"
MVI C, 09H :"Initialize counter 2"
BACK: MOV A, M :"Get the number"
INX H :"Increment memory pointer"
CMP M :"Compare number with next number"
JC SKIP :"If less, don’t interchange"
JZ SKIP :"If equal, don’t interchange"
MOV D, M
MOV M, A
DCX H
MOV M, D
INX H :"Interchange two numbers"
SKIP:DCR C :"Decrement counter 2"
JNZ BACK :"If not zero, repeat"
DCR B :"Decrement counter 1"
JNZ START
HLT :"Terminate program execution"
マイクロプロセッサ-8086の概要
8086マイクロプロセッサーは、1976年にインテルが設計した8085マイクロプロセッサーの拡張バージョンです。 これは、最大1MBのストレージを提供する20本のアドレス行と16本のデータ行を持つ16ビットのマイクロプロセッサです。 強力な命令セットで構成され、乗算や除算などの操作を簡単に提供します。
2つの操作モード、つまり 最大モードと最小モード。 最大モードは、複数のプロセッサを持つシステムに適しています。最小モードは、単一のプロセッサを持つシステムに適しています。
8086の機能
8086マイクロプロセッサの最も顕著な特徴は次のとおりです-
- 命令キューがあり、メモリから6命令バイトを保存できるため、処理が高速になります。
- 16ビットALU、16ビットレジスタ、内部データバス、および16ビット外部データバスを備えた最初の16ビットプロセッサであり、処理速度が向上しました。
- 操作の頻度に基づいて3つのバージョンで利用可能です-
- 8086→5MHz
- 8086-2→8MHz
- (c)8086-1→10 MHz
- パイプライン化の2段階、つまり ステージのフェッチとステージの実行。パフォーマンスが向上します。
- フェッチステージは、最大6バイトの命令をプリフェッチしてキューに格納できます。
- 実行ステージはこれらの命令を実行します。
- 256個のベクトル割り込みがあります。
- 29,000個のトランジスタで構成されています。
8085と8086マイクロプロセッサーの比較
- サイズ-8085は8ビットのマイクロプロセッサですが、8086は16ビットのマイクロプロセッサです。
- アドレスバス-8085には16ビットアドレスバスがあり、8086には20ビットアドレスバスがあります。
- メモリ-8085は最大64Kbにアクセスできますが、8086は最大1Mbのメモリにアクセスできます。
- 命令-8085には命令キューがありませんが、8086には命令キューがあります。
- パイプライン処理-8085はパイプラインアーキテクチャをサポートしていませんが、8086はパイプラインアーキテクチャをサポートしています。
- I/O -8085は2 ^ 8 = 256 I/Oに対応できますが、8086は2 ^ 16 = 65,536 I/Oにアクセスできます。
- コスト-8086のコストが高いのに対し、8085のコストは低いです。
8086のアーキテクチャ
次の図は、8086マイクロプロセッサのアーキテクチャを示しています-
マイクロプロセッサ-8086機能ユニット
8086マイクロプロセッサは、 EU (実行ユニット)と BIU (バスインターフェイスユニット)の2つの機能ユニットに分かれています。
EU(実行ユニット)
実行ユニットは、データをフェッチする場所を示す指示をBIUに与え、それらの指示をデコードして実行します。 その機能は、命令デコーダーとALUを使用してデータの操作を制御することです。 EUは、上図に示すようにシステムバスと直接接続していません。BIUを介してデータに対する操作を実行します。
8086マイクロプロセッサの機能部品について説明します。
ALU
+、-、×、/、OR、AND、NOT演算など、すべての算術演算と論理演算を処理します。
フラグレジスタ
これは、フリップフロップのように動作する16ビットのレジスタです。 アキュムレータに保存された結果に応じてステータスを変更します。 9つのフラグがあり、条件付きフラグと制御フラグという2つのグループに分かれています。
条件付きフラグ
最後に実行された算術命令または論理命令の結果を表します。 以下は、条件付きフラグのリストです-
- キャリーフラグ-このフラグは算術演算のオーバーフロー状態を示します。
- 補助フラグ-操作がALUで実行されると、下位ニブルからのキャリー/バローが発生します(つまり、 D0 – D3)から上位ニブル(つまり、 D4 – D7)、このフラグが設定されます。 D3ビットからD4に与えられるキャリーはAFフラグです。 プロセッサはこのフラグを使用して、バイナリからBCDへの変換を実行します。
- パリティフラグ-このフラグは、結果のパリティを示すために使用されます。 結果の下位8ビットに偶数の1が含まれている場合、パリティフラグが設定されます。 奇数の1の場合、パリティフラグはリセットされます。
- ゼロフラグ-算術演算または論理演算の結果がゼロの場合、このフラグは1に設定され、それ以外の場合は0に設定されます。
- Sign flag -このフラグは結果の符号を保持します。 操作の結果が負の場合、符号フラグは1に設定され、その他の場合は0に設定されます。
- オーバーフローフラグ-このフラグは、システム容量を超えた場合の結果を表します。
制御フラグ
制御フラグは、実行ユニットの動作を制御します。 以下は、制御フラグのリストです-
- トラップフラグ-シングルステップ制御に使用され、ユーザーはデバッグのために一度に1つの命令を実行できます。 設定されている場合、プログラムはシングルステップモードで実行できます。
- 割り込みフラグ-これは割り込みの有効/無効フラグです。 プログラムの中断を許可/禁止するために使用されます。 割り込みが有効な状態では1に設定され、割り込みが無効な状態では0に設定されます。
- 方向フラグ-文字列操作で使用されます。 名前が示すように、設定されると、文字列バイトが上位メモリアドレスから下位メモリアドレスにアクセスされ、逆も同様です。
汎用レジスター
AH、AL、BH、BL、CH、CL、DH、DLの8つの汎用レジスターがあります。 これらのレジスタは、8ビットデータを格納するために個別に使用でき、16ビットデータを格納するためにペアで使用できます。 有効なレジスタペアは、AHとAL、BHとBL、CHとCL、DHとDLです。 それぞれAX、BX、CX、およびDXと呼ばれます。
- * AXレジスタ*-アキュムレータレジスタとも呼ばれます。 算術演算のオペランドを格納するために使用されます。
- * BXレジスタ*-ベースレジスタとして使用されます。 データセグメント内のメモリ領域の開始ベースアドレスを格納するために使用されます。
- * CXレジスタ*-カウンタと呼ばれます。 ループカウンタを格納するためにループ命令で使用されます。
- * DXレジスタ*-このレジスタは、I/O命令のI/Oポートアドレスを保持するために使用されます。
スタックポインタレジスタ
これは16ビットのレジスタで、セグメントの先頭からメモリ位置までのアドレスを保持します。メモリ位置では、ワードが最後にスタックに格納されました。
BIU(バスインターフェイスユニット)
BIUは、アドレスの送信、メモリからの命令のフェッチ、ポートとメモリからのデータの読み取り、ポートとメモリへのデータの書き込みなど、EUのバス上のすべてのデータとアドレスの転送を処理します。 EUはシステムバスとの方向関係がないため、これはBIUで可能です。 EUとBIUは内部バスで接続されています。
次の機能部分があります-
- 命令キュー-BIUには命令キューが含まれています。 BIUは、最大6バイトの次の命令を取得し、命令キューに格納します。 EUが命令を実行し、次の命令の準備が整ったら、この命令キューから命令を読み取るだけで、実行速度が向上します。
- 現在の命令の実行中に次の命令をフェッチすることを*パイプライン*と呼びます。
- セグメントレジスタ-BIUには4つのセグメントバスがあります。 CS、DS、SS&ES。 プロセッサはメモリ位置にアクセスするために使用する命令とデータのアドレスをメモリに保持します。 また、EUによって実行される次の命令のアドレスを保持する1つのポインターレジスタIPが含まれています。
- CS -コードセグメントの略です。 これは、実行可能プログラムが格納されているメモリのコードセグメント内のメモリ位置をアドレス指定するために使用されます。
- DS -データセグメントの略です。 これは、プログラムが使用するデータで構成され、データセグメント内でオフセットアドレスまたはオフセットアドレスを保持する他のレジスタの内容によってアクセスされます。
- SS -スタックセグメントを表します。 実行中にデータとアドレスを保存するメモリを処理します。
- ES -Extra Segmentを表します。 ESは追加のデータセグメントで、追加の宛先データを保持するために文字列によって使用されます。
- 命令ポインタ-次の実行される命令のアドレスを保持するために使用される16ビットのレジスタです。
マイクロプロセッサ-8086ピン構成
8086は、40ピンDIP(デュアルインラインパッケージ)チップで利用可能な最初の16ビットマイクロプロセッサでした。 8086マイクロプロセッサのピン構成について詳しく説明します。
8086ピン図
これは8086マイクロプロセッサのピン配列です-
ここで信号を詳細に議論しましょう-
電源および周波数信号
V〜CC〜ピン40で5V DC電源を使用し、V〜SS〜ピン1および20でグランドを使用して動作します。
クロック信号
クロック信号はピン19から提供されます。 操作のタイミングをプロセッサに提供します。 その頻度はバージョンごとに異なります。 5MHz、8MHz、および10MHz。
アドレス/データバス
AD0-AD15。 これらは16アドレス/データバスです。 AD0〜AD7は下位バイトデータを伝送し、AD8AD15は上位バイトデータを伝送します。 最初のクロックサイクル中に、16ビットアドレスを伝送し、その後16ビットデータを伝送します。
アドレス/ステータスバス
A16-A19/S3-S6。 これらは4つのアドレス/ステータスバスです。 最初のクロックサイクル中に、4ビットアドレスを伝送し、その後ステータス信号を伝送します。
*S7/BHE*
BHEはBus High Enableの略です。 ピン34で使用でき、データバスD8-D15を使用したデータ転送を示すために使用されます。 この信号は最初のクロックサイクル中はローであり、その後アクティブになります。
読み取り(_ $ \ overline \ {RD} $ _)
ピン32で使用でき、読み取り操作の信号を読み取るために使用されます。
準備完了
ピン22で使用できます。 データが転送されることは、I/Oデバイスからの確認信号です。 アクティブHighの信号です。 高い場合、デバイスがデータを転送する準備ができていることを示します。 低い場合、待機状態を示します。
リセット
ピン21で利用可能で、実行を再開するために使用されます。 これにより、プロセッサは現在のアクティビティを直ちに終了します。 この信号は、マイクロプロセッサをリセットするための最初の4クロックサイクルの間アクティブHighです。
*INTR*
ピン18で利用可能です。 これは割り込み要求信号であり、各命令の最後のクロックサイクル中にサンプリングされ、プロセッサがこれを割り込みと見なしたかどうかを判断します。
*NMI*
これはマスク不能割り込みを表し、ピン17で使用できます。 マイクロプロセッサへの割り込み要求を引き起こすのは、エッジトリガー入力です。
$ \ overline \ {TEST} $
この信号は待機状態に似ており、ピン23で使用できます。 この信号がHighの場合、プロセッサはIDLE状態を待機する必要があります。それ以外の場合、実行は継続します。
*MN/_ $ \ overline \ {MX} $ _*
これは最小/最大を表し、ピン33で利用可能です。 プロセッサが動作するモードを示します。高い場合、最小モードで動作し、逆も同様です。
*INTA*
これは、ピン24で利用可能な割り込み確認信号とIDです。 マイクロプロセッサがこの信号を受信すると、割り込みを確認します。
エール
アドレスイネーブルラッチの略で、ピン25で使用できます。 プロセッサが動作を開始するたびに、正のパルスが生成されます。 この信号は、アドレス/データラインで有効なアドレスが利用可能であることを示します。
*DEN*
Data Enableの略で、ピン26で利用可能です。 Transreceiver 8286を有効にするために使用されます。 トランスレシーバーは、アドレス/データバスからデータを分離するために使用されるデバイスです。
*DT/R*
データ送信/受信信号の略で、ピン27で利用可能です。 トランスレシーバーを通過するデータフローの方向を決定します。 高い場合、データが送信され、その逆も同様です。
*M/IO*
この信号は、メモリ操作とI/O操作を区別するために使用されます。 高い場合はI/O操作を示し、低い場合はメモリ操作を示します。 ピン28で利用可能です。
WR
書き込み信号の略で、ピン29で使用できます。 M/IO信号のステータスに応じて、メモリまたは出力デバイスにデータを書き込むために使用されます。
*HLDA*
これは保留確認信号の略で、ピン30で使用できます。 この信号はHOLD信号を確認します。
ホールド
この信号は、外部デバイスがアドレス/データバスへのアクセスを要求していることをプロセッサに示します。 ピン31で利用できます。
- QS〜1〜およびQS〜0〜*
これらはキューステータス信号であり、ピン24および25で利用可能です。 これらの信号は、命令キューのステータスを提供します。 それらの条件は、次の表に示されています-
QS0 | QS1 | Status |
---|---|---|
0 | 0 | No operation |
0 | 1 | First byte of opcode from the queue |
1 | 0 | Empty the queue |
1 | 1 | Subsequent byte from the queue |
- S〜0〜、S〜1〜、S〜2〜*
これらは、バスコントローラー8288がメモリおよびI/O制御信号を生成するために使用する動作のステータスを提供するステータス信号です。 これらはピン26、27、および28で利用できます。 以下は、それらの状態を示す表です-
S2 | S1 | S0 | Status |
---|---|---|---|
0 | 0 | 0 | Interrupt acknowledgement |
0 | 0 | 1 | I/O Read |
0 | 1 | 0 | I/O Write |
0 | 1 | 1 | Halt |
1 | 0 | 0 | Opcode fetch |
1 | 0 | 1 | Memory read |
1 | 1 | 0 | Memory write |
1 | 1 | 1 | Passive |
ロック
この信号がアクティブになると、他のプロセッサに対して、CPUにシステムバスからの離脱を要求しないよう指示します。 任意の命令でLOCKプレフィックスを使用してアクティブ化され、ピン29で利用可能です。
- RQ/GT〜1〜およびRQ/GT〜0〜*
これらは、CPUにシステムバスを解放するように要求する他のプロセッサが使用する要求/許可信号です。 CPUが信号を受信すると、確認応答を送信します。 RQ/GT〜0〜は、RQ/GT〜1〜よりも高い優先度を持っています。
マイクロプロセッサ-8086命令セット
8086マイクロプロセッサは、8種類の命令をサポートしています-
- データ転送手順
- 算術命令
- ビット操作手順
- 文字列命令
- プログラム実行転送命令(分岐およびループ命令)
- プロセッサ制御命令
- 反復制御命令
- 割り込み命令
これらの命令セットについて詳しく説明します。
データ転送手順
これらの命令は、ソースオペランドからデスティネーションオペランドにデータを転送するために使用されます。 以下は、このグループの下の指示のリストです-
単語を転送する指示
- MOV -指定されたソースから指定された宛先にバイトまたはワードをコピーするために使用されます。
- PPUSH -スタックの一番上に単語を置くために使用されます。
- POP -スタックの最上部から指定された場所に単語を取得するために使用されます。
- PUSHA -すべてのレジスタをスタックに入れるために使用されます。
- POPA -スタックからすべてのレジスタにワードを取得するために使用されます。
- XCHG -2つの場所からデータを交換するために使用されます。
- XLAT -メモリ内のテーブルを使用してALのバイトを変換するために使用されます。
入出力ポート転送の手順
- IN -指定されたポートからアキュムレータにバイトまたはワードを読み取るために使用されます。
- OUT -アキュムレータから提供されたポートにバイトまたはワードを送信するために使用されます。
アドレスを転送する手順
- LEA -指定されたレジスタにオペランドのアドレスをロードするために使用されます。
- LDS -メモリからDSレジスタおよびその他の提供されたレジスタをロードするために使用
- LES -メモリからESレジスタおよびその他の提供されたレジスタをロードするために使用されます。
フラグレジスタを転送する命令
- LAHF -AHにフラグレジスタの下位バイトをロードするために使用されます。
- SAHF -AHレジスタをフラグレジスタの下位バイトに格納するために使用されます。
- PUSHF -スタックの最上部のフラグレジスタをコピーするために使用されます。
- POPF -スタックの最上部の単語をフラグレジスタにコピーするために使用されます。
算術命令
これらの命令は、加算、減算、乗算、除算などの算術演算を実行するために使用されます。
以下は、このグループの下の指示のリストです-
追加を実行する手順
- ADD -提供されたバイトをバイト/ワード/ワードに追加するために使用されます。
- ADC -キャリーで追加するために使用されます。
- INC -指定されたバイト/ワードを1増やすために使用されます。
- AAA -追加後にASCIIを調整するために使用されます。
- DAA -加算/減算操作後に小数を調整するために使用されます。
減算を実行する手順
- SUB -ワードからバイト/ワードからバイトを減算するために使用されます。
- SBB -ボローを使用した減算の実行に使用されます。
- DEC -指定されたバイト/ワードを1減らすために使用されます。
- NPG -指定されたバイト/ワードの各ビットを否定し、1/2の補数を追加するために使用されます。
- CMP -2つの提供されたバイト/ワードを比較するために使用されます。
- AAS -減算後にASCIIコードを調整するために使用されます。
- DAS -減算後に小数を調整するために使用されます。
乗算を実行するための命令
- MUL -符号なしバイトをバイトごと、ワードごとに乗算するために使用されます。
- IMUL -符号付きバイトとバイト/ワード/ワードを乗算するために使用されます。
- AAM -乗算後にASCIIコードを調整するために使用されます。
除算の実行手順
- DIV -符号なしワードをバイト単位または符号なしダブルワード単位で分割するために使用されます。
- IDIV -符号付きワードをバイト単位または符号付きダブルワード単位で分割するために使用されます。
- AAD -除算後にASCIIコードを調整するために使用されます。
- CBW -ワードの上位バイトを下位バイトの符号ビットのコピーで埋めるために使用されます。
- CWD -ダブルワードの上位ワードを下位ワードの符号ビットで埋めるために使用されます。
ビット操作手順
これらの命令は、データビットが関係する操作を実行するために使用されます。 論理、シフトなどの操作
以下は、このグループの下の指示のリストです-
論理演算を実行する手順
- NOT -バイトまたはワードの各ビットを反転するために使用されます。
- AND -バイト/ワードの各ビットを別のバイト/ワードの対応するビットに追加するために使用されます。
- OR -バイト/ワードの各ビットを別のバイト/ワードの対応するビットで乗算するために使用されます。
- XOR -バイト/ワードの各ビットと別のバイト/ワードの対応するビットで排他的論理和演算を実行するために使用されます。
- TEST -オペランドに影響を与えることなく、フラグを更新するためにオペランドを追加するために使用されます。
シフト操作を実行するための指示
- SHL/SAL -バイト/ワードのビットを左にシフトし、LSBにゼロ(S)を入れるために使用されます。
- SHR -バイト/ワードのビットを右にシフトし、MSBにゼロ(S)を入れるために使用されます。
- SAR -バイト/ワードのビットを右にシフトし、古いMSBを新しいMSBにコピーするために使用されます。
回転操作を実行する手順
- ROL -バイト/ワードのビットを左に回転させるために使用されます。 MSBからLSBおよびキャリーフラグ[CF]。
- ROR -バイト/ワードのビットを右に回転させるために使用されます。 LSBからMSBおよびキャリーフラグ[CF]へ。
- RCR -バイト/ワードのビットを右に回転させるために使用されます。 LSBからCFおよびCFからMSB。
- RCL -バイト/ワードのビットを左に回転させるために使用されます。 MSBからCFおよびCFからLSB。
文字列命令
文字列はバイト/ワードのグループであり、それらのメモリは常に順番に割り当てられます。
以下は、このグループの下の指示のリストです-
- REP -CX≠0になるまで指定された命令を繰り返すために使用されます。
- REPE/REPZ -CX = 0またはゼロフラグZF = 1になるまで、指定された命令を繰り返すために使用されます。
- REPNE/REPNZ -CX = 0またはゼロフラグZF = 1になるまで、指定された命令を繰り返すために使用されます。
- MOVS/MOVSB/MOVSW -バイト/ワードをある文字列から別の文字列に移動するために使用されます。
- COMS/COMPSB/COMPSW -2つの文字列バイト/ワードを比較するために使用されます。
- INS/INSB/INSW -I/Oポートから指定されたメモリ位置への入力文字列/バイト/ワードとして使用されます。
- OUTS/OUTSB/OUTSW -指定されたメモリ位置からI/Oポートへの出力文字列/バイト/ワードとして使用されます。
- SCAS/SCASB/SCASW -文字列をスキャンし、そのバイトをALのバイトと比較するか、文字列の単語とAXの単語を比較するために使用されます。
- LODS/LODSB/LODSW -文字列バイトをALに、または文字列ワードをAXに格納するために使用されます。
プログラム実行転送命令(分岐およびループ命令)
これらの命令は、実行中に命令を転送/分岐するために使用されます。 次の指示が含まれています-
条件なしで実行中に命令を転送する命令-
- CALL -プロシージャを呼び出し、リターンアドレスをスタックに保存するために使用します。
- RET -プロシージャからメインプログラムに戻るために使用します。
- JMP -次の命令に進むために提供されたアドレスにジャンプするために使用されます。
いくつかの条件で実行中に命令を転送する命令-
- JA/JNBE -上/下/等しくない命令が満たされた場合にジャンプするために使用されます。
- JAE/JNB -上下の命令が満たされる場合にジャンプするために使用されます。
- JBE/JNA -命令が以下/等しい/上でない場合にジャンプするために使用されます。
- JC -キャリーフラグCF = 1の場合にジャンプするために使用
- JE/JZ -等しい/ゼロのフラグZF = 1の場合にジャンプするために使用
- JG/JNLE -より大きい/より小さくない/等しい命令が満たされる場合にジャンプするために使用
- JGE/JNL -命令が満たす以上/等しい/以上の場合にジャンプするために使用されます。
- JL/JNGE -命令がより小さい/大きくない/等しい場合にジャンプするために使用されます。
- JLE/JNG -命令が満たすよりも小さい/等しい/大きくない場合にジャンプするために使用されます。
- JNC -キャリーフラグがない場合のジャンプに使用(CF = 0)
- JNE/JNZ -等しくない場合のジャンプに使用/フラグZF = 0
- JNO -オーバーフローフラグがない場合のジャンプに使用される= 0
- JNP/JPO -パリティ/パリティ奇数ではない場合のジャンプに使用PF = 0
- JNS -SF = 0に署名しない場合にジャンプするために使用
- JO -オーバーフローフラグOF = 1の場合にジャンプするために使用
- JP/JPE -パリティ/パリティがPF = 1の場合にジャンプするために使用
- JS -符号フラグSF = 1の場合にジャンプするために使用
プロセッサ制御命令
これらの命令は、フラグ値を設定/リセットすることにより、プロセッサの動作を制御するために使用されます。
このグループの下の指示は次のとおりです-
- STC -キャリーフラグCFを1に設定するために使用
- CLC -キャリーフラグCFを0にクリア/リセットするために使用
- CMC -キャリーフラグCFの状態で補数を設定するために使用されます。
- STD -方向フラグDFを1に設定するために使用
- CLD -方向フラグDFを0にクリア/リセットするために使用
- STI -割り込み有効フラグを1に設定するために使用します。つまり、INTR入力を有効にします。
- CLI -割り込み有効化フラグを0にクリアする、つまりINTR入力を無効にするために使用します。
反復制御命令
これらの命令は、指定された命令を何回も実行するために使用されます。 以下は、このグループの下の指示のリストです-
- LOOP -条件が満たされるまで、つまりCX = 0になるまで、命令のグループをループするために使用されます
- LOOPE/LOOPZ -ZF = 1&CX = 0を満たすまで、命令のグループをループするために使用
- LOOPNE/LOOPNZ -ZF = 0&CX = 0を満たすまで、命令のグループをループするために使用
- JCXZ -CX = 0の場合、提供されたアドレスにジャンプするために使用
割り込み命令
これらの命令は、プログラム実行中に割り込みを呼び出すために使用されます。
- INT -実行中にプログラムを中断し、指定されたサービスを呼び出すために使用されます。
- INTO -OF = 1の場合、実行中にプログラムを中断するために使用
- IRET -割り込みサービスからメインプログラムに戻るために使用
マイクロプロセッサ-8086割り込み
割り込み*は、プログラムの実行中に一時停止を作成する方法で、周辺機器がマイクロプロセッサにアクセスできるようにします。 マイクロプロセッサは、その割り込みに *ISR (割り込みサービスルーチン)で応答します。これは、割り込みの処理方法をマイクロプロセッサに指示する短いプログラムです。
次の画像は、8086マイクロプロセッサにある割り込みの種類を示しています-
ハードウェア割り込み
ハードウェア割り込みは、指定されたピンを介してマイクロプロセッサに信号を送信することにより、周辺機器によって発生します。
8086には2つのハードウェア割り込みピンがあります。 NMIおよびINTR。 NMIはマスク不能割り込みであり、INTRは優先順位の低いマスク可能割り込みです。 関連するもう1つの割り込みピンは、割り込み確認と呼ばれるINTAです。
NMI
これは、マスク可能な割り込み要求ピン(INTR)よりも高い優先度を持つ単一のマスク不可能な割り込みピン(NMI)であり、タイプ2の割り込みです。
この割り込みがアクティブになると、これらのアクションが発生します-
- 進行中の現在の命令を完了します。
- Flagレジスタ値をスタックにプッシュします。
- リターンアドレスのCS(コードセグメント)値とIP(命令ポインター)値をスタックにプッシュします。
- IPはワードロケーション00008Hの内容からロードされます。
- CSは、次のワード位置0000AHの内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます。
INTR
INTRはマスク可能割り込みです。これは、割り込みフラグの設定命令を使用して割り込みが有効になっている場合にのみマイクロプロセッサが割り込みを受けるためです。 割り込みフラグのクリア命令を使用して有効にしないでください。
INTR割り込みは、I/Oポートによってアクティブになります。 割り込みが有効でNMIが無効の場合、マイクロプロセッサは最初に現在の実行を完了し、INTAピンで「0」を2回送信します。 最初の「0」はINTAが外部デバイスに準備をすることを通知し、2番目の「0」の間にマイクロプロセッサがプログラム可能な割り込みコントローラーから8ビット、たとえばXを受信することを意味します。
これらのアクションは、マイクロプロセッサによって行われます-
- 最初に現在の命令を完了します。
- INTA出力をアクティブにし、割り込みタイプ(Xなど)を受け取ります。
- フラグレジスタ値、リターンアドレスのCS値、およびリターンアドレスのIP値がスタックにプッシュされます。
- IP値は、ワードロケーションX×4のコンテンツからロードされます
- CSは次の単語位置の内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます
ソフトウェア割り込み
割り込みを作成するために、プログラム内の目的の位置にいくつかの命令が挿入されます。 これらの割り込み命令を使用して、さまざまな割り込みハンドラーの動作をテストできます。 それが含まれています-
INT-タイプ番号のある割り込み命令
2バイトの命令です。 最初のバイトはオペコードを提供し、2番目のバイトは割り込みタイプ番号を提供します。 このグループには256種類の割り込みがあります。
その実行には、次の手順が含まれます-
- フラグレジスタ値がスタックにプッシュされます。
- リターンアドレスのCS値とリターンアドレスのIP値がスタックにプッシュされます。
- IPは、ワードタイプ「タイプ番号」の内容からロードされます×4
- CSは次の単語位置の内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます
type0割り込みの開始アドレスは000000H、type1割り込みの場合は00004H、type2の場合は同様に00008Hです。 最初の5つのポインターは、専用の割り込みポインターです。 i.e. −
- TYPE 0 割り込みは、ゼロ除算の状況を表します。
- TYPE 1 割り込みは、プログラムのデバッグ中のシングルステップ実行を表します。
- TYPE 2 割り込みは、マスク不可能なNMI割り込みを表します。
- TYPE 3 割り込みは、ブレークポイント割り込みを表します。
- TYPE 4 割り込みはオーバーフロー割り込みを表します。
タイプ5からタイプ31までの割り込みは、他の高度なマイクロプロセッサ用に予約されており、ハードウェアおよびソフトウェア割り込みでは、32からタイプ255までの割り込みを使用できます。
INT 3ブレークポイント割り込み命令
オペコードがCCHである1バイトの命令です。 これらの命令はプログラムに挿入されるため、プロセッサがそこに到達すると、プログラムの通常の実行が停止し、ブレークポイント手順に従います。
その実行には、次の手順が含まれます-
- フラグレジスタ値がスタックにプッシュされます。
- リターンアドレスのCS値とリターンアドレスのIP値がスタックにプッシュされます。
- IPは、ワードロケーション3×4 = 0000CHの内容からロードされます
- CSは次の単語位置の内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます
INTO-オーバーフロー命令で割り込み
これは1バイトの命令であり、ニーモニックの INTO です。 この命令のオペコードはCEHです。 名前が示すように、それは条件付き割り込み命令です。 オーバーフローフラグが1に設定され、割り込みタイプ番号が4の割り込みハンドラーに分岐する場合にのみアクティブになります。 オーバーフローフラグがリセットされると、実行は次の命令に続きます。
その実行には、次の手順が含まれます-
- フラグレジスタ値はスタックにプッシュされます。
- リターンアドレスのCS値とリターンアドレスのIP値がスタックにプッシュされます。
- IPはワード位置4×4 = 00010Hの内容からロードされます
- CSは次の単語位置の内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます
マイクロプロセッサ-8086アドレス指定モード
命令でソースオペランドが示されるさまざまな方法は、*アドレッシングモード*と呼ばれます。 8086プログラミングには8つの異なるアドレス指定モードがあります-
即時アドレス指定モード
データオペランドが命令自体の一部であるアドレス指定モードは、即時アドレス指定モードと呼ばれます。
例
MOV CX, 4929 H, ADD AX, 2387 H, MOV AL, FFH
レジスタアドレッシングモード
これは、レジスタが命令のオペランドのソースであることを意味します。
例
MOV CX, AX ; copies the contents of the 16-bit AX register into
; the 16-bit CX register),
ADD BX, AX
直接アドレス指定モード
メモリ位置の実効アドレスが命令に直接書き込まれるアドレッシングモード。
例
MOV AX, [1592H], MOV AL, [0300H]
間接アドレス指定モードを登録する
このアドレス指定モードでは、BP、BX、DI、SIのいずれかのレジスタに保持されているオフセットアドレスを介して、任意のメモリ位置でデータをアドレス指定できます。
例
MOV AX, [BX] ; Suppose the register BX contains 4895H, then the contents
; 4895H are moved to AX
ADD CX, {BX}
ベースのアドレス指定モード
このアドレッシングモードでは、オペランドのオフセットアドレスは、BX/BPレジスタの内容と8ビット/16ビットの変位の合計によって与えられます。
例
MOV DX, [BX+04], ADD CL, [BX+08]
インデックス付きアドレッシングモード
このアドレス指定モードでは、SIまたはDIレジスタの内容と8ビット/16ビットの変位を加算することにより、オペランドオフセットアドレスが検出されます。
例
MOV BX, [SI+16], ADD AL, [DI+16]
ベースインデックスアドレッシングモード
このアドレッシングモードでは、ベースレジスタをインデックスレジスタの内容に加算することにより、オペランドのオフセットアドレスが計算されます。
例
ADD CX, [AX+SI], MOV AX, [AX+DI]
変位モードでのインデックス付きベース
このアドレッシングモードでは、オペランドオフセットはベースレジスタの内容を追加して計算されます。 インデックスは、コンテンツと8または16ビットのディスプレイスメントを登録します。
例
MOV AX, [BX+DI+08], ADD CX, [BX+SI+16]
マルチプロセッサ構成の概要
マルチプロセッサとは、命令を同時に実行する複数のプロセッサセットを意味します。 3つの基本的なマルチプロセッサ構成があります。
- コプロセッサー構成
- 密結合構成
- 疎結合構成
コプロセッサーの構成
コプロセッサーは、マイクロプロセッサーが実行する同じタスクを非常に迅速に実行できる、マイクロプロセッサーチップ上の特別に設計された回路です。 メインプロセッサの作業負荷を軽減します。 コプロセッサは、同じメモリ、IOシステム、バス、制御ロジック、およびクロックジェネレータを共有します。 コプロセッサーは、数学計算、画面上のグラフィック表示などの特殊なタスクを処理します。
8086および8088はほとんどの操作を実行できますが、それらの命令セットは複雑な数学演算を実行できません。そのため、これらの場合、マイクロプロセッサーはこれらの操作を非常にすばやく簡単に実行できるIntel 8087数学コプロセッサーのような数学コプロセッサーを必要とします。
コプロセッサー構成のブロック図
コプロセッサーとプロセッサーはどのように接続されていますか?
- コプロセッサーとプロセッサーは、TEST、RQ-/GT-、およびQS〜0〜およびQS〜1〜信号を介して接続されます。
- TEST信号はコプロセッサーのBUSYピンに接続され、残りの3ピンは同じ名前のコプロセッサーの3ピンに接続されます。
- TESTシグナルは、コプロセッサーのアクティビティを処理します。 コプロセッサーがビジーまたはアイドル状態です。
- RT-/GT-はバス調停に使用されます。
- コプロセッサーはQS〜0〜およびQS〜1〜を使用して、ホストプロセッサーのキューのステータスを追跡します。
密結合構成
密結合構成は、コプロセッサー構成に似ています。 どちらもホストプロセッサと同じメモリ、I/Oシステムバス、制御ロジック、および制御ジェネレータを共有します。 ただし、コプロセッサとホストプロセッサは、独自の命令をフェッチして実行します。 システムバスは、コプロセッサとホストプロセッサによって独立して制御されます。
密結合構成のブロック図
プロセッサと独立したプロセッサはどのように接続されていますか?
- ホストと独立したプロセッサ間の通信は、メモリ空間を介して行われます。
- WAIT、ESCなど、通信に使用される命令はありません。
- ホストプロセッサはメモリを管理し、ポートの1つにコマンドを送信して独立したプロセッサを起動します。
- 次に、独立したプロセッサがメモリにアクセスしてタスクを実行します。
- タスクの完了後、ステータス信号または割り込み要求を使用して、ホストプロセッサに確認応答を送信します。
疎結合構成
疎結合構成は、マイクロプロセッサベースのシステムのモジュールの数で構成され、これらは共通のシステムバスを介して接続されます。 各モジュールは、独自のクロックジェネレータ、メモリ、I/Oデバイスで構成され、ローカルバスを介して接続されます。
疎結合構成のブロック図
利点
- 複数のプロセッサを搭載すると、効率が向上します。
- 各プロセッサには、ローカルメモリ/I/Oデバイスにアクセスするための独自のローカルバスがあります。 これにより、並列処理を簡単に実現できます。
- システム構造は柔軟です。 1つのモジュールの障害がシステム全体の障害に影響することはありません。障害のあるモジュールは後で交換できます。
8087数値データプロセッサ
8087数値データプロセッサは、* Mathコプロセッサ、数値プロセッサ拡張機能*および*浮動小数点ユニット*とも呼ばれます。 Intelが8086/8088と組み合わせて、より簡単で高速な計算を実現した最初の数学コプロセッサーでした。
命令が8086/8088プロセッサによって識別されると、それはさらに実行するために8087コプロセッサに割り当てられます。
8087でサポートされているデータ型は次のとおりです-
- バイナリ整数
- パック10進数
- 実数
- 一時的な実形式
8087数値データプロセッサの最も顕著な特徴は次のとおりです-
- 整数型、浮動小数点型、および2〜10バイトの実数型のデータをサポートします。
- 処理速度が非常に速いため、2つの64ビット実数の乗算を約27 µsで計算でき、平方根も約35 µsで計算できます。
- IEEE浮動小数点標準に準拠しています。
8087アーキテクチャ
8087アーキテクチャは、 Control Unit (CU)と Numeric Extension Unit (NEU)の2つのグループに分かれています。
- control unit は、命令の受信とデコード、メモリオペランドの読み取りと書き込み、並列キューの維持など、プロセッサとメモリ間のすべての通信を処理します。 すべてのコプロセッサー命令はESC命令です。つまり、「F」で始まります。コプロセッサーはESC命令のみを実行し、他の命令はマイクロプロセッサーによって実行されます。
- *数値拡張ユニット*は、算術、論理、超越、データ転送命令などの数値プロセッサ命令をすべて処理します。 8つのレジスタスタックがあり、命令とその結果のオペランドを保持します。
8087コプロセッサのアーキテクチャは次のとおりです-
8087ピンの説明
最初に8087のピンダイアグラムを見てみましょう-
次のリストは、8087のピンの説明を提供します-
- * AD〜0〜– AD〜15〜*-これらは時間多重化されたアドレス/データラインであり、最初のクロックサイクル中にアドレスを伝送し、2番目のクロックサイクル以降のデータを伝送します。
- A〜19〜/S〜6〜– A〜16〜/S -これらの行は、時間多重化されたアドレス/ステータス行です。 8086の対応するピンと同様に機能します。 S〜6〜、S〜4〜、およびS3は永続的に高く、S〜5〜は永続的に低くなっています。
- * $ \ overline \ {BHE} $/S〜7〜*-最初のクロックサイクルで、$ \ overline \ {BHE} $/S〜7〜を使用して、8086データの上位バイトへのデータを有効にします。バス、その後ステータスラインS〜7〜として機能します。
- * QS〜1〜、QS〜0〜*-これらは、次の表に示すように、命令キューの状態、その状態を提供するキュー状態入力信号です-
QS0 | QS1 | Status |
---|---|---|
0 | 0 | No operation |
0 | 1 | First byte of opcode from the queue |
1 | 0 | Empty the queue |
1 | 1 | Subsequent byte from the queue |
- INT -割り込み信号であり、実行中にマスクされていない例外が受信されるとハイに変わります。
- BUSY -これは出力信号であり、ハイの場合、CPUにビジー状態を示します。
- READY -バスがデータを受信する準備ができているかどうかをコプロセッサに通知するために使用される入力信号です。
- RESET -これは、コプロセッサの内部アクティビティを拒否し、CPUが必要とするたびに実行されるように準備するために使用される入力信号です。
- CLK -CLK入力は、プロセッサ動作の基本的なタイミングを提供します。
- VCC -これは電源信号であり、回路の動作に5Vの供給が必要です。
- * S〜0〜、S〜1〜、S〜2〜*-これらは、バスコントローラー8087がメモリおよびI/O制御信号を生成するために使用する操作のステータスを提供するステータス信号です。 これらの信号は、4番目のクロックサイクル中にアクティブです。
S2 | S1 | S0 | Queue Status |
---|---|---|---|
0 | X | X | Unused |
1 | 0 | 0 | Unused |
1 | 0 | 1 | Memory read |
1 | 1 | 0 | Memory write |
1 | 1 | 1 | Passive |
- * RQ/GT〜1〜&RQ/GT〜0〜*-これらは、オペランド転送のためにホストプロセッサ8086/8088からバスの制御を取得するために8087プロセッサによって使用される*要求/許可*信号です。
マイクロプロセッサ-I/Oインターフェイスの概要
この章では、8085とのメモリインターフェースおよびIOインターフェースについて説明します。
*Interface* は、2つのコンポーネント間の通信のパスです。 インターフェースには、メモリインターフェースとI/Oインターフェースの2種類があります。
メモリインターフェース
命令を実行するとき、命令コードとメモリに保存されているデータを読み取るために、マイクロプロセッサがメモリにアクセスする必要があります。 このため、メモリとマイクロプロセッサの両方で、レジスタの読み取りと書き込みにいくつかの信号が必要です。
インターフェース処理には、メモリ要件とマイクロプロセッサ信号と一致するいくつかの重要な要素が含まれます。 したがって、インターフェイス回路は、メモリ信号の要件をマイクロプロセッサの信号と一致させるように設計する必要があります。
IOインターフェース
キーボード、マウス、プリンターなどのさまざまな通信デバイスがあります。 そのため、ラッチやバッファを使用して、キーボードやその他のデバイスをマイクロプロセッサと接続する必要があります。 このタイプのインターフェイスは、I/Oインターフェイスと呼ばれます。
メモリとI/Oインターフェイスのブロック図
8085インターフェースピン
以下は、他のデバイスとのインターフェースに使用される8085ピンのリストです-
- A〜15〜-A〜8〜(上位アドレスバス)
- AD〜7〜-AD〜0〜(下位アドレス/データバス)
- ALE
- RD
- WR
- 準備完了
コミュニケーションの方法-外界とのマイクロプロセッサー?
マイクロプロセッサが外界と接続できる通信には2つの方法があります。
- シリアル通信インターフェース
- パラレル通信インターフェース
シリアル通信インターフェース-このタイプの通信では、インターフェースはマイクロプロセッサから1バイトのデータを取得し、ビット単位で他のシステムにシリアルで送信します。その逆も同様です。
パラレル通信インターフェース-このタイプの通信では、インターフェースはマイクロプロセッサからデータのバイトを取得し、ビットごとに他のシステムに同時(または)パラレル方式で送信します。
8279-プログラマブルキーボード
8279プログラマブルキーボード/ディスプレイコントローラーは、キーボードとCPUを接続するIntelによって設計されています。 キーボードは最初にキーボードをスキャンし、キーが押されたかどうかを識別します。 次に、押されたキーの相対的な応答をCPUに送信し、その逆も行います。
キーボードとCPUのインターフェースはいくつありますか?
キーボードは、割り込みモードまたはポーリングモードでインターフェイスできます。 *割り込みモード*では、キーが押された場合にのみプロセッサにサービスが要求されます。そうでない場合、CPUはメインタスクを続行します。
- ポーリングモード*では、CPUは8279の内部フラグを定期的に読み取り、キーが押されたかどうかを確認します。
8279キーボードの仕組み
キーボードは最大64個のキーで構成されており、キーコードを使用してCPUと接続されています。 これらのキーコードはデバウンスされ、8バイトのFIFORAMに保存され、CPUからアクセスできます。 FIFOに8文字以上が入力されている場合、一度に8個以上のキーが押されたことを意味します。 これは、オーバーランステータスが設定されている場合です。
FIFOに有効なキーエントリが含まれている場合、CPUは割り込みモードで中断されます。それ以外の場合、CPUはエントリを読み取るためにポーリングでステータスをチェックします。 CPUがキーエントリを読み取ると、FIFOが更新され、キーエントリがFIFOからプッシュされて、新しいエントリ用のスペースが生成されます。
アーキテクチャと説明
I/O制御とデータバッファ
このユニットは、マイクロプロセッサを通るデータの流れを制御します。 Dが低いときにのみ有効になります。 そのデータバッファは、システムの外部バスとマイクロプロセッサの内部バスを接続します。 ピンA0、RD、およびWRは、コマンド、ステータス、またはデータの読み取り/書き込み操作に使用されます。
制御およびタイミングレジスタとタイミング制御
このユニットには、キーボード、ディスプレイモード、およびCPUによってプログラムされたその他の操作を保存するためのレジスタが含まれています。 タイミングおよび制御ユニットは、回路の動作のタイミングを処理します。
スキャンカウンター
2つのモードがあります。 *エンコードモード*およびデコードモード。 エンコードモードでは、カウンタは、キーボードとディスプレイのスキャンラインを提供するために外部でデコードされるバイナリカウントを提供します。
- デコードスキャンモード*では、カウンターは最下位2ビットを内部でデコードし、SL〜0〜-SL〜3〜で4スキャンのうち1スキャンをデコードします。
リターンバッファー、キーボードデバウンス、およびコントロール
このユニットは最初にキーの閉鎖を行ごとにスキャンし、見つかった場合はキーボードデバウンスユニットがキーエントリをデバウンスします。 場合は、同じキーが検出され、そのキーのコードはSHIFT&CONTROLキーステータスとともにセンサーRAMに直接転送されます。
FIFO/センサーRAMおよびステータスロジック
このユニットは8バイトの先入れ先出し(FIFO)RAMとして機能し、押されたすべてのキーのキーコードがそのシーケンスに従ってRAMに入力されます。 ステータスロジックは、各FIFO読み取り操作の後、FIFOが空になるまで割り込み要求を生成します。
スキャンされたセンサーマトリックスモードでは、このユニットはセンサーRAMとして機能し、各行に対応するセンサーの行のステータスがマトリックスにロードされます。 センサーの状態が変わると、IRQラインがHighに変わり、CPUに割り込みます。
ディスプレイアドレスレジスタとディスプレイRAM
このユニットは、ディスプレイRAMに対してCPUによって現在読み書きされているワードのアドレスを保持するディスプレイアドレスレジスタで構成されています。
8279-ピンの説明
次の図は、8279のピン図を示しています-
データバスライン、DB〜0〜-DB〜7〜
これらは、CPUとの間でデータを転送するために使用される8つの双方向データバスラインです。
CLK
クロック入力は、マイクロプロセッサが必要とする内部タイミングを生成するために使用されます。
リセット
名前が示すように、このピンはマイクロプロセッサをリセットするために使用されます。
CSチップセレクト
このピンをLowに設定すると、読み取り/書き込み操作が許可されます。それ以外の場合は、このピンをHighに設定する必要があります。
A0
このピンは、コマンド/ステータス情報の転送を示します。 低い場合、データの転送を示します。
RD、WR
この読み取り/書き込みピンにより、データバッファはデータバスを介してデータを送受信できます。
IRQ
FIFOセンサーRAMにデータがある場合、この割り込み出力ラインはHighになります。 割り込みラインは、各FIFO RAM読み取り操作でローになります。 ただし、FIFO RAMにCPUによって読み取られるキーコードエントリがさらに含まれている場合、このピンは再びHighになり、CPUへの割り込みを生成します。
V〜ss〜、V〜cc〜
これらは、マイクロプロセッサの接地線と電源線です。
SL〜0〜-SL〜3〜
これらは、キーボードマトリックスのスキャンと数字の表示に使用されるスキャンラインです。 これらの行は、モード制御レジスタを使用して、エンコードまたはデコードとしてプログラムできます。
RL〜0〜-RL〜7〜
これらは、キーの一方の端子に接続されているリターンラインであり、キーのもう一方の端子は、デコードされたスキャンラインに接続されています。 これらの行は、キーが押されると0に設定されます。
シフト
Shift入力ラインのステータスは、スキャンされたキーボードモードのFIFOのすべてのキーコードとともに保存されます。 キーが閉じられて低く引き下げられるまで、内部で引き上げられて高く保たれます
CNTL/STB-制御/ストロボI/Pモード
キーボードモードでは、この行は制御入力として使用され、キーが閉じられるとFIFOに保存されます。 ラインは、ストローブ入力モードでFIFO RAMにデータを入力するストローブラインです。 内部プルアップがあります。 キーが閉じられてラインがプルダウンされます。
BD
空白の表示を表します。 数字の切り替え中にディスプレイをブランクにするために使用されます。
OUTA〜0〜– OUTA〜3〜およびOUTB〜0〜– OUTB〜3〜
これらは、2つの16x4または1つの16x8内部ディスプレイリフレッシュレジスタの出力ポートです。 これらのラインからのデータは、ディスプレイとキーボードをスキャンするスキャンラインと同期されます。
8279の動作モード
8279には、*入力モード*および*出力モード*の2つの操作モードがあります。
入力モード
このモードはキーボードからの入力を処理し、このモードはさらに3つのモードに分類されます。
- スキャンされたキーボードモード-このモードでは、エンコードされたスキャンまたはデコードされたスキャンを使用してキーマトリックスをインターフェイスできます。 エンコードされたスキャン、8 x 8キーボードまたはデコードされたスキャンでは、4 x 8キーボードをインターフェイスできます。 SHIFTおよびCONTROLステータスで押されたキーのコードは、FIFO RAMに保存されます。
- スキャンされたセンサーマトリックス-このモードでは、センサーアレイは、エンコーダーまたはデコーダースキャンのいずれかを使用して、プロセッサとインターフェイスできます。 エンコーダースキャンでは、8x8センサーマトリックスまたはデコーダースキャン4x8センサーマトリックスとインターフェイスできます。
- ストロボ入力-このモードでは、制御ラインが0に設定されている場合、戻りラインのデータはバイトごとにFIFOに保存されます。
出力モード
このモードは、ディスプレイ関連の操作を扱います。 このモードはさらに2つの出力モードに分類されます。
- ディスプレイスキャン-このモードでは、8/16文字多重ディスプレイをデュアル4ビット/シングル8ビットディスプレイユニットとして編成できます。
- Display Entry -このモードでは、右側/左側から表示するデータを入力できます。
マイクロプロセッサー-8257 DMAコントローラー
DMAはDirect Memory Accessの略です。 Intelがデータを最高速で転送するように設計されています。 これにより、デバイスはCPUの干渉なしにメモリとの間でデータを直接転送できます。
DMAコントローラを使用して、デバイスはCPUにデータ、アドレス、および制御バスを保持するよう要求するため、デバイスはメモリとの間でデータを直接転送できます。 DMAデータ転送は、CPUからHLDA信号を受信した後にのみ開始されます。
DMA操作はどのように実行されますか?
以下は、DMAによって実行される一連の操作です-
- 最初に、デバイスがデバイスとメモリの間でデータを送信する必要がある場合、デバイスはDMA要求(DRQ)をDMAコントローラーに送信する必要があります。
- DMAコントローラーは、保留要求(HRQ)をCPUに送信し、CPUがHLDAをアサートするのを待ちます。
- 次に、マイクロプロセッサはすべてのデータバス、アドレスバス、および制御バスをトライステートにします。 CPUはバスの制御を終了し、HLDA信号を介してHOLD要求を確認します。
- これで、CPUはHOLD状態になり、DMAコントローラーはCPU、メモリ、I/Oデバイス間のバスを介した操作を管理する必要があります。
8257の機能
ここに8257の顕著な特徴のいくつかのリストがあります-
- 4つのI/Oデバイスで使用できる4つのチャネルがあります。
- 各チャネルには16ビットのアドレスと14ビットのカウンターがあります。
- 各チャネルは最大64kbのデータを転送できます。
- 各チャネルは個別にプログラムできます。
- 各チャネルは、読み取り転送、書き込み転送、および検証転送操作を実行できます。
- 128バイトが転送されたという周辺機器へのMARK信号を生成します。
- 単相クロックが必要です。
- その周波数範囲は250Hzから3MHzです。
- それは2つのモード、すなわち*マスターモード*と*スレーブモード*で動作します。
8257アーキテクチャ
次の画像は、8257のアーキテクチャを示しています-
8257ピンの説明
次の画像は、8257 DMAコントローラのピンダイアグラムを示しています-
DRQ〜0〜-DRQ * 3 *
これらは、DMAサービスを使用するために周辺機器によって使用される4つの個別のチャネルDMA要求入力です。 固定優先度モードが選択されている場合、DRQ〜0〜の優先度が最も高く、DRQ〜3〜の優先度が最も低くなります。
DACK〜o〜-DACK〜3〜
これらはアクティブLow DMA確認ラインであり、CPUによるリクエストのステータスについてリクエストしているペリフェラルを更新します。 これらの回線は、要求元デバイスのストロボ回線としても機能します。
D〜o〜-D〜7〜
これらは、システムバスをDMAコントローラの内部データバスとインターフェースするために使用される双方向のデータラインです。 スレーブモードでは、コマンドワードを8257に、ステータスワードを8257から運びます。 マスターモードでは、これらのラインを使用して、生成されたアドレスの上位バイトをラッチに送信します。 このアドレスは、ADSTB信号を使用してさらにラッチされます。
IOR
これはアクティブLowの双方向トライステート入力ラインで、スレーブモードで8257の内部レジスタを読み取るためにCPUによって使用されます。 マスタモードでは、メモリ書き込みサイクル中に周辺デバイスからデータを読み取るために使用されます。
IOW
これはアクティブなロー双方向トライステートラインであり、データバスの内容を8ビットモードレジスタまたは16ビットDMAアドレスレジスタまたはターミナルカウントレジスタの上位/下位バイトにロードするために使用されます。 マスターモードでは、DMAメモリ読み取りサイクル中に周辺デバイスにデータをロードするために使用されます。
CLK
8257の内部動作に必要なのはクロック周波数信号です。
リセット
この信号は、すべてのDMAチャネルを無効にしてDMAコントローラーをリセットするために使用されます。
A〜o〜-A〜3〜
これらは4つの最下位アドレス行です。 スレーブモードでは、これらは入力として機能し、読み取りまたは書き込みを行うレジスタの1つを選択します。 マスターモードでは、8257によって生成される4つの最下位メモリアドレス出力ラインです。
CS
アクティブローのチップセレクトラインです。 スレーブモードでは、8257への読み取り/書き込み操作を有効にします。 マスターモードでは、8257に対する読み取り/書き込み操作を無効にします。
A〜4〜-A〜7〜
これらは、マスターモードでDMAによって生成された下位バイトアドレスの上位ニブルです。
準備完了
これは、アクティブ状態の非同期入力信号で、待機状態を挿入することでDMAを準備します。
HRQ
この信号は、出力デバイスからホールド要求信号を受信するために使用されます。 スレーブモードでは、DRQ入力ライン8257に接続されます。 マスターモードでは、CPUのHOLD入力に接続されます。
HLDA
バスが1に設定されている場合、CPUがバスを要求している周辺機器に許可したことをDMAコントローラーに示すのは、ホールド確認信号です。
MEMR
これは、低メモリ読み取り信号で、DMA読み取りサイクル中にアドレス指定されたメモリ位置からデータを読み取るために使用されます。
MEMW
DMA書き込み操作中にアドレス指定されたメモリ位置にデータを書き込むために使用されるのは、アクティブLowの3状態信号です。
ADST
この信号は、DMAコントローラーによって生成されたメモリアドレスの上位バイトをラッチに変換するために使用されます。
AEN
この信号は、アドレスバス/データバスを無効にするために使用されます。
TC
これは「Terminal Count」の略で、現在の周辺機器に対する現在のDMAサイクルを示します。
MARK
マークは、最初から128サイクルまたは整数倍後にアクティブになります。 これは、現在のDMAサイクルが、選択した周辺デバイスへの前回のMARK出力から128番目のサイクルであることを示しています。
V〜cc〜
回路の動作に必要なのは電力信号です。
マイクロコントローラー-概要
- マイクロコントローラー*は、マイクロ波の情報の表示、リモート信号の受信などの組み込みシステムの特定のタスクを実行するように設計された小型で低コストのマイクロコンピューターです。
一般的なマイクロコントローラーは、プロセッサー、メモリー(RAM、ROM、EPROM)、シリアルポート、周辺機器(タイマー、カウンター)などで構成されています。
マイクロプロセッサーとマイクロコントローラーの違い
次の表は、マイクロプロセッサとマイクロコントローラの違いを強調しています-
Microcontroller | Microprocessor |
---|---|
Microcontrollers are used to execute a single task within an application. | Microprocessors are used for big applications. |
Its designing and hardware cost is low. | Its designing and hardware cost is high. |
Easy to replace. | Not so easy to replace. |
It is built with CMOS technology, which requires less power to operate. | Its power consumption is high because it has to control the entire system. |
It consists of CPU, RAM, ROM, I/O ports. | It doesn’t consist of RAM, ROM, I/O ports. It uses its pins to interface to peripheral devices. |
マイクロコントローラーの種類
マイクロコントローラは、メモリ、アーキテクチャ、ビット、命令セットに基づいてさまざまなカテゴリに分類されます。 以下は、それらのタイプのリストです-
Bit
ビット構成に基づいて、マイクロコントローラはさらに3つのカテゴリに分類されます。
- * 8ビットマイクロコントローラー*-このタイプのマイクロコントローラーは、加算、減算、乗算除算などの算術および論理演算を実行するために使用されます。 たとえば、Intel 8031および8051は8ビットマイクロコントローラーです。
- * 16ビットマイクロコントローラ*-このタイプのマイクロコントローラは、より高い精度とパフォーマンスが必要な場合に算術演算と論理演算を実行するために使用されます。 たとえば、Intel 8096は16ビットのマイクロコントローラーです。
- * 32ビットマイクロコントローラ*-このタイプのマイクロコントローラは、一般的に自動操作マシン、医療機器などの自動制御機器で使用されます。
記憶
メモリ構成に基づいて、マイクロコントローラはさらに2つのカテゴリに分類されます。
- 外部メモリマイクロコントローラ-このタイプのマイクロコントローラは、チップ上にプログラムメモリがないように設計されています。 したがって、外部メモリマイクロコントローラーと呼ばれます。 例:Intel 8031マイクロコントローラー。
- 組み込みメモリマイクロコントローラ-このタイプのマイクロコントローラは、マイクロコントローラがすべてのプログラムとデータメモリ、カウンタとタイマー、割り込み、I/Oポートがチップに埋め込まれるように設計されています。 例:Intel 8051マイクロコントローラー。
指図書
命令セットの構成に基づいて、マイクロコントローラはさらに2つのカテゴリに分類されます。
- CISC -CISCは、複雑な命令セットコンピュータの略です。 ユーザーは、多くの単純な命令の代わりに単一の命令を挿入できます。
- RISC -RISCは、Reduced Instruction Set Computersの略です。 命令ごとのクロックサイクルを短縮することにより、動作時間を短縮します。
マイクロコントローラーの用途
マイクロコントローラは、次のようなさまざまなデバイスで広く使用されています-
- LEDのような光検知および制御デバイス。
- 電子レンジ、煙突などの温度検出および制御デバイス。
- 火災警報器などの火災検知および安全装置。
- 電圧計などの測定デバイス。
マイクロコントローラー-8051アーキテクチャ
8051マイクロコントローラーは、1981年にIntelによって設計されました。 8ビットのマイクロコントローラーです。 40ピンDIP(デュアルインラインパッケージ)、4kbのROMストレージと128バイトのRAMストレージ、2つの16ビットタイマーで構築されています。 4つのパラレル8ビットポートで構成され、要件に応じてプログラム可能およびアドレス指定可能です。 オンチップ水晶発振器は、12 MHzの水晶周波数を持つマイクロコントローラに統合されています。
8051マイクロコントローラーのアーキテクチャーについて説明します。
次の図では、システムバスがすべてのサポートデバイスをCPUに接続しています。 システムバスは、8ビットデータバス、16ビットアドレスバス、およびバス制御信号で構成されます。 プログラムメモリ、ポート、データメモリ、シリアルインターフェイス、割り込み制御、タイマー、およびCPUなどの他のすべてのデバイスは、すべてシステムバスを介してインターフェイスされます。
マイクロコントローラー-8051ピンの説明
8051マイクロコントローラのピン図は次のように見えます-
- *ピン1〜8 *-これらのピンはポート1として知られています。 このポートは他の機能を提供しません。 内部でプルアップされた双方向I/Oポートです。
- *ピン9 *-マイクロコントローラを初期値にリセットするために使用されるRESETピンです。
- *ピン10〜17 *-これらのピンはポート3として知られています。 このポートは、割り込み、タイマー入力、制御信号、シリアル通信信号RxDおよびTxDなどの機能を提供します。
- *ピン18および19 *-これらのピンは、システムクロックを取得するために外部クリスタルとのインターフェースに使用されます。
- *ピン20 *-このピンは、回路に電源を供給します。
- *ピン21〜28 *-これらのピンはポート2として知られています。 I/Oポートとして機能します。 高次アドレスバス信号もこのポートを使用して多重化されます。
- *ピン29 *-これは、プログラムストアイネーブルを表すPSENピンです。 外部プログラムメモリから信号を読み取るために使用されます。
- *ピン30 *-これは外部アクセス入力を表すEAピンです。 外部メモリのインターフェイスを有効/無効にするために使用されます。
- *ピン31 *-これはアドレスラッチイネーブルを表すALEピンです。 ポートのアドレスデータ信号を逆多重化するために使用されます。
- *ピン32〜39 *-これらのピンはポート0として知られています。 I/Oポートとして機能します。 下位アドレスおよびデータバス信号は、このポートを使用して多重化されます。
- *ピン40 *-このピンは、回路に電源を供給するために使用されます。
マイクロコントローラー8051入出力ポート
8051マイクロコントローラーには、それぞれ8ビットのI/Oポートが4つあり、入力または出力として構成できます。 したがって、合計32の入出力ピンにより、マイクロコントローラーを周辺機器と接続できます。
- ピン設定、つまり 論理状態に応じて、ピンを入力用に1、出力用に0に設定できます。
- 入出力(I/O)ピン-プルアップ抵抗が内蔵されていないため、マイクロコントローラー内のすべての回路は、P0ポートを除くそのピンの1つに接続する必要があります。
- 入力ピン-Pレジスタのビットにロジック1が適用されます。 出力FEトランジスタはオフになり、他のピンは高抵抗のプルアップ抵抗を介して電源電圧に接続されたままになります。
- *ポート0 *-P0(ゼロ)ポートは2つの機能によって特徴付けられます-
- 外部メモリが使用される場合、下位アドレスバイト(アドレスA0A7)が外部メモリに適用されます。そうでない場合、このポートのすべてのビットが入力/出力として設定されます。
- P0ポートが出力として設定されている場合、プルアップ抵抗が内蔵されたピンで構成される他のポートは、その端が5V電源に接続され、このポートのピンにはこの抵抗がありません。
入力構成
このポートのいずれかのピンが入力として設定されている場合、「浮動」するように機能します。 入力には無制限の入力抵抗と不定の電位があります。
出力設定
ピンが出力として設定されている場合、「オープンドレイン」として機能します。 ポートビットにロジック0を適用すると、適切なピンがグランド(0V)に接続され、ロジック1を適用すると、外部出力が「フローティング」状態になります。
この出力ピンにロジック1(5V)を適用するには、外部プルアップ抵抗を作成する必要があります。
ポート1
P1は、P0のような代替機能がないため、真のI/Oポートですが、このポートは一般的なI/Oのみとして構成できます。 プルアップ抵抗が内蔵されており、TTL回路と完全に互換性があります。
ポート2
外部メモリを使用する場合、P2はP0と同様です。 このポートのピンは、外部メモリチップ用のアドレスを占有します。 このポートは、アドレスA8〜A15の上位アドレスバイトに使用できます。 メモリが追加されていない場合、このポートはポート1と同様の一般的な入出力ポートとして使用できます。
ポート3
このポートの機能は、ロジック1をP3レジスタの適切なビットに適用する必要があることを除いて、他のポートと同様です。
ピンの電流制限
- ピンが出力として構成されている場合(つまり、 ロジック0)、単一ポートピンは10mAの電流を受け取ることができます。
- これらのピンが入力として構成されている場合(つまり、 ロジック1)、内蔵プルアップ抵抗は非常に弱い電流を提供しますが、LSシリーズの最大4つのTTL入力をアクティブにできます。
- ポートの8ビットすべてがアクティブな場合、合計電流は15mAに制限する必要があります(ポートP0:26mA)。
- すべてのポート(32ビット)がアクティブな場合、合計最大電流は71mAに制限する必要があります。
マイクロコントローラー-8051割り込み
割り込みは、メインプログラムを一時的に中断し、外部ソースに制御を渡し、タスクを実行するイベントです。 次に、中断したメインプログラムにコントロールを渡します。
8051には5つの割り込み信号があります。 INT0、TFO、INT1、TF1、RI/TI。 IEレジスタのビットを設定することで各割り込みを有効または無効にでき、同じレジスタのEAビットをクリアすることで割り込みシステム全体を無効にできます。
IE(割り込みイネーブル)レジスタ
このレジスタは、割り込みを有効または無効にする役割を果たします。 EAレジスタは、割り込みを有効にするために1に設定され、割り込みを無効にするために0に設定されます。 ビットシーケンスとその意味を次の図に示します。
EA | IE.7 | It disables all interrupts. When EA = 0 no interrupt will be acknowledged and EA = 1 enables the interrupt individually. |
- | IE.6 | Reserved for future use. |
- | IE.5 | Reserved for future use. |
ES | IE.4 | Enables/disables serial port interrupt. |
ET1 | IE.3 | Enables/disables timer1 overflow interrupt. |
EX1 | IE.2 | Enables/disables external interrupt1. |
ET0 | IE.1 | Enables/disables timer0 overflow interrupt. |
EX0 | IE.0 | Enables/disables external interrupt0. |
IP(割り込み優先度)レジスタ
次の図に示すように、割り込み優先度(IP)レジスタの対応するビットを変更することにより、割り込みの優先度レベルを変更できます。
- 低優先度の割り込みは、高優先度の割り込みによってのみ中断できますが、別の低優先度の割り込みによっては中断できません。
- 異なる優先度レベルの2つの割り込みが同時に受信された場合、より高い優先度レベルの要求が処理されます。
- 同じ優先度レベルのリクエストが同時に受信された場合、内部ポーリングシーケンスはどのリクエストを処理するかを決定します。
- | IP.6 | Reserved for future use. |
- | IP.5 | Reserved for future use. |
PS | IP.4 | It defines the serial port interrupt priority level. |
PT1 | IP.3 | It defines the timer interrupt of 1 priority. |
PX1 | IP.2 | It defines the external interrupt priority level. |
PT0 | IP.1 | It defines the timer0 interrupt priority level. |
PX0 | IP.0 | It defines the external interrupt of 0 priority level. |
TCONレジスタ
TCONレジスタは、マイクロコントローラへの外部割り込みのタイプを指定します。
8255A-プログラマブル周辺機器インターフェース
8255Aは、必要に応じて特定の条件下でI/Oから割り込みI/Oにデータを転送するように設計された汎用プログラマブルI/Oデバイスです。 ほとんどすべてのマイクロプロセッサで使用できます。
要件に応じて設定できる3つの8ビット双方向I/Oポート(24I/Oライン)で構成されています。
8255Aのポート
8255Aには、ポートA、ポートB、およびポートCの3つのポートがあります。
- *ポートA *には、1つの8ビット出力ラッチ/バッファと1つの8ビット入力バッファが含まれます。
- *ポートB *はポートAに似ています。
- *ポートC *は2つの部分に分割できます。 制御ワードによるポートC下位(PC0-PC3)およびポートC上位(PC7-PC4)。
これら3つのポートは、さらに2つのグループに分けられます。 グループAには、ポートAと上部のポートCが含まれます。 グループBには、ポートBと下位のポートCが含まれます。 これらの2つのグループは、3つの異なるモードでプログラムできます。 最初のモードの名前はmode 0、2番目のモードの名前はMode 1、3番目のモードの名前はMode 2です。
動作モード
8255Aには3つの異なる動作モードがあります-
- *モード0 *-このモードでは、ポートAとBは2つの8ビットポートとして、ポートCは2つの4ビットポートとして使用されます。 各ポートは、出力がラッチされ入力がラッチされない入力モードまたは出力モードでプログラムできます。 ポートには割り込み機能がありません。
- *モード1 *-このモードでは、ポートAおよびBが8ビットI/Oポートとして使用されます。 入力ポートまたは出力ポートとして構成できます。 各ポートは、ポートCからの3行をハンドシェイク信号として使用します。 入力と出力はラッチされます。
- *モード2 *-このモードでは、ポートAをモード0またはモード1で双方向ポートおよびポートBとして設定できます。 ポートAは、データ転送用のハンドシェイク信号としてポートCからの5つの信号を使用します。 ポートCからの残りの3つの信号は、単純なI/OまたはポートBのハンドシェイクとして使用できます。
8255Aの機能
8255Aの顕著な特徴は次のとおりです-
- 3つの8ビットIOポートで構成されています。 PA、PB、およびPC。
- アドレス/データバスは外部で分離する必要があります。
- TTL互換です。
- DC駆動能力が向上しました。
8255アーキテクチャ
次の図は、8255Aのアーキテクチャを示しています-
Intel 8255A-ピンの説明
最初にIntel 8255Aのピン図を見てみましょう-
8255Aのピンの機能説明について説明します。
データバスバッファ
これは、マイクロプロセッサをシステムデータバスに接続するために使用されるトライステート8ビットバッファです。 データは、CPUの指示に従ってバッファによって送信または受信されます。 制御ワードとステータス情報もこのバスを使用して転送されます。
読み取り/書き込み制御ロジック
このブロックは、データ/制御/ステータスワードの内部/外部転送を制御します。 CPUアドレスと制御バスからの入力を受け入れ、両方の制御グループにコマンドを発行します。
CS
Chip Selectの略です。 この入力がLOWの場合、チップが選択され、8255AとCPU間の通信が可能になります。 デコードされたアドレスに接続され、A〜0〜&A〜1〜はマイクロプロセッサのアドレスラインに接続されます。
その結果は、次の条件に依存します-
CS | A1 | A0 | Result |
---|---|---|---|
0 | 0 | 0 | PORT A |
0 | 0 | 1 | PORT B |
0 | 1 | 0 | PORT C |
0 | 1 | 1 | Control Register |
1 | X | X | No Selection |
WR
書き込みの略です。 この制御信号は、書き込み操作を有効にします。 この信号がLowになると、マイクロプロセッサは選択されたI/Oポートまたは制御レジスタに書き込みます。
リセット
これはアクティブHighの信号です。 制御レジスタをクリアし、すべてのポートを入力モードに設定します。
RD
Readの略です。 この制御信号は、読み取り操作を有効にします。 信号が低い場合、マイクロプロセッサは8255の選択されたI/Oポートからデータを読み取ります。
A〜0〜およびA〜1〜
これらの入力信号は、RD、WR、および制御信号の1つで機能します。 以下は、さまざまな信号とその結果を示す表です。
A1 | A0 | RD | WR | CS | Result |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 |
Input Operation ポートA→データバス |
0 | 1 | 0 | 1 | 0 | PORT B → Data Bus |
1 | 0 | 0 | 1 | 0 | PORT C → Data Bus |
0 | 0 | 1 | 0 | 0 |
Output Operation データバス→ポートA |
0 | 1 | 1 | 0 | 0 | Data Bus → PORT A |
1 | 0 | 1 | 0 | 0 | Data Bus → PORT B |
1 | 1 | 1 | 0 | 0 | Data Bus → PORT D |
Intel 8253-プログラマブルインターバルタイマー
Intel 8253および8254は、マイクロプロセッサが3つの16ビットレジスタを使用してタイミングおよびカウント機能を実行するために設計されたプログラマブルインターバルタイマー(PTI)です。 各カウンターには2つの入力ピンがあります。 クロックとゲート、および「OUT」出力用の1ピン。 カウンタを操作するには、16ビットカウントがレジスタにロードされます。 コマンドで、カウントが0に達するまでカウントのデクリメントを開始し、CPUを中断するために使用できるパルスを生成します。
8253と8254の違い
次の表では、8253と8254の機能を区別しています-
8253 | 8254 |
---|---|
Its operating frequency is 0 - 2.6 MHz | Its operating frequency is 0 - 10 MHz |
It uses N-MOS technology | It uses H-MOS technology |
Read-Back command is not available | Read-Back command is available |
Reads and writes of the same counter cannot be interleaved. | Reads and writes of the same counter can be interleaved. |
8253/54の機能
8253/54の最も顕著な特徴は次のとおりです-
- 3つの独立した16ビットダウンカウンターがあります。
- DC〜10 MHzの入力を処理できます。
- これらの3つのカウンタは、バイナリカウントまたはBCDカウント用にプログラムできます。
- ほとんどすべてのマイクロプロセッサと互換性があります。
- 8254にはREAD BACKコマンドと呼ばれる強力なコマンドがあり、ユーザーはカウント値、プログラムモード、現在のモード、およびカウンターの現在のステータスを確認できます。
8254アーキテクチャ
8254のアーキテクチャは次のように見えます-
8254ピンの説明
8254のピンダイアグラムを次に示します-
上の図では、3つのカウンター、データバスバッファー、読み取り/書き込み制御ロジック、および制御レジスタがあります。 各カウンタには、CLOCK&GATEという2つの入力信号と、OUTという1つの出力信号があります。
データバスバッファ
これは、トライステート、双方向、8ビットバッファであり、8253/54をシステムデータバスに接続するために使用されます。 それは3つの基本的な機能を持っています-
- 8253/54のモードのプログラミング。
- カウントレジスタをロードします。
- カウント値の読み取り。
読み取り/書き込みロジック
5つの信号が含まれています。 RD、WR、CS、およびアドレス行A〜0〜&A〜1〜。 周辺I/Oモードでは、RDおよびWR信号はそれぞれIORおよびIOWに接続されます。 メモリマップドI/Oモードでは、これらはMEMRおよびMEMWに接続されます。
CPUのアドレスラインA〜0〜およびA〜1〜は8253/54のラインA〜0〜およびA〜1〜に接続され、CSはデコードされたアドレスに関連付けられます。 制御ワードレジスタとカウンタは、ラインA〜0〜&A〜1〜の信号に従って選択されます。
A1 | A0 | Result |
---|---|---|
0 | 0 | Counter 0 |
0 | 1 | Counter 1 |
1 | 0 | Counter 2 |
1 | 1 | Control Word Register |
X | X | No Selection |
制御ワードレジスタ
このレジスタは、ラインA〜0〜およびA〜1〜が論理1のときにアクセスされます。 これは、使用するカウンタ、モード、および読み取りまたは書き込み操作を指定するコマンドワードを書き込むために使用されます。 次の表は、さまざまな制御入力の結果を示しています。
A1 | A0 | RD | WR | CS | Result |
---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | Write Counter 0 |
0 | 1 | 1 | 0 | 0 | Write Counter 1 |
1 | 0 | 1 | 0 | 0 | Write Counter 2 |
1 | 1 | 1 | 0 | 0 | Write Control Word |
0 | 0 | 0 | 1 | 0 | Read Counter 0 |
0 | 1 | 0 | 1 | 0 | Read Counter 1 |
1 | 0 | 0 | 1 | 0 | Read Counter 2 |
1 | 1 | 0 | 1 | 0 | No operation |
X | X | 1 | 1 | 0 | No operation |
X | X | X | X | 1 | No operation |
カウンター
各カウンタは、バイナリまたはBCDで動作可能な単一の16ビットダウンカウンタで構成されています。 その入力と出力は、制御ワードレジスタに格納されているモードの選択によって構成されます。 プログラマは、処理中の実際のカウントを乱すことなく、3つのカウンタのいずれかの内容を読み取ることができます。
Intel 8253/54-操作モード
8253/54は6つの異なるモードで操作できます。 この章では、これらの動作モードについて説明します。
モード0─ターミナルカウントでの割り込み
- 特定の間隔の後にマイクロプロセッサへの割り込みを生成するために使用されます。
- モードを設定すると、最初は出力が低くなります。 カウント値がカウンターにロードされた後、出力はLOWのままです。
- カウンターをデクリメントするプロセスは、最終カウントに達するまで続きます。つまり、カウントがゼロになり、出力がHIGHになり、新しいカウントを再ロードするまでHIGHのままになります。
- 通常のカウントでは、GATE信号はHighです。 GATEがローになると、カウントが終了し、GATEが再びハイになるまで現在のカウントがラッチされます。
モード1 –プログラマブルワンショット
- モノラル安定マルチバイブレーターとして使用できます。
- このモードでは、ゲート入力がトリガー入力として使用されます。
- カウントがロードされ、トリガーが適用されるまで、出力は高いままです。
モード2 –レートジェネレーター
- 通常、出力は初期化後に高くなります。
- カウントがゼロになるたびに、出力で別の低パルスが生成され、カウンターがリロードされます。
モード3 –方形波ジェネレーター
- このモードはモード2と似ていますが、出力はタイマー期間の半分の間は低く、残りの半分の期間は高いままです。
モード4-ソフトウェアトリガーモード
- このモードでは、タイマーがゼロにカウントされるまで出力はハイのままになり、その時点で出力はパルスを低くしてから再び高くなります。
- GATE信号がLOWになると、カウントがラッチされます。
- 最終カウントでは、出力は1クロックサイクルの間ローになり、その後ハイになります。 この低パルスはストロボとして使用できます。
モード5 –ハードウェアトリガーモード
- このモードは、外部で生成された信号に応じてストローブを生成します。
- このモードはモード4と似ていますが、カウントはゲート入力の信号によって開始される点が異なります。つまり、ソフトウェアではなくハードウェアでトリガーされます。
- 初期化された後、出力は高くなります。
- 最終カウントに達すると、出力は1クロックサイクルの間ローになります。