Bölüm 2: 8086 Pinler

Mikroişlemciler
40 pinli DIP paketAdres/veri çoklamaALE ve tampon/kilit BHE' ve bellek bankalarıOkuma/yazma döngüleriDurum pinleri Kontrol pinleriMinimum / maksimum mod8284A ve 8288Kesme pinleri ve vektör tablosu
Sercan KÜLCÜ · Giresun Üniversitesi · Elektrik-Elektronik Mühendisliği

Giriş

Öğrenme Çıktıları

Pin işlevleri

8086'nın 40 pinini gruplarına ayırmak; aktif düşük/yüksek sinyalleri okumak.

Çoklama

Adres ve verinin aynı pinlerden nasıl geçtiğini, ALE ve adres kilitlerinin rolünü açıklamak.

Yol döngüleri

T1–T4 durumlarında okuma ve yazma döngüsünü, bekleme durumunu (Tw) zamanlama diyagramından izlemek.

Sistem kurulumu

Minimum/maksimum mod farkını, 8284A, 8288 ve kesme mekanizmasını tanımak.

Genel Bakış

8086 Paketi

  • Intel 8086, 16 bitlik HMOS mikroişlemcidir.
  • 40 pinli DIP (dual in-line package) entegre devre olarak üretilir.
  • Tek +5 V DC besleme ile çalışır (pin 40 = VCC, pin 1 ve 20 = GND).
  • 20 hatlı adres yolu (A0–A19) ve 16 hatlı veri yolu (D0–D15).
  • Adres yolu çoklamalı (multiplexed) çalışır: bir pin farklı zamanlarda farklı amaçla kullanılır.
    • 16 düşük adres hattı (A0–A15) veri ile çoklanır → AD0–AD15.
    • 4 yüksek adres hattı (A16–A19) durum bilgisi ile çoklanır → A16/S3 … A19/S6.
Gösterim

Adının sonunda ' (veri sayfasında üst çizgi) olan sinyal aktif düşüktür: işlevi 0 V'ta yapar. Ör. RD' = 0 → okuma.

MN/MX' gibi adlarda: 1 iken MN, 0 iken MX anlamı geçerlidir.

Yön: G = giriş, Ç = çıkış, G/Ç = çift yönlü.

Genel Bakış

Pin Diyagramı (Etkileşimli)

maks. mod(min.)8086CPU1GND2AD143AD134AD125AD116AD107AD98AD89AD710AD611AD512AD413AD314AD215AD116AD017NMI18INTR19CLK20GND21RESET22READY23TEST'24QS1(INTA')25QS0(ALE)26S0'(DEN')27S1'(DT/R')28S2'(M/IO')29LOCK'(WR')30RQ'/GT1'(HLDA)31RQ'/GT0'(HOLD)32RD'33MN/MX'34BHE'/S735A19/S636A18/S537A17/S438A16/S339AD1540VCC
Bir pine tıkla (ya da Tab ile seç).

Genel Bakış

Yonganın İçi: Kalıp Fotoğrafı

  • Silikon kalıp (die), paketin ortasında yer alır; kenarlardaki bağlantı pedleri ince tellerle 40 pine bağlanır.
  • Sol kenardaki AD yolu pedleri, adres/veri pinlerine giden hatlardır.
  • Sol tarafta 16 bitlik yazmaçlar, ALU ve önden getirme kuyruğu yazmaçları; sağ altta komutları yürüten mikrokod ROM'u görülür.
  • Yaklaşık 29 000 transistör, 3 µm HMOS süreci.
8086 kalıp fotoğrafı: ALU, yazmaçlar, kuyruk, mikrokod, yol denetimi ve AD pedleri işaretli.

Fotoğraf: Ken Shirriff (righto.com), işlevsel bloklar işaretli.

Genel Bakış

Neden Karmaşık Pinler?

Mikroişlemciler bellek ve G/Ç aygıtlarına veri yolu ve adres yolu üzerinden bağlanır. 8086'da bu bağlantı iki nedenle karmaşıktır:

1. 40 pinli paket yetersiz
  • 20 adres + 16 veri + ~20 kontrol + güç/saat ≈ 60'tan fazla sinyal gerekir.
  • Çözüm: adres, veri ve durum bilgisi aynı pinler üzerinden, farklı zamanlarda iletilir (zaman paylaşımlı çoklama).
2. 20 bit adres, 16 bit veri
  • Kesim yazmaçlarıyla üretilen adres 20 bittir; veri yolu yalnızca 16 bittir.
  • Fazladan 4 adres biti (A16–A19) kendi pinlerini durum sinyalleriyle (S3–S6) paylaşır.
Bedeli: dışarıda adresi kilitleyen (latch) ve veriyi tamponlayan ek devreler gerekir; ayrıca her bellek erişimi en az 4 saat çevrimi sürer.

Genel Bakış

Pin Grupları

GrupPinlerNot
GüçVCC (40), GND (1, 20)+5 V ± %10
Saat ve sıfırlamaCLK (19), RESET (21), READY (22)8284A saat üretecinden gelir
Adres/veriAD0–AD15 (2–16, 39)T1'de adres, sonra veri
Adres/durumA16/S3–A19/S6 (38–35), BHE'/S7 (34)T1'de adres, sonra durum
KesmeNMI (17), INTR (18), INTA' (24, min)donanım kesmeleri
Ortak kontrolRD' (32), TEST' (23), MN/MX' (33)her iki modda aynı
Moda bağlı24–31min: INTA', ALE, DEN', DT/R', M/IO', WR', HLDA, HOLD
maks: QS1, QS0, S0', S1', S2', LOCK', RQ'/GT1', RQ'/GT0'

