Tuesday, September 25, 2018

Textual description of firstImageUrl

Intel 8253 - Wikipedia


Programmierbarer Intervall-Timer Intel 8253 . Intel 8254 hat die gleiche Pinbelegung.

Die Intel 8253 und 8254 sind programmierbare Intervall-Timer (PITs), die Zeit- und Zählfunktionen mit drei 16 ausführen -Bit-Musikzähler. [1]

Die 825x-Familie wurde hauptsächlich für Intel 8080/8085-Prozessoren entwickelt, später jedoch in x86-kompatiblen Systemen verwendet. Die 825x-Chips oder äquivalente Schaltungen, die in einen größeren Chip eingebettet sind, sind in allen IBM PC-kompatiblen Geräten enthalten.

Bei PC-kompatiblen Geräten wird der Timerkanal 0 dem IRQ-0 (dem Hardware-Interrupt mit der höchsten Priorität) zugewiesen. Der Timerkanal 1 ist der DRAM-Aktualisierung zugeordnet (zumindest in frühen Modellen vor dem 80386). Der Timer-Kanal 2 ist dem PC-Lautsprecher zugewiesen.

Die Intel 82c54-Variante (c für CMOS-Logik) verarbeitet Taktsignale von bis zu 10 MHz. [1]

History [ edit ]

Die 8253 ist in der Intel "Component" von 1980 beschrieben Veröffentlichung des Datenkatalogs. Der 8254, der als Obermenge des 8253 mit höheren Taktraten beschrieben wird, enthält ein "vorläufiges" Datenblatt im Intel "Component Data Catalog" von 1982.

Der 8254 ist in HMOS implementiert und verfügt über einen "Read Back" -Befehl, der bei 8253 nicht verfügbar ist, und ermöglicht das Lesen und Schreiben desselben Zählers. Interleaving [2]

Modern PC Kompatibel, entweder bei Verwendung des -Systems auf einem Chip CPUs oder diskrete Chipsätze implementieren in der Regel die vollständige 8254-Kompatibilität für Abwärtskompatibilität und Interoperabilität. Der Rücklesebefehl ist eine wichtige E / A-Funktion für die Interoperabilität mit Multicore-CPUs und GPUs.

Features [ edit ]

Blockdiagramm von Intel 8253

Der Timer verfügt über drei Zähler, die von 0 bis 2 nummeriert sind. [3] Jeder Kanal kann programmiert sein, um in einem von sechs Modi zu arbeiten. Einmal programmiert, arbeiten die Kanäle unabhängig voneinander. [1]

Jeder Zähler verfügt über zwei Eingangspins "CLK" (Takteingang) und "GATE" - und einen Pin "OUT" für die Datenausgabe . Die drei Zähler sind unabhängig voneinander 16-Bit-Abwärtszähler und können leicht von der CPU gelesen werden. [4]

  • Der Datenbuspuffer enthält die Logik zum Puffern des Datenbusses zwischen dem Mikroprozessor und den internen Registern. Es hat 8 Eingangspins, die normalerweise als D7..D0 bezeichnet werden, wobei D7 das MSB ist.
  • Die Lese / Schreib-Logik hat 5 Pins, die unten aufgeführt sind. Das " X " bedeutet, dass X ein aktives Low-Signal ist.
    • RD : Lesesignal
    • WR : Schreibsignal
    • CS : Chipauswahlsignal
    • A0, A1: Adressleitungen

Operation Der PIT-Modus wird durch Einstellen der obigen Hardwaresignale geändert. Um zum Beispiel in das Steuerwortregister zu schreiben, muss man CS = 0, RD = 1, WR = 0, A1 = A0 = 1 setzen .

  • Das Steuerwortregister enthält die programmierten Informationen, die (vom Mikroprozessor) an das Gerät gesendet werden. Sie legt fest, wie jeder Kanal der PIT logisch funktioniert. Jeder Zugriff auf diese Ports dauert etwa 1 µs.

Um die Zähler zu initialisieren, muss der Mikroprozessor ein Steuerwort (CW) in dieses Register schreiben. Dies kann durch Einstellen der korrekten Werte für die Pins des Read / Write Logic-Blocks und anschließendes Senden des Steuerworts an den Data / Bus Buffer-Block erfolgen.

