4.7. Floppy Disk Baugruppe

Einleitung

Zum Speichern größerer Datenmengen – beispielsweise Messdaten in der Prozessdatenverarbeitung, Sicherung von Programmen gegen Verlust durch Stromausfall u. a. – werden zunehmend »Flexible Magnetplatten« (Bezeichnung nach DIN 66237) verwendet. Gebräuchliche Namen sind auch »Floppy-Disk« oder »Diskette«. Im Vergleich zu anderen Speichermedien, wie Magnetbandkassetten und Lochstreifen, bieten die Disketten einen schnelleren und einfacheren Zugriff auf die gespeicherten Daten. Wie für Magnetbandkassetten und Lochstreifen gibt es auch für die Disketten besondere Geräte, die das Aufzeichnen und das Lesen der Information ermöglichen. Diese Geräte werden Diskettenlaufwerke (engl. disk drives) genannt. In diesem Kapitel geht es um Aufbau und Funktion eines Floppy-Disk-Interfaces, auch Floppy-Disk-Controller (FDC) genannt.

Der Aufbau einer Diskette

Disketten werden in unterschiedlichen Größen (Durchmesser 3 Zoll, 31⁄2 Zoll, 51⁄4 Zoll und 8 Zoll) hergestellt. Bild 137 zeigt den Aufbau einer 51⁄4-Zoll-Diskette. In einer Schutzhülle befindet sich eine runde Kunststoffscheibe, auf deren Oberfläche eine magnetisierbare Schicht aufgetragen ist. Diese Scheibe rotiert während des Betriebes innerhalb der Schutzhülle. Die Schutzhülle besitzt eine Öffnung für den Schreib/Lese-Kopf des Laufwerkes. Andere Öffnungen und Kerben werden für die Laufwerksteuerung und den Antrieb benötigt.

Bild 137: Der Aufbau einer 51⁄4-Zoll-Diskette.

Disketten werden mit ihrer Schutzhülle in die Laufwerke eingelegt. Bei 51⁄4-Zoll- Disketten rotiert die Kunststoffscheibe innerhalb der Hülle mit 300 Umdrehungen pro Minute. Der Schreib/Lese-Kopf kann durch eine Mechanik schrittweise vom äußeren Diskettenrand bis nahe zur Diskettenmitte verschoben werden. Dadurch ist es mög- lich, verschiedene kreisförmige Spuren (engl. track) auf der Diskette abzutasten (Bild 138). Ähnlich wie bei einer Tonband- oder einer Video-Aufnahme können auf diese Spuren mit Hilfe des Schreib/Lese-Kopfes Informationen geschrieben und später wieder von ihnen gelesen werden. Die Daten werden hierbei als serielle Signale Bit für Bit übertragen.

Die maximale Anzahl der benutzbaren Spuren hängt u. a. von den technischen Daten des verwendeten Laufwerks ab. Bei 51⁄4-Zoll-Disketten sind 35 bis 80 Spuren üblich.

Bild 138: Spuren, Sektoren, Indexloch, Kopfbewegung.

Bei der Aufzeichnung von Daten unterteilt man die Spuren meist in kleinere Ab- schnitte. Diese nennt man Sektoren (vgl. Bild 138). Die einzelnen Sektoren einer Spur sind durch Markierungs-Bytes auf der Diskette gekennzeichnet. Bei einer neuen Diskette müssen diese Bytes durch ein spezielles Programm auf die Diskette ge- schrieben werden. Diesen Vorgang nennt man Formatieren; durch ihn wird das Format, das heißt die Einteilung der Spuren und die Größe der Sektoren, festgelegt.

Für den Transport der seriellen Information zur Diskette und von der Diskette sind zwei Leitungen erforderlich, eine sogenannte Schreib-Leitung und eine Lese-Leitung. Auf der Schreib-Leitung werden zum Schreib/Lese-Kopf Impulsmuster übertragen. Diese werden von der Laufwerks-Elektronik so aufbereitet, daß durch jeden Impuls eine Richtungsänderung des Stromflusses im Schreib/Lese-Kopf erfolgt. Die Strom- richtungs-Änderung hat auf der am Kopf vorbeirotierenden Diskette eine Richtungs- änderung des magnetischen Flusses zur Folge. Mit Hilfe dieser magnetischen Flusswechsel wird die von der FDC-Baugruppe übertragene Information in der Diskettenoberfläche gespeichert.

Bild 139: Die magnetischen Flußwechsel innerhalb der Disketten-Oberfläche.

Der Aufbau eines Disketten-Laufwerks

Ein Laufwerk für Disketten enthält verschiedene mechanische bzw. elektromecha- nische Einrichtungen. Eine Spann- und Mitnehmer-Vorrichtung für die Kunststoff- scheibe zentriert die Diskette und klemmt sie fest, so daß der Antriebsmotor die Scheibe drehen kann. Für die Positionierung des Schreib/Lese-Kopfes werden in der Regel Schrittmotoren verwendet, die den Kopf mit Hilfe mechanischer Getriebe über die Spuren der Diskette bewegen. Eine weitere Einrichtung sorgt dafür, daß der Schreib/Lese-Kopf an die Diskette geschmiegt wird, wenn Informationen geschrieben oder gelesen werden sollen. Das Anschmiegen des Kopfes an die Scheibe nennt man Laden des Kopfes (engl. head load). Hierdurch treten Reibungen zwischen der sich drehenden flexiblen Kunststoffscheibe und dem Schreib/Lese-Kopf auf. Sie führen zu einem schnellen Verschleiß des Kopfes und der magnetischen Beschichtung. Daher wird der Kopf nur dann angeschmiegt, wenn Informationen gelesen oder geschrieben werden. Laufwerke, die beide Seiten der Diskette zur Speicherung nutzen, besitzen zwei Schreib/Lese-Köpfe. Daher muß die Diskette bei Verwendung solcher Laufwerke nicht umgedreht werden, um die Rückseite zu nutzen.

ild 140: Ein Beispiel für die Teile eines Disketten-Laufwerkes.

Die Signale der Laufwerks-Elektronik

Zur Steuerung der unterschiedlichen Bewegungsvorgänge benötigt die im Laufwerk eingebaute Elektronik von außen Steuersignale. Die Laufwerks-Elektronik liefert auch Rückmeldesignale nach außen.

Bild 141: Die Steuer- und Rückmelde-Signale der Laufwerks-Elektronik.

ine generelle Auswahl des Laufwerks erfolgt über das Auswahlsignal SEL (SE- LECT, Auswahl). Da häufig mehrere Laufwerke an ein Mikrocomputersystem ange- schlossen werden, wird mit diesem Signal das gewünschte Laufwerk ausgewählt. Mit dem Steuersignal MOT ON (MOTOR ON, Motor ein) wird der Antriebsmotor des Laufwerks ein- oder ausgeschaltet. Die beiden Signale DIRC und STEP wirken auf den Schrittmotor, der den Schreib/Lese-Kopf bewegt. Mit DIRC (DIRECTION, Richtung) wird die Richtung der Bewegung bestimmt. Ein Impuls am Anschluß STEP (Schritt) bewirkt eine Bewegung des Kopfes um einen Schritt in die durch DIRC angegebene Richtung. Mit dem Steuersignal WG (WRITE GATE, Schreibtor-Frei- gabe) wird der Elektronik mitgeteilt, daß ein Schreibvorgang stattfinden soll. Das Steuersignal SIDE SEL (SIDE SELECT, Seiten-Auswahl) dient bei Laufwerken, die beide Diskettenseiten nutzen können, für die Auswahl der Seite.

Um ein ordnungsgemäßes Aufzeichnen und Lesen von Informationen zu gewährlei- sten, erzeugt die Laufwerkselektronik ihrerseits Rückmeldesignale. Das ist zunächst das Signal TRACK0 (Spur 0), das dann aktiv wird, wenn sich der Schreib/Lese-Kopf über der äußeren Diskettenspur (Spur 0) befindet. Das Rückmeldesignal INDEX wird bei jeder Umdrehung der Diskette aktiv, wenn das Indexloch den Strahl der Lichtschranke freigibt. Es dient zur Markierung des Anfangs einer Diskettenspur. Das Signal WRPT (WRITE PROTECT, Schreibschutz) dient zur Erkennung, ob der Benutzer die Diskette durch einen Aufkleber über der Schreibschutzkerbe vor unge- wolltem Beschreiben geschützt hat.

Die Steuer-, Rückmelde- und Informations-Signale werden durch eine für diese Aufgaben vorgesehene Schnittstelle (engl. interface) erzeugt bzw. empfangen. Diese Schnittstelle wird Floppy-Disk-Controller (FDC) genannt. Sie realisiert die Anpassung zwischen einem Mikrocomputer-System und einem (oder auch mehreren) Disketten-Laufwerken.

Bild 142: Die Zusammenschaltung von Floppy-Disk-Controller und Laufwerk.

Signalübertragung zwischen Laufwerk und FDC

An die hier vorgestellte FDC-Baugruppe lassen sich bis zu zwei Diskettenlaufwerke (51⁄4 Zoll) anschließe

Bild 143: Die Signalleitungen zwischen FDC-Baugruppe und Diskettenlaufwerken.
Bei allen hier aufgeführten Signalen entspricht der aktive Zustand dem L-Pege

Alle Steuersignale von der FDC-Baugruppe zu den Laufwerken werden durch Treiberstufen mit offenem Kollektor (open collector) verstärkt. Die Eingänge der Lauf- werke sind standardmäßig mit pull-up-Widerständen von 150 Ohm ausgestattet. Diese Widerstände sind in einem Netzweck (Widerstands-Array) zusammengefaßt, das auf der Platine der Laufwerkselektronik aufgesteckt ist. Damit lassen sich alle pull-up- Widerstände leicht von der Platine entfernen. Beim Anschluß von zwei Diskettenlaufwerken müssen bei einigen Fabrikaten diese pull-up-Widerstände in einem Lauf- werk entfernt werden, damit die Belastung für die Treiberstufen auf der FDC-Baugruppe nicht zu groß wird.

Bild 144: Der Anschluß der Laufwerk-Steuersignale, hier nur für eine Leitung gezeigt.

Die Übertragung der Rückmeldesignale von den Laufwerken zur FDC-Baugruppe erfolgt mit Hilfe von open-collector-Treiberstufen in den Laufwerken und pull-up- Widerständen auf der FDC-Baugruppe. Die Flankensteilheit der Signale INDEX, TRACK0 und WRPT wird auf der FDC-Baugruppe durch Inverter mit Schmitt-Trig- ger-Eingängen erhöht. Durch deren Negation der Rückmeldesignale wird ein nochmaliges Invertieren notwendig; siehe Bild 145.

Bild 145: Der Anschluß der Laufwerk-Rückmeldesignale, hier nur für eine Leitung gezeigt.

Durch die in Bild 145 gezeigte Anschlußart (wired ORverdrahtetes ODER) ist es möglich, zwei Diskettenlaufwerke parallel an die FDC-Baugruppe anzuschließen, ohne daß es zu Kurzschlüssen der Laufwerks-Ausgangssignale kommt.

Die Steuersignale SEL0 und SEL1 zur Laufwerks-Auswahl

Durch L-Pegel auf einer der Leitungen SEL0 bzw. SEL1 läßt sich jeweils eines der Diskettenlaufwerke auswählen. Dazu muß an den Laufwerken die zugehörige Laufwerks-Nummer eingestellt werden (ähnlich der Baugruppen-Nummer bei der Baugruppenauswahl). Die Einstellung der Laufwerks-Nummer ist nicht genormt. Sie hängt von den verwendeten Laufwerken ab.

Bei vielen Disketten-Laufwerken lassen sich drei oder vier unterschiedliche Laufwerks-Nummern durch Umstecken von Brücken einstellen.

Bild 146: Die Einstellung der Laufwerks-Nummer.