Genel Bakış

Minimum ve Maksimum Mod

  • MN/MX' = 1 (VCC) → minimum mod: tek işlemcili küçük sistem; kontrol sinyallerini 8086 kendisi üretir.
  • MN/MX' = 0 (GND) → maksimum mod: çok işlemcili/yardımcı işlemcili (8087) sistem; kontrol sinyallerini 8288 yol denetleyicisi üretir, açılan pinler durum ve yol arbitrasyonu için kullanılır.
  • Mod donanımla, pin sabit bağlanarak seçilir; çalışırken değişmez.
PinMinimumMaksimum
24INTA'QS1
25ALEQS0
26DEN'S0'
27DT/R'S1'
28M/IO'S2'
29WR'LOCK'
30HLDARQ'/GT1'
31HOLDRQ'/GT0'

Adres ve Veri

Adres/Veri Yolu Pinleri

AD0–AD15 · Adres/Veri yolu
  • Düşük 16 adres hattıdır; veri hattı ile çoklanır.
  • Bellek adresi taşırken A ile gösterilir: A0–A15 (T1).
  • Veri taşırken D ile: D0–D7, D8–D15 ya da D0–D15 (T2–T4).
  • Çift yönlüdür (yazmada çıkış, okumada giriş); gerekirse yüzer (float, yüksek empedans) duruma geçer.
A16/S3 – A19/S6 · Adres/Durum
  • Yüksek 4 adres hattıdır; durum sinyalleri ile çoklanır.
  • T1'de A16–A19 (bellek erişiminde), T2–T4'te S3–S6.
  • G/Ç erişiminde T1 sırasında 0'dır (G/Ç adresi 16 bit).
  • S3, S4: hangi kesimin kullanıldığı; S5: IF bayrağı; S6: her zaman 0.
BHE'/S7 (pin 34): T1'de veri yolunun üst yarısının (D8–D15) kullanılacağını bildirir; sonra S7 durum bitine döner. RD' (pin 32): okuma darbesi.

Adres ve Veri

Çoklamayı Çözmek: ALE, Kilit ve Tampon

8086AD0–AD15ALE · DEN' · DT/R'ADAdres kilidi8282 / 74LS373Alıcı-verici8286 / 74LS245A0–A15(sabit adres)D0–D15(sistem veri yolu)ALE → STBDEN' → OE', DT/R' → T (yön)

AD0–AD15 pinleri hem adres hem veri taşır. Sistemin geri kalanı ayrık ve kararlı bir adres yolu ile veri yolu ister.

8086AD0–AD15ALE · DEN' · DT/R'ADAdres kilidi8282 / 74LS373Alıcı-verici8286 / 74LS245A0–A15(sabit adres)D0–D15(sistem veri yolu)ALE → STBDEN' → OE', DT/R' → T (yön)T1: ALE = 1 → adres kilitlenir

T1: 8086 adresi AD pinlerine koyar ve ALE'yi 1 yapar. ALE'nin düşen kenarında 8282 kilidi adresi yakalar.

8086AD0–AD15ALE · DEN' · DT/R'ADAdres kilidi8282 / 74LS373Alıcı-verici8286 / 74LS245A0–A15(sabit adres)D0–D15(sistem veri yolu)ALE → STBDEN' → OE', DT/R' → T (yön)T2–T4: DEN' = 0 → veri geçer

T2–T4: aynı pinler artık veri taşır. DEN' = 0 alıcı-vericiyi açar, DT/R' yönü seçer (1: CPU → bellek, 0: bellek → CPU).

8086AD0–AD15ALE · DEN' · DT/R'ADAdres kilidi8282 / 74LS373Alıcı-verici8286 / 74LS245A0–A15(sabit adres)D0–D15(sistem veri yolu)ALE → STBDEN' → OE', DT/R' → T (yön)Kilit, ALE düşünce adresi tutmaya devam eder

Kilit adresi tüm döngü boyunca bellek ve G/Ç'ye sabit sunar. A16–A19/BHE' için de ayrı bir kilit kullanılır (toplam 3 adet 8282).

Adres ve Veri

Tamponlu ve Kilitli Sistem

8086MN/MX' = 1A16–A19, BHE'8282 KilitA16–A19, BHE'AD8–AD158282 KilitA8–A15AD0–AD78282 KilitA0–A7Adres yolu (20 bit)AD8–AD158286 A-VD8–D15AD0–AD78286 A-VD0–D7Veri yolu (16 bit)ALE → STBDEN' → OE', DT/R' → T

Tamponlar (buffer) hem çoklamayı çözer hem de sürme gücü sağlar: 8086'nın pinleri ancak sınırlı sayıda yükü sürebilir; büyük sistemlerde tüm yollar tamponlanır.

Adres ve Veri

BHE' ve A0: Bellek Bankaları

8086Yüksek bankatek adresler (1, 3, 5 …)Düşük bankaçift adresler (0, 2, 4 …)D8–D15D0–D7A1–A19BHE' = 0A0 = 0512 KB × 8512 KB × 8
BHE'A0Aktarım
00tüm kelime, D0–D15 (çift adres)
01üst bayt, D8–D15 (tek adres)
10alt bayt, D0–D7 (çift adres)
11yok
1 MB bellek iki 512 KB'lık bankaya bölünür. Tek adresteki bir kelime (ör. 20101h) tek döngüde aktarılamaz: 8086 bunu otomatik olarak iki yol döngüsüne böler. Verileri çift adrese hizalamak (EVEN direktifi) hız kazandırır.