Das Steuerwortregister enthält 8 Bits, die mit D7..D0 bezeichnet sind (D7 ist das MSB). Die Dekodierung ist etwas komplex. Die meisten Werte legen die Parameter für einen der drei Zähler fest:

  • Die höchstwertigen zwei Bits (falls nicht 11) wählen das Zählerregister aus, für das der Befehl gilt.
  • Die nächsten zwei Bits (falls nicht 00) wählen das Format aus, das für den nachfolgenden Lese- / Schreibzugriff auf den Zähler verwendet wird registrieren. Dies ist im Allgemeinen auf einen Modus festgelegt, in dem die Zugriffe zwischen den niedrigstwertigen und den höchstwertigen Bytes wechseln. Ein Unterschied zwischen 8253 und 8254 besteht darin, dass der erste ein internes Bit hatte, das sowohl Lese- als auch Schreibvorgänge betraf. Wenn also das Format auf 2 Byte gesetzt wurde, würde das Lesen des lsbyte dazu führen, dass ein nachfolgender Schreibvorgang an das msbyte gerichtet wird. Der 8254 verwendete separate Bits für Lese- und Schreibvorgänge.
  • Die nächsten drei Bits wählen den Modus aus, in dem der Zähler arbeiten soll.
  • Das niedrigstwertige Bit legt fest, ob der Zähler binär oder als BCD arbeitet. (BCD-Zählung wird fast nie verwendet und wird möglicherweise in Emulatoren oder Südbrücken nicht richtig implementiert.)

Es gibt jedoch zwei weitere Formen:

  • Latch den Zähler für einen bestimmten Timer. Beim nächsten Lesen wird der Zählerwert im Moment des Lesens nicht zurückgegeben, sondern im Moment des Latchbefehls. Nach Abschluss des Lesevorgangs geben spätere Lesevorgänge den aktuellen Zähler zurück. Wenn der Latch-Befehl verwendet wird, werden Modus und BCD-Status nicht geändert.
  • (nur 8254) Latch den Status und / oder die Zählung für mehrere Timer. Dies ermöglicht mehrere gleichzeitige Latch-Befehle unter Verwendung einer Bitmap. Zusätzlich zu der Zählung kann auch die aktuelle Kanalkonfiguration zurückgelesen werden.
8253/8254 Steuerwort
Bit # / Name Kurze Beschreibung
D7
SC1
D6
SC2
D5
RW1
D4
RW0
D3
M2
D2
M1
D1
M0
D0
BCD
0 0 Format Modus BCD Modus für Zähler 0 einstellen
0 1 Format Modus BCD Modus für Zähler 1 einstellen
1 0 Format Modus BCD Modus für Zähler 2 einstellen (an Port 42h)
1 1 Graf Status C2 C1 C0 x Rücklesebefehl (nur 8254)
Zähler 0 0 - x - Latch-Zählerwert. Beim nächsten Lesen des Zählers wird eine Momentaufnahme des Werts gelesen.
Zähler 0 1 Modus BCD Nur niedriger Byte-Zählerwert lesen / schreiben
Zähler 1 0 Modus BCD Nur High Byte des Zählerwerts lesen / schreiben
Zähler 1 1 Modus BCD 2 × Read / 2xWrite Low Byte, dann High Byte Zählerwert
Zähler Format 0 0 0 BCD Modus 0: Unterbrechung der Terminalzählung
Zähler Format 0 0 1 BCD Modus 1: Zurücksetzbare Hardware-Einzelaufnahme
Zähler Format x 1 0 BCD Modus 2: Ratengenerator
Zähler Format x 1 1 BCD Modus 3: Rechteckwelle
Zähler Format 1 0 0 BCD Modus 4: Durch Software ausgelöster Blitz
Zähler Format 1 0 1 BCD Modus 5: Hardware-getriggerter Strobe (nachtriggerbar)
Zähler Format Modus 0 Counter ist ein 16-Bit-Binärzähler (0–65535)
Zähler Format Modus 1 Zähler ist ein 4-stelliger binärcodierter Dezimalzähler (0–9999).
1 1 Graf Status C2 19659039] C1 C0 x Rücklesebefehl (nur 8254)
1 1 0 0 C2 C1 C0 x Beim nächsten Lesen der ausgewählten Zähler wird der zwischengespeicherte Status zurückgelesen und dann gezählt
1 1 0 1 C2 C1 C0 x Beim nächsten Lesen ausgewählter Zähler wird der zwischengespeicherte Zählerstand zurückgelesen
1 1 1 0 C2 C1 C0 x Beim nächsten Lesen ausgewählter Zähler wird der zwischengespeicherte Status zurückgelesen
1 1 1 1 C2 C1 C0 x Tut nichts (sperrt nichts an einem oder allen Zählern)
1 1 Graf Status 0 0 0 x Nichts tun (Latch Count und / oder Status bei keinem Zähler)
1 1 Graf Status 1 C1 C0 x Der Rücklesebefehl gilt für Zähler 2
1 1 Graf Status C2 1 C0 x Der Rücklesebefehl gilt für Zähler 1
1 1 Graf Status C2 C1 1 x Der Rücklesebefehl gilt für Zähler 0

