Intel 8253 - Intel 8253

Intel C8253
Programovatelný intervalový časovač Intel 8253. Intel 8254 má stejný konektor.

Na Intel 8253 a 8254 jsou programovatelné interval časovače (jam), které provádějí časování a počítání funkcí pomocí tři 16bitové čítače.

825x rodina byla primárně určena pro Intel 8080 / 8085 -processors, ale byl později použit v x86 kompatibilní systémy. Čipy 825x nebo ekvivalentní obvod zabudovaný do většího čipu se nacházejí ve všech kompatibilních počítačích IBM PC a v sovětských počítačích, jako je Vector-06C .

V kompatibilních s PC je časovač kanálu 0 přiřazen k IRQ -0 (hardwarové přerušení s nejvyšší prioritou). Kanál časovače 1 je přiřazen obnovovací paměti DRAM (alespoň v dřívějších modelech před 80386). Kanál časovače 2 je přiřazen reproduktoru počítače .

Varianta Intel 82c54 (c pro logiku CMOS ) zpracovává hodinové signály až 10 MHz.

Dějiny

Model 8253 je popsán v publikaci Intel „Component Data Catalog“ z roku 1980. Model 8254, který je popisován jako nadmnožina modelu 8253 s vyššími hodnotami taktovací rychlosti, má „předběžný“ datový list v „Katalogu komponentních dat“ Intel 1982.

8254 je implementován v HMOS a má příkaz „Číst zpět“, který není na 8253 k dispozici, a umožňuje číst a zapisovat stejný čítač, který má být prokládán.

Moderní PC kompatibilní, ať už při použití SoC CPU nebo Southbridge obvykle implementují plnou 8254 kompatibilitu pro zpětnou kompatibilitu a interoperabilitu. Příkaz Read Back je zásadní funkcí I / O pro interoperabilitu s vícejádrovými procesory a GPU.

Varianty

Existuje vojenská verze Intel M8253 s teplotním rozsahem -55 ° C až + 125 ° C, která má také toleranci výkonu ± 10% 5 V. Dostupná 82C53 CMOS verze byla externě Oki Electronic Industry Co., Ltd .

Funkce

Blokové schéma procesoru Intel 8253

Časovač má tři čítače, očíslované od 0 do 2. Každý kanál lze naprogramovat tak, aby fungoval v jednom ze šesti režimů. Jakmile jsou kanály naprogramovány, pracují nezávisle.

Každý čítač má dva vstupní piny - „CLK“ ( hodinový vstup) a „GATE“ - a jeden pin „OUT“ pro datový výstup. Tři čítače jsou 16bitové dolní čítače nezávislé na sobě a lze je snadno číst CPU .

  • Vyrovnávací paměť datové sběrnice obsahuje logiku vyrovnávací paměti datové sběrnice mezi mikroprocesorem a interními registry. Má 8 vstupních pinů, obvykle označených jako D7..D0, kde D7 je MSB .
  • Logika čtení / zápisu má 5 pinů, které jsou uvedeny níže. „ X “ označuje X je aktivní nízký signál.
    • RD : čtecí signál
    • WR : zapisovací signál
    • CS : signál pro výběr čipu
    • A0, A1: adresní řádky

Provozní režim PIT se mění nastavením výše uvedených hardwarových signálů. Například pro zápis do registru řídicího slova je třeba nastavit CS = 0, RD = 1, WR = 0, A1 = A0 = 1.

  • Registr řídicího slova obsahuje naprogramované informace, které budou odeslány ( mikroprocesorem ) do zařízení. Definuje, jak logicky funguje každý kanál PIT. Každý přístup k těmto portům trvá přibližně 1 µs.

Pro inicializaci čítačů musí mikroprocesor do tohoto registru napsat kontrolní slovo (CW). To lze provést nastavením správných hodnot pro piny bloku Read / Write Logic a poté odesláním řídicího slova do bloku Data / Bus Buffer.

Registr řídicího slova obsahuje 8 bitů, označených D7..D0 (D7 je MSB ). Dekódování je poněkud složité. Většina hodnot nastavuje parametry pro jeden ze tří čítačů:

  • Nejvýznamnější dva bity (ne-li 11) vyberte registr čítače, na který se příkaz vztahuje.
  • Další dva bity (pokud ne 00) vyberou formát, který bude použit pro následný přístup pro čtení / zápis do registru čítače. To je běžně nastaveno na režim, kde se přístupy střídají mezi nejméně významnými a nejvýznamnějšími bajty. Jeden rozdíl mezi 8253 a 8254 je ten, že první měl jeden vnitřní bit, který ovlivňoval čtení i zápis, takže pokud byl formát nastaven na 2 bajty, čtení lsbyte způsobí, že následující zápis bude směrován na msbyte. 8254 používá samostatné bity pro čtení a zápis.
  • Další tři bity volí režim, ve kterém bude čítač pracovat.
  • Nejméně významný bit vybírá, zda bude čítač pracovat v binárním nebo BCD . (Počítání BCD se téměř nikdy nepoužívá a nemusí být správně implementováno v emulátorech nebo jižních mostech.)

