Intel 8253 - Intel 8253

Intel C8253
Intel 8253 programlanabilir aralık zamanlayıcı. Intel 8254 aynı pin çıkışına sahiptir.

Intel 8253 ve 8254 olan programlanabilir aralık zamanlayıcı üç 16 bit sayacı kullanılarak zamanlaması ve sayma fonksiyonlarını yerine (çukurlar),.

825x ailesi öncelikle Intel 8080 / 8085 -işlemciler için tasarlanmıştı , ancak daha sonra x86 uyumlu sistemlerde kullanıldı. 825x yongaları veya daha büyük bir yongaya gömülü eşdeğer bir devre, tüm IBM PC uyumlularında ve Vector-06C gibi Sovyet bilgisayarlarında bulunur .

PC uyumlularında, Zamanlayıcı Kanalı 0, IRQ -0'a (en yüksek öncelikli donanım kesmesi) atanır . Zamanlayıcı Kanalı 1, DRAM yenilemesine atanmıştır (en azından 80386'dan önceki erken modellerde). Zamanlayıcı Kanal 2, PC hoparlörüne atanır .

Intel 82c54 ( CMOS mantığı için c ) varyantı, 10 MHz'e kadar saat sinyallerini işler.

Tarih

8253, 1980 Intel "Bileşen Veri Kataloğu" yayınında açıklanmıştır. 8253'ün daha yüksek saat hızı derecelerine sahip bir üst kümesi olarak tanımlanan 8254, 1982 Intel "Bileşen Veri Kataloğu"nda bir "ön" veri sayfasına sahiptir.

8254, HMOS'ta uygulanır ve 8253'te mevcut olmayan bir "Geri Oku" komutuna sahiptir ve aynı sayacın okuma ve yazmanın araya eklenmesine izin verir.

Modern PC uyumluları, ya SoC CPU'ları ya da güney köprüsü kullanırken , geriye dönük uyumluluk ve birlikte çalışabilirlik için tipik olarak tam 8254 uyumluluğu uygular. Geri Oku komutu, çok çekirdekli CPU'lar ve GPU'lar ile birlikte çalışabilirlik için hayati bir G/Ç özelliğidir.

Varyantlar

Intel M8253'ün -55°C ile +125°C sıcaklık aralığında ±%10 5V güç toleransına sahip askeri versiyonu bulunmaktadır. Mevcut 82C53 CMOS sürümü, Oki Electronic Industry Co., Ltd'ye dış kaynaklı olarak verildi .

Özellikleri

Intel 8253'ün blok şeması

Zamanlayıcının 0'dan 2'ye kadar numaralandırılmış üç sayacı vardır. Her kanal altı moddan birinde çalışacak şekilde programlanabilir. Programlandıktan sonra kanallar bağımsız olarak çalışır.

Her sayıcının iki giriş pini vardır - "CLK" ( saat girişi) ve "GATE" - ve veri çıkışı için bir pin, "OUT". Üç sayaç, birbirinden bağımsız 16 bitlik aşağı sayaçlardır ve CPU tarafından kolayca okunabilir .

  • Veri yolu arabelleği, mikroişlemci ve dahili kayıtlar arasındaki veri yolunu ara belleğe alma mantığını içerir. Genellikle D7..D0 olarak etiketlenen 8 giriş pinine sahiptir, burada D7 MSB'dir .
  • Okuma/yazma mantığının aşağıda listelenen 5 pini vardır. " X ", X'in aktif bir düşük sinyal olduğunu belirtir.
    • RD : okuma sinyali
    • WR : yazma sinyali
    • CS : çip seçme sinyali
    • A0, A1: adres satırları

Yukarıdaki donanım sinyalleri ayarlanarak PIT'in çalışma modu değiştirilir. Örneğin, Kontrol Kelime Kaydı'na yazmak için, CS =0, RD =1, WR =0, A1=A0=1 olarak ayarlanması gerekir .

  • Kontrol kelimesi kaydı , cihaza ( mikroişlemci tarafından ) gönderilecek olan programlanmış bilgileri içerir . PIT'in her bir kanalının mantıksal olarak nasıl çalıştığını tanımlar. Bu portlara her erişim yaklaşık 1 µs sürer.

Sayaçları başlatmak için mikroişlemci bu kayıt defterine bir kontrol sözcüğü (CW) yazmalıdır. Bu, Mantık Okuma/Yazma bloğunun pinleri için uygun değerleri ayarlayarak ve ardından kontrol kelimesini Veri/Bus Tampon bloğuna göndererek yapılabilir.

