Bölüm 10: 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 INTA' döngüleri
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 ve 8288'i, kesme pinlerini (INTR, NMI, INTA') tanımak.

Genel Bakış

8086 Paketi

  • Intel 8086, 16 bitlik HMOS mikroişlemcidir.
  • 40 pinli DIP (dual in-line package) tümleşik 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 kontrolü 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.
gereken ≈ 60adres 20veri 16kontrol ~20güç/saat 4pin = 4040 pinli DIPçoklama
Bedeli: dışarıda adresi kilitleyen (latch) ve veriyi tamponlayan ek devreler gerekir; ayrıca her bellek erişimi en az 4 saat turu 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.
T1T2T3T4AD15–AD0A15–A0veri D15–D0A19/S6–A16/S3A19–A16durum S6–S3
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 sözcük, D0–D15 (çift adres)
01yüksek bayt, D8–D15 (tek adres)
10düşük bayt, D0–D7 (çift adres)
11yok
1 MB bellek iki 512 KB'lık bankaya bölünür. Tek adresteki bir sözcük (ö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. Sözcük 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 sözcük = 2 döngü.

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

Hizasız sözcük 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 (little-endian).

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 turu 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ığı turlar 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

Sözcük başına 2 bayt → ≈ 2,5 MB/s yol bant genişliği

CLKT1adresT2kontrolT3veriTwbeklemeT4bitişTiboşta

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).

Yol Döngüleri

Kaç Bekleme Durumu Gerekir?

  • Okumada adres T1'in başından en geç TCLAV sonra geçerli olur; veri T3'ün sonunda, T4'e geçen saat kenarında örneklenir ve bundan TDVCL önce hazır olmalıdır.
  • Arada adres kilidi, adres çözücü ve veri alıcı-vericisinin gecikmeleri (ttampon) de harcanır.
  • Her Tw pencereyi bir T uzatır.
tizin = 3·T − TCLAV − TDVCL − ttampon
Koşul: terişim ≤ tizin + n·T → n = ⌈(terişim − tizin) / T⌉ (negatifse n = 0)

RD' T2'de düştüğü için RD' → veri süresine (çıkış etkinleştirme) ikinci bir koşul daha vardır; burada yalnız adres → veri koşulu hesaplanıyor.

Örnek: 5 MHz 8086

T = 200 ns; veri sayfası: TCLAV ≤ 110 ns, TDVCL ≥ 30 ns; ttampon = 40 ns kabul edilsin.

tizin = 600 − 110 − 30 − 40 = 420 ns

Bellek terişim = 700 ns:
n = ⌈(700 − 420) / 200⌉ = ⌈1,4⌉ = 2 Tw

Sınama: 1 Tw → 620 ns < 700 ✗; 2 Tw → 820 ns ≥ 700 ✓

Döngü = (4 + 2) × 200 = 1200 ns

terişim = 400 ns olsaydı: 400 ≤ 420 → 0 Tw.

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.

T4 (önceki)kod (ör. 101)T1kod (ör. 101)T2kod (ör. 101)T3pasif 111T4pasif 1118288 kodu T4–T2 arasında çözer; T4'te 111'den çıkış yeni döngüyü haber verir

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 kuralı

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 turunun 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 · Kodu adım adım çalıştır

Kod İzleme: Komutlar ve Durum Kodları

org 100h
mov bx, 0200h
mov ax, [bx]      ; bellek oku
mov [bx+2], ax    ; belleğe yaz
in al, 60h        ; G/Ç oku
out 61h, al       ; G/Ç yaz
push ax           ; yığına yaz
hlt               ; dur
8086 durum pinleriS2'1S1'0S0'0S41S30→ CS ya da yok8288 yol denetleyicisiMRDC'kod getirmeadres: CS:0100hAX = 0000h · SP = FFFEh

Her döngünün başında 8086, S2' S1' S0' pinlerine döngü türünü koyar. mov bx, 0200h yalnız kod getirme ister: 100; S4 S3 = 10 → CS.

8086 durum pinleriS2'1S1'0S0'1S41S31→ DS8288 yol denetleyicisiMRDC'bellek okuadres: DS:0200hAX = 1234h · SP = FFFEh

mov ax, [bx]: bellek okuma 101. 8288 MRDC' üretir. Veri kesimi kullanıldığı için S4 S3 = 11 (DS). AX = 1234h.