Im dargestellten Beispiel ließe sich das angeschlossene Laufwerk durch L-Pegel an SEL1 aktivieren. Zur sprachlichen Unterscheidung erhalten die Laufwerke häufig die Bezeichnungen A und B:

Auswahl mitLaufwerks-Name
SEL0Laufwerk A
SEL1Laufwerk B

Das Steuersignal MOT ON (Schalten der Laufwerkmotoren)

Zum Ein- und Ausschalten der Laufwerkmotoren dient das Laufwerk-Steuersignal MOT ON. Wird es auf L-Pegel geschaltet, so werden die Laufwerkmotoren gestartet. Sie erreichen nach spätestens einer Sekunde ihre Solldrehzahl (300 Umdrehungen pro Minute). Mit H-Pegel auf MOT ON lassen sich die Laufwerkmotoren wieder abschalten. Dabei wird je nach verwendetem Laufwerk der Motor mit der ansteigenden Flanke von MOT ON sofort abgeschaltet oder erst nach einigen Sekunden. Diese Verzögerung wird durch eine monostabile Kippstufe erreicht, die in manchen Laufwerken eingebaut ist.

Die Motor-Ein/Ausschaltung wirkt unabhängig von den Laufwerk-Auswahlsignalen SEL0 und SEL1 auf beide angeschlossene Laufwerke.

Bild 147: Die Ein- und Ausschaltung der Laufwerkmotoren

Das Steuersignal SIDE SEL (Diskettenseite)

Werden an die FDC-Baugruppe Diskettenlaufwerke angeschlossen, bei denen dop- pelseitiges Schreiben bzw. Lesen der Disketten möglich ist, so wird die Diskettenseite mit Hilfe des Signals SIDE SEL (Seitenauswahl) ausgewählt:

SIDE SEL auf H-Pegel (inaktiv): Auswahl der Diskettenseite 0

SIDE SEL auf L-Pegel (aktiv): Auswahl der Diskettenseite 1

Das Steuersignal WG (Schreibtor-Freigabe)

Mit dem aktiven Zustand dieses Steuersignals (WG auf L-Pegel) wird der Schreibver- stärker des ausgewählten Diskettenlaufwerks freigegeben. Damit werden alle seriellen Informationen, die dem Laufwerk über die Signalleitung WDATA geliefert werden, auf die Diskette geschrieben. Die Erzeugung des Steuersignals WG übernimmt der FDC-Baustein bei der Ausführung von Schreibkommandos. Zum Lesen der Daten von der Diskette muß WG auf H-Pegel liegen.

Das Rückmeldesignal INDEX (Spuranfang)

Das Rückmeldesignal INDEX zeigt bei aktiviertem Laufwerk den Zustand der Index- Lichtschranke an. Diese ist zur Erkennung des Disketten-Indexloches im Laufwerk eingebaut.

INDEX auf H-Pegel: Lichtschranke unterbrochen

INDEX auf L-Pegel: Lichtschranke nicht unterbrochen

Bei eingelegter Diskette und eingeschaltetem Laufwerkmotor durchläuft das Index- loch während jeder Disketten-Umdrehung einmal den Strahl der Lichtschranke. Das Rückmeldesignal INDEX liefert dann die in Bild 148 gezeigte Impulsfolge.

Bild 148: Das Rückmeldesignal INDEX zur Erkennung des Spuranfangs.

Bei einer Disketten-Drehzahl von 300 U/min ergibt sich eine Frequenz des Index- signals von 5 Hz bzw. eine Periodendauer von 200 ms. Durch die fallende Flanke von INDEX wird auf diese Weise der Anfang einer Diskettenspur festgelegt.

Das Rückmeldesignal TRACKO (Spur 0)

Ein L-Pegel auf TRACK0 wird von der Laufwerks-Elektronik erzeugt, wenn sich der Schreib/Lese-Kopf über der äußeren Diskettenspur (Spur 0) befindet.

Das Rückmeldesignal WRPT (Schreibschutz)

Durch Überkleben der Schreibschutzkerbe (vgl. Bilder 137 und 140) läßt sich die Diskette vor ungewolltem Schreiben schützen. Mit Hilfe einer Lichtschranke oder eines Mikroschalters wird bei eingelegter Diskette der Zustand dieser Schreibschutz- Kerbe erfaßt. Bei geschlossener Kerbe ist der Schreibschutz wirksam. Im Laufwerk wird dann der Schreibverstärker abgeschaltet, so daß ein Schreiben auf die Diskette verhindert wird. Das Rückmeldesignal WRPT zeigt bei aktiviertem Laufwerk durch einen L-Pegel an, daß die eingelegte Diskette schreibgeschützt ist.

Die Signalleitung WDATA (serielle Information beim Schreiben)

Beim Schreiben auf die Diskette werden die seriellen Informationen über die Signal- leitung WDATA von der FDC-Baugruppe zum Diskettenlaufwerk übertragen.

Ist das Laufwerk aktiviert und der Schreibverstärker freigegeben, so wird jeder über- tragene Impuls so aufbereitet, daß er durch einen magnetischen Flußwechsel (siehe Bild 139) auf der Diskette gespeichert werden kann. Die zu übertragenden Impulse werden vom FDC-Baustein bei der Ausführung von Schreibkommandos erzeugt. In dieser Impulsfolge sind sowohl Daten-Impulse als auch Synchronisier-Impulse enthal- ten.

Die Signalleitung RDATA (serielle Information beim Lesen)

Durch das Rotieren der Diskette unter dem Schreib/Lese-Kopf werden die gespei- cherten magnetischen Flußwechsel am Kopf vorbeigeführt. Jeder dieser Flußwechsel induziert eine Spannung im Schreib/Lese-Kopf. Aus dieser induzierten Wechselspan- nung werden durch die Laufwerks-Elektronik Impulse mit fester Impulsbreite gewon- nen und der FDC-Baugruppe über die Signalleitung RDATA zugeführt. Auch in dieser Impulsfolge sind Daten-Impulse und Synchronisier-Impulse enthalten.

Bild 149: Die Schreib/Lese-Signale.

Schaltung und Arbeitsweise der FDC-Baugruppe

Die FDC-Baugruppe hat hauptsächlich folgende Aufgaben:

  • Steuerung der Laufwerkfunktionen, z.B. Bewegung des Schreib/Lese-Kopfes,
  • Steuerung des Datenverkehrs zwischen Mikrocomputer und Diskettenlaufwerk,
  • zeitliche Synchronisation des Datenverkehrs und der erforderlichen Laufwerksfunktionen.

Bild 150: Die Zusammenschaltung von Mikrocomputer, Floppy-Disk-Controller und Laufwerken.

Ein großer Teil der eben genannten Funktionen wird durch den integrierten FDC- Baustein FDC 1793 (oder einen kompatiblen Typ) realisiert. Bild 151 zeigt das Block- schaltbild der FDC-Baugruppe mit den Schaltungsteilen Adressvergleicher, Steuer- Port und Datentrennung (Datenseparator). Nicht eingezeichnet sind einige Hilfsschaltungen, z.B. der Taktgenerator.

Bild 151: Das Blockschaltbild der FDC-Baugruppe

Einige Hinweise zum Blockschaltbild:

Der FDC-Baustein wandelt beim Schreiben die parallelen Daten eines Mikrocom- puters in einen seriellen Informationsstrom um. Er fügt noch Synchronisier-Signale in diesen Informationsstrom ein. Beim Lesen wandelt er den seriellen Informationsstrom von der Diskette wieder in parallele Daten um. Über interne Register des FDC-Bausteins kann ihm die CPU Kommandos geben und auch Rückmeldungen vom FDC-Baustein erhalten. Außerdem stellt er Signale zur Verfügung, die zur zeitlichen Steuerung des Datenaustausches zwischen CPU und FDC-Baustein benutzt werden können.

Das Steuer-Port der FDC-Baugruppe dient zur Auswahl zwischen zwei angeschlos- senen Laufwerken. Weiter dient es zur Auswahl der Diskettenseite bei Verwendung entsprechender Laufwerke, zur Antriebsmotor-Ein/Ausschaltung und zur Auswahl zwischen zwei Aufzeichnungsarten.

Der Datenseparator erzeugt Signale, mit deren Hilfe der FDC-Baustein die auf der Diskette gespeicherten Daten von den Synchronisier-Impulsen trennen kann.

Bild 152: Der Stromlaufplan der FDC-Baugruppe

Der Adressvergleicher

Der Mikroprozessor steuert die FDC-Baugruppe wie jede andere Eingabe- und Ausgabe-Einheit an. Da bei einem Mikrocomputer-System nur jeweils eine einzige Einheit aktiviert sein darf, müssen alle im System vorhandenen Eingabe- und Ausgabe- Einheiten unterschiedliche Baugruppen-Nummern besitzen. Daher ist die Baugruppen-Nummer mit Hilfe von Schaltern einstellbar. Ein Adressvergleicher aktiviert die Baugruppe nur dann, wenn der Prozessor diejenige Adresse aussendet, die der eingestellten Baugruppen-Nummer entspricht.

Bild 153: Die Schaltung des Adressvergleichers.

Die Baugruppe ist angewählt, wenn der Ausgang des 4-Bit-Vergleichers IC2 H-Pegel führt. Ein solches Freigabesignal kommt nur zustande, wenn

  • die Bitkombination auf den Adressleitungen A4 … A7 gleich der Bitkombination ist, die mit den Schaltern SA4…SA7 eingestellt ist und außerdem
  • eines der Steuersignale IOR und Steuersignal IOW aktiv ist (L-Pegel). Der IN- Eingang des IC2 erhält dann über ICl.1 H-Pegel. Dies ist bei allen Ein/Ausgabe-Operationen der CPU der Fall.

Der Prozessor gibt beim Ansprechen einer Eingabe- oder Ausgabe-Baugruppe stets eine vollständige 8-Bit-Adresse an den Adressleitungen A0 bis A7 aus. Bei dem hier vorgenommenen Adressvergleich werden jedoch die Adressleitungen A0 bis A3 nicht berücksichtigt. Aus diesem Grund steht nicht der volle Adressbereich von 00H bis FFH mit 256 Adressen zur Verfügung. Mit den Schaltern SA4 bis SA7 lassen sich lediglich 16 verschiedene Signalzustände (Baugruppen-Nummern) einstellen. Da die- se Schalter den vier höherwertigen Adressbits A4 bis A7 zugeordnet sind, kann die Baugruppen-Nummer nur die Werte von 0XH bis FXH annehmen. Das X steht hier für die vier niederwertigen Adressbits A0 bis A3, die beim Adressvergleich nicht berücksichtigt werden.

SA7 (A7)SA6 (A6)SA5 (A5)SA4 (A4)HEX-Adresse
Off
1
Off
1
On
0
On
0
Cx

Bild 155: Die Einstellung der Schalter SA4 bis SA7, wie sie im folgenden benutzt wird; die Baugruppen-Nummer ist also CXH.

Grundsätzlich kann auch jede andere der 16 möglichen Baugruppen-Nummern ver- wendet werden. Es ist aber darauf zu achten, daß alle Eingabe- oder Ausgabe-Baugruppen eines Mikrocomputer-Systems unterschiedliche Adressen besitzen müssen, da es andernfalls zu Schäden am Gerät kommen kann.

Wenn die Baugruppen-Nummer CX eingestellt ist, kann die FDC-Baugruppe über die Adressen C0…CF angesprochen werden. Dieser Bereich wird durch die Adressleitungen A2 und A3 mit Hilfe eines 1-aus-8-Decoders (Baustein 74LS138) in vier Adressblöcke aufgeteilt.

Bild 156: Der 1-aus-8-Decoder zur Baustein-Auswahl

Ein solcher Decoder wird im allgemeinen verwendet, um in Abhängigkeit von 3 Eingangssignalen (A, B, C) jeweils nur einen Ausgang (Y0…Y7) auszuwählen und auf L-Pegel zu schalten. Mit Hilfe der Eingänge Gl, G2A und G2B läßt sich der Decoder aktivieren oder in den nichtaktiven Zustand versetzen (alle Ausgänge sind dann auf H-Pegel).