Beim Einstellen der PIT sendet der Mikroprozessor zuerst eine Kontrollnachricht und dann eine Zählnachricht an die PIT. Der Zählvorgang beginnt, nachdem die PIT diese Meldungen erhalten hat und in einigen Fällen die steigende Flanke des Eingangssignals GATE erkennt. Statusbyteformat. Mit Bit 7 kann die Software den aktuellen Status des OUT-Pins überwachen. Bit 6 zeigt an, wann der Zählerstand gelesen werden kann. Wenn dieses Bit 1 ist, wurde das Zählelement noch nicht geladen und kann vom Prozessor nicht zurückgelesen werden. Die Bits 5 bis 0 sind die gleichen wie die letzten in das Steuerregister geschriebenen Bits.

8254-Statuswort
Bit # / Name Kurze Beschreibung
D7
Ausgabe
Status
D6
null
zählt
D5
RW1
D4
RW0
D3
M2
D2
M1
D1
M0
D0
BCD
0 Out-Pin ist 0
1 Out-Pin ist 1
0 Zähler kann gelesen werden
1 Der Zähler wird eingestellt
Format Modus BCD Zählermodusbits, wie für das Steuerwortregister definiert

Betriebsmodi [ edit ]

Die Bits D3, D2 und D1 des Steuerworts legen den Betriebsmodus des Timers fest. Insgesamt gibt es 6 Modi. Für die Modi 2 und 3 wird das D3-Bit ignoriert, sodass die fehlenden Modi 6 und 7 Aliasnamen für die Modi 2 und 3 sind.

Alle Modi reagieren empfindlich auf den Eingang GATE, wobei GATE High den Normalbetrieb verursacht, aber die Auswirkungen von GATE Low hängen vom Modus ab:

  • Modi 0 und 4: Die Zählung wird angehalten, während GATE niedrig ist, und fortgesetzt, während GATE hoch ist.
  • Modi 1 und 5: Die steigende Flanke von GATE beginnt zu zählen. GATE kann ohne Auswirkung auf das Zählen auf niedrig gehen, aber eine andere steigende Flanke startet den Zählvorgang von Anfang an.
  • Modus 2 und 3: GATE low zwingt OUT sofort (ohne auf einen Takt zu warten) auf High und setzt den Zähler (auf den nächsten) zurück fallende Flanke der Uhr). Wenn GATE wieder hoch geht, beginnt die Zählung wieder von vorn.

Modus 0 (000): Unterbrechung der Terminalzählung [ edit ]

Modus 0 wird zur Erzeugung einer genauen Zeit verwendet Verzögerung unter Softwaresteuerung. In diesem Modus beginnt der Zähler vom anfänglichen COUNT-Wert bis auf 0 zu zählen. Die Zählrate ist gleich der Eingangstaktfrequenz.

Der OUT-Pin wird nach dem Schreiben des Steuerworts auf Low gesetzt und das Zählen beginnt einen Takt nach der Programmierung von COUNT. OUT bleibt niedrig, bis der Zähler 0 erreicht. Zu diesem Zeitpunkt wird OUT hoch gesetzt, bis der Zähler neu geladen wird oder das Steuerwort geschrieben wird. Der Zähler läuft intern intern auf 0xFFFF und zählt weiter, aber der OUT-Pin ändert sich nie mehr. Das Gate-Signal sollte für normales Zählen aktiv bleiben. Wenn das Gate niedrig wird, wird die Zählung unterbrochen und wieder aufgenommen, wenn es wieder hoch geht.

Wenn das erste Byte des neuen Zählwerts in das Zählregister geladen wird, wird der vorherige Zählwert angehalten.

Modus 1 (001): programmierbares One Shot [ edit ]

In diesem Modus kann 8253 als Monostabiler Multivibrator verwendet werden. Der Eingang GATE wird als Triggereingang verwendet.

OUT wird anfänglich hoch sein. OUT geht nach einem Trigger zum Beginn des One-Shot-Pulses auf Low und bleibt auf Low, bis der Zähler Null erreicht. OUT geht dann hoch und bleibt bis zum CLK-Impuls nach dem nächsten Trigger hoch.