Existují však dvě další formy:

  • Zajistěte počet pro daný časovač. Při příštím čtení se namísto vrácení hodnoty čítače v okamžiku čtení vrátí hodnota čítače v okamžiku příkazu západky. Po dokončení čtení se v případě pozdějších čtení vrátí aktuální počitadlo. Při použití příkazu západka se režim a stav BCD nezmění.
  • (Pouze 8254) Blokování stavu a / nebo počtu pro více časovačů. To umožňuje více současných příkazů západky pomocí bitmapy. Kromě počtu může být také načtena aktuální konfigurace kanálu.
8253/8254 kontrolní slovo
Bitové číslo / název Stručný popis
D7
SC1
D6
SC2
D5
RW1
D4
RW0
D3
M2
D2
M1
D1
M0
D0
BCD
0 0 formát režimu BCD Nastavte režim čítače 0
0 1 formát režimu BCD Nastavte režim čítače 1
1 0 formát režimu BCD Nastavit režim Counter 2 (na portu 42h)
1 1 počet postavení C2 C1 C0 X Příkaz zpětného čtení (pouze 8254)
čelit 0 0 - X - Hodnota počitadla západky. Při dalším čtení čítače se načte snímek hodnoty.
čelit 0 1 režimu BCD Pouze pro čtení / zápis nízkého bajtu s hodnotou čítače
čelit 1 0 režimu BCD Čtení / zápis pouze vysokého bajtu hodnoty čítače
čelit 1 1 režimu BCD 2 × Read / 2xWrite low byte then high byte of counter value
čelit formát 0 0 0 BCD Režim 0: Přerušení v počtu terminálů
čelit formát 0 0 1 BCD Režim 1: Hardwarově obnovitelný jednorázový
čelit formát X 1 0 BCD Režim 2: Generátor rychlosti
čelit formát X 1 1 BCD Režim 3: Čtvercová vlna
čelit formát 1 0 0 BCD Režim 4: Softwarem spuštěný stroboskop
čelit formát 1 0 1 BCD Režim 5: Hardwarově aktivovaný stroboskop (retriggerable)
čelit formát režimu 0 Počítadlo je 16bitové binární počítadlo (0–65535)
čelit formát režimu 1 Počítadlo je čtyřmístné binárně kódované desítkové počítadlo (0–9999)
1 1 počet postavení C2 C1 C0 X Příkaz zpětného čtení (pouze 8254)
1 1 0 0 C2 C1 C0 X Další přečtení vybraných čítačů přečte zpět stav zablokování a poté se počítá
1 1 0 1 C2 C1 C0 X Další přečtení vybraných čítačů přečte zpět latched count
1 1 1 0 C2 C1 C0 X Další přečtení vybraných čítačů přečte zpět stav zablokování
1 1 1 1 C2 C1 C0 X Nedělejte nic (nic na žádném nebo všech počítačích nezastavujte)
1 1 počet postavení 0 0 0 X Nedělejte nic (počet západek a / nebo stav bez čítačů)
1 1 počet postavení 1 C1 C0 X Příkaz zpětného čtení platí pro čítač 2
1 1 počet postavení C2 1 C0 X Příkaz zpětného čtení platí pro čítač 1
1 1 počet postavení C2 C1 1 X Příkaz zpětného čtení platí pro čítač 0

Při nastavování PIT mikroprocesor nejprve odešle kontrolní zprávu a poté zprávu o počtu do PIT. Proces počítání začne poté, co PIT přijme tyto zprávy, a v některých případech, pokud detekuje vzestupnou hranu ze vstupního signálu GATE. Formát stavového bajtu. Bit 7 umožňuje softwaru sledovat aktuální stav kolíku OUT. Bit 6 označuje, kdy lze počet přečíst; když je tento bit 1, čítací prvek ještě nebyl načten a procesor ho nemůže přečíst zpět. Bity 5 až 0 jsou stejné jako poslední bity zapsané do řídicího registru.

8254 stavové slovo
Bitové číslo / název Stručný popis
Stav
výstupu D7
Počet
nulových D6
D5
RW1
D4
RW0
D3
M2
D2
M1
D1
M0
D0
BCD
0 Out pin je 0
1 Out pin je 1
0 Počítadlo lze číst
1 Počítadlo se nastavuje
formát režimu BCD Bity režimu čítače, jak jsou definovány pro registr řídicího slova

Provozní režimy