G1/G2A/G2BCBA/Y0/Y1/Y2/Y3/Y4/Y5/Y6/Y7
10000001111111
10000110111111
10001011011111
10001111101111
10010011110111
10010111111011
10011011111101
10011111111110

Tabelle 157: Die Funktionstabelle des 1 aus 8 Decoders

Da Eingang C sowie G2A und G2B auf der FDC-Baugruppe fest auf L-Pegel gelegt sind, läßt sich die Funktionstabelle wie in Bild 158 gezeigt reduzieren. Der ausgewählte Adressbereich C0H bis CFH wird damit in vier Adressblöcke aufgeteilt.

Bild 158: Die reduzierte Funktionstabelle des 1 aus 8 Decoders

Bild 159: Die Aufteilung des Adressbereichs der FDC-Baugruppe in vier Adressblöcke. Die Adressleitungen A0 und A1 werden dazu benutzt, die internen Register des FDC-Bausteins auszuwählen. Daher sind sie hier nur von Bedeutung, wenn der FDC-Baustein angewählt wird.

Der Datenbus-Treiber

Die internen Treiber des 74LS245 (siehe Bild 160) werden durch die Pegel an ihren Steuereingängen in Durchlassrichtung oder hochohmig geschaltet: L-Pegel schaltet sie in den hochohmigen und H-Pegel in den leitenden Zustand. Erzeugt werden diese Pegel von den beiden UND-Gattern im Datenbustreiber, die ihrerseits die Signale des Datenrichtungs-Eingangs DIR und des Freigabe-Eingangs EN miteinander verknüpfen. Der DIR-Eingang ist direkt mit dem Steuersignal IOR verbunden und der EN-Eingang mit dem invertierten Signal der Baugruppen-Auswahl-Leitung. Wird die Baugruppe nicht angesprochen, so erhält der EN-Eingang H-Pegel, und alle Treiber sind hochohmig. Bei der Auswahl der Baugruppe (L-Pegel am EN-Eingang) wird die Datenflußrichtung vom Pegel des IOR-Signals bestimmt. Liegt es auf L-Pegel, so können Daten vom internen Bus der Baugruppe zum System-Bus gelangen, andern- falls vom System-Bus zum internen Baugruppen-Bus.

Bild 160: Die Innenschaltung (Ausschnitt) und Funktionstabelle des Datenbus-Treibers

Der Steuer-Port

Der Steuer-Port wird durch einen Baustein 74LS175 mit vier D-Flip-Flops realisiert; deren Ausgänge steuern folgende Funktionen:

  • Laufwerksauswahl (bis zu zwei Laufwerke sind anschliessbar),
  • Seitenauswahl bei Laufwerken, die zweiseitigen Betrieb ermöglichen,
  • Auswahl des Aufzeichnungs-Verfahrens.