Adres ve Veri · Kodu adım adım çalıştır

Kod İzleme: Hizalı ve Hizasız Erişim

AX ← 2000h. Yalnızca komut getirme döngüleri; veri erişimi yok.

DS ← 2000h: veri kesimi 20000h'de başlar.

AX ← 1234h (AH=12h, AL=34h).

FA = 20100h çift: BHE'=0, A0=0 → iki banka birden. Kelime tek döngüde yazılır; AL çift adrese (34h), AH tek adrese (12h).

AX ← ABCDh.

FA = 20101h tek. 1. döngü: BHE'=0, A0=1 → yalnız yüksek banka. AL'deki CDh D8–D15 üzerinden 20101h'ye yazılır.

2. döngü: FA = 20102h, BHE'=1, A0=0 → yalnız düşük banka. AH'deki ABh D0–D7 üzerinden yazılır. Hizasız kelime = 2 döngü.

Bayt okuma, çift adres: BHE'=1, A0=0 → D0–D7. AL ← 34h, AH değişmez → AX = AB34h.

Hizasız kelime okuma. 1. döngü: 20101h'deki CDh D8–D15'ten gelir; işlemci onu BL'ye yerleştirir.

2. döngü: 20102h'deki ABh D0–D7'den gelir → BH. Sonuç BX = ABCDh (küçük uçlu).

mov ax, 2000h
mov ds, ax
mov ax, 1234h
mov [0100h], ax    ; çift adres
mov ax, 0ABCDh
mov [0101h], ax    ; tek adres
mov al, [0100h]    ; bayt
mov bx, [0101h]    ; tek adres

Yol Döngüleri

Yol Döngüsü ve T Durumları

  • İşlemcinin bellek veya G/Ç ile her veri alışverişi bir yol döngüsüdür (bus cycle).
  • Bir yol döngüsü en az dört saat çevrimi sürer: T1, T2, T3, T4 (T durumları).
  • Pinlerin işlevi T durumuna göre değişir: T1'de adres, T2–T4'te veri/durum.
  • Yavaş bellek için T3 ile T4 arasına bekleme durumları (Tw) eklenir.
  • İşlemci yolu kullanmadığı çevrimler boşta durumlarıdır (Ti).
5 MHz örneği

T = 1 / 5 MHz = 200 ns

Yol döngüsü = 4 × 200 = 800 ns

En fazla 1 / 800 ns = 1,25 milyon yol döngüsü/s

Kelime başına 2 bayt → ≈ 2,5 MB/s yol bant genişliği

Yol Döngüleri

Yazma Yol Döngüsü

T1T2T3T4Bir yol döngüsüCLKgeçerli adres (A16–A19, kilitli A0–A15)Adresadresbelleğe yazılan veriAD15–AD0WR'

Yazma döngüsü dört T durumundan oluşur. Saat düşen kenarı her T durumunun başıdır.

T1T2T3T4Bir yol döngüsüCLKgeçerli adres (A16–A19, kilitli A0–A15)Adresadresbelleğe yazılan veriAD15–AD0WR'

T1: yazılacak hedef adres AD ve A pinlerine konur; ALE ile dış kilitlere alınır.

T1T2T3T4Bir yol döngüsüCLKgeçerli adres (A16–A19, kilitli A0–A15)Adresadresbelleğe yazılan veriAD15–AD0WR'

T2: AD pinleri artık yazılacak veriyi taşır; WR' = 0 olur.

T1T2T3T4Bir yol döngüsüCLKgeçerli adres (A16–A19, kilitli A0–A15)Adresadresbelleğe yazılan veriAD15–AD0WR'

T3: veri ve WR' kararlı kalır; bellek veriyi yakalar (READY = 0 ise burada Tw eklenir).

T1T2T3T4Bir yol döngüsüCLKgeçerli adres (A16–A19, kilitli A0–A15)Adresadresbelleğe yazılan veriAD15–AD0WR'

T4: WR' = 1'e döner, yükselen kenarında bellek yazmayı tamamlar; yol bir sonraki döngüye hazırlanır.

Yazmada adres T1'de, veri T2–T4 boyunca aynı pinlerde: arada bekleme yoktur, çünkü verinin kaynağı işlemcinin kendisidir.

Yol Döngüleri

Okuma Yol Döngüsü

T1T2T3T4Bir yol döngüsüCLKgeçerli adresAdresadresokunan veriAD15–AD0RD'

Okuma döngüsü de dört T durumudur, ama AD pinlerinde adres ile veri arasında bir boşluk (float) vardır.

T1T2T3T4Bir yol döngüsüCLKgeçerli adresAdresadresokunan veriAD15–AD0RD'

T1: yazmadaki gibi okunacak adres pinlere konur ve kilitlenir.

T1T2T3T4Bir yol döngüsüCLKgeçerli adresAdresadresokunan veriAD15–AD0RD'

T2: 8086 AD çıkış sürücülerini üç durumlu (tri-state, yüksek empedans) yapar → bellek yolu sürebilir. RD' = 0.

T1T2T3T4Bir yol döngüsüCLKgeçerli adresAdresadresokunan veriAD15–AD0RD'

T3: bellek (veya G/Ç aygıtı) istenen veriyi veri yoluna koyar.

T1T2T3T4Bir yol döngüsüCLKgeçerli adresAdresadresokunan veriAD15–AD0RD'

T4: T4'ün başında 8086 veriyi pinlerden okur (örnekler); RD' = 1, bellek yolu bırakır.