Bity D3, D2 a D1 řídicího slova nastavují provozní režim časovače. K dispozici je celkem 6 režimů; pro režimy 2 a 3 je bit D3 ignorován, takže chybějící režimy 6 a 7 jsou aliasy pro režimy 2 a 3.

Všechny režimy jsou citlivé na vstup GATE, přičemž GATE high způsobuje normální provoz, ale účinky GATE low závisí na režimu:

  • Režimy 0 a 4: Počítání je pozastaveno, když je GATE nízká, a pokračuje, když je GATE vysoká.
  • Režimy 1 a 5: Náběžná hrana brány se začne počítat. GATE může klesnout bez ovlivnění počítání, ale další náběžná hrana restartuje počítání od začátku.
  • Režimy 2 a 3: GATE low vynutí okamžité vysoké OUT (bez čekání na hodinový puls) a vynuluje počítadlo (na další sestupné hraně hodin). Když se GATE opět zvýší, počítání se restartuje od začátku.

Režim 0 (000): Přerušení počtu terminálů

Režim 0 se používá pro generování přesného časového zpoždění pod softwarovou kontrolou. V tomto režimu začne počítadlo počítat od počáteční hodnoty COUNT, která je do něj načtena, až na 0. Rychlost počítání se rovná vstupní frekvenci hodin.

Pin OUT je nastaven na nízkou hodnotu po zapsání řídicího slova a počítání začíná jeden hodinový cyklus po naprogramování COUNT. OUT zůstává nízký, dokud čítač nedosáhne 0, přičemž v tomto okamžiku bude OUT nastaven vysoko, dokud se čítač znovu nenačte nebo nezapsá kontrolní slovo. Počítadlo se 0xFFFFinterně obtočí a pokračuje v počítání, ale kolík OUT se už nikdy nezmění. Signál brány by měl zůstat aktivní vysoký pro normální počítání. Pokud brána klesne, počítání se pozastaví a obnoví se, když opět stoupne.

První bajt nového počtu po načtení do registru počtu zastaví předchozí počet.

Režim 1 (001): programovatelný jeden snímek

V tomto režimu lze 8253 použít jako monostabilní multivibrátor . Jako vstup spouště se používá vstup GATE.

OUT bude zpočátku vysoký. OUT se po aktivaci jednorázového pulzu sníží na hodinovém impulsu a zůstane nízký, dokud čítač nedosáhne nuly. OUT pak půjde vysoko a zůstane vysoký až do pulzu CLK po dalším spuštění.

Po napsání řídicího slova a počátečním počtu je čítač aktivován. Spouštěč má za následek načtení čítače a nastavení OUT na další pulz CLK, čímž se spustí jednorázový puls. Počáteční počet N bude mít za následek jednorázový pulz N CLK cyklů v trvání.

Jednorázový zásah lze znovu spustit, proto OUT po každém spuštění zůstane nízký pro pulzy N CLK. Jednorázový pulz lze opakovat bez přepsání stejného počtu do počítadla. GATE nemá na OUT žádný vliv. Pokud je do čítače zapsán nový počet během impulzu onehot, aktuální jednorázový zásah není ovlivněn, pokud není čítač znovu spuštěn. V takovém případě se do čítače načte nový počet a pulz onehot pokračuje, dokud nový počet nevyprší.

Režim 2 (X10): generátor rychlosti

V tomto režimu funguje zařízení jako čítač dělení n, který se běžně používá ke generování přerušení hodin v reálném čase.

Stejně jako ostatní režimy zahájí proces počítání další hodinový cyklus po odeslání COUNT. OUT pak zůstane vysoký, dokud čítač nedosáhne 1, a bude klesat na jeden hodinový pulz. V následujícím cyklu se počet znovu načte, výstup se opět zvýší a celý proces se opakuje.

Čas mezi vysokými impulsy závisí na přednastaveném počtu v registru čítače a je vypočítán pomocí následujícího vzorce:

Hodnota, která se má načíst do čítače =

Všimněte si, že hodnoty v registru COUNT se pohybují od do 1; registr nikdy nedosáhne nuly.

Režim 3 (X11): generátor čtvercových vln

Tento režim je podobný režimu 2. Doba trvání vysokých a nízkých hodinových pulzů výstupu se však bude lišit od režimu 2.

Předpokládejme, že je číslo načtené do čítače (zpráva COUNT), výstup bude vysoký pro počty a nízký pro počty. Perioda se tedy bude počítat, a pokud je lichá, další polocyklus se utratí s OUT.

Režim 4 (100): Softwarem spuštěný stroboskop

Po načtení řídicího slova a COUNT zůstane výstup vysoký, dokud čítač nedosáhne nuly. Čítač poté vygeneruje nízký pulz po dobu 1 hodinového cyklu (stroboskop) - poté se výstup opět zvýší.

GATE low pozastaví počet, který se obnoví, když se GATE opět zvýší.