ild 161: Der Steuer-Port mit dem Baustein 74LS175 (IC12

Die Ausgangspegel der einzelnen D-Flip-Flops können durch eine Ausgabe-Operation (OUT-Befehl) der CPU festgelegt werden; dies ist in Bild 162 gezeigt.

ild 162: Die Erzeugung eines Takt-Impulses für den Steuerport-Eingang C1.

Erläuterungen zu Bild 162:

  1. Während einer Ausgabe-Operation OUT 0C4 wird über die Baugruppen- und Baustein-Auswahl (IC2 und IC3) …
  2. der Ausgang Y1 des 1-aus-8-Decoders (Bilder 156-159) auf L-Pegel geschaltet. Dieses Signal wird mit Hilfe des ODER-Gatters IC7.4 (siehe Bild 161) mit dem Steuersignal IOW verknüpft,
  3. das während der Ausführung des OUT-Befehls ebenfalls L-Pegel führt.
  4. Somit entsteht am Ausgang des ODER-Gatters bzw. am Takt-Eingang Cl des 4fach-D-Flip-Flops ein negativer Impuls.
  5. Mit der steigenden Flanke des Taktimpulses an Cl werden die logischen Pegel der vier Datenbits D0 bis D3 in die D-Flip-Flops übernommen und gespeichert.

An den Ausgängen der D-Flip-Flops stehen damit statische Signale zur Verfügung, die bei einer Ausgabe-Operation OUT 0C4 durch die vier niedrigstwertigen Datenbits D0 bis D3 des Akkumulator-Inhaltes bestimmt werden (X = beliebig, d. h. hier nicht berücksichtigt):

Disketten-
Seite
Aufzeichnung-
verfahren
Laufwerk
B
Laufwerk
A
D7
X
D6
X
D5
X
D4
X
D3
SIDE SEL
D2
/DDENS
D1
SEL1
D0
SEL0

Auswahl (engl. selection) des Laufwerks mittels SEL0 und SELl (Es darf immer nur ein Laufwerk aktiviert sein!):

  • SEL0 = 0 Laufwerk A nicht aktiviert
  • SEL0 = 1 Laufwerk A aktiviert
  • SEL1 = 0 Laufwerk B nicht aktiviert
  • SEL1 = 1 Laufwerk B aktiviert

Auswahl des Aufzeichnungs-Verfahrens:

  • DDENS = 0 Double Density (MFM)
  • DDENS = 1 Single Density (FM)

Auswahl der Diskettenseite:

  • SIDE SEL = 0 Diskettenseite 0
  • SIDE SEL = 1 Diskettenseite 1

Soll z.B. die Seite 1 des Laufwerks B in der Betriebsart »Double Density« ausgewählt werden, so muß das auszugebende Steuerwort lauten:

D7D6D5D4D3D2D1D0
binärXXXX1010
hexadezimalXA

Die drei Steuersignale SEL0, SEL1 und SIDE SEL werden invertiert und dann erst den Laufwerken zugeführt (siehe Bild 161 und auch Bild 152).

Die automatische Motor-Ein/Ausschaltung

Um die Laufwerkmotoren, die Schreib/Lese-Köpfe und die Disketten zu schonen, sollten die Laufwerkmotoren abgeschaltet werden, wenn kein Schreib- oder Lesezugriff auf die Disketten erfolgt. Zum Ein- und Ausschalten der Laufwerkmotoren dient das Laufwerk-Steuersignal MOT ON. Wird es auf L-Pegel geschaltet, so werden die Laufwerkmotoren gestartet und erreichen nach maximal einer Sekunde ihre Solldrehzahl von 300 Umdrehungen pro Minute. Mit MOT ON auf H-Pegel lassen sich die Laufwerkmotoren wieder abschalten.

Bild 163: Die Erzeugung des Laufwerk-Steuersignales MOT ON durch eine nachtriggerbare monostabile Kippstufe (IC 11: Baustein 74LS123).

Da der Eingang Ades 74LS123 auf der FDC-Baugruppe fest auf L-Pegel gelegt ist, läßt sich die monostabile Kippstufe mit einer ansteigenden Signalflanke am Eingang B anstoßen. Mit jeder Ausgabe eines Steuerwortes zum Steuer-Port (vgl. Bild 161) entsteht ein negativer Impuls am Takteingang des Steuer-Ports; vgl. Bild 162. Mit der ansteigenden Flanke dieses Impulses wird die monostabile Kippstufe angestoßen. Dadurch wird der Ausgang Q für eine bestimmte Zeit auf H-Pegel geschaltet. Diese Zeit wird durch die RC-Kombination R8/C6 bestimmt und läßt sich nach Herstelleran- gaben wie folgt berechnen:

tH = 0,45 · R · C
tH =0,45 · 150 kQ · 47 μF
tH = 3 sec

Dabei ist tH die Zeit, für die der Pegel des Ausgangs Q des 74LS123 auf H-Pegel geschaltet wird.

Die monostabile Kippstufe läßt sich nachtriggern, indem sie vor dem Ablauf der Zeit tH erneut angestoßen wird. Dadurch bleibt der vorhandene Zustand (Q auf H-Pegel) erhalten, bis die Zeit nochmals abgelaufen ist.

Da vor jedem Disketten-Schreib- bzw. -Lese-Zugriff normalerweise ein Steuerwort zum Steuer-Port ausgegeben wird, werden damit automatisch die Laufwerkmotoren .gestartet. Sie laufen anschließend für mindestens 3 Sekunden. Sollen die Motoren für längere Zeit in Betrieb bleiben, so muß die monostabile Kippstufe spätestens alle 3 Sekunden durch die erneute Ausgabe eines Steuerwortes nachgetriggert werden. 3 Sekunden nach der letzten Ausgabe eines Steuerwortes wird das Signal MOT ON also automatisch auf H-Pegel geschaltet und damit ein Dauerbetrieb der Laufwerkmotoren vermieden.

Mit Hilfe eines L-Pegels auf RESET (siehe Bild 163) läßt sich die monostabile Kippstufe zurücksetzen (Q auf L-Pegel). Wird RESET wieder auf H-Pegel geschaltet, so liegt an den Eingängen A und B der monostabilen Kippstufe die Signalkombination A auf L-Pegel und B auf H-Pegel an. Dadurch wird auch in diesem Fall die Kippstufe angestoßen, und die Laufwerkmotoren laufen an.

Der FDC-Baustein 1793

Die FDC-Register

Um Informationen zwischen der CPU und dem FDC-Baustein übertragen zu können, stehen fünf Register des FDC-Bausteins zur Verfügung. Ein Zugriff der CPU auf die Register ist mit Hilfe von Ein/Ausgabe-Operationen (IN/OUT-Befehlen) möglich.

Das Kommando-Register dient der Übertragung eines Kommandowortes an den FDC-Baustein. Durch dieses Kommando wird der FDC-Baustein zur Ausführung bestimmter Aktionen veranlaßt. Der Inhalt des Kommando-Registers kann von der CPU geändert, nicht aber gelesen werden.

Der Inhalt des Status-Registers gibt der CPU Auskunft über den Zustand des ausge- wählten Diskettenlaufwerkes und den Zustand des FDC-Bausteins. So kann die CPU beispielsweise durch das Auslesen des Statuswortes aus dem Status-Register erfahren, ob der FDC-Baustein gerade mit der Ausführung eines Kommandos beschäftigt ist, ob während eines Schreib- oder Lesezugriffs auf die Diskette ein neues Datenbyte zwischen CPU und FDC-Baustein übertragen werden muß oder ob das ausgewählte Laufwerk betriebsbereit ist. Weiterhin werden durch das Status-Register Meldungen über Fehler bereitgestellt, die bei der Ausführung von Kommandos durch den FDC- Baustein aufgetreten sind. Der Inhalt dieses Registers kann von der CPU gelesen, jedoch nicht verändert werden.

Das Spur-Register (Track-Register) gibt Auskunft, über welcher Spur sich der Schreib/Lese-Kopf befindet. Die CPU kann aus diesem Register die aktuelle Spur- nummer lesen oder es mit einer neuen Spurnummer laden. Dieses Laden mit einer neuen Spurnummer hat aber keine Kopfbewegung zur Folge!

In das Sektor-Register ist von der CPU vor Beginn eines Lese- oder Schreibvorgangs die Nummer des gewünschten Sektors zu schreiben. Der Inhalt dieses Registers kann von der CPU sowohl gelesen als auch verändert werden.

Das Daten-Register dient während der Übertragung der Daten zwischen CPU und FDC-Baugruppe als 8-Bit-Zwischenspeicher für ein Datenbyte:

Bei einem Disketten-Schreibzugriff schreibt die CPU ein Datenbyte in das Daten-Re- gister. Von dort gelangt dieses Byte in das Daten-Schieberegister des FDC-Bausteins. Dieses hat die Aufgabe, das vorliegende parallele Datenbyte in eine serielle Impulsfolge aus Daten- und Synchronisier-Impulsen für die Aufzeichnung auf der Diskette umzuformen.

Bei einem Disketten-Lesezugriff gelangen die seriell eintreffenden Daten- und Synchronisier-Impulse vom Laufwerk in den FDC-Baustein. Dort werden die Datenbits von den Synchronisierbits getrennt. Die Datenbits werden in das Daten-Schieberegister geschoben. Sobald ein vollständiges Datenbyte verfügbar ist, wird dieses in das Daten-Register übertragen. Das gewonnene Datenbyte muß von der CPU rechtzeitig aus dem Daten-Register ausgelesen werden, da das Register bald für die Übernahme des nächsten Datenbytes benötigt wird.

Die Auswahl der FDC-Register

Bei jeder Ein/Ausgabe-Operation gibt die CPU eine 8-Bit-Adresse aus. Die einzelnen Pegel der Adressleitungen A0 bis A7 werden von der FDC-Baugruppe wie folgt ausgewertet:

Adressleitungausgewertet zur
A7
A6
A5
A4
Baugruppen-
Auswahl
A3
A2
Baustein-
Auswahl
A1
A0
FDC-Register-
Auswahl

Die Adresssseitungen A0 und A1 sind mit den FDC-Baustein-Anschlüssen gleichen Namens verbunden. Da eine Auswahl zwischen fünf FDC-Registern getroffen werden muß, aber die Pegel auf den Leitungen A0 und A1 nur vier verschiedene Kombinationen annehmen können, wird noch ein weiteres Unterscheidungs-Merkmal benötigt. Aus der Sicht der CPU ist das Kommando-Register ein Nur-Schreib-Register und das Status-Register ein Nur-Lese-Register. Hier ist eine Unterscheidung durch die Steuersignale IOW und IOR möglich. Damit ist ein weiteres Unterscheidungs-Merkmal gegeben. Das Steuersignal IOW ist auf der FDC-Baugruppe an den FDC-Baustein-Anschluss WE (Write Enable, Schreib-Freigabe), das Steuersignal IOR ist an den Anschluß RE (Read Enable, Lese-Freigabe) angeschlossen.

Bild 164: Der Anschluß des FOG-Bausteins 1793 zur Register-Auswahl.

Die folgende Tabelle zeigt die Pegelkombinationen auf den Leitungen CS, A0, A1, WE und RE sowie die dadurch ausgewählten Register:

/CS/WE/REA1A0RegisterDatenrichtung
00100Kommando-RegisterSchreiben
00101Spur-RegisterSchreiben
00110Sektor-RegisterSchreiben
00111Daten-RegisterSchreiben
01000Status-RegisterLesen
01001Spur-RegisterLesen
01010Sektor-RegisterLesen
01011Daten-RegisterLesen

Mit Hilfe von Ein/Ausgabe-Operationen kann die CPU Informationen in die FDC- Register schreiben oder Registerinhalte lesen:

OUT 0C0Schreiben in der Kommando-Register
OUT 0C1Schreiben in das Spur-Register
OUT 0C2 Schreiben in das Sektor-Register
OUT 0C3Schreiben in das Daten-Register
IN 0C0Lesen aus dem Status-Register
IN 0C1Lesen aus dem Spur-Register
IN 0C2Lesen aus dem Sektor-Register
IN 0C3Lesen aus dem Daten-Register

Die Synchronisation der Datenübertragung

Die Signale DRQ und INTRQ

Zur Synchronisation der Datenübertragung zwischen FDC-Baustein und CPU besitzt der FDC-Baustein zwei Anschlüsse:

Immer dann, wenn der FDC-Baustein bei einem Schreibvorgang auf eine Diskette neue Datenbytes von der CPU benötigt, setzt er den Ausgang DRQ (Data Request, Daten-Anforderung) auf H-Pegel. Die CPU reagiert darauf, indem sie ein neues Datenbyte in das Datenregister des FDC-Bausteins schreibt. Durch diesen Schreibvorgang wird das DRQ-Signal wieder auf L-Pegel zurück geschaltet.

Bild 165: Die Datenübertragung zwischen der CPU und dem FOG-Baustein beim Schreiben auf eine Diskette.

Erläuterungen zu Bild 165:

  1. Der FDC-Baustein legt den Ausgang DRQ auf H-Pegel und fordert so die CPU auf, neue Daten in das Datenregister zu schreiben.
  2. Die CPU reagiert, indem sie die Adresse des Datenregisters auf den Adressbus schaltet,
  3. die Daten auf den Datenbus legt und das Steuersignal IOW aktiviert (L-Pegel).
  4. Aufgrund der Datenübertragung in das Datenregister schaltet der FDC-Baustein das DRQ-Signal zurück auf L-Pegel.
  5. Mit der ansteigenden Flanke des IOW-Signals übernimmt der FDC-Baustein die Daten.

Wenn bei einem Lesevorgang von einer Diskette ein neues Datenbyte im Datenregister des FDC-Bausteins bereitsteht, setzt der FDC-Baustein den Ausgang DRQ ebenfalls auf H-Pegel. Dieses Signal zeigt der CPU, daß sie ein Datenbyte aus dem Datenregister auslesen kann. Das Signal DRQ wird durch das Auslesen des Daten- bytes wieder auf L-Pegel zurückgesetzt.

Bild 166: Die Synchronisation der Datenübertragung zwischen FOG-Baustein und CPU beim Lesen von einer Diskette.

Erläuterung zu Bild 166:

  1. Der FDC-Baustein schaltet den DRQ-Ausgang auf H-Pegel. Er teilt der CPU dadurch mit, daß ein Datenbyte aus dem Datenregister ausgelesen werden muß.
  2. Die CPU reagiert, indem sie die Adresse des Datenregisters auf den Adressbus schaltet und
  3. das Steuersignal IOR aktiviert (L-Pegel).
  4. Der FDC-Baustein legt daraufhin die Daten aus dem Datenregister auf den Datenbus und
  5. schaltet das DRQ-Signal zurück auf L-Pegel.
  6. Mit der ansteigenden Flanke des IOR-Signals übernimmt die CPU die Daten vom Datenbus.

Bild 167a: Das Abschalten des INTRQ-Signals durch die Übergabe eines neuen Kommandos.

Bild 167b: Das Abschalten des INTRQ-Signals durch das Auslesen des FDC-Statuswortes.

Hat der FDC-Baustein ein Kommando vollständig abgearbeitet, schaltet er den Aus- gang INTRQ (Interrupt Request, Interrupt-Anforderung) auf H-Pegel (Bild 167, Nummer 1). Dieses Signal wird normalerweise dazu verwendet, um bei der CPU einen Interrupt anzufordern. Die CPU kann dann auf die Beendigung der Kommando-Ausführung reagieren. Welcher Interrupt durch das INTRQ-Signal angefordert wird, kann auf der FDC-Baugruppe durch die Steckbrücken J2, J3 und J4 festgelegt werden. Es darf immer nur eine dieser Brücken geschlossen sein.

InterruptBrücke
RST 5.5J2
RST 6.5J3
RST 7.5J4

Wenn die CPU dem FDC-Baustein ein neues Kommando übergibt (Bild 167, Nummer 2) oder wenn sie den Inhalt des FDC-Statusregisters ausliest (Bild 167, Nummer 3) dann wird das INTRQ-Signal wieder zurück auf L-Pegel geschaltet (siehe Bild 167, Nummer4).

Der FDC-Baustein stellt die Signale »Anforderung eines neuen Datenbytes« und »Kommando vollständig ausgeführt« auch durch einzelne Bits im Statusregister zur Verfügung. Daher kann eine Synchronisation der Datenübertragung normalerweise auch durch Lesen und Auswerten des FDC-Statuswortes erfolgen. Oft bleibt zwischen der Übertragung der einzelnen Datenbytes nicht genügend Zeit zum Lesen und Auswerten des Statuswortes; dann nutzt man die Signale DRQ und INTRQ zur Synchronisation.

Das Warte-Flip-Flop

Bei dem hier vorgestellten Verfahren wird die Synchronisation der Datenübertragung über den CPU-Anschluß READY bewirkt. Die CPU fragt den Pegel an diesem Anschluß jeweils im zweiten Takt eines Maschinen-Zyklus ab. Ein L-Pegel hält die CPU an. Erst wenn der Pegel am READY-Anschluß wieder nach H wechselt, been- det die CPU den Maschinen-Zyklus.

Das READY-Signal wird auf der FDC-Baugruppe mit IC6 (74LS74) erzeugt. Bei diesem IC handelt es sich um ein D-Flip-Flop mit dynamischem Takteingang und statistischen Setz- und Rücksetzeingängen. Mit der ansteigenden Flanke des Impulses am Takteingang Cl wird der Ausgang Q auf L-Pegel geschaltet, da der lD-Eingang auf der FDC-Baugruppe fest auf H-Pegel liegt. Der Ausgang Q ist über eine Diode mit dem READY-Anschluß der CPU verbunden.

Bild 168: Erzeugung und Aufhebung des Wartesignals.

Das Anhalten der CPU erfolgt per Programm durch den Befehl OUT 0C8. Dabei ist der Akkumulator-Inhalt ohne Bedeutung. Das L-Signal, das der Adressvergleicher bei der Ausführung dieses Befehls am Y2-Ausgang abgibt (siehe Bild 156), wird durch das ODER-Gatter IC7.1 (Bild 168) mit dem IOW-Signal verknüpft und dem Takteingang des Flip-Flops zugeführt. Geht das IOW-Signal zurück auf H-Pegel, so entsteht am Takteingang ebenfalls eine ansteigende Flanke. Durch diese Flanke wird das Flip-Flop gesetzt. READY geht auf L-Pegel, und die CPU wird angehalten.

Fordert der FDC-Baustein die CPU auf, ein Datenbyte in das Datenregister zu schreiben bzw. aus dem Datenregister zu lesen, so setzt er das DRQ-Signal auf H-Pegel. Dieses Signal wird dem Rücksetzeingang des Flip-Flops über die ODER- Gatter IC7.3 und IC7.2 sowie über den Inverter IC5.3 zugeführt. Es setzt das Flip-Flop zurück und schaltet so die READY-Leitung wieder auf H-Pegel. Die CPU wird dadurch wieder freigegeben.

Sie kann nun das Datenregister des FDC-Bausteins ansprechen (Byte lesen bzw. schreiben). Anschließend hält sie sich durch die Ausführung eines weiteren Befehl OUT 0C8 erneut an, bis der FDC-Baustein sie durch das Signal DRQ wieder zur Datenübertragung auffordert.

Bild 169: Setzen und Rücksetzen des Warte-Flip-Flops.

Erläuterungen zu Bild 169:

  1. Die CPU setzt das Warte-Flip-Flop.
  2. Da die READY-Leitung am Q-Ausgang des Flip-Flops liegt, geht READY auf L-Pegel, und die CPU wird angehalten.
  3. Der FDC-Baustein fordert die CPU zur Datenübertragung auf und legt deshalb den Anschluß DRQ auf H-Pegel.
  4. Das Warte-Flip-Flop wird durch das DRQ-Signal zurückgesetzt. READY geht wieder auf H-Pegel. Die CPU ist dadurch freigegeben.
  5. Der FDC-Baustein schaltet das DRQ-Signal zurück auf L-Pegel, wenn die CPU das Datenregister des FDC-Bausteins anspricht.

Da das Anhalten der CPU nur per Programm erfolgen kann, muß der Programmierer entsprechende Befehle OUT 0C8 im Programm vorsehen. Diesen Befehlen müssen die Programm-Anweisungen zur Datenübertragung folgen, da die CPU nur dann freigegeben wird, wenn der FDC-Baustein sie zur Übertragung von Daten auffordert. Beispiele für solche Programme finden Sie ab Seite 584.

Die CPU muß ebenfalls freigegeben werden, wenn die Datenübertragung abge- schlossen ist. Diese Freigabe erfolgt über das INTRQ-Signal, das der FDC-Baustein immer dann ausgibt, wenn er ein Kommando vollständig abgearbeitet hat. Es wird dem Rücksetzeingang des Flip-Flops über die Gatter IC7.3, IC7.2 und IC5.3 zugeführt; siehe Bild 168.

Der READY-Anschluß zum Anhalten der CPU wird außer von der FDC-Baugruppe z.B. auch von der Bus-Signalanzeige (siehe Kapitel 5.2) und vom Zähler/Zeitgeber (siehe Kapitel 6.4) benutzt. Werden diese Baugruppen innerhalb eines Systems benutzt, so kann es auf der READY-Leitung des System-Bus zu einem Kurzschluss kommen. Um dies zu vermeiden, müssen die READY-Signale der beiden Baugruppen verknüpft werden, wie in Bild 170 gezeigt.

Bild 170: Die Verknüpfung der READY-Signale verschiedener Baugruppen.

Liegen die READY-Ausgänge der beiden Baugruppen auf H-Pegel, so liegt auch der READY-Eingang der CPU über den pull-up-Widerstand auf H-Pegel. Wird z.B. der READY-Ausgang der FDC-Baugruppe auf L-Pegel geschaltet, so wird die Diode D1 in Durchlaßrichtung betrieben. Der READY-Eingang der CPU geht auf L-Pegel und die CPU wird angehalten. Bleibt der READY-Ausgang der Bus-Signalanzeige auf H-Pegel, so sperrt die Diode DX. Es kann nicht zu einem Kurzschluss kommen.

Die Anschlüsse des FDC-Bausteins zur Laufwerks-Steuerung und zur Informations-Übertragung

Zur Steuerung der Laufwerke und zur Übertragung der Informationen von und zu den Laufwerken besitzt der FDC-Baustein mehrere Anschlüsse. Die Bezeichnungen der FDC-Anschlüsse wurden vom Bausteinhersteller festgelegt, die des Laufwerk- Steckers vom Laufwerkhersteller. Daher kommt es bei drei Signalen zu einer unterschiedlichen Bezeichnung:

Stecker-
Anschlussbezeichnung
FDC-
Anschlussbezeichnung
/INDEX/IP (INDEX PULSE)
Index-Impuls
/TRACK0/TR0 (TRACK 0)
Spur 0
/WDATA/WD (WRITE DATA)
Schreibe Daten

Die Anschlüsse WG, INDEX, TRACK0, WRPT und WDATA des Laufwerk-Steckers wurden bereits auf den Seiten 539 – 541 beschrieben. Deshalb soll hier nicht näher auf sie eingegangen werden.

Der Anschluß RAW READ:
Wird von einer Diskette gelesen, so gelangen die Informations-Impulse (Daten- und Synchronisier-Impulse) nicht direkt zum FDC-Baustein, sondern erst zum Datensepa- rator. Dieser bereitet die Impulse auf und gibt sie über den Anschluß RAW READ (Roh-Lese-Daten) an den FDC-Baustein weiter (siehe auch Seite 570ff.).

Der Anschluß RCLK:
Der Datenseparator erzeugt auch ein Signal, mit dessen Hilfe der FDC-Baustein die Daten-Impulse von den Synchronisier-Impulsen trennen kann. Dieses Signal wird dem FDC-Baustein über den Anschluß RCLK (Read Clock, Lese-Takt) zugeführt (siehe auch Seite 570ff.).

Der Anschluß LWREADY:
Ein Zugriff auf eine Diskette kann erst erfolgen, wenn das Laufwerk bereit ist. Das bedeutet: die Diskette muß richtig eingelegt sein, und der Motor muß seine Solldreh- zahl erreicht haben. Die Bereitschaft des Laufwerks wird dem FDC-Baustein über den LWREADY-Anschluss signalisiert:

  • LWREADY auf L-Pegel: Laufwerk nicht bereit
  • LWREADYauf H-Pegel: Laufwerk bereit

Die Erzeugung des LWREADY-Signals

Das LWREADY-Signal, das dem FDC-Baustein die Bereitschaft des Laufwerks an- zeigt, wird nicht vom Laufwerk selbst bereitgestellt. Es muß aus dem INDEX-Signal des Laufwerks erzeugt werden. Ist eine Diskette in das Diskettenlaufwerk eingelegt und dreht sich der Motor mit seiner Solldrehzahl von 300 Umdrehungen pro Minute, so steht am INDEX-Anschluß alle 200 ms ein kurzer L-Impuls zur Verfügung. Dieser Impuls wird erzeugt, wenn das Index-Loch der Diskette den Strahl der Index-Lichtschranke durchläuft; vgl. auch Bild 148.

Bild 171: Das Rückmeldesignal INDEX zur Erkennung des Spuranfangs.

Bild 172: Die Erzeugung des LWREADY-Signals für den FDC-Baustein mit Hilfe des Index-Impulses.

Die Index-Impulse (siehe Bild 171) triggern eine monostabile Kippstufe (IC11.2, Baustein 74LS123). Da der Eingang B auf der FDC-Baugruppe fest auf H-Pegel gelegt ist, läßt sich die monostabile Kippstufe mit der fallenden Flanke eines Index- Impulses anstoßen. Mit jedem Impuls wird daher der Ausgang Q der monostabilen Kippstufe für eine bestimmte Zeit auf H-Pegel geschaltet. Dieser H-Pegel dient dem FDC-Baustein als Bereitschafts-Meldung LWREADY. Die Zeit, für die der Q-Ausgang H-Pegel führt, wird durch die RC-Kombination R9/C5 bestimmt und läßt sich nach Herstellerangaben wie folgt näherungsweise berechnen:

tH =0,45 · R · C
tH =0,45 · 56 kQ · 15 μF
tH = 378 ms

Dabei ist tH die Zeit, für die der Ausgang Q des 74LS123 H-Pegel führt.

Hierzu auch den separaten Artikel zu neueren Laufwerken und LWREADY-Signal beachten!

Die monostabile Kippstufe läßt sich nachtriggern, indem sie vor dem Ablauf der Zeit tH erneut angestoßen wird. Der Ausgang Q geht nur dann wieder auf L-Pegel, wenn die Kippstufe für mindestens 378 ms keinen Trigger-Impuls (INDEX-Impuls) mehr erhalten hat.

Bei richtig eingelegter Diskette, aktiviertem Laufwerk und Solldrehzahl des Laufwerkmotors wird die Kippstufe alle 200 ms nachgetriggert, so daß in diesem Fall ständig eine Bereitschafts-Meldung (LWREADY auf H-Pegel) erzeugt wird.

Der Datenseparator

Beim Lesen von einer Diskette wird die gespeicherte Information seriell vom akti- vierten Diskettenlaufwerk über die Signalleitung RDATA zur FDC-Baugruppe übertragen. Die übertragene Impulsfolge enthält sowohl Daten- als auch Synchronisier- Impulse. Sie müssen vom FDC-Baustein voneinander unterschieden werden. Diese Aufgabe unterstützt der Datenseparator.

Die übliche Bezeichnung Datenseparator (to separate = trennen) ist mißverständlich, da dieser Baustein die Daten nicht von den Synchronisier-Impulsen trennt. Vielmehr hilft er dem FDC-Baustein bei dieser Aufgabe, indem er spezielle Signale erzeugt.

Dazu benötigt der Datenseparator einen Bezugstakt von 4 MHz, der ihm über den Anschluß REFCLK (Reference Clock, Bezugstakt) zugeführt wird. Diese Taktfre- quenz kann intern im Datenseparator geteilt werden. Der Teilfaktor wird durch die logischen Pegel an den Eingängen CDO und CD1 bestimmt (CD = Clock Divisor, Takt-Teiler):

CD1CD0Teilfaktor
LL1
LH2
HL4
HH8

Der Eingang CD1 ist auf der FDC-Baugruppe fest auf L-Pegel gelegt. Der Eingang CDO wird durch das Signal DDENS (Double Density, doppelte Aufzeichnungsdichte) angesteuert. Durch einen Ausgabe-Befehl läßt sich der Pegel dieses Signals per Programm verändern. Dies ist notwendig, wenn man zwischen »Single Density« (einfache Aufzeichnungsdichte) und »Double Density« (doppelte Aufzeichnungsdichte) umschalten will. Um auch dem FDC-Baustein zu signalisieren, in welcher Aufzeichnungsart gearbeitet werden soll, wird das Umschaltsignal DDENS auch dem FDC- Baustein zugeführt. Die Aufzeichnungs-Arten werden später beschrieben.

/DDENSBetribsartTeilung-
faktor
interner Takt
Datenseparator
LDouble Density14 MHz
HSingle Density22 MHz

Bild 173: Der Floppy-Disk-Datenseparator 9216.

Damit der FDC-Baustein Daten- und Synchronisier-Impulse voneinander trennen kann, stellt der Datenseparator ihm das Takt-Signal SEPCLK (Separated Clock) zur Verfügung.

Die vom Laufwerk kommenden Daten- und Synchronisier-Impulse werden dem Datenseparator über den Anschluß DSKD (Disk Data, Disketten-»Daten«) zugeführt. Er leitet die in Breite und zeitlicher Anordnung aufbereiteten Impulse über den Anschluß SEPD (Separated Data) an den RAW READ-Anschluß des FDC-Bausteins weiter. Dieser Impuls-Strom enthält immer noch Daten- und Synchronisier-Impulse. Zwischen diesem Impuls-Strom und dem Takt-Signal SEPCLK besteht dabei aber ein fester zeitlicher Bezug.

Eine feste Frequenz des SEPCLK-Signals würde bedeuten, daß die von der Diskette gelesenen Impulse in einem festen Abstand aufeinander folgen müßten, um diesen Bezug zu erhalten. Bei leichten Abweichungen der Diskettendrehzahl würden die Impulse vom Laufwerk aber in einem anderen zeitlichen Abstand eintreffen. Lesefehler wären unvermeidlich. Deshalb ist die Frequenz des SEPCLK-Signals unabhängig von den gelesenen Impulsen. Dreht sich die Diskette schnell, das heißt: folgen die Impulse schnell aufeinander, so erhöht sich die Frequenz des Takt-Signals SEPCLK. Dreht sich die Diskette langsam, das heißt: folgen die Impulse langsam aufeinander, so verringert sich die Frequenz des Takt-Signales.

In der Impulsfolge SEPD sind die Daten- und Synchronisier-Impulse bestimmten logischen Pegeln des SEPCLK-Signals zugeordnet. Die im Bild 174 durch die gestrichelten Linien gezeigte Zuordnung

Datenimpuls: SEPCLK auf L-Pegel

Synchronisierimpuls: SEPCLK auf H-Pegel

kann sich von Lesevorgang zu Lesevorgang ändern. Sie bleibt aber immer für die Länge einer Spur bestehen. Um eine eindeutige Zuordnung der Signale SEPD und SEPCLK zu erhalten, sind auf der Diskette spezielle Synchronisations-Bytes vorhanden. Sie befinden sich am Anfang jeder Spur und jeden Sektors. Sie werden beim Formatieren auf die Diskette geschrieben. Da durch diese Bytes eine bestimmte Kombination von Daten- und Synchronisier-Impulsen erzeugt wird, kann der FDC-Baustein beim Lesen dieser Kombination die aktuelle Zuordnung zwischen dem SEPCLK-Signal und dem STEP- Signal erkennen.

Bild 174: Die Ausgangs- und Eingangssignale des Datenseparators bei korrekter Drehzahl der Diskette und doppelter Aufzeichnungsdicht

Die Erzeugung der 4-MHz- und des 1-MHz-Taktsignale

Der FDC-Baustein und der Datenseparator benötigen einen Bezugstakt. Der Bezugstakt des FDC-Bausteins muß eine Frequenz von 1 MHz, der des Datenseparators eine von 4 MHz besitzen. Zur Takterzeugung befindet sich auf der FDC-Baugruppe ein 4-MHz-Oszillator. Er liefert direkt den Takt für den Datenseparator. Der Bezugstakt des FDC-Bausteins wird durch Frequenzteilung gewonnen.

Bild 175: Der 4-MHz-Quarz-Oszillator mit Treiberstufe.

Um den Oszillator durch die nachfolgenden Stufen nicht zu sehr zu belasten, wird IC13.4 als Treiberstufe für das Oszillator-Ausgangssignal verwendet. Der Kondensator C8 gewährleistet ein sicheres Anschwingen des Oszillators mit seiner Sollfrequenz.

Bild 176: Die Teilung des 4-MHz-Signals auf 1 MHz.

Das Zusammenwirken von Hardware und Software

Die FDC-Kommandos

Der Befehlssatz des Bausteins FDC 1793 (oder eines zu ihm kompatiblen Typs) umfaßt vier Gruppen von Kommandos, die von der CPU mit Hilfe des Befehls OUT 0C0 in das Kommando-Register geschrieben werden:

1. Kommandos für die Positionierung des Schreib/Lese-Kopfes

  1. Kommandos für die Datenübertragung zwischen CPU und Laufwerk
  2. Spezielle Lese- und Schreib-Kommandos
  3. Kommando zur Festlegung verschiedener Bedingungen für die Erzeugung von Interrupts durch den FDC-Baustein

Ein Kommando-Wort setzt sich wie folgt zusammen:

Bit76543210
kkksssss

Hierbei dienen die mit k bezeichneten Bits der Festlegung des gewünschten Kommandos. Mit Hilfe der Steuerbits s können je nach gewähltem Kommando zusätzliche Tätigkeiten veranlaßt oder Vereinbarungen getroffen werden (z.B. Wahl der Schrittgeschwindigkeit bei der Kopf-Positionierung)

Die Kommandos der Gruppe I

Die Kommandos RESTORE, SEEK, STEP, STEP IN und STEP OUT dienen der Positionierung, d. h. der Bewegung des Schreib/Lese-Kopfes in eine gewünschte Position. Diese Befehle wirken sich nur auf das ausgewählte Laufwerk aus. Die folgende Tabelle zeigt die Bildung des Kommando-Wortes in der Gruppe  1

Bild 177: Der Aufbau des Kommando-Wortes der Gruppe 1
(Benennung der einzelnen Bits nach dem Datenblatt des FDC 1793).

Durch die Bits r1 und r0 im Kommandowort kann unter vier verschiedenen Schrittge- schwindigkeiten (Spurwechselrate) für die Kopfpositionierung gewählt werden.

Das sogenannte Verify-Bit V (Verify = prüfen) gibt an, ob die im Spur-Register befindliche Spurnummer mit der tatsächlichen Position des Schreib/Lese-Kopfes ver- glichen werden soll. Die tatsächliche Position des Kopfes wird durch Lesen und Auswerten der Sektor-Kennungsfelder (vgl. Seite 595ff.) festgestellt.

Das Bit h (Head Load) hat bei der hier vorgestellten Baugruppe keine Bedeutung.

Über das T-Bit kann der FDC-Baustein veranlaßt werden, bei einer Kopfbewegung den Inhalt des Spurregisters zu aktualisieren.

Während und nach der Ausführung eines Kommandos können der Betriebszustand sowie eventuelle Fehlermeldungen des FDC-Bausteins von der CPU durch Lesen und Auswerten des Statusregister-Inhaltes erkannt werden. Für alle Kommandos der Gruppe I haben die einzelnen Status-Bits (bei 1-Zustand) folgende Bedeutung:

  • S7 NOT READY Laufwerk ist nicht bereit
  • S6 WRITE PROTECT Eingelegte Diskette ist schreibgeschützt
  • S5 HEAD LOADED Kopf ist geladen (angeschmiegt)
  • S4 SEEK ERROR Spur nicht gefunden
  • S3 CRC ERROR Prüfsummenfehler
  • S2 TRACK0 Kopf befindet sich über Spur 0
  • S1 INDEX Indexloch befindet sich im Strahl der Index-Licht- schranke
  • S0 BUSY Gesetzt, wenn der FDC-Baustein ein Kommando ausführt

Die Kommandos der Gruppe I im einzelnen:

RESTORE

Aufgabe dieses Kommandos (restore = rücksetzen) ist, den Schreib/Lese-Kopf aus jeder beliebigen Position über die Spur 0 (Grundstellung) zu bringen. Das Spur-Register des FDC-Bausteins erhält dabei den Inhalt 00H (Spur 0). Beim Einschalten des Mikrocomputers führt der FDC-Baustein diesen Befehl selbständig aus.

Beispiel:

MVI A,01      ; Kommando RESTORE (binär: 00000001)
OUT 0C0.      ; Ausgabe in das Kommando-Register

Diese Befehlsfolge veranlaßt den Baustein, den Schreib/Lese-Kopf über Spur 0 zu positionieren. Das Spur-Register erhält den Wert 00H. Die Bits rl = 0 und r0 = 1 ergeben eine Spurwechselrate für die Positionierung von 12 ms pro Spur.

SEEK

Dieses Kommando (seek = suchen) ermöglicht es, den Schreib/Lese-Kopf zu einer bestimmten Spur zu bewegen. Voraussetzung ist, daß im Spur-Register des FDC-Bausteins die Nummer der augenblicklichen Kopfposition enthalten ist. Die Nummer der gewünschten Spur muß in das Datenregister des FDC-Bausteins geschrieben werden.

Beispiel für die Positionierung über Spur 8:

MVI A$08       ; Spur 8 festlegen
OUT $C3        ; Ausgabe in das Daten-Register

MVI A,$17      ; Seek-Kommando (binär: 00010111)
OUT $C3        ; Ausgabe in das Kommando-Register

Diese Kommandofolge bewirkt, daß der Kopf über Spur 8 positioniert wird. Da das Verify-Bit des Kommandowortes gesetzt wurde, erfolgt anschließend eine automatische Prüfung, ob sich der Kopf wirklich über der Spur 8 befindet. Der Inhalt des Spur-Registers wird auf 8 gesetzt. Die gewählte Spurwechselrate beträgt in diesem Beispiel 30 ms.

STEP IN, STEP OUT, STEP

Diese Kommandos dienen der Veränderung der Kopfposition um eine Spur.

STEP IN kann benutzt werden, um den Kopf um eine Spur in Richtung Disketten- Mitte zu bewegen.

Mit STEP OUT kann der Kopf um eine Spur zum Disketten-Rand hin bewegt werden.

Mit STEP kann der Kopf um eine Spur bewegt werden. Die Bewegungsrichtung ist dabei die gleiche wie bei der vorigen Kopfbewegung.

Beispiel für das Kommando STEP IN:

MVI A,051       ; Step-In Kommando-Wort (binär 01010001)
OUT 0C0         ; Ausgabe in das Kommando-Register

In diesem Beispiel wird der Kopf um eine Spur zur Disketten-Mitte hin bewegt. Der Inhalt des Spur-Registers wird um eins erhöht, da das T-Bit gesetzt ist. Eine Prüfung, ob der Wert im Spur-Register mit der aktuellen Kopfposition übereinstimmt, findet nicht statt, da das V-Bit auf Ogesetzt ist.

Beispiel für das Kommando STEP OUT:

MVI A,075       ; Step-Out Kommando-Wort (binär 01110101)
OUT 0C0         ; Ausgabe in das Kommando-Register

Mit dem STEP OUT-Kommando wird der Kopf um eine Spur zum Diskettenrand hin bewegt. Der Inhalt des Spur-Registers wird um eins vermindert, da das T-Bit gesetzt ist. Der Inhalt des Registers wird mit der tatsächlichen Position verglichen (V-Bit ist gesetzt). In diesem Beispiel beträgt die Spurwechselrate 12 ms.

Beispiel für das Kommando STEP:

MVI A,031       ; Step Kommando-Wort (binär: 00110001)
OUT 0C0         ; Ausgabe in das Kommando-Register 

Durch diese Befehlsfolge wird der Kopf um eine Spur bewegt. Die Bewegungsrichtung ist gegenüber der letzten Kopfbewegung unverändert. Da das T-Bit gesetzt ist, wird der Inhalt des Spur-Registers aktualisiert. Die Spurwechselrate beträgt in diesem Beispiel 12 ms.

Die Kommandos der Gruppe II

Die Gruppe II umfaßt die Kommandos WRITE SECTOR (Schreibe Sektor) und READ SECTOR (Lese Sektor) für die Datenübertragung zwischen der CPU und dem Diskettenlaufwerk. Bevor eines dieser Kommandos ausgeführt werden kann, müssen einige Voraussetzungen erfüllt sein:

  • Das Laufwerk muß betriebsbereit sein (Diskette eingelegt, Motor eingeschaltet).
  • Die verwendete Diskette muß durch die Formatierung (siehe Seite 594f.) vorbereitet sein.
  • Der Schreib/Lese-Kopf muß über der richtigen Spur positioniert sein.
  • Der Inhalt des Spur-Registers muß mit der tatsächlichen Kopfposition überein-stimmen.
  • Die Nummer des zu lesenden oder zu schreibenden Sektors muß sich im Sektor-Register des FDC-Bausteins befinden.

Bei der Ausführung eines der Kommandos WRITE SECTOR und READ SECTOR sucht der FDC-Baustein zuerst den im Sektor-Register angegebenen Sektor. Gesucht wird auf der Spur, über der sich der Kopf im Augenblick befindet. Der FDC-Baustein liest zu diesem Zweck die Sektorkennungsfelder der Sektoren, die sich am Kopf vorbei bewegen (vgl. Seite 595). Stimmen die vorgefundene Spur- und Sektor-Nummer nicht mit den Angaben im Spur- bzw. Sektor-Register überein, so wird die Suche durch Überprüfung weiterer Sektor-Kennungsfelder auf der gleichen Spur fortgesetzt. Da es möglich ist, daß ein Sektor-Kennungsfeld nicht sofort beim ersten Durchlauf einer Spur erkannt wird, führt der FDC-Baustein mehrere Leseversuche durch. Falls bei insgesamt vier Diskettenumdrehungen kein Sektorkennungsfeld mit den gesuchten Angaben gefunden wurde, wird die Kommando-Ausführung abgebrochen. Dabei werden entsprechende Fehlerbits im Statusregister des FDC-Bausteins gesetzt.

Wurde der gewünschte Sektor aber gefunden, so setzt der FDC-Baustein das DRQ– Signal auf H-Pegel, sobald ein Datenbyte zwischen der CPU und dem FDC-Datenregister übertragen werden kann.

Die folgende Tabelle zeigt den Aufbau der Kommando-Wörter für WRITE SECTOR und READ SECTOR. Die Bits 0 bis 4 müssen für die vorgesehene Anwendung des FDC-Bausteins nicht verändert werden. Deshalb wird hier auf eine nähere Erläuterung verzichtet und auf das Datenblatt des FDC-Bausteins verwiesen.

Bild 178: Der Aufbau der Kommando-Wörter der Gruppe

Auch hier können während oder nach der Ausführung eines Kommandos der Be- triebszustand sowie eventuelle Fehlermeldungen von der CPU durch Lesen und Aus- werten des FDC-Statusregisters erkannt werden.

Dabei haben die einzelnen Bits bei allen Kommandos der Gruppe II folgende Bedeutung:

  • S7 NOTREADY Laufwerk nicht betriebsbereit
  • S6 WRITE PROTECT Eingelegte Diskette ist schreibgeschützt
  • S5 RECORD TYP Spezielle Kennzeichnung aus dem Sektorkennungsfeld (nur beim Lesen)
    WRITE FAULT Fehler im Schreibverstärker des Laufwerks (nur beim Schreiben)
  • S4 RECORD NOT FOUND Sektor nicht gefunden
  • S3 CRC ERROR Prüfsummenfehler
  • S2 LOSTDATA Datenverlust bei der Datenübertragung
  • S1 DATA REQUEST Anforderung zur Datenübertragung
  • S0 BUSY Gesetzt, wenn der FDC-Baustein ein Kommando ausführt

WRITE SECTOR

Dieses Kommando dient zur Übertragung der Daten aus dem Arbeitsspeicher der CPU in einen Disketten-Sektor.

  • Vor Erteilung des Kommandos WRITE SECTOR muß der Schreib/Lese-Kopf des ausgewählten Laufwerks über die gewünschte Spur gestellt werden. Dazu gibt die CPU entsprechende Kommandos (RESTORE, STEP, STEP IN, STEP OUT, SEEK) an den FDC-Baustein.
  • Weiterhin ist von der CPU die Nummer des gewünschten Sektors in das Sektor- Register des FDC-Bausteins zu schreiben.
  • Aus dem Bild ergibt sich für das WRITE SECTOR-Kommandowort 1010 0000 (binär) = A0 (hexadezimal). Dieser Wert ist in den Akkumulator der CPU zu laden und mit dem Befehl OUT 0C0 in das Kommando-Register des FDC-Bausteins zu schreiben. Im Status-Register des Bausteins wird das BUSY-Bit gesetzt (busy = beschäftigt). Der FDC-Baustein sucht nun den gewünschten Sektor.
  • Die CPU muß nun warten, bis der FDC-Baustein den Beginn des Sektor-Datenfeldes erkannt hat und zur Übertragung der Datenbytes bereit ist.
  • Wurde der gewünschte Sektor gefunden, so setzt der FDC-Baustein das Signal DRQ auf H-Pegel. Das Bit DATA REQUEST im FDC-Statusregister wird auf 1 gesetzt. Der FDC-Baustein fordert so von der CPU ein Datenbyte an. Wird dem Baustein das erste Datenbyte nicht rechtzeitig zur Verfügung gestellt, so wird der Schreibvorgang abgebrochen. Der FDC-Baustein setzt dann das Bit 2 (LOST DATA, Datenverlust) im FDC-Statusregister.
  • Wenn die CPU das Byte in das Daten-Register des FDC-Bausteins schreibt, so wird DRQ wieder auf L-Pegel geschaltet. Das Bit DATA REQUEST im FDC-Sta- tusregister wird auf 0 gesetzt.
  • Bis die CPU das nächste Datenbyte übergeben kann, muß sie erneut die Meldung DRQ auf H-Pegel (bzw. Statusbit DATA REQUEST gleich 1) abwarten. Sobald diese Meldung erscheint, muß die CPU das Datenbyte möglichst schnell in das FDC-Datenregister einschreiben. Wird dem FDC-Baustein ein Datenbyte nicht rechtzeitig zur Verfügung gestellt, so schreibt er für das fehlende Byte 00H auf die Diskette und setzt das Bit 2 (LOST DATA, Datenverlust) im FDC-Statusregister.
  • Wenn ein kompletter Sektor geschrieben wurde, setzt der FDC-Baustein das Meldesignal INTRQ auf H-Pegel. Gleichzeitig wird das BUSY-Bit im FDC-Statusregi- ster zurück auf 0 gesetzt.

Die folgenden Bilder 179 und 180 zeigen je ein Beispiel für das Schreiben des Sektors 4 der Spur 7.

Im Bild 179 erfolgt die Synchronisation der Datenübertragung durch die Bits im FDC-Statusregister. Das Bit DATA REQUEST zeigt der CPU an, daß ein neues Datenbyte in das FDC-Datenregister geschrieben werden muß. Mit BUSY-Bit = 0 teilt der FDC-Baustein der CPU den Abschluß der Kommando-Ausführung mit.

Im Bild 180 erfolgt die Synchronisation über die Meldesignale DRQ und INTRQ. Nach jeder Übertragung eines Datenbytes wird durch Ausführen des Befehls OUT 0C8 mit Hilfe des Warte-Flip-Flops der READY-Anschluß der CPU auf L-Pegel gelegt. Die CPU wird so angehalten. Wenn der FDC-Baustein zur weiteren Daten- übertragung bereit ist, gibt er die CPU über das Meldesignal DRQ auf H-Pegel wieder frei. Die CPU fährt dann mit der Übertragung des nächsten Datenbytes fort. Nach der Kommando-Ausführung (d.h. wenn ein kompletter Sektor geschrieben wurde) gibt der FDC-Baustein das Meldesignal INTRQ aus. Dadurch löst er eine Unterbre- chungs-Anforderung (Interrupt) aus. Gleichzeitig gibt er die CPU durch Umschaltung des Warte-Flip-Flops wieder frei. Ist der Interrupt freigegeben, verzweigt die CPU zur Interrupt-Service-Routine. In dieser kann sie auf den Abschluss der Kommando-Ausführung reagieren.

Bild 179: Schreiben des Sektors 4, Spur 7, Synchronisation durch Auswerten des Statuswortes.

Bild 180: Schreiben des Sektors 4, Spur 7, Synchronisation über die Signale DRQ und INTRQ.

READ SECTOR

Dieses Kommando dient zur Übertragung der Daten eines Disketten-Sektors in den Arbeitsspeicher der CPU.

  • Vor Erteilung des Kommandos READ SECTOR muß der Schreib/Lese-Kopf des ausgewählten Laufwerks über die gewünschte Spur gestellt werden. Dazu gibt die CPU entsprechende Kommandos (RESTORE, STEP, STEP IN, STEP OUT, SEEK) an den FDC-Baustein.
  • Weiterhin ist von der CPU die Nummer des gewünschten Sektors in das Sektor- Register des FDC-Bausteins zu schreiben.
  • Aus dem Bild auf Seite 581 ergibt sich für das READ SECTOR-Kommando-Wort 1000 0000 (binär) = 80 (hexadezimal). Dieser Wert ist in den Akkumulator der CPU zu laden und mit dem Befehl OUT 0C0 in das Kommando-Register des FDC-Bausteins zu schreiben. Im Status-Register des Bausteins wird das BUSY-Bit gesetzt (busy = beschäftigt). Der FDC-Baustein sucht nun den gewünschten Sek- tor.
  • Die CPU muß nun warten, bis der FDC-Baustein den Beginn des Sektor-Datenfeldes erkannt hat und zur Übertragung der Datenbytes bereit ist.
  • Sobald der FDC-Baustein ein komplettes Datenbyte von der Diskette gelesen hat, setzt er das Signal DRQ auf H-Pegel und das Statusbit DATA REQUEST auf 1.
  • Die CPU kann das Datenbyte nun aus dem FDC-Datenregister auslesen. Dadurch wird das Signal DRQ wieder auf L-Pegel und das Bit DATA REQUEST im FDC-Baustein wieder auf 0 gesetzt.
  • Bis die CPU das nächste Datenbyte übernehmen kann, muß sie erneut die Meldung DRQ auf H-Pegel (bzw. Statusbit DATA REQUEST gleich 1) abwarten. Sobald diese Meldung erscheint, muß sie das Datenbyte möglichst schnell aus dem FDC- Datenregister auslesen. Liest die CPU das Datenbyte nicht schnell genug aus, so wird es vom nächsten Byte aus dem Diskettensektor überschrieben. In diesem Fall wird das Bit 2 (LOST DATA, Datenverlust) im FDC-Statusregister gesetzt.
  • Wenn ein kompletter Sektor gelesen wurde, setzt der FDC-Baustein das Meldesignal INTRQ auf H-Pegel. Gleichzeitig wird das BUSY-Bit im FDC-Statusregister zurück auf 0 gesetzt.

Die folgenden Bilder 181 und 182 zeigen je ein Beispiel für das Lesen des Sektors 4 der Spur 7.

Im Bild 181 erfolgt die Synchronisation der Datenübertragung durch die Bits im FDC-Statusregister. Das Bit DATA REQUEST zeigt der CPU an, daß ein neues Datenbyte im FDC-Datenregister zum Auslesen bereit steht. Mit BUSY-Bit = 0 teilt der FDC-Baustein der CPU den Abschluß der Kommando-Ausführung mit.

Im Bild 182 erfolgt die Synchronisation über die Meldesignale DRQ und INTRQ. Nach jeder Übertragung eines Datenbytes wird durch Ausführen des Befehls OUT 0C8 mit Hilfe des Warte-Flip-Flops der READY-Anschluß der CPU auf L-Pegel gelegt. Die CPU wird so angehalten. Wenn der FDC-Baustein zur weiteren Daten- übertragung bereit ist, gibt er die CPU über das Meldesignal DRQ auf H-Pegel wieder frei. Die CPU fährt dann mit der Übertragung des nächsten Datenbytes fort. Nach der Kommandoausführung (d. h. wenn ein kompletter Sektor gelesen wurde) gibt der FDC-Baustein das Meldesignal INTRQ aus. Dadurch löst er eine Unterbrechungs- Anforderung (Interrupt) aus. Gleichzeitig gibt er die CPU durch Umschaltung des Warte-Flip-Flops wieder frei. Ist der Interrupt freigegeben, verzweigt die CPU zur Interrupt-Service-Routine. In dieser kann sie auf den Abschluss der Kommando-Ausführung reagieren.

Bild 181: Lesen des Sektors 4, Spur 7, Synchronisation durch Auswerten des Statuswortes.

Bild 181: Lesen des Sektors 4, Spur 7, Synchronisation durch Auswerten des Statuswortes.

Die Kommandos der Gruppe III

Die Kommandos READ ADDRESS, READ TRACK und WRITE TRACK aus der Gruppe III sind für spezielle Aufgaben vorgesehen.

READ ADDRESS und READ TRACK sind besonders für Testzwecke geeignet und finden bei der normalen Arbeit mit einer Diskette keine Anwendung. Für eine nähere Beschreibung wird daher auf das Datenblatt des FDC-Bausteins verwiesen.

Das WRITE TRACK-Kommando ermöglicht das Schreiben einer gesamten Spur einschließlich aller Gaps, Marken, Kennungsfehler und Datenfelder. Da hier im Gegensatz zu dem Kommando WRITE SECTOR die Spur völlig neu aufgebaut wird, eignet sich dieses Kommando zum Formatieren einer Diskettenspur.

Die Kommando-Wörter der Gruppe III können der folgenden Tabelle entnommen werden.

KommandosKommandowort
binär

hexadezimal
READ ADDRESS1100 0000C0
READ TRACK1110 0000E0
WRITE TRACK1111 0000F0

WRITETRACK

6. Interfaces
6.5 Floppy-Disk-Interface 591

Das Formatieren einer Diskette ist bei fabrikneuen Disketten erforderlich. Es ist auch notwendig, wenn die Formatierung einer Diskette durch äußere Einflüsse (z.B. Ein- wirkung starker Magnetfelder) zerstört wurde. Eine Neuformatierung ist allerdings nur möglich, solange keine mechanischen Beschädigungen der Diskette vorliegen.

Zum Formatieren einer Diskettenspur wird das Kommando WRITE TRACK ver- wendet. Der gesamte Inhalt einer Spur einschließlich aller Kennungsfelder, Daten- felder und spezieller Steuerbytes befindet sich zuvor im Arbeitsspeicher der CPU. Für den Aufbau einer Spur gibt es viele Möglichkeiten (verschiedene Sektor-Größen, unterschiedliche Sektor-Anzahl pro Spur, usw.) Das hier verwendete Format ist ab Seite 595 dargestellt.

Das Kommandowort F0H des WRITE TRACK-Kommandos ist von der CPU mit dem Befehl OUT 0C0 in das Kommando-Register des FDC-Bausteins zu schreiben. Der FDC-Baustein setzt das Signal DRQ auf H-Pegel und das DATA REQUEST-Bit im Statusregister auf 1. Er fordert dadurch die CPU auf, das erste Byte in das Datenregister zu übertragen. Liegt dieses Byte nach einer bestimmten Zeit nicht vor, so bricht der FDC-Baustein das Kommando WRITE TRACK ab. Andernfalls beginnt er beim Eintreffen des Index-Impulses mit dem Schreibvorgang. Der FDC-Baustein fordert nun der Reihe nach die einzelnen Bytes von der CPU an, bis die gesamte Spur neu beschrieben ist. Trifft bei der Übertragung ein Datenbyte nicht rechtzeitig ein, so schreibt der FDC-Baustein 00H auf die Diskette und setzt das LOST DATA- Bit im Statusregister. Ein Abbruch der Kommando-Ausführung erfolgt nur, wenn das erste Byte nicht rechtzeitig eintrifft (s.o.).

Unter den Bytes, die von der CPU in das FDC-Datenregister geschrieben werden, befinden sich auch Steuerbytes. Diese Bytes werden vom FDC-Baustein nicht direkt auf die Diskette geschrieben, sondern in eine spezielle Impulsfolge umgesetzt. Sie dienen z.B. als Marken und Synchronisations-Bytes.

Mit dem Kommando WRITE TRACK kann nur eine Spur formatiert werden. Soll eine ganze Diskette formatiert werden, so muß der Schreib/Lese-Kopf durch einen entsprechenden Befehl auf die nächste Spur gestellt werden. Im Arbeitsspeicher, in dem der Spur-Inhalt abgelegt ist, muß die neue Spur-Nummer eingetragen werden. Das Kommando WRITE TRACK ist dann für die neue Spur erneut anzuwenden.

Als Beispiel für das Formatieren einer Spur wird hier nur die Programm-Version mit Synchronisation durch die Signale DRQ und INTRQ dargestellt: Bild 183.

Bild 183: Schreiben der Spur 0, Laufwerk A, Seite 0, Synchronisation über die Signale DRQ und INTRQ.

Die Kommandos der Gruppe IV

FORCE INTERRUPT

Die Gruppe IV besteht nur aus dem Kommando FORCE INTERRUPT. Mit ihm kann man festlegen, wann der FDC-Baustein (außer nach der Abarbeitung eines Kommandos) einen Interrupt anfordern soll. Das Kommando-Wort hat das Format:

1 1 0 1 I3 I2 I1 I0

Über die Bits I0 bis I3 können die verschiedenen Interrupt-Bedingungen festgelegt werden:

  • I0 = 1: Interrupt bei ansteigender Flanke am LWREADY-Eingang
  • I1 = 1: Interrupt bei abfallender Flanke am LWREADY-Eingang
  • I2 = 1: Interrupt bei jedem Impuls am IP-Eingang (Index-Impuls)
  • I3 = 1: Sofortiger Interrupt

Durch das Setzen mehrerer 1-Bits können auch mehrere Interrupt-Bedingungen angegeben werden. Beim Schreiben des FORCE INTERRUPT-Kommandos in das FDC-Kommandoregister wird jedes Kommando abgebrochen, das der FDC-Baustein im Augenblick ausführt. Dies gilt auch, wenn kein 1-Bit gesetzt ist (11010000).

Das FORMAT-Kommando

Will man eine neue Diskette benutzen, so muß diese zuerst in Spuren und Sektoren eingeteilt werden. Hierzu werden durch ein spezielles Programm Markierungsbytes auf der Diskette aufgezeichnet. Diesen Vorgang nennt man Formatieren, da durch ihn das Format (Größe und Anzahl der Spuren und Sektoren) festgelegt wird. Auch bei einer Diskette, deren Daten durch Magnetfelder zerstört wurden, kann ein For- matieren notwendig sein. Beim Formatieren wird die Diskette vollständig beschrieben. Etwa vorhandene alte Daten-Aufzeichnungen werden dabei überschrieben!

Das Betriebssystem des MFA-Mikrocomputers (siehe Vorwort) nutzt beide Seiten einer Diskette. Da die verwendeten Diskettenlaufwerke zwei Schreib/Lese-Köpfe besitzen, muß die Diskette nicht gewendet werden. Jede Diskettenseite wird in 40 Spuren mit je 8 Sektoren eingeteilt. Jeder Sektor enthält 512 Daten-Bytes.

Nachdem eine Diskette formatiert wurde, prüft das Betriebsprogramm, ob dieser Vorgang erfolgreich verlaufen ist. Ist das Formatieren z.B. aufgrund von Diskettenbeschädigungen nicht möglich, gibt das Betriebsprogramm eine Fehlermeldung aus. Die Art der Meldung hängt vom jeweiligen Fehler ab.

Treten beim Formatieren keine Fehler auf, so legt das Betriebsprogramm auf der Diskette ein Verzeichnis (Directory) an. In diesem Verzeichnis werden alle Aufzeichnungen (Programme) vermerkt, die auf der Diskette gemacht werden. So kann das Betriebsprogramm die einzelnen Aufzeichnungen auf der Diskette jederzeit wieder- finden.

Da beim Formatieren auf die Diskette geschrieben wird, darf die Schreibschutz-Kerbe nicht überklebt sein!

Das Format

Der Anfang einer Spur ist durch das sogenannte Index-Loch auf der Diskette gekenn- zeichnet, welches bei jeder Diskettenumdrehung den Strahl einer Lichtschranke durchläuft. Auf diese Weise kann der Spuranfang photoelektrisch festgestellt werden.

Wie in Bild 184 dargestellt, enthält eine Diskettenspur nicht nur die gespeicherten Daten, sondern auch eine größere Anzahl von Kennungen, Marken, Prüfsummen und sogenannten Gaps (Lücken), die das Auffinden, Lesen und Prüfen der Daten ermög- lichen. Jede Spur beginnt mit einem »Vor-Gap«, gefolgt von einer bestimmten Anzahl von Sektoren, und endet mit einem »Nach-Gap«.

Bild 184: Das Format einer Diskettenspur beim MFA-Mikrocomputer.

eder Sektor besitzt ein eigenes Sektor-Kennungsfeld und ein Datenfeld. Diese Felder sind durch weitere Gaps voneinander getrennt und können anhand von Marken unterschieden werden. Ein Sektor-Kennungsfeld enthält genaue Informationen zur Erkennung des Sektors: Spurnummer, Sektornummer, Nummer der Diskettenseite und Angaben zur Länge des Datenfeldes. Bei der Formatierung werden diese Informationen auf die Diskette geschrieben und bei allen nachfolgenden Schreibvorgängen zur Datenspeicherung nicht mehr verändert.

Das Formatieren erfolgt durch das Schreiben von vollständigen Spuren mit allen notwendigen Gaps, Kennungs- und Datenfeldern. In die eigentlichen Sektordaten- felder (hier 512 Bytes) werden dabei nur Füllbytes geschrieben, um Platz für die spätere Speicherung von Daten zu reservieren.

Das Abspeichern und Lesen von Daten erfolgt stets sektorweise. Mit Hilfe der beim Formatieren angelegten Sektor-Kennungsfelder können die einzelnen Sektoren von- einander unterschieden werden. Bei jedem neuen Schreibzugriff auf einen Sektor werden die alten Daten des Sektor-Datenfeldes mit den neuen, zu speichernden Daten überschrieben. Zusätzlich gespeicherte 2-Byte-Prüfsummen dienen der Fest- stellung von Fehlern bei der Datenaufzeichnung.

Man unterscheidet verschiedene Aufzeichnungsformate, die durch das verwendete Diskettenbetriebssystem (DOS, Disk Operating System) festliegen. Die Unterschiede ergeben sich durch die Festlegung der Sektorgröße (z.B. 128, 256, 512 oder 1024 Datenbytes), der Länge und Art der Gaps, der Wahl der verschiedenen Marken und durch Einzelheiten beim Aufbau des Sektor-Kennungsfeldes. Die FDC-Baugruppe des MFA-Mikrocomputers ist in Verbindung mit seinem Betriebsprogramm für die Benutzung von 40 Spuren mit jeweils 8 Sektoren vorgesehen. Pro Diskettenseite erhält man somit 320 Sektoren. Jeder Sektor ist für 512 Datenbytes nutzbar. Für beide Diskettenseiten ergibt sich somit eine Gesamtkapazität von 320 K Bytes:

2 (Seiten) * 40 (Spuren p. Seite) * 8 (Sektoren p. Spur) * 512 (Datenbyte p. Sektor) = 320KByte

Bild 185: Der Inhalt des Spurpuffers beim Formatieren der Spur 0, Seite 0 (Beispiel).

Aufzeichnungs-Verfahren

Da die Drehzahl der Diskette schwanken kann, ist es erforderlich, während des Schreibens der Daten auch zusätzliche Synchronisier-Signale auf der Diskette abzuspeichern. Diese ermöglichen eine eindeutige Wiedergewinnung der Daten beim Lesevorgang. Die häufig verwendeten Aufzeichnungsverfahren FM (Frequenz-Modulation) und MFM (Modifizierte Frequenz-Modulation) unterscheiden sich durch die Anzahl und die Lage dieser Synchronisier-Signale.

Bild 186 zeigt oben die Impulsfolge bei der Aufzeichnung des Hexadezimalwertes D2 im FM-Verfahren. Bei 51⁄4-Zoll-Disketten und Verwendung dieses Verfahrens beträgt der zeitliche Abstand zwischen zwei Taktimpulsen 8 μs. Zwei aufeinanderfolgende Taktimpulse bilden ein Bit-Fenster. Soll eine logische 1 aufgezeichnet werden, so befindet sich in der Fenstermitte ein Datenimpuls. Wenn dieser Impuls fehlt, handelt es sich um eine logische 0. Bei dieser Aufzeichnungsart spricht man auch von einfacher Aufzeichnungsdichte (engl. single density, SD). Sie beträgt 1 Bit pro 8 μs bzw. 125000 Bit pro Sekunde.

Bei diesem Verfahren wird sehr viel Diskettenplatz für die reine Synchronisation verwendet, da für jeden Bitwechsel ein Synchronisier-Impuls zusätzlich aufgezeichnet wird. Für eine Folge von 1-Bits ergeben sich sicher keine Synchronisations-Schwierigkeiten. Jedoch wäre für eine Folge von 0-Bits sehr schnell die Synchronisation verloren. Daher zeichnet man nur in dem Falle, daß zwei oder mehrere 0-Bits aufeinander folgen, jeweils einen Synchronisier-Impuls auf. Dieses Verfahren wird MFM-Verfah- ren genannt.

Bild 186 verdeutlicht unten die erforderliche Impulsfolge des MFM-Aufzeichnungs- verfahrens. Hierbei haben die einzelnen Bit-Fenster nur eine Länge von 4 μs (bei 51⁄4-Zoll-Disketten). Wie beim FM-Aufzeichnungsverfahren wird eine logische 1 durch einen Daten-Impuls in der Mitte des Fensters festgelegt. Fehlt dieser Impuls, so handelt es sich um eine logische 0. Ein Synchronisier-Impuls wird nur dann aufgezeichnet, wenn das vorhergehende Bit-Fenster und das folgende Bit-Fenster keinen Daten-Impuls enthalten. Dies ist hier zwischen Bit 2 und Bit 5 (bei C3) und zwischen Bit 2 und Bit 3 (bei D2) der Fall. Wegen der geringeren Anzahl von Taktimpulsen ist die doppelte Datendichte im Vergleich zum FM-Verfahren möglich. Dabei ist bei beiden Aufzeichnungsverfahren der minimale Impuls-Abstand auf der Diskette gleich. Man spricht beim MFM-Verfahren auch von doppelter Aufzeichnungsdichte · (engl. double density, DD).

Bild 186: Vergleich der Aufzeichnungs-Verfahren FM und MFM.
Oben: Aufgezeichnete Pulsfolge für D2 beim FM-Verfahren (Single Density). Die Information befindet sich jeweils zwischen 2 Synchronisier-lmpulsen.
Unten: Aufgezeichnete Pulsfolge für die Daten D2 und C3 beim MFM-Verfahren (Double Density). Synchronisier-lmpulse werden nur zwischen zwei 0-Bits aufgezeichnet.

Bestückungsplan Floppy-Disk-Baugruppe


Weiter Informationen


Dokumentation