T2'deki yüzer durum “yol dönüşü” (bus turnaround) içindir: işlemci adresi sürmeyi bırakmadan bellek veriyi sürmeye başlarsa iki çıkış çakışır.

Yol Döngüleri

Okuma İçin Yol Zamanlaması

T1T2T3T4800 ns (5 MHz)CLKA19–A16S6–S3A19–16/S6–3A15–A0veri girişiAD15–AD0M/IO' = 1 (bellek)M/IO'ALEDT/R'RD'DEN'READYREADY = 1: bellek hazır → bekleme yok

Minimum modda bir bellek okuma döngüsünde tüm kontrol sinyalleri.

T1T2T3T4800 ns (5 MHz)CLKA19–A16S6–S3A19–16/S6–3A15–A0veri girişiAD15–AD0M/IO' = 1 (bellek)M/IO'ALEDT/R'RD'DEN'READYREADY = 1: bellek hazır → bekleme yok

T1: M/IO' = 1 (bellek), adres pinlerde; ALE darbesi adresi kilitler; DT/R' = 0 (alma yönü).

T1T2T3T4800 ns (5 MHz)CLKA19–A16S6–S3A19–16/S6–3A15–A0veri girişiAD15–AD0M/IO' = 1 (bellek)M/IO'ALEDT/R'RD'DEN'READYREADY = 1: bellek hazır → bekleme yok

T2: AD yüzer, A19–A16 yerine S6–S3; RD' = 0 ve ardından DEN' = 0 → alıcı-verici açılır.

T1T2T3T4800 ns (5 MHz)CLKA19–A16S6–S3A19–16/S6–3A15–A0veri girişiAD15–AD0M/IO' = 1 (bellek)M/IO'ALEDT/R'RD'DEN'READYREADY = 1: bellek hazır → bekleme yok

T3: bellek veriyi koyar. İşlemci T3'ün başında READY'yi örnekler: 1 ise T4'e geçer.

T1T2T3T4800 ns (5 MHz)CLKA19–A16S6–S3A19–16/S6–3A15–A0veri girişiAD15–AD0M/IO' = 1 (bellek)M/IO'ALEDT/R'RD'DEN'READYREADY = 1: bellek hazır → bekleme yok

T4: veri örneklenir; RD', DEN', DT/R' pasife döner; bir sonraki döngü için M/IO' değişebilir.

Yol Döngüleri

READY ve Bekleme Durumu (Tw)

T1T2T3TwT4Bir yol döngüsüCLKadresveriAD15–AD0RD'READY

Yavaş bir bellek, verisini T3'e kadar hazırlayamıyorsa READY sinyalini 0 yapar.

T1T2T3TwT4Bir yol döngüsüCLKadresveriAD15–AD0RD'READY

T3'te READY = 0 görülür → işlemci T4'e geçmez, bir Tw (bekleme) durumu ekler. Tüm sinyaller olduğu gibi kalır.

T1T2T3TwT4Bir yol döngüsüCLKadresveriAD15–AD0RD'READY

Tw'nin sonunda READY tekrar örneklenir; bu kez 1 → bellek hazır. Gerekirse birden fazla Tw eklenebilir.

T1T2T3TwT4Bir yol döngüsüCLKadresveriAD15–AD0RD'READY

T4: veri okunur. Döngü 5 × 200 = 1000 ns sürdü (bir bekleme durumu = +200 ns).

READY, 8284A'nın RDY girişinden saate senkronlanarak 8086'ya verilir (aktif yüksek).

Durum Pinleri