Nach dem Schreiben des Steuerworts und der Anfangszählung ist der Zähler scharfgeschaltet. Ein Trigger führt dazu, dass der Zähler geladen und beim nächsten CLK-Impuls auf OUT gesetzt wird, wodurch der One-Shot-Impuls ausgelöst wird. Eine anfängliche Zählung von N führt zu einer Dauer eines Ein-Impuls-Impulses von N CLK.

Der One-Shot ist nachtriggerbar, daher bleibt OUT nach jedem Trigger für N CLK-Impulse niedrig. Der einmalige Impuls kann wiederholt werden, ohne dass derselbe Zählerstand erneut in den Zähler geschrieben wird. GATE hat keine Auswirkung auf OUT. Wenn ein neuer Zählwert während eines One-Shot-Impulses in den Zähler geschrieben wird, ist der aktuelle One-Shot-Modus nicht betroffen, es sei denn, der Zähler wird erneut ausgelöst. In diesem Fall wird der Zähler mit dem neuen Zählerstand geladen und der Ein-Impuls-Impuls wird fortgesetzt, bis der neue Zählerstand abgelaufen ist.

Modus 2 (X10): Ratengenerator [ edit ]

In diesem Modus fungiert das Gerät als Division-by-n-Zähler, der üblicherweise zur Erzeugung eines Real verwendet wird -Uhrzeit Interrupt.

Wie bei anderen Modi startet der Zählvorgang den nächsten Taktzyklus, nachdem COUNT gesendet wurde. OUT bleibt dann auf High, bis der Zähler 1 erreicht, und geht für einen Takt auf Low. Im folgenden Zyklus wird die Zählung erneut geladen, OUT geht wieder hoch und der gesamte Vorgang wiederholt sich.

Die Zeit zwischen den hohen Impulsen hängt von der voreingestellten Anzahl im Zähler des Zählers ab und wird nach folgender Formel berechnet:

In den Zähler zu ladender Wert =

Man beachte, dass die Werte im COUNT-Register von bis 1 reichen; Das Register erreicht niemals Null.

Modus 3 (X11): Rechteckgenerator [ edit ]

Dieser Modus ist dem Modus 2 ähnlich. Die Dauer der hohen und niedrigen Taktimpulse des Ausgangs ist jedoch gleich unterscheidet sich von Modus 2.

Angenommen, ist die in den Zähler geladene Zahl (die COUNT-Nachricht), die Ausgabe wird für zählt und niedrig für zählt. Somit ist die Periode Zählungen, und wenn Modus 4 (100): Durch Software ausgelöster Strobe [ edit ]

Nachdem Steuerwort und COUNT geladen wurden, bleibt der Ausgang hoch, bis der Zähler den Wert Null erreicht. Der Zähler erzeugt dann für einen Taktzyklus (einen Strobe) einen niedrigen Impuls - danach wird der Ausgang wieder hoch.

GATE low setzt die Zählung aus, die wieder aufgenommen wird, wenn GATE wieder auf high geht.

Modus 5 (101): Hardware Triggered Strobe [ edit ]

Dieser Modus ähnelt dem Modus 4. Der Zählvorgang wird jedoch durch den Eingang GATE ausgelöst.

Nach Erhalt des Steuerworts und der Zählung wird der Ausgang auf Hoch gesetzt. Sobald das Gerät eine steigende Flanke am Eingang GATE erkennt, beginnt es zu zählen. Wenn der Zähler den Wert 0 erreicht, wird der Ausgang für einen Taktzyklus auf Low gesetzt - danach wird er wieder auf High gesetzt, um den Zyklus bei der nächsten steigenden Flanke von GATE zu wiederholen.

Tipps und Hinweise zum Programmieren von IBM PC [ edit ]

Die 8253 wurde seit ihrer Einführung im Jahr 1981 in IBM PC-kompatiblen Geräten verwendet. [5] In der heutigen Zeit ist dieses PIT nicht enthalten als separater Chip in einem x86-PC. Die Funktionalität ist vielmehr Bestandteil der Southbridge des Motherboard-Chipsets. In einem modernen Chipsatz kann sich diese Änderung in Form eines deutlich schnelleren Zugriffs auf die Register der PIT im x86-E / A-Adressraum zeigen.

