Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
179,06 KB
Nội dung
421 6.8.2 Die Betriebsarten des 8253/8254 Der Zähler 2 kann vom Anwender für sechs verschiedene Betriebsarten program- miert werden. Ein typischer Wert für die Frequenz an den Clock-Eingängen ist 1,19 MHz, die von einem Taktgenerator auf dem Mainboard erzeugt wird. Der Gate-Eingang des Zählers 2 wird von Bit 1 des Ports B des PIO-Bausteins gesteu- ert, der im folgenden Kapitel näher beschrieben wird. Der Mode 0, Interrupt bei Zählernulldurchgang Der Ausgang des Zählers (Output Interrupt) geht nach Empfang des Control Word auf Low. Der Zählvorgang beginnt nach dem Laden des Zählerstands, getaktet durch CLK, und der Ausgang wird High, wenn der Zählerstand »Null« erreicht wird. Im obigen Bild wurde ein Zählerwert von 4 eingegeben. In diesem Zustand verharrt der Ausgang, bis ein neuer Zählerstand geladen wird. Bild 6.49: Der PIT-Mode 0 Der Zähler kann durch ein Low am GATE-Eingang unterbrochen werden. Der Zähler- stand wird »festgehalten«, und durch ein High wird wieder weitergezählt. Im un- teren Teil des Bildes ist dieses Verhalten zu erkennen. Der Mode 1, retriggerbares Monoflop Der Ausgang (OUTPUT) ist zu Beginn High. Der Zähler wird durch eine ansteigende Flanke am GATE-Eingang (Trigger) gestartet, und der Ausgang geht auf LOW. Nach Erreichen des Zählerstandes »Null« stoppt der Zähler, und der Ausgang geht wieder auf High. Das Verhalten entspricht dem einer monostabilen Kippstufe. Der Zählerstand kann nun neu gesetzt werden und wird wieder mit einer anstei- genden Flanke an GATE (Trigger) übernommen. Mainboard-Elektronik Teil 4 · Mainboard-Elektronik 422 Bild 6.50: Der PIT-Mode 1 Wenn ein Gate-Impuls angelegt wird, bevor der Zählerstand »Null« geworden ist, hat dies keinen Einfluss auf die laufende Funktion, denn der neue Wert wird erst nach Ablauf des Zählers und dem folgenden Triggerimpuls aktiviert. Diese Verhal- tensweise ist dem Bild 3.16 zu entnehmen. Der Mode 2, Frequenzteiler Der Ausgang wird für eine Periode des CLK-Signals Low. Die Periode von einem Ausgangsimpuls bis zum nächsten entspricht dem Anfangszählerstand. Wenn das Zählregister zwischen zwei Impulsen neu geladen wird, ist die Änderung erst in der nächsten Periode wirksam. Der Zähler wird bei Nulldurchgang automatisch neu gesetzt und gestartet, der Vorgang setzt sich laufend fort. Bild 6.51: Der PIT-Mode 2 Der GATE-Eingang kann zur Synchronisation des Zählers verwendet werden. Durch eine fallende Flanke an GATE (Reset) wird der Zählvorgang abgebrochen, und der Ausgang geht auf High. Eine steigende Flanke an GATE startet einen neuen Zyklus. 423 Der Mode 3, Generator mit symmetrischem Ausgangssignal Der Mode 3 entspricht im Prinzip dem Mode 2 mit dem Unterschied, dass die Eingangs- frequenz in eine kleinere geteilt wird. Der Anfangswert des Zählers wird durch zwei geteilt, wodurch ein nahezu gleiches Verhältnis von der High- zur Low-Signaldauer erreicht wird. Bild 6.52: Der PIT-Mode 3 Der Ausgang bleibt so lange auf High, bis der halbe Zähleranfangswert erreicht ist, und wird Low für die andere Hälfte der Zeit. Bei ungeraden Anfangswerten liegt der Ausgang eine Taktperiode länger auf High- als auf Low-Pegel. Ein neuer Zyklus wird automatisch gestartet. Der Mode 4, softwaregesteuerter Triggerimpuls Nach dem Laden des Zählerstands startet der Zähler. Der Ausgang ist zu Beginn High und wird dann für die Dauer einer Taktperiode Low, wenn der Zählerstand »Null« erreicht ist. Der Vorgang wiederholt sich nicht automatisch, sondern muss durch erneutes Laden des Zählerstandes eingeleitet werden. Ein neuer Wert für den Zählerstand kann während des Zählens geladen werden und wird beim nächsten CLK-Impuls aktiviert. Durch ein Low am GATE-Eingang wird der Zähler angehalten, mit einem High am GATE-Eingang wird weitergezählt. Bild 6.53: Der PIT-Mode 4 Mainboard-Elektronik Teil 4 · Mainboard-Elektronik 424 Der Mode 5, hardwaregesteuerter Triggerimpuls Der Mode 5 entspricht dem Mode 4, allerdings mit dem Unterschied, dass der Zähler mit der steigenden Flanke am GATE-Eingang gestartet wird. Durch jede ansteigende Flanke am GATE startet der Zähler erneut (retriggerbar). Bild 6.54: Der PIT-Mode 5 6.8.3 Programmierung der Zähler Der erste Schritt ist das Einschreiben der Konfiguration in das Steuerregister (Control Word Register). Der Zähler wird mit SC1 und SC0 festgelegt (siehe Tabelle). Welches Byte geschrieben werden soll (MSB, LSB), wird mit RL1 und RL0 bestimmt. Die Betriebsart wird mit M2-M0 und die Zählerart mit dem Bit BCD bestimmt. Danach wird der gewünschte Zählerstand in das Zähler-Register-2 (Counter 2) geschrieben. Wichtig ist, dass immer alle drei Zähler konfiguriert sein müssen, auch wenn nur ein Zähler benötigt wird, denn andernfalls zeigt der Baustein ein Fehlverhalten. Wird ein 16-Bit-Zähler gewünscht, wird normalerweise im ersten Schritt das LSB (Least Significant Bit) geschrieben, danach das MSB (Most Significant Bit). Dafür wird zuvor in das Kontrollregister für RL1 und RL0 jeweils eine »1« geschrieben. Nach zweimaligem Schreiben ist der Zählerstand dann geladen. Die Übernahme in das Zählregister erfolgt aber erst, wenn ein positiver Impuls am Takteingang ange- legen hat. Für den Betrieb als Binärzähler ist der höchste Wert 10.000 und für den Dezimal- zähler 65.536. Der Wert wird bei jedem Taktimpuls um eins erniedrigt (dekrementiert). Die Reihenfolge der Programmierung – zuerst Kontrollregister, dann Zählerstand schreiben – ist nicht zwingend. Es können auch zuerst dreimal das Kontrollregister (einmal für jeden Zähler) beschrieben und dann die drei Zählerstände angegeben werden. Eine Applikation mit dem Timer 8253/8254 wird im Teil 11 beschrieben, und dort befindet sich auch ein Listing, welches die Programmierung noch etwas verdeut- licht. 425 6.8.4 Zählerstand und Status ermitteln Das Lesen der Zählerstände kann auf verschiedene Arten erfolgen: > In den Betriebsarten 0, 2, 3 und 4 durch ein Low am GATE-Eingang. Dadurch wird der Zählerstand »festgehalten«, und man kann ihn auslesen. Im ersten Lesezugriff wird das LSB, im zweiten das MSB ausgelesen. > RL0 und RL1 werden im Kontrollregister auf Low gesetzt, dann wird der Zählers- tand gespeichert und kann ausgelesen werden. > Ohne den Zähler zu beeinflussen, kann der Zählerstand durch eine Zwischen- speicherung des aktuellen Wertes ausgelesen werden. Nach dem Schreiben eines speziellen Befehls in das Steuerregister wird der Zählerstand zwischengespeichert und kann mit einem normalen Lesebefehl ausgelesen werden. Dieser spezielle Befehl zum Auslesen des Zählerstandes hat das folgende Format: Latching Counter Command: D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 0 0 X X X X Mit SC1 und SC0 wird der Zähler angewählt, dessen Stand gespeichert werden soll. D5 und D4 = 0 signalisieren dem Zähler, dass eine Zwischenspeicherung stattfinden soll. Der 8254-PIT verfügt über einen zusätzlichen Befehl (Read Back Command), mit dessen Hilfe der Mode und der Zählerstand eines jeden Zählers abgefragt werden können. Hierfür wird das folgende Byte in das Kommandoregister geschrieben: Read Back Command (nur 8254): D7 D6 D5 D4 D3 D2 D1 D0 1 1 /Count /Status CNT2 CNT1 CNT0 0 Mit den CNTx-Bits wird der gewünschte Zähler ausgewählt. Es können gleichzeitig alle drei Zählerwerte (CNT0-CNT2=1) gelatched werden. Der Read-Back-Befehl ist daher mit der Ausführung dreier Latching-Counter-Befehle identisch. Die Werte werden so lange im jeweiligen Counter-Latch festgehalten, bis sie ausgelesen wor- den sind. Für das Auslesen der Zählerstände müssen sich das Bit D5 (/Count) auf LOW und das Bit D4 (/Status) auf HIGH befinden. Für das Auslesen der programmierten Betriebsart (Status) und des Ausgangs (OUTx) wird hingegen das Bit D5 (/COUNT) auf HIGH und das Bit D4 (STATUS) auf LOW gesetzt. Auch hier können mittels der CNTx-Bits mehrere Zähler ausgewählt wer- den. Das jeweilige Statusbyte eines Zählers kann daraufhin durch einen Lesebefehl an das entsprechende Counter-Register ermittelt werden. Hierfür gilt ebenfalls, dass die zuvor angewählten Zähler ausgelesen werden müssen (!), damit die Latches wieder gelöscht werden. Das Statusbyte hat das folgende Format: Mainboard-Elektronik Teil 4 · Mainboard-Elektronik 426 Status-Byte der Zähler ( nur 8254): D7 D6 D5 D4 D3 D2 D1 D0 Output Null Count RL1 RL0 M2 M1 M0 BCD Das Manko des 8253, dass nicht kontrolliert werden kann, ob der programmierte Mode auch wirklich vom PIT korrekt übernommen worden ist und in welchem Zu- stand sich die einzelnen Zählerausgänge befinden, ist durch die Lesemöglichkeit der Statusbytes ausgeräumt worden. Die Bits D0 bis D5 entsprechen der Belegung des Control Word Register. Das Bit D6 (Null Count) signalisiert, ob der zuletzt geschriebene Zählerwert bereits in den Zähler gelangt ist. Das Lesen eines Counters ist erst dann sinnvoll und liefert auch erst dann einen aktuellen Wert, wenn dieses Bit = LOW ist. Das Bit D7 (Output) enthält den Zustand des jeweiligen Zählerausgangs (OUTX- Pin). Ist es HIGH, befindet sich der entsprechende Zählerausgang auf High-Poten- tial. 6.9 Der Portbaustein 8255 Der Baustein 8255 ist lediglich auf den Mainboards mit einem 8088 oder 8086 zu finden. Er übernimmt das Einlesen von Schalterstellungen wie Speichergröße und Laufwerkstyp und die Kommunikation mit der Tastatur. In Computern mit minde- stens einem 80286-Prozessor (AT) ist er nicht zu finden, denn hier übernimmt ein Mikrocontroller die Tastatursteuerung, und das CMOS-RAM enthält die Angaben für die Systemkonfiguration. Der 8255 ist dennoch ein sehr interessantes Bauelement, welches als Standard- element für die parallele Aus- und Eingabe von Daten dient. Die Druckerschnittstelle (Centronics) ist mit dem 8255 oder einem hiermit kompatiblen Baustein aufge- baut. Im Teil 11 wird dieser Chip in verschiedenen Applikationen eingesetzt. In der Version 8255A ist er bis zu einer Frequenz von 4 MHz zu verwenden. Mit dem 8255-2-Baustein können dagegen Frequenzen bis zu 8 MHz verarbeitet werden. Als CMOS-Version – in der stromsparenden Version – ist er ebenfalls erhältlich. 427 Bild 6.55: Den Portbaustein 8255 gibt es von verschiedenen Herstellern (Intel, AMD, NEC, OKI) und in unterschiedlichen Gehäusetypen 6.9.1 Anschlüsse und Betriebsarten Der Port-Baustein 8255 – auch als PIO, Parallel Input Output-Chip, bezeichnet – stellt insgesamt 24 TTL-Ein-/Ausgabeleitungen zur Verfügung. Diese Leitungen sind in drei Ports zu je 8 Bit aufgeteilt. Die Ports heißen Port A, Port B und Port C und können verschieden konfiguriert werden, wie es noch genau erläutert wird. Mainboard-Elektronik Teil 4 · Mainboard-Elektronik 428 Bild 6.56: Der Portbaustein 8255, (PIO, Parallel Input Output) ist das Standardbauelement für den Aufbau von parallelen Schnittstellen und wird für die unterschiedlichsten PC-Karten verwendet Signal Bedeutung/Funktion A0 und A1 Adressenleitungen, die in Verbindung mit den Lese- und Schreib- signalen (/RD, /WR) die einzelnen Register selektieren. /CS Chip Select. Ein Low aktiviert den Baustein. Das Signal wird durch eine Adressendekodierungsschaltung erzeugt. D0-D7 Datenleitungen zur Verbindung des Bausteins mit dem Adressbus. GND Ground, der Masseanschluss. PA0-PA7 Signale des Port A. PB0-PB7 Signale des Port B. PC0-PC7 Signale des Port C. Reset Ein High löscht alle Ports und das Control Word Register. /RD Lesesignal. Ein Low bedeutet, dass Daten vom 8255 zur CPU gesen- det werden. VCC Versorgungsspannungsanschluss (5V). /WR Schreibsignal. Ein Low bedeutet, dass Daten von der CPU zum 8255 gesendet werden. Tabelle 6.21: Anschlussbeschreibung PIO 8255 429 Selektiert ist der 8255 bei einem Low am /CS-Eingang (Chip Select), und ein High- Impuls am Reset-Eingang löscht alle Ports sowie den Inhalt des Control Word Regi- ster. Leider ist das Reset-Signal, welches sich auch am PC-Slot befindet, bei den Intel-typischen Prozessoren Low-aktiv. Für den Port-Baustein muss das Signal da- her invertiert werden, was somit zusätzliche Logik – einen Inverter – erfordert. Mit Hilfe der Adressleitungen A0 und A1 werden jeweils die vier einzelnen Register angewählt, die mit einem aktiven (Low) Signal an /WR (Write) beschrieben und mit einem Low an /RD (Read) über die Datenleitungen (D0-D7) gelesen werden. Die erwähnte Aufteilung der Ports sowie die Einstellung einer von drei möglichen Betriebsarten (Mode 0–Mode 2) wird im Control Word Register vorgenommen, das nur beschrieben, jedoch (leider) nicht gelesen werden kann, was ein direktes Über- prüfen der korrekten Datenübernahme ausschließt. > MODE 0 Port A und Port B können jeweils als 8-Bit-Ein- oder -Ausgang programmiert werden. Port C ist noch einmal in zwei Gruppen zu 4 Bit unterteilt, die wieder- um als Eingang oder Ausgang programmiert werden können. Die Ausgänge sind gelatched (es erfolgt eine Zwischenspeicherung der Daten), die Eingänge hingegen nicht. > MODE 1 Port A und Port B können als Ein- oder Ausgang programmiert werden. Port C stellt jeweils drei Handshake-Signale und ein Interrupt-Signal für Port A und Port B zur Verfügung. Die Handshake-Leitungen werden üblicherweise für die Kontrolle der Datenübernahme eingesetzt (von/zur Peripherie). Es kann bei- spielsweise festgestellt werden, ob die Daten von der angeschlossenen Peri- pherie übernommen worden sind, wodurch die Übertragungssicherheit gene- rell erhöht wird. > MODE 2 Port A wird als bidirektionaler Bus mit fünf Handshake-Signalen verwendet, welche Port C liefert. Die drei anderen Leitungen des Port C können dann noch als universelle I/O-Leitungen verwendet werden oder als »Handshake-Leitun- gen« für Port B, wenn er im Mode 1 verwendet wird. Der Port B kann als I/O- Port für Mode 1 oder Mode 2 verwendet werden. Zu jedem Port gehört außerdem ein eigenes Register, welches die zu sendenden oder die empfangenen Daten enthält. Demnach sind insgesamt vier Adressen für den Baustein von der Hardwareseite her zu dekodieren, was typischerweise wie folgt aussieht: Beispiel für die PIO-Anwendung auf einer PC-Karte: 300H: Port A 301H: Port B 302H: Port C 303h: Control Word Register Mainboard-Elektronik Teil 4 · Mainboard-Elektronik 430 Die Tabelle 6.22 zeigt das Verhalten des 8255 in Abhängigkeit von den Adress- und Steuersignalen. /CS A1 A0 /RD /WR Funktion 0 0 0 1 0 Schreiben Port A 0 0 1 1 0 Schreiben Port B 0 1 0 1 0 Schreiben Port C 0 1 1 1 0 Schreiben Control Word 0 0 0 0 1 Lesen Port A 0 0 1 0 1 Lesen Port B 0 1 0 0 1 Lesen Port C 0 1 1 0 1 keine (verboten) 1 X X X X 3 State (hochohmig) 0 X X 1 1 3 State (hochohmig) Tabelle 6.22: Die Funktionen des 8255 im Überblick 6.9.2 Festlegung der Betriebsart Der Inhalt des Control Word Register bestimmt neben der gewünschten Betriebsart die Übertragungsrichtung der Daten für die einzelnen Ports. Das Bit 7 (Mode Set Flag = MSF) aktiviert mit einer 1 die jeweils angegebene Konfiguration. [...]... D5 D4 D3 D2 D1 D0 1 0 1 1 C X X X High: PC6 , PC7 = Eingänge Low: PC6 , PC7 = Ausgänge Die folgenden Leitungen des Port C arbeiten für den Port A als Handshaking-Signale bei Datenempfang: PC 3, INTRA Interrupt-Ausgang; mit diesem Ausgang kann von der CPU eine Interrupt-Verarbeitung angefordert (Interrupt Request) werden Der Interrupt wird durch PC4 enabled (INTEA) PC 4, /STBA Strobe-Eingangsleitung; mit... D4 D3 D2 D1 D0 1 0 1 0 C X X X High: PC4 , PC5 = Eingänge Low: PC4 , PC5 = Ausgänge Die folgenden Leitungen des Ports C arbeiten für den Port A als HandshakingSignale beim Senden von Daten: PC 3, INTRA Interrupt-Ausgang; mit diesem Ausgang kann von der CPU eine Interrupt-Verarbeitung angefordert (Interrupt Request) werden Der Interrupt wird durch PC6 enabled (INTEA) PC 6, /ACKA Acknowledge-Eingangsleitung;... Port B als HandshakingSignale bei Datenempfang: PC 0, INTRB Interrupt-Ausgang, mit diesem Ausgang kann von der CPU eine Interrupt-Verarbeitung angefordert (Interrupt Request) werden Der Interrupt wird durch PC2 enabled (INTEB) PC 1, IBFB Input-Buffer-Full; bei einem High ist der Zwischenspeicher gefüllt Zurückgesetzt wird der Ausgang durch einen Lesezugriff PC 2, /STBB Strobe-Eingangsleitung; mit einer... Senden von Daten: PC 0, INTRB Interrupt-Ausgang mit diesem Ausgang kann von der CPU eine Interrupt-Verarbeitung angefordert (Interrupt Request) werden Der Interrupt wird durch PC2 enabled (INTEB) 434 Mainboard-Elektronik PC 1, /OBFB Output-Buffer-Full; der Ausgang wird Low, wenn die Daten zum Port B ausgegeben wurden Zurückgesetzt wird der Ausgang durch eine abfallende Flanke von /ACKB PC 2, /ACKB Acknowledge-Eingangsleitung;... Datenübernahme gekennzeichnet und der Ausgang /OBFA zurückgesetzt PC 7, /OBFA Output-Buffer-Full; der Ausgang wird Low, wenn die Daten zum Port A ausgegeben wurden Zurückgesetzt wird der Ausgang durch eine abfallende Flanke von /ACKA PC 4, 5 Diese Datenleitungen werden nicht für das Handshaking benutzt und können als universelle Ein- oder Ausgabeleitungen Verwendung finden Mode 1: Port B sendet Daten... ist, kann mit dem Signal IBFA festgestellt werden 432 Mainboard-Elektronik PC 5, IBFA Input-Buffer-Full; bei einem High ist der Zwischenspeicher (Latch) gefüllt Zurückgesetzt wird der Ausgang durch einen Leseimpuls (/RD) PC 6, 7 Diese Datenleitungen werden nicht für das Handshaking benutzt und können als universelle Ein- oder Ausgabeleitungen verwendet werden Bild 6.57: Die Konfiguration des Ports C . D1 D0 1011CXXX High: PC6 , PC7 = Eingänge Low: PC6 , PC7 = Ausgänge Die folgenden Leitungen des Port C arbeiten für den Port A als Handshaking-Signa- le bei Datenempfang: PC 3, INTRA Interrupt-Ausgang;. D1 D0 1010CXXX High: PC4 , PC5 = Eingänge Low: PC4 , PC5 = Ausgänge Die folgenden Leitungen des Ports C arbeiten für den Port A als Handshaking- Signale beim Senden von Daten: PC 3, INTRA Interrupt-Ausgang;. Datenempfang: PC 0, INTRB Interrupt-Ausgang, mit diesem Ausgang kann von der CPU eine Interrupt-Verarbei- tung angefordert (Interrupt Request) werden. Der Interrupt wird durch PC2 enabled (INTEB). PC 1,