S2', S1', S0' Durum Pinleri

  • Maksimum modda (pin 26–28) yol döngüsünün türünü kodlar.
  • T4 (önceki döngü), T1 ve T2 sırasında aktiftir.
  • T3'te veya READY = 1 olan Tw'de pasif duruma (1, 1, 1) döner.
  • 8288 yol denetleyicisi bunları çözerek bellek ve G/Ç erişim kontrol sinyallerini (MRDC', MWTC', IORC' …) üretir.
  • T4'te pasif durumdan herhangi bir koda geçiş, yeni bir yol döngüsünün başladığını gösterir.
Seviye gösterimi

Düşük (low) sinyal = 0 ≈ 0 V

Yüksek (high) sinyal = 1 ≈ +5 V

Durum pinleri aktif düşüktür; “111 = pasif” bu yüzden “hiçbir şey yapılmıyor” anlamına gelir.

Durum Pinleri

S2' S1' S0' Kodları

S2'S1'S0'Döngü8288 komutu
000Kesme kabul (interrupt acknowledge)INTA'
001G/Ç portu okuIORC'
010G/Ç portuna yazIOWC', AIOWC'
011Durdurma (HLT)yok
100Kod erişimi (komut getirme)MRDC'
101Bellek okuMRDC'
110Belleğe yazMWTC', AMWC'
111Pasifyok
Okuma ipucu

S2' = 1 → bellek, S2' = 0 → G/Ç / özel.

S1' ve S0': 01 → okuma, 10 → yazma.

Bu yüzden S2' minimum moddaki M/IO' ile, S1' DT/R' ile aynı pini paylaşır.

Durum Pinleri

S3–S6 ve BHE'/S7 Durum Bitleri

A16/S3, A17/S4, A18/S5, A19/S6: T1'den sonra adres yerine durum bitleri.

S4 (A17)S3 (A16)Kullanılan kesim
00ES (ek kesim)
01SS (yığın)
10CS veya kesim yok (G/Ç, kesme vektörü)
11DS (veri)
Diğer durum bitleri
  • S5 (A18): IF kesme bayrağının o anki değeri; her saat çevriminin başında güncellenir.
  • S6 (A19): her zaman 0 (8086 yolu kullanıyor).
  • S7 (BHE'): kullanılmayan yedek durum biti.

S3–S4, sistemin her kesim için ayrı 1 MB bellek bağlamasına olanak verir (ör. yığın ayrı bankada).

Durum Pinleri

Demo: Durum Kodu Çözücü

Pinlere tıklayarak 0/1 yap. 8288'in ve sistemin bu kodu nasıl yorumladığını gör.

Durum Pinleri

QS1, QS0: Kuyruk Durumu

  • Maksimum modda (pin 24–25) önden getirme kuyruğunun durumunu dışarı bildirir.
  • Kuyruk işlemini izleyen saat çevriminde geçerlidir.
  • 8087 yardımcı işlemcisi bu pinlerle 8086'nın hangi komutu yürüttüğünü izler ve kendi komutlarını (ESC) yakalar.
QS1QS0Durum
00İşlem yok (kuyruk değişmedi)
01Kuyruktan işlem kodunun ilk baytı alındı
10Kuyruk boşaltıldı (dallanma)
11Kuyruktan sonraki bayt alındı

Kontrol Pinleri

RD', WR' ve M/IO'

RD' · Okuma (pin 32)
  • Çıkış, aktif düşük.
  • İşlemcinin bellekten veya G/Ç'den okuma yaptığını bildirir.
  • Okuma döngüsünün T2, T3 ve Tw'lerinde 0.
WR' · Yazma (pin 29, min. mod)
  • Çıkış, aktif düşük; yazma döngüsünün T2, T3, Tw'lerinde 0.
M/IO' · Bellek / G-Ç (pin 28, min. mod)
  • Bellek ve G/Ç erişimlerini ayırır.
  • 1 → bellek işlemi (M aktif), 0 → G/Ç işlemi (IO' aktif).
  • Önceki döngünün T4'ünde geçerli olur, döngü boyunca kalır.
  • 8088'de ters kutupludur: IO/M'.
M/IO'RD'WR'İşlemÖrnek komut
101bellek okumaMOV AL, [BX]
110bellek yazmaMOV [BX], AL
001G/Ç okumaIN AL, 60h
010G/Ç yazmaOUT 43h, AL

Kontrol Pinleri

DT/R' ve DEN'

DT/R' · Veri gönder/al (pin 27)
  • 8286/8287 veri yolu alıcı-vericisi (transceiver) kullanan sistemlerde gereklidir.
  • Alıcı-verici: verici ve alıcının tek pakette birleşimi.
  • 1 → veri işlemciden dışarı (yazma), 0 → dışarıdan işlemciye (okuma).
  • Veri akışının yönünü alıcı-vericinin T girişi belirler.
DEN' · Veri etkinleştirme (pin 26)
  • Alıcı-vericiye çıkış etkinleştirme (OE') olarak bağlanır.
  • Bellek ve G/Ç erişimlerinde ve INTA döngülerinde aktif düşük.
  • T1'de 1 kalır: AD pinlerindeki adres veri yoluna sızmasın.
DEN' = 0 iken alıcı-verici açık; yönü DT/R' seçer. Okumada (DT/R' = 0) bellek → CPU, yazmada (DT/R' = 1) CPU → bellek.

Düzeltme: kaynakta “DT/R” yazılmıştı; doğru gösterim DT/R' (R aktif düşük).

Kontrol Pinleri

HOLD / HLDA (Minimum Mod)

T3T4TiTiTiT1CLKHOLDHLDA8086 sürer8086Yollaryüzer: DMA denetleyicisi sürer

Başka bir yol yöneticisi (ör. 8237 DMA denetleyicisi) yerel yolu kullanmak istiyor.

T3T4TiTiTiT1CLKHOLDHLDA8086 sürer8086Yollaryüzer: DMA denetleyicisi sürer

HOLD = 1 (aktif yüksek). İşlemci içinde bulunduğu yol döngüsünü bitirir.

T3T4TiTiTiT1CLKHOLDHLDA8086 sürer8086Yollaryüzer: DMA denetleyicisi sürer

T4 veya Ti'nin ortasında HLDA = 1 ile onay verilir; adres, veri ve kontrol pinleri yüzer duruma geçer.

T3T4TiTiTiT1CLKHOLDHLDA8086 sürer8086Yollaryüzer: DMA denetleyicisi sürer

DMA denetleyicisi yolu kullanır. 8086 kuyruktaki komutları yürütmeye devam edebilir, yol gerektiren işte bekler.

T3T4TiTiTiT1CLKHOLDHLDA8086 sürer8086Yollaryüzer: DMA denetleyicisi sürer

HOLD = 0 → işlemci HLDA'yı düşürür ve yolu geri alarak yeni bir döngüye başlar.

Düzeltme: kaynakta “T4 veya T1 saat döngüsünün ortasında” yazıyordu; veri sayfasına göre HLDA, T4 veya Ti (boşta) çevriminin ortasında verilir.

Kontrol Pinleri

RQ'/GT0', RQ'/GT1' ve LOCK'

RQ'/GT · İstek / Bağış (pin 30, 31; maks. mod)
  • Diğer yerel yol yöneticileri (ör. 8087) tarafından kullanılır.
  • İşlemciyi döngü sonunda yerel yolu bırakmaya zorlar.
  • Her pin çift yönlüdür: tek bir hat üzerinde darbe dizisi → istek (RQ), bağış (GT), bırakma.
  • RQ'/GT0', RQ'/GT1' pininden daha yüksek önceliklidir.
  • Minimum moddaki HOLD/HLDA'nın maksimum mod karşılığıdır.
LOCK' · Kilit (pin 29; maks. mod)
  • Aktif düşük çıkış.
  • Aktifken diğer yol yöneticilerinin sistem yolunu almasına izin verilmez.
  • LOCK önekli komut boyunca (komut tamamlanana kadar) aktiftir.
  • Çok işlemcili sistemlerde semafor için: LOCK XCHG AL, [BX] ile oku-değiştir-yaz bölünmez olur.
  • INTA döngüleri sırasında da otomatik olarak aktiftir.

Kontrol Pinleri

TEST' ve CLK

TEST' (pin 23)
  • WAIT komutu tarafından sınanır.
  • TEST' = 0 ise yürütme devam eder; değilse işlemci boşta bekler ve pini tekrar sınar.
  • Her saat çevriminin yükselen kenarında içeride senkronlanır.
  • Tipik kullanım: 8087'nin BUSY çıkışına bağlanır; FWAIT ile 8087'nin işini bitirmesi beklenir.

CLK (pin 19): işlemci ve yol denetimi için temel zamanlamayı sağlar. %33 görev çevrimli (duty cycle) asimetrik kare dalgadır.

T = 200 ns (5 MHz)yüksek ≈ 67 ns (1/3)düşük ≈ 133 ns (2/3)CLK

8086: 5 MHz, 8086-2: 8 MHz, 8086-1: 10 MHz.

Kontrol Pinleri

RESET, VCC ve GND

  • RESET (pin 21): işlemcinin o anki faaliyetini hemen sonlandırır. Sinyal en az dört saat çevrimi 1 kalmalıdır (açılışta en az 50 µs). Düştüğünde işlemci yeniden başlar.
  • VCC (pin 40): +5 V DC besleme.
  • GND (pin 1, 20): toprak. İki toprak pini, yüksek akımlı anahtarlamada gürültüyü azaltır.
Sıfırlama sonrasıDeğer
CSFFFFh
IP0000h
DS, SS, ES0000h
FLAGStemizlenir (IF = 0: kesmeler kapalı)
Kuyrukboş
İlk komut adresiFFFF0h + 0000h = FFFF0h
FFFF0h, 1 MB'ın son 16 baytıdır; buraya ROM (BIOS) yerleştirilir ve genellikle asıl başlangıç koduna uzak bir JMP bulunur.

Kontrol Pinleri

8284A Saat Üreteci

8284Asaat üreteciKristal15 MHzX1X2RC devresigüç açılışıRES'Bellek/G-ÇRDY1, AEN1'8086CLKCLK (19)READYREADY (22)RESETRESET (21)5 MHz, %33OSC = 15 MHz, PCLK = 2,5 MHz (çevre birimleri)
  • Kristal frekansını 3'e böler: 15 MHz → 5 MHz CLK, %33 görev çevrimi.
  • READY ve RESET girişlerini saate senkronlar; RES' girişindeki Schmitt tetikleyici, RC devresinden gelen yavaş yükselen gerilimi temiz bir RESET'e çevirir.

Kontrol Pinleri

MN/MX' ve Moda Göre Pinler

Minimum mod pinleri (MN/MX' = 1)
  • ALE (25): adres kilidi etkinleştirme; T1'de aktif yüksek darbe, 8282/8283 kilitlerini yükler. ALE hiçbir zaman yüzer duruma geçmez.
  • INTA' (24): kesme kabul.
  • DEN', DT/R', M/IO', WR': alıcı-verici ve bellek/G-Ç kontrolü.
  • HOLD, HLDA: yol devri (DMA).
Maksimum mod pinleri (MN/MX' = 0)
  • S2', S1', S0': döngü türü → 8288 kontrol sinyallerini üretir.
  • QS1, QS0: kuyruk durumu (8087 için).
  • LOCK': yolu kilitler.
  • RQ'/GT0', RQ'/GT1': yol isteği/bağışı.

Düzeltme: kaynaktaki “ALE sinyali her zaman bir tam sayıdır” ifadesi veri sayfasındaki “ALE is never floated” (ALE asla yüzer duruma geçmez) cümlesinin hatalı çevirisidir.

Maksimum Mod

8288 Yol Denetleyicisi

DurumçözücüKomut sinyalüreteciDenetimmantığıKontrol sinyalüreteciS0'S1'S2'8086'danCLKAEN'CENIOBMRDC'MWTC'AMWC'IORC'IOWC'AIOWC'INTA'DT/R'DENMCE/PDEN'ALE
  • Maksimum modda 8086'nın S2'–S0' kodunu çözer.
  • Komutlar: MRDC' bellek oku, MWTC' bellek yaz, IORC'/IOWC' G/Ç oku/yaz, INTA' kesme kabul. “A” ile başlayanlar (AMWC', AIOWC') bir saat önce başlayan “ileri” yazma sinyalleridir.
  • Kontrol: ALE, DEN, DT/R' artık 8288'den gelir (DEN burada aktif yüksek).
  • Pinleri boşalan 8086 bunları QS, LOCK', RQ'/GT' için kullanır.

Maksimum Mod

Maksimum Mod 8086 Sistemi

8284A8086MN/MX' = 0CLKREADYRESET8288yol denetleyiciS0'–S2'8282 kilit8286 A-VAD0–15ALEDEN, DT/R'Adres yoluVeri yoluMRDC', MWTC' → bellekIORC', IOWC' → G/ÇINTA'8259A PICINT → INTR← IRQ0–7

8284A saati, 8288 komutları ve ALE/DEN/DT/R' sinyallerini, kilitler adres yolunu, alıcı-vericiler veri yolunu, 8259A kesme denetleyicisi de 8 donanım kesmesini (IRQ0–7) INTR'ye bağlar.

Kesmeler

INTR, NMI ve INTA'

INTR · Kesme isteği (18)
  • Seviye tetiklemeli, aktif yüksek giriş.
  • Her komutun son saat çevriminde örneklenir.
  • IF = 1 ise kabul edilir (maskelenebilir: CLI ile kapatılır).
  • Kabulde işlemci kesme kabul döngüsüne girer.
  • İçeride senkronlanır.
NMI · Maskelenemeyen kesme (17)
  • Kenar tetiklemeli (0 → 1 geçişi).
  • Her zaman tip 2 kesmeye yol açar; vektör tablosunda gösterilen yordam yürütülür.
  • Yazılımla (IF) maskelenemez.
  • Kesme o anki komutun sonunda başlar.
  • Kullanım: güç kesintisi, bellek eşlik hatası.
INTA' · Kesme kabul (24, min.)
  • Aktif düşük çıkış.
  • Kesme kabul döngüsünün T2, T3 ve Tw'lerinde 0.
  • İki ardışık INTA' darbesi üretilir; ikincisinde kesme denetleyicisi tip numarasını D0–D7'ye koyar.
  • Maks. modda 8288 üretir.

Düzeltme: kaynakta INTR için “tetikleyici giriş” yazıyordu; INTR seviye tetiklemelidir, kenar tetiklemeli olan NMI'dır.

Kesmeler

Kesme Vektör Tablosu

3FChTip 255kullanıcı……080hTip 32kullanıcı (32–255)07ChTip 31Intel'e ayrılmış…5–31ayrılmış014hTip 5ayrılmış010hTip 4taşma (INTO)00ChTip 3kesme noktası (INT 3)008hTip 2NMI pini004hTip 1tek adım (TF)000hTip 0sıfıra bölme0000:0000h – 0000:03FFh (ilk 1 KB)256 giriş × 4 bayt = 1024 baytTip n'nin adresi = n × 4IP düşük+0IP yüksek+1CS düşük+2CS yüksek+3İlk iki bayt: yordamın bağıl konumu (IP)Son iki bayt: yordamın kesimi (CS)IBM PC'de BIOS/DOS ayrılmış alanı da kullanır:08h–0Fh donanım IRQ, 10h video, 21h DOS

Düzeltme: kaynak şekildeki “page fault, general protection” gibi girişler 80286/80386'ya aittir; 8086'da yalnızca tip 0–4 tanımlıdır, 5–31 Intel tarafından ayrılmıştır.

Kesmeler

Adım Adım: Vektör Arama

INT 21h00h0000:0084hIP düşük10h0000:0085hIP yüksek00h0000:0086hCS düşükF0h0000:0087hCS yüksekBellek değerleri örnektir; gerçek adres işletim sistemine göre değişir.

Yazılım kesmesi INT 21h (DOS servisleri) yürütülüyor. Tip numarası komutun içinde.

INT 21h→ tip 21h × 4 = 84h00h0000:0084hIP düşük10h0000:0085hIP yüksek00h0000:0086hCS düşükF0h0000:0087hCS yüksekBellek değerleri örnektir; gerçek adres işletim sistemine göre değişir.

Vektörün adresi: tip × 4 = 21h × 4 = 84h. Tablo 0000h kesimindedir.

INT 21h→ tip 21h × 4 = 84h00h0000:0084hIP düşük10h0000:0085hIP yüksek00h0000:0086hCS düşükF0h0000:0087hCS yüksekIP ← 1000h(küçük uçlu: 85h'deki 10 yüksek bayt)Bellek değerleri örnektir; gerçek adres işletim sistemine göre değişir.

84h–85h: yordamın bağıl konumu. Küçük uçlu → IP = 1000h.

INT 21h→ tip 21h × 4 = 84h00h0000:0084hIP düşük10h0000:0085hIP yüksek00h0000:0086hCS düşükF0h0000:0087hCS yüksekIP ← 1000h(küçük uçlu: 85h'deki 10 yüksek bayt)CS ← F000hBellek değerleri örnektir; gerçek adres işletim sistemine göre değişir.

86h–87h: yordamın kesimi → CS = F000h.

INT 21h→ tip 21h × 4 = 84h00h0000:0084hIP düşük10h0000:0085hIP yüksek00h0000:0086hCS düşükF0h0000:0087hCS yüksekIP ← 1000h(küçük uçlu: 85h'deki 10 yüksek bayt)CS ← F000hYordam: F000:1000h = F1000hBellek değerleri örnektir; gerçek adres işletim sistemine göre değişir.

İşlemci (bayraklar, CS, IP yığına atıldıktan sonra) F000:1000h = F1000h adresine dallanır.

Kesmeler

Donanım Kesmesi: INTA Döngüleri

T1T2T3T4T1T2T3T41. INTA döngüsü · 2. INTA döngüsüINTRLOCK'INTA'tip no.D7–D0veri yolu yüzer8259A tip numarasını koyar

INTR = 1 ve IF = 1 → o anki komut bitince işlemci iki kesme kabul döngüsü çalıştırır.

T1T2T3T4T1T2T3T41. INTA döngüsü · 2. INTA döngüsüINTRLOCK'INTA'tip no.D7–D0veri yolu yüzer8259A tip numarasını koyar

1. INTA' darbesi: kesme denetleyicisine (8259A) “isteğin kabul edildi” bildirilir. Veri yolu yüzer kalır.

T1T2T3T4T1T2T3T41. INTA döngüsü · 2. INTA döngüsüINTRLOCK'INTA'tip no.D7–D0veri yolu yüzer8259A tip numarasını koyar

2. INTA' darbesi: 8259A, kesme tip numarasını (ör. IRQ0 → 08h) D7–D0'a koyar; işlemci okur.

T1T2T3T4T1T2T3T41. INTA döngüsü · 2. INTA döngüsüINTRLOCK'INTA'tip no.D7–D0veri yolu yüzer8259A tip numarasını koyar

Maks. modda LOCK' iki döngü boyunca aktiftir: arada başka bir yöneticinin yolu alması engellenir.

Kesmeler · İşlemcinin yaptığı adımlar

Kesme Yanıt Sırası

Ana program çalışıyor; SS:SP = 0030:0100h olsun. INTR = 1 geldi, IF = 1 → komutun sonunda kabul.

İki INTA döngüsü; 8259A tip 08h'yi verir (IRQ0, zamanlayıcı).

PUSHF: SP − 2 = 00FEh, bayrak yazmacı yığına.

IF = 0 ve TF = 0: yordam başka INTR ile kesilmesin, adım adım çalışmasın.

PUSH CS: SP = 00FCh.

PUSH IP: SP = 00FAh. Dönüş adresi 1000:0120h güvende.

IP ← 08h × 4 = 20h adresindeki kelime (örnek: 0100h).

CS ← 22h adresindeki kelime (örnek: 2000h). Yordam 2000:0100h = 20100h'de başlar.

IRET: IP, CS ve FLAGS yığından geri alınır (SP = 0100h). IF yeniden 1, ana program kaldığı yerden sürer.

; o anki komut biter (CS:IP = 1000:0120h)
INTA döngüsü ×2      ; tip = 08h
PUSHF                ; bayraklar yığına
IF ← 0, TF ← 0
PUSH CS
PUSH IP
IP ← [0000:0020h]    ; 08h × 4
CS ← [0000:0022h]
; ... kesme yordamı ...
IRET                 ; IP, CS, FLAGS geri

Özet

Özet

Çoklama

AD0–AD15 T1'de adres, sonra veri; A16–A19 T1'de adres, sonra S3–S6. ALE + 8282 kilit adresi tutar.

Yol döngüsü

T1 adres, T2 yön/komut, T3 veri, T4 bitiş. READY = 0 → Tw. 5 MHz'de 800 ns.

BHE' + A0

Çift/tek banka seçimi. Hizasız kelime iki döngü sürer.

Modlar

MN/MX' = 1: kontrol sinyallerini 8086 üretir. 0: S2'–S0' → 8288.

Saat/sıfırlama

8284A: 15 MHz / 3 = 5 MHz, %33 görev; RESET sonrası FFFF:0000h.

Kesmeler

INTR seviye, IF ile maskelenir; NMI kenar, tip 2. Vektör = tip × 4.

Özet

Alıştırmalar

  1. 8086 8 MHz'de çalışıyor. Bekleme durumu olmayan bir yol döngüsü kaç ns sürer? İki Tw eklenirse?
  2. Bir çevre birimine yazılırken (OUT) M/IO', RD', WR', DT/R' pinleri hangi değerleri alır?
  3. MOV [2003h], AX kaç yol döngüsü gerektirir? Her döngüde BHE' ve A0 ne olur?
  4. S2' S1' S0' = 1 0 0 ile 1 0 1 arasındaki fark nedir? 8288 her ikisi için hangi komutu üretir?
  5. INT 10h yordamının adresi bellekte hangi baytlarda saklanır?
  6. Kristal 24 MHz olursa 8284A hangi CLK frekansını üretir? Bu, hangi 8086 sürümü için uygundur?
İpuçları / cevaplar
  1. T = 125 ns → 4 × 125 = 500 ns; iki Tw ile 6 × 125 = 750 ns.
  2. M/IO' = 0, RD' = 1, WR' = 0, DT/R' = 1 (işlemciden dışarı).
  3. Tek adres → 2 döngü: 2003h (BHE'=0, A0=1, AL → D8–D15), 2004h (BHE'=1, A0=0, AH → D0–D7).
  4. 100 kod (komut) getirme, 101 veri okuma; ikisinde de MRDC'. Fark, 8087 gibi izleyiciler içindir.
  5. 10h × 4 = 40h: 0000:0040h–0043h (IP: 40h–41h, CS: 42h–43h).
  6. 24 / 3 = 8 MHz → 8086-2.

Özet

Kaynaklar

  • Intel, 8086 16-Bit HMOS Microprocessor veri sayfası (231455).
  • Intel, 8284A Clock Generator and Driver, 8288 Bus Controller, 8282/8283 Octal Latch veri sayfaları.
  • B. B. Brey, The Intel Microprocessors, 8. baskı, Pearson, 2009 (Bölüm 9: 8086/8088 donanım özellikleri).
  • D. V. Hall, Microprocessors and Interfacing, 2. baskı, McGraw-Hill.
  • K. Shirriff, 8086 kalıp fotoğrafları ve tersine mühendislik yazıları, righto.com.

Son

Bölüm 2: 8086 Pinler
Sonraki bölüm: Bölüm 2: 8086 Yazmaçlar
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.