Alle PC-kompatiblen Geräte betreiben die PIT mit einer Taktrate von 105/88 = 1,193 18 MHz, 1 [1945 3 der NTSC-Farbburstfrequenz. Diese Frequenz, dividiert durch 2 16 (der größte Divisor, den der 8253 ausführen kann) erzeugt den in MS-DOS und verwandten Betriebssystemen verwendeten ~ 18,2 Hz-Timer-Interrupt.

In den Original-IBM-PCs wird mit Counter 0 ein Zeitgeber-Interrupt generiert. Mit dem Zähler 1 (A1 = 0, A0 = 1) wird die Auffrischung des DRAM-Speichers ausgelöst. Der letzte Zähler (A1 = 1, A0 = 0) dient zur Erzeugung von Tönen über den PC-Lautsprecher.

Neuere Motherboards enthalten zusätzliche Zähler über das Advanced Configuration and Power Interface (ACPI), einen Zähler auf dem lokalen erweiterten programmierbaren Interrupt-Controller (Local APIC) und einen High Precision Event Timer. Die CPU selbst bietet auch die Funktion Time Stamp Counter (TSC).

Bei PCs befindet sich die Adresse für den Timer 0 (Chip) an Port 40h..43h und der zweite Timer1 (Chip) an 50h..53h.

Auf x86-PCs wird der zweite Zähler von vielen Grafikkarten-BIOS und System-BIOS für die eigene Verwendung neu programmiert. Die Neuprogrammierung erfolgt typischerweise während Videomodusänderungen, wenn das Video-BIOS ausgeführt werden kann, und während des Systemverwaltungsmodus und Änderungen des Energiesparmodus, wenn das System-BIOS ausgeführt wird. Dies verhindert jegliche ernsthafte alternative Verwendung des Sekundenzählers des Timers auf vielen x86-Systemen.

Der Timer, den das System auf x86-PCs verwendet, ist Kanal 0 und sein Takt tickt bei einem theoretischen Wert von 1193181.8181 ... Hz, dh einem Drittel der NTSC-Farbhilfsträgerfrequenz, die aus der Unterteilung des Systemtakts stammt (14.31818 MHz) um 12. Dies ist ein Überbleibsel der ersten CGA-PCs - sie leiten alle erforderlichen Frequenzen aus einem einzigen Quarzkristall ab. Um die TV-Ausgabe zu ermöglichen, musste dieser Oszillator mit einem Vielfachen der NTSC-Farbunterträgerfrequenz laufen .

Wie bereits erwähnt, ist Kanal 0 als Zähler implementiert. Normalerweise wird der Anfangswert des Zählers durch Senden von Bytes an die Steuer- und Daten-E / A-Portregister festgelegt (der Wert 36h wird an Port 43h gesendet, dann das Low-Byte an Port 40h und Port 40h erneut für das High-Byte). . Der Zähler zählt bis auf Null und sendet dann einen Hardware-Interrupt (IRQ 0, INT 8) an die CPU. Der Zähler wird dann auf den ursprünglichen Wert zurückgesetzt und beginnt erneut zu zählen. Die schnellstmögliche Interruptfrequenz beträgt etwas mehr als ein halbes Megahertz. Die langsamste mögliche Frequenz, die normalerweise auch von Computern verwendet wird, auf denen MS-DOS oder kompatible Betriebssysteme ausgeführt werden, liegt bei 18,2 Hz. Unter diesen Real-Modus-Betriebssystemen sammelt das BIOS die Anzahl von INT 8-Aufrufen, die es in Real-Modus-Adresse 0040: 006c empfängt, die von einem Programm gelesen werden kann.

Wenn ein Timer abwärts zählt, kann sein Wert auch direkt abgelesen werden, indem der E / A-Anschluss zweimal gelesen wird zuerst für das Low-Byte und dann für das High-Byte. In freilaufenden Zähleranwendungen wie dem x86-PC muss jedoch zuerst ein Latchbefehl für den gewünschten Kanal in das Steuerregister geschrieben werden, so dass beide gelesenen Bytes zu ein und demselben Wert gehören.

Laut einem Microsoft-Dokument aus dem Jahr 2002 "erfordert das Lesen und Schreiben auf diese Hardware [8254] die Kommunikation über einen E / A-Port, und die Programmierung erfordert mehrere Zyklen, was für das Betriebssystem unerschwinglich ist. Aufgrund dessen ist die aperiodische Funktionalität wird in der Praxis nicht verwendet. "[6]

Siehe auch [ edit ]

  • Die LAPIC stellt auch einen programmierbaren Timer
  • bereit. HPET

References [[1945659]] ]

Weiterführende Literatur [ edit ]

  • Gilluwe, Frank van. Der undokumentierte PC . A-W Developers Press, 1997. ISBN 0-201-47950-8

Externe Links [ edit ]

No comments:

Post a Comment