8086 durum pinleriS2'1S1'1S0'0S41S31→ DS8288 yol denetleyicisiMWTC', AMWC'belleğe yazadres: DS:0202hAX = 1234h · SP = FFFEh

mov [bx+2], ax: belleğe yazma 110 → 8288 MWTC' (ve bir saat önce AMWC'). Kesim yine DS.

8086 durum pinleriS2'0S1'0S0'1S41S30→ CS ya da yok8288 yol denetleyicisiIORC'G/Ç okuadres: port 60hAX = 125Ah · SP = FFFEh

in al, 60h: G/Ç okuma 001 → IORC'. G/Ç'de kesim yok: S4 S3 = 10. AL = 5Ah.

8086 durum pinleriS2'0S1'1S0'0S41S30→ CS ya da yok8288 yol denetleyicisiIOWC', AIOWC'G/Ç yazadres: port 61hAX = 125Ah · SP = FFFEh

out 61h, al: G/Ç yazma 010 → IOWC'. S2' = 0 olduğundan bellek bu döngüye karışmaz.

8086 durum pinleriS2'1S1'1S0'0S40S31→ SS8288 yol denetleyicisiMWTC', AMWC'belleğe yazadres: SS:FFFChAX = 125Ah · SP = FFFCh

push ax da bir bellek yazmasıdır (110), ama yığın kesimi kullanılır: S4 S3 = 01 (SS). Sistem yığını ayrı bir bankaya koyabilir.

8086 durum pinleriS2'0S1'1S0'1S41S30→ CS ya da yok8288 yol denetleyicisiyokdurdurma (HLT)adres: —AX = 125Ah · SP = FFFCh

hlt: 011 durdurma kodu; 8288 komut üretmez. Döngü aralarında pinler 111 (pasif) değerine döner.

Komut baytlarını getiren 100 (kod getirme) döngüleri ayrıca yapılır.

Durum Pinleri

Demo: Durum Kodu Çözücü

Bir pine tıklanınca değeri 0/1 olur; 8288'in ve sistemin bu kodu nasıl yorumladığı altta görünü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 turunda 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.
8086AD15–AD08286alıcı-vericiD15–D0bellek / G/ÇOE' ← DEN' · T ← DT/R'
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.

Doğru gösterim DT/R'dir: R aktif düşüktür.

Kontrol Pinleri · Kodu adım adım çalıştır

Komuttan Yol Döngülerine: OUT ve IN

Döngü 1, T1: komut baytları bellekten okunur. FA = 01A70h + 0018h = 01A88h (çift) → BHE' = 0, A0 = 0: tek döngüde bir sözcük. ALE darbesi adresi kilitler; okuma olduğu için DT/R' = 0.

T2–T4: RD' = 0, DEN' = 0. Bellek sözcüğü verir: çift adresteki E6h (işlem kodu) D7–D0'dan, tek adresteki 59h (port) D15–D8'den gelir.

Döngü 2, T1: M/IO' = 0 → G/Ç. Adres yalnız A7–A0'da anlamlı (59h); A15–A8 ve A19–A16 = 0. Port tek adres → BHE' = 0, A0 = 1. Yazma: DT/R' = 1.

T2–T4: WR' = 0. AL'deki 12h D15–D8 üzerinden çıkar (tek adres = yüksek banka). Çıkış portu veriyi genellikle WR' yükselirken kilitler.

Döngü 3, T1: sonraki komut 01A8Ah'de (çift) → yine tek sözcük getirme. M/IO' = 1, DT/R' = 0.

T2–T4: E4h (IN AL, imm8) D7–D0'dan, 9Ah (port) D15–D8'den okunur.

Döngü 4, T1: G/Ç adresi 009Ah çift → BHE' = 1, A0 = 0: yalnız düşük banka. Okuma: DT/R' = 0.

T2–T4: RD' = 0; port 3Ch değerini D7–D0'a koyar, T4 başında AL'ye alınır. Yol etkinliği: 4 döngü × 4 T = 16 saat turu (Tw yok).

; CS = 01A7h, AL = 12h
; FA      bayt   komut
01A88h  E6 59  out 59h, al
01A8Ah  E4 9A  in  al, 9Ah

Basitleştirilmiş sıralı model: gerçekte BIU, kuyrukta yer açıldıkça kodu önden getirir; döngü 3 döngü 2'den önce de olabilir. Her döngünün T1–T4 ayrıntısı: Yazma ve Okuma Yol Döngüsü. 8 bitlik birimi yalnız D7–D0'a bağlı olan sistemde tek port adresi kullanılamaz.

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.