Režim 5 (101): Stroboskop spouštěný hardwarem

Tento režim je podobný režimu 4. Proces počítání je však spuštěn vstupem GATE.

Po obdržení řídicího slova a COUNT bude výstup nastaven vysoko. Jakmile zařízení detekuje vzestupnou hranu na vstupu GATE, začne počítat. Když čítač dosáhne 0, výstup se po jeden hodinový cyklus sníží - poté se opět zvýší, aby se cyklus opakoval na další vzestupné hraně GATE.

Tipy a rady k programování IBM PC

8253 byl používán v IBM PC kompatibilních od jejich zavedení v roce 1981. V moderní době není tento PIT zahrnut jako samostatný čip v PC x86. Spíše je jeho funkce zahrnuta jako součást Southbridge čipové sady základní desky . V moderní čipové sadě se tato změna může projevit v podobě znatelně rychlejšího přístupu k registrům PIT v adresním prostoru x86 I / O.

Všechny PC compatibles pracují jámy na hodinové rychlosti 105/88 = 1,193 18  MHz, 1 / 3 NTSC ColorBurst frekvenci. Tato frekvence rozdělená na 2 16 (největší dělitel, kterého je 8253 schopen) vytváří přerušení časovače ≈18,2 Hz používané v MS-DOS a souvisejících operačních systémech.

V původních počítačích IBM se čítač 0 používá ke generování přerušení měření času . Čítač 1 (A1 = 0, A0 = 1) se používá ke spuštění obnovování paměti DRAM . Poslední čítač (A1 = 1, A0 = 0) se používá ke generování tónů prostřednictvím reproduktoru počítače .

Novější základní desky zahrnují další čítače prostřednictvím Advanced Configuration and Power Interface (ACPI), čítače na Local Advanced Programmable Interrupt Controller ( Local APIC ) a High Precision Event Timer . Samotné CPU také poskytuje funkci Time Stamp Counter (TSC).

Na PC je adresa pro časovač0 (čip) na portu 40h..43h a druhý časovač1 (čip) je na 50h..53h.

Na počítačích s procesorem x86 mnoho BIOSu grafické karty a systému BIOS přeprogramuje druhý čítač pro své vlastní použití. K přeprogramování obvykle dochází během změn režimu videa, kdy může být spuštěn systém BIOS videa, a během režimu správy systému a změn stavu úspory energie, kdy může být spuštěn systém BIOS. To zabrání jakémukoli vážnému alternativnímu použití druhého čítače časovače na mnoha systémech x86.

Časovač, který systém používá na počítačích s procesorem x86, je kanál 0 a jeho hodiny tikají na teoretické hodnotě 1193181,8181 ... Hz , tj. Jedna třetina frekvence subnosné barvy NTSC , která vychází z dělení systémových hodin (14,31818 MHz ) do 12. Jedná se o pozdržení prvních počítačů CGA - odvodily všechny potřebné frekvence z jediného krystalu křemene a aby byl možný televizní výstup, musel tento oscilátor pracovat na násobku frekvence nosné barvy NTSC.

Jak je uvedeno výše, kanál 0 je implementován jako čítač. Počáteční hodnota čítače se obvykle nastavuje odesláním bajtů do ovládacího prvku, poté se registruje datový I / O port (hodnota 36h odeslaná na port 43h, pak dolní bajt na port 40h a port 40h znovu pro vysoký bajt) . Počítadlo počítá na nulu, pak pošle hardwaru přerušení (IRQ 0, INT 8) k procesoru . Počítadlo se poté resetuje na počáteční hodnotu a začne znovu odpočítávat. Nejrychlejší možná frekvence přerušení je něco málo přes půl megahertzu. Nejpomalejší možná frekvence, kterou obvykle používají počítače se systémem MS-DOS nebo kompatibilní operační systémy, je přibližně 18,2 Hz. V těchto operačních systémech v reálném režimu systém BIOS akumuluje počet volání INT 8, která přijímá v adrese 0040: 006c v reálném režimu, který může program načíst.

Jak časovač odpočítává, jeho hodnotu lze také číst přímo čtením jeho I / O portu dvakrát , nejprve pro nízký bajt a poté pro vysoký bajt. Ve volně běžících aplikacích čítačů, jako je počítač x86, je však nutné nejprve zapsat příkaz západky pro požadovaný kanál do řídicího registru, aby oba přečtené bajty patřily jedné a stejné hodnotě.

Podle dokumentu Microsoft z roku 2002 „protože čtení a zápis na tento hardware [8254] vyžaduje komunikaci přes port IO, programování trvá několik cyklů, což je pro OS neúnosně nákladné. Z tohoto důvodu se neperiodická funkce nepoužívá v praxi."

Viz také

  • LAPIC poskytuje programovatelný časovač
  • HPET

Reference

Další čtení

externí odkazy