Kontrol kelimesi kaydı, D7..D0 (D7, MSB'dir ) olarak etiketlenmiş 8 bit içerir . Kod çözme biraz karmaşıktır. Çoğu değer, parametreleri üç sayaçtan biri için ayarlar:

  • En anlamlı iki bit (11 değilse) komutun uygulanacağı sayaç kaydını seçer.
  • Sonraki iki bit (00 değilse), sayaç kaydına sonraki okuma/yazma erişimi için kullanılacak formatı seçer. Bu genellikle, erişimlerin en az anlamlı ve en anlamlı baytlar arasında değiştiği bir moda ayarlanır. 8253 ve 8254 arasındaki bir fark, birincinin hem okuma hem de yazma işlemlerini etkileyen bir dahili bitinin olmasıdır, bu nedenle format 2 bayta ayarlanmışsa, lsbyte'ın okunması, msbyte'a bir sonraki yazmanın yönlendirilmesine neden olur. 8254, okuma ve yazma işlemleri için ayrı bitler kullandı.
  • Sonraki üç bit, sayacın çalışacağı modu seçer.
  • En az anlamlı bit, sayacın ikili mi yoksa BCD mi çalışacağını seçer . (BCD sayımı neredeyse hiç kullanılmamıştır ve öykünücülerde veya güney köprülerinde düzgün uygulanmayabilir.)

Ancak, başka iki form daha vardır:

  • Belirli bir zamanlayıcı için sayımı kilitleyin. Bir sonraki okuma, okuma anındaki sayaç değerini döndürmek yerine, mandal komutu anındaki sayaç değerini döndürür. Okuma tamamlandıktan sonra, sonraki okumalar mevcut sayacı döndürür. Mandal komutu kullanıldığında mod ve BCD durumu değişmez.
  • (yalnızca 8254) Durumu kilitleyin ve/veya birden çok zamanlayıcı için sayın. Bu, bir bitmap kullanarak birden çok eşzamanlı mandal komutuna izin verir. Ayrıca, sayıma ek olarak mevcut kanal konfigürasyonu da okunabilir.
8253/8254 kontrol sözcüğü
Bit #/Ad Kısa Açıklama
D7
SC1
D6
SC2
D5
RW1
D4
RW0
D3
M2
D2
M1
D1
M0
D0
BCD
0 0 biçim mod BCD Sayaç 0 modunu ayarla
0 1 biçim mod BCD Sayaç 1 modunu ayarla
1 0 biçim mod BCD Sayaç 2 modunu ayarla (42h bağlantı noktasında)
1 1 Miktar durum C2 C1 C0 x Geri okuma komutu (yalnızca 8254)
sayaç 0 0 - x - Mandal sayacı değeri. Bir sonraki sayaç okuması, değerin anlık görüntüsünü okuyacaktır.
sayaç 0 1 mod BCD Yalnızca sayaç değerinin düşük baytını oku/yaz
sayaç 1 0 mod BCD Yalnızca yüksek bayt sayaç değeri okuma/yazma
sayaç 1 1 mod BCD 2×Read/2xWrite düşük bayt, ardından yüksek bayt sayaç değeri
sayaç biçim 0 0 0 BCD Mod 0: Terminal Sayımında Kesinti
sayaç biçim 0 0 1 BCD Mod 1: Donanım Yeniden Tetiklenebilir Tek Çekim
sayaç biçim x 1 0 BCD Mod 2: Hız Üreticisi
sayaç biçim x 1 1 BCD Mod 3: Kare Dalga
sayaç biçim 1 0 0 BCD Mod 4: Yazılımla Tetiklenen Strobe
sayaç biçim 1 0 1 BCD Mod 5: Donanımla Tetiklenen Strobe (Yeniden Tetiklenebilir)
sayaç biçim mod 0 Sayaç, 16 bitlik bir ikili sayaçtır (0–65535)
sayaç biçim mod 1 Sayaç, 4 basamaklı ikili kodlu bir ondalık sayaçtır (0–9999)
1 1 Miktar durum C2 C1 C0 x Geri okuma komutu (yalnızca 8254)
1 1 0 0 C2 C1 C0 x Seçilen sayaçların bir sonraki okuması, mandallı durumu geri okuyacak, ardından sayacak
1 1 0 1 C2 C1 C0 x Seçilen sayaçların sonraki okuması, mandallı sayımı geri okuyacaktır
1 1 1 0 C2 C1 C0 x Seçilen sayaçların sonraki okuması, mandallı durumu geri okuyacaktır
1 1 1 1 C2 C1 C0 x Hiçbir şey yapma (herhangi bir veya tüm sayaçlarda hiçbir şey mandallama)
1 1 Miktar durum 0 0 0 x Hiçbir şey yapma (mandal sayısı ve/veya sayaç yokken durum)
1 1 Miktar durum 1 C1 C0 x Geri okuma komutu sayaç 2 için geçerlidir
1 1 Miktar durum C2 1 C0 x Geri okuma komutu sayaç 1 için geçerlidir
1 1 Miktar durum C2 C1 1 x Geri okuma komutu sayaç 0 için geçerlidir

PIT'i ayarlarken, mikroişlemci önce bir kontrol mesajı, ardından PIT'e bir sayım mesajı gönderir. Sayım işlemi, PIT bu mesajları aldıktan sonra ve bazı durumlarda GATE giriş sinyalinden yükselen kenarı tespit ederse başlayacaktır . Durum bayt biçimi. Bit 7, yazılımın OUT pininin mevcut durumunu izlemesine izin verir. Bit 6, sayımın ne zaman okunabileceğini gösterir; bu bit 1 olduğunda, sayma elemanı henüz yüklenmemiştir ve işlemci tarafından geri okunamaz. 5'ten 0'a kadar olan bitler, kontrol kaydına yazılan son bitlerle aynıdır.

8254 durum kelimesi
Bit #/Ad Kısa Açıklama
D7
Çıkış
Durumu
D6
boş
sayı
D5
RW1
D4
RW0
D3
M2
D2
M1
D1
M0
D0
BCD
0 Çıkış pimi 0
1 Çıkış pimi 1'dir
0 Sayaç okunabilir
1 Sayaç ayarlanıyor
biçim mod BCD Kontrol kelimesi kaydı için tanımlandığı gibi sayaç modu bitleri

Çalışma modları

Kontrol kelimesinin D3, D2 ve D1 bitleri zamanlayıcının çalışma modunu ayarlar. Toplamda 6 mod vardır; mod 2 ve 3 için D3 biti yok sayılır, bu nedenle eksik mod 6 ve 7, mod 2 ve 3 için takma adlardır.

Tüm modlar GATE girişine duyarlıdır, GATE yüksek normal çalışmaya neden olur, ancak GATE low'un etkileri moda bağlıdır:

  • Mod 0 ve 4: GATE düşükken sayma askıya alınır ve GATE yüksekken yeniden başlatılır.
  • Mod 1 ve 5: GATE'in yükselen kenarı saymaya başlar. GATE, sayımı etkilemeden düşebilir, ancak başka bir yükselen kenar, sayımı baştan yeniden başlatır.
  • Mod 2 ve 3: GATE low, hemen (bir saat darbesini beklemeden) OUT'u yükseğe zorlar ve sayacı sıfırlar (bir sonraki saat düşen kenarında). GATE tekrar yükseldiğinde, sayma baştan başlar.

Mod 0 (000): Terminal sayısında kesinti

Mod 0, yazılım kontrolü altında doğru zaman gecikmesinin üretilmesi için kullanılır. Bu modda, sayaç, kendisine yüklenen ilk COUNT değerinden 0'a kadar saymaya başlayacaktır. Sayma hızı, giriş saat frekansına eşittir.

OUT pini, Kontrol Kelimesi yazıldıktan sonra düşük ayarlanır ve sayma, COUNT programlandıktan sonra bir saat döngüsü başlar. OUT, sayaç 0'a ulaşana kadar düşük kalır, bu noktada OUT, sayaç yeniden yüklenene veya Kontrol Word yazılana kadar yüksek olarak ayarlanır. Sayaç 0xFFFFdahili olarak sarılır ve saymaya devam eder, ancak OUT pini bir daha asla değişmez. Geçit sinyali, normal sayma için aktif yüksek kalmalıdır. Geçit düşerse sayım askıya alınır ve tekrar yükseldiğinde kaldığı yerden devam eder.

Sayım kaydına yüklendiğinde yeni sayımın ilk baytı önceki sayımı durdurur.

Mod 1 (001): programlanabilir tek çekim

Bu modda 8253, Monostable multivibratör olarak kullanılabilir . GATE girişi tetik girişi olarak kullanılır.

ÇIKIŞ başlangıçta yüksek olacaktır. ÇIKIŞ, tek vuruşlu darbeyi başlatmak için bir tetikleyicinin ardından Saat darbesinde düşük olacak ve Sayaç sıfıra ulaşana kadar düşük kalacaktır. ÇIKIŞ daha sonra yükselir ve bir sonraki tetiklemeden sonra CLK darbesine kadar yüksek kalır.

Kontrol Kelimesini ve ilk sayımı yazdıktan sonra Sayaç devreye girer. Bir tetik, Sayacın yüklenmesine ve bir sonraki CLK darbesinde ÇIKIŞ'ın düşük ayarlanmasına ve böylece tek atış darbesinin başlatılmasına neden olur. N'nin ilk sayımı, süre içinde tek seferlik bir darbe N CLK döngüsü ile sonuçlanacaktır.

Tek atış yeniden tetiklenebilir, dolayısıyla herhangi bir tetiklemeden sonra ÇIKIŞ N CLK darbeleri için düşük kalacaktır. Tek atımlık darbe, aynı sayımı sayaca yeniden yazmadan tekrarlanabilir. GATE'in OUT üzerinde hiçbir etkisi yoktur. Tek atış darbesi sırasında Sayaca yeni bir sayım yazılırsa, sayaç yeniden tetiklenmedikçe mevcut tek atış etkilenmez. Bu durumda, Sayaç yeni sayım ile yüklenir ve tek atış darbesi, yeni sayım sona erene kadar devam eder.

Mod 2 (X10): oran oluşturucu

Bu modda, cihaz, gerçek zamanlı bir saat kesmesi oluşturmak için yaygın olarak kullanılan bir n'ye bölme sayacı gibi davranır.

Diğer modlar gibi, sayma işlemi COUNT gönderildikten sonra bir sonraki saat döngüsüne başlayacaktır. ÇIKIŞ daha sonra sayaç 1'e ulaşana kadar yüksek kalır ve bir saat darbesi için düşük olur. Sonraki döngüde sayı yeniden yüklenir, OUT tekrar yükselir ve tüm süreç kendini tekrar eder.

Yüksek darbeler arasındaki süre, sayacın kaydındaki önceden ayarlanmış sayıma bağlıdır ve aşağıdaki formül kullanılarak hesaplanır:

Sayaca yüklenecek değer =

COUNT kaydındaki değerlerin 1 ile 1 arasında değiştiğine dikkat edin ; kayıt asla sıfıra ulaşmaz.

Mod 3 (X11): kare dalga üreteci

Bu mod mod 2'ye benzer. Ancak çıkışın yüksek ve düşük saat darbelerinin süresi mod 2'den farklı olacaktır.

Sayaca yüklenen sayının (COUNT mesajı) olduğunu varsayalım , çıktı sayımlar için yüksek ve sayımlar için düşük olacaktır . Böylece, periyot sayılır ve eğer tek ise , OUT yüksek ile fazladan yarım döngü harcanır.

Mod 4 (100): Yazılımla Tetiklenen Strobe

Kontrol Word ve COUNT yüklendikten sonra, sayaç sıfıra ulaşana kadar çıkış yüksek kalacaktır. Sayaç daha sonra 1 saat döngüsü (bir flaş) için düşük bir darbe üretecektir - bundan sonra çıkış tekrar yüksek olacaktır.

GATE low, GATE tekrar yükseldiğinde devam eden sayımı askıya alır.

Mod 5 (101): Donanımla Tetiklenen Strobe

Bu mod mod 4'e benzer. Ancak sayma işlemi GATE girişi tarafından tetiklenir.

Kontrol Sözcüğü ve COUNT'u aldıktan sonra çıktı yüksek olarak ayarlanacaktır. Cihaz GATE girişinde yükselen bir kenar algıladığında saymaya başlayacaktır. Sayaç 0'a ulaştığında, çıkış bir saat çevrimi için düşük olacak - bundan sonra GATE'in bir sonraki yükselen kenarında çevrimi tekrarlamak için tekrar yükselecektir.

IBM PC programlama ipuçları ve püf noktaları

8253, 1981'de piyasaya sürülmesinden bu yana IBM PC uyumlularında kullanılmıştır. Modern zamanlarda, bu PIT, bir x86 PC'de ayrı bir çip olarak bulunmaz. Bunun yerine, işlevselliği anakart yonga setinin güney köprüsünün bir parçası olarak dahil edilmiştir . Modern bir yonga setinde, bu değişiklik, PIT'in x86 I/O adres alanındaki kayıtlarına gözle görülür şekilde daha hızlı erişim şeklinde ortaya çıkabilir .

Tüm PC uyumlu 105/88 = 1.193 bir saat hızında PIT yapmaktadır 18  MHz, 1 / 3 NTSC ColorBurst frekansı. 2 16'ya bölünen bu frekans (8253'ün yapabileceği en büyük bölen), MS-DOS ve ilgili işletim sistemlerinde kullanılan ≈18,2 Hz zamanlayıcı kesmesini üretir .

Orijinal IBM PC'lerde, bir zaman işleyişi kesmesi oluşturmak için Sayaç 0 kullanılır . Sayaç 1 (A1=0, A0=1), DRAM belleğinin yenilenmesini tetiklemek için kullanılır . Son sayaç (A1=1, A0=0) PC hoparlörü aracılığıyla ton üretmek için kullanılır .

Daha yeni anakartlar, Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) aracılığıyla ek sayaçlar , Yerel Gelişmiş Programlanabilir Kesinti Denetleyicisi ( Yerel APIC ) üzerinde bir sayaç ve Yüksek Hassasiyetli Olay Zamanlayıcı içerir . CPU'nun kendisi de Zaman Damgası Sayacı (TSC) olanağı sağlar.

PC'lerde timer0 (chip) adresi 40h..43h portunda ve ikinci timer1 (chip) 50h..53h'dedir.

x86 bilgisayarlarda, birçok video kartı BIOS'u ve sistem BIOS'u ikinci sayacı kendi kullanımları için yeniden programlayacaktır. Yeniden programlama tipik olarak video modu değişiklikleri sırasında, video BIOS'unun yürütülebileceği ve sistem yönetim modu ve güç tasarrufu durumu değişiklikleri sırasında, sistem BIOS'unun yürütülebileceği zaman gerçekleşir. Bu, birçok x86 sisteminde zamanlayıcının ikinci sayacının ciddi alternatif kullanımlarını önler.