Veri sayfasına göre HLDA, T4 veya Ti (boşta) turunun 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 · Kodu adım adım çalıştır

Kod İzleme: LOCK XCHG ile Bölünmez Erişim

org 100h
mov bx, offset bayrak
bekle: mov al, 1
lock xchg al, [bx]   ; oku + yaz
cmp al, 0            ; boş muydu?
jne bekle            ; doluysa dene
; ... kritik bölge ...
mov byte ptr [bx], 0 ; bırak
ret
bayrak db 0
8086AL?LOCK'1—bayrak0 (boş)diğer işlemci (RQ/GT)yolu alabilirkritik bölge: —

Ortak bellekteki bayrak (010Fh) iki işlemcinin paylaştığı bir semafordur: 0 = boş, 1 = dolu. Şu an boş.

8086AL01hLOCK'1—bayrak0 (boş)diğer işlemci (RQ/GT)yolu alabilirkritik bölge: —

AL = 1: bayrağa yazılacak “dolu” değeri.

8086AL01hLOCK'0oku (MRDC')bayrak0 (boş)diğer işlemci (RQ/GT)yolu alamazkritik bölge: —

lock xchg başladı: LOCK' = 0. 1. yol döngüsü bayrağı okur (0). Diğer yol yöneticisinin RQ/GT isteği bu sürede kabul edilmez.

8086AL00hLOCK'0yaz (MWTC')bayrak1 (dolu)diğer işlemci (RQ/GT)yolu alamazkritik bölge: bizde

2. yol döngüsü AL'deki 1'i bayrağa yazar; AL eski değeri (0) aldı. Okuma ile yazma arasına başka işlemci giremedi.

8086AL00hLOCK'1—bayrak1 (dolu)diğer işlemci (RQ/GT)yolu alabilirkritik bölge: bizde

XCHG bitti, LOCK' = 1: yol yeniden paylaşılabilir. cmp al, 0: eski değer 0 → ZF = 1.

8086AL00hLOCK'1—bayrak1 (dolu)diğer işlemci (RQ/GT)yolu alabilirkritik bölge: bizde

jne atlamaz: bayrak boştu ve artık bizim. Diğer işlemci denese, xchg ona 1 döndürür ve beklemeye devam eder.

8086AL00hLOCK'1yaz (MWTC')bayrak0 (boş)diğer işlemci (RQ/GT)yolu alabilirkritik bölge: serbest

Kritik bölge bitti: bayrak = 0 yazılarak semafor serbest bırakılır.

8086AL00hLOCK'1—bayrak0 (boş)diğer işlemci (RQ/GT)yolu alabilirkritik bölge: serbest

LOCK öneki olmasaydı, diğer işlemci okuma ve yazma döngüleri arasında yolu alıp aynı 0'ı okuyabilir; iki işlemci aynı anda kritik bölgeye girerdi.

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 turunun 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 kontrolü 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 turu 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 · Kodu adım adım çalıştır

İşlemcinin Yaptığı Adımlar: RESET → İlk Komut

; RESET = 1 (≥ 4 saat turu)
CS ← FFFFh, IP ← 0000h
DS, SS, ES ← 0000h
FLAGS ← 0000h  ; IF = 0
kuyruk boşaltılır
; RESET 1 → 0
getir FFFF0h   ; EA 5B E0 00 F0
jmp far F000h:E05Bh
getir FE05Bh   ; BIOS
CS????IP????DS/SS/ES????FLAGS????1 MB bellek (üst kısım)FFFF0h: EA 5B E0 00 F0FFFFFh = son baytFE05Bh: BIOS koduROM (BIOS)

RESET pini en az dört saat turu 1 tutuluyor: işlemci o anki işini hemen bırakır. Yazmaçların içeriği belirsizdir.

CSFFFFhIP0000hDS/SS/ES????FLAGS????1 MB bellek (üst kısım)FFFF0h: EA 5B E0 00 F0FFFFFh = son baytFE05Bh: BIOS koduROM (BIOS)

Donanım CS = FFFFh, IP = 0000h yükler. Programcı bu değerleri seçmez.

CSFFFFhIP0000hDS/SS/ES0000hFLAGS????1 MB bellek (üst kısım)FFFF0h: EA 5B E0 00 F0FFFFFh = son baytFE05Bh: BIOS koduROM (BIOS)

Diğer kesim yazmaçları 0000h olur.

CSFFFFhIP0000hDS/SS/ES0000hFLAGS0000h1 MB bellek (üst kısım)FFFF0h: EA 5B E0 00 F0FFFFFh = son baytFE05Bh: BIOS koduROM (BIOS)

Bayraklar temizlenir; IF = 0: kesmeler kapalı, başlangıç kodu kesilmeden çalışır.

CSFFFFhIP0000hDS/SS/ES0000hFLAGS0000h1 MB bellek (üst kısım)FFFF0h: EA 5B E0 00 F0FFFFFh = son baytFE05Bh: BIOS koduROM (BIOS)

Kuyruk boş. RESET 0'a inince BIU ilk getirmeyi başlatır.

CSFFFFhIP0000hDS/SS/ES0000hFLAGS0000h1 MB bellek (üst kısım)FFFF0h: EA 5B E0 00 F0FFFFFh = son baytFE05Bh: BIOS koduROM (BIOS)adres yolu: FFFF0h

İlk adres: FFFFh × 10h + 0000h = FFFF0h, 1 MB'ın son 16 baytı. Burada ROM'daki 5 baytlık uzak atlama durur: EA 5B E0 00 F0.

CSF000hIPE05BhDS/SS/ES0000hFLAGS0000h1 MB bellek (üst kısım)FFFF0h: EA 5B E0 00 F0FFFFFh = son baytFE05Bh: BIOS koduROM (BIOS)

EA = uzak JMP: önce bağıl konum (E05Bh), sonra kesim (F000h), ikisi de little-endian. CS:IP = F000h:E05Bh; kuyruk yeniden temizlenir.

CSF000hIPE05BhDS/SS/ES0000hFLAGS0000h1 MB bellek (üst kısım)FFFF0h: EA 5B E0 00 F0FFFFFh = son baytFE05Bh: BIOS koduROM (BIOS)adres yolu: FE05Bh

Yeni adres F0000h + E05Bh = FE05Bh: BIOS'un açılış kodu (IBM PC'deki adresi). 16 bayta sığmayan başlangıç kodu buradan sürer.

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ğışı.

Veri sayfası: “ALE is never floated” — ALE asla yüzer (yüksek empedans) duruma geçmez.

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 turunda ö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.

INTR seviye tetiklemelidir; kenar tetiklemeli olan NMI'dı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.

Ö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 sözcük 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. Kabulde iki INTA' darbesi; ikincisinde tip numarası D7–D0'da.

Ö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. 8259A, IRQ0 isteğini tip 08h ile bildiriyor. İki INTA' darbesinde veri yolunda ne görülür? Maksimum modda LOCK' bu sırada ne durumdadı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. 1. darbede veri yolu yüzer (yalnız kabul bildirimi); 2. darbede 8259A 08h'yi D7–D0'a koyar. LOCK' iki döngü boyunca 0 (aktif) kalır.
  6. 24 / 3 = 8 MHz → 8086-2.

Özet

Alıştırmalar (2)

  1. T = 125 ns olan bir sistemde TCLAV + TDVCL + ttampon = 120 ns kabul edilirse 450 ns erişim süreli bellek için kaç Tw gerekir?
  2. OUT 9Bh, AL komutunun G/Ç yazma döngüsünde A7–A0, BHE', A0 ve verinin geçtiği hatlar nedir?
İpuçları / cevaplar
  1. tizin = 375 − 120 = 255 ns; ⌈(450 − 255) / 125⌉ = ⌈1,56⌉ = 2 Tw (1 Tw: 380 ns yetmez, 2 Tw: 505 ns yeter); döngü 6 × 125 = 750 ns.
  2. A7–A0 = 9Bh (A19–A8 = 0), M/IO' = 0; tek adres → BHE' = 0, A0 = 1; AL D15–D8 üzerinden çıkar.

Ö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.
  • M. Bodur, Mikroişlemcilere Giriş: Assembler ile Yazılım ve Arayüz, EMO, 2014.
  • K. Shirriff, 8086 kalıp fotoğrafları ve tersine mühendislik yazıları, righto.com.

Son

Bölüm 10: 8086 Pinler
Sonraki bölüm: Bölüm 10: Aygıt Kontrolü · Terim sözlüğü
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.