x86 PC'lerde sistem tarafından kullanılan zamanlayıcı Kanal 0'dır ve saati 1193181.8181... Hz teorik değerinde çalışır , yani sistem saatini bölmekten gelen NTSC renk alt taşıyıcı frekansının üçte biri (14.31818 MHz) ) tarafından 12. Bu, ilk CGA PC'lerin bir kalıntısıdır - tek bir kuvars kristalinden gerekli tüm frekansları elde ettiler ve TV çıkışını mümkün kılmak için bu osilatörün NTSC renk alt taşıyıcı frekansının bir katında çalışması gerekiyordu.

Yukarıda belirtildiği gibi, Kanal 0 bir sayaç olarak uygulanır. Tipik olarak, sayacın başlangıç ​​değeri Kontrole bayt gönderilerek ayarlanır, ardından Veri G/Ç Bağlantı Noktası kayıtları (36h değeri bağlantı noktası 43h'ye gönderilir, ardından düşük bayt bağlantı noktası 40h'ye gönderilir ve yüksek bayt için bağlantı noktası 40h yeniden gönderilir) . Sayaç sıfıra kadar sayar ve ardından CPU'ya bir donanım kesmesi (IRQ 0, INT 8) gönderir . Sayaç daha sonra başlangıç ​​değerine sıfırlanır ve tekrar geri saymaya başlar. Mümkün olan en hızlı kesinti frekansı, bir megahertz'in yarısından biraz fazladır. MS-DOS veya uyumlu işletim sistemlerini çalıştıran bilgisayarlar tarafından da normal olarak kullanılan olası en yavaş frekans yaklaşık 18,2 Hz'dir. Bu gerçek mod işletim sistemlerinde BIOS, bir program tarafından okunabilen gerçek mod adresi 0040:006c'de aldığı INT 8 çağrılarının sayısını biriktirir.

Bir zamanlayıcı geri sayım yaparken, değeri , önce düşük bayt, sonra yüksek bayt için olmak üzere , G/Ç bağlantı noktası iki kez okunarak doğrudan okunabilir . Ancak, x86 PC gibi serbest çalışan sayıcı uygulamalarında , okunan her iki baytın tek ve aynı değere ait olması için önce kontrol kaydına istenen kanal için bir mandal komutu yazmak gerekir .

2002 tarihli bir Microsoft belgesine göre, "bu donanımdan okuma ve bu donanıma yazma [8254] bir IO bağlantı noktası üzerinden iletişim gerektirdiğinden, programlama birkaç döngü alır, bu da işletim sistemi için aşırı derecede pahalıdır. Bu nedenle, periyodik olmayan işlevsellik kullanılmaz. uygulamada."

Ayrıca bakınız

  • LAPIC programlanabilir bir zamanlayıcı sağlar
  • HPET

Referanslar

daha fazla okuma

Dış